17 std::ostream& operator<<(std::ostream &, const pIntelligent<T> &);
50 std::cerr<<
"["<<
this<<
"] compteurPI::new"<<std::endl;
63 std::cerr<<
"["<<
this<<
"] compteurPI::copy("<<&csp<<
")"<<std::endl;
78 std::cerr<<
"["<<
this<<
"] compteurPI::copy("<<&csp<<
")"<<std::endl;
99 std::cerr<<
"["<<
this<<
"] compteurPI::++"<<std::endl;
111 std::cerr<<
"["<<
this<<
"] compteurPI::--"<<std::endl;
186 std::cerr<<
"["<<
this<<
"] node::new"<<std::endl;
201 std::cerr<<
"["<<
this<<
"] node::copy("<<&n<<
")"<<std::endl;
214 std::cerr<<
"["<<
this<<
"] node::delete"<<std::endl;
225 for(
unsigned i = 0; i<
parents.size();i++){
228 std::cerr<<
"["<<
this<<
"] node::removeParents(erease "<<&
parents[i]<<
") "<<
parents[i]->ptrI->count()<<
" refs "<<std::endl;
233 for(
unsigned i = 0; i<
children.size();i++){
236 std::cerr<<
"["<<
this<<
"] node::removeChild(erease "<<&
children[i]<<
") "<<
children[i]->ptrI->count()<<
" refs "<<std::endl;
251 for(
unsigned i = 0; i<
children.size();i++)
264 for(
unsigned i = 0; i<
parents.size();i++)
265 if(
parents[i] == n)
return true;
281 std::cerr<<
"["<<
this<<
"] node::addParent("<<&n<<
")"<<std::endl;
297 std::cerr<<
"["<<
this<<
"] node::removeParents("<<
parents.size()<<
")"<<std::endl;
299 for(
unsigned i = 0; i<
parents.size();i++)
313 std::cerr<<
"["<<
this<<
"] node::removeChild("<<
children.size()<<
")"<<std::endl;
315 for(
unsigned i = 0; i<
children.size();i++)
326 for(
unsigned i=0; i<
children.size(); i++)
383 std::cerr<<
"["<<
this<<
"] node::affect("<<&n<<
")"<<std::endl;
414 std::cerr<<
"["<<
this<<
"] node::addChild("<<&n<<
")"<<std::endl;
431 template<
typename>
friend class vectorPI;
469 std::cerr<<
"["<<
this<<
"] pIntelligent::new("<<&pointeur<<
")"<<std::endl;
474 vRef.push_back(
this);
490 std::cerr<<
"["<<
this<<
"] pIntelligent::copy("<<&sp<<
")"<<std::endl;
492 this->pointeur = sp.pointeur;
516 std::cerr<<
"["<<
this<<
"] pIntelligent::delete ? "<<&csp<<
"=>"<<csp->
count()<<
" ref"<<std::endl;
518 if(csp->
count()==0) {
530 std::cerr<<
"["<<
this<<
"] pIntelligent::delete OK"<<std::endl;
543 std::cerr<<
"["<<
this<<
"] pIntelligent::delete ? "<<&csp<<
"=>"<<csp->
count()<<
" ref"<<std::endl;
547 if(csp->
count()==0) {
549 if(pointeur != NULL){
558 std::cerr<<
"["<<
this<<
"] pIntelligent::delete OK"<<std::endl;
581 std::cerr<<
"["<<
this<<
"] pIntelligent::affect("<<&sp<<
")"<<std::endl;
585 if(csp->
count()==0) {
588 if(pointeur != NULL){
599 pointeur = sp.pointeur;
617 void*
operator new(
size_t sz){
618 void* m = malloc(sz);
628 void operator delete(
void* m) {
641 return this->pointeur == sp.pointeur;
681 std::ostringstream oss;
684 return std::string( oss.str());
705 friend std::ostream & operator<< <>(std::ostream &,
const pIntelligent<T> &);
731 std::vector<pIntelligent<T>*> v;
796 for(
unsigned i = 0; i<v.size(); i++)
797 if(v[i]==e) v.erase(v.begin()+i);
820 for(
unsigned i=0; i<v.size(); i++){
821 if(v[i]->n.hasParent() || v[i]->count() <= 0) v[i]->n.setState(0);
822 else v[i]->n.setState(1);
828 for(
unsigned i=0; i<v.size(); i++){
829 if(v[i]->n.getState() == 1 ){
836 for(
unsigned i=0; i<v.size(); i++){
837 if(v[i]->n.getState() == 0 ){
862 template <
typename T>
863 std::ostream & operator<<(std::ostream & output, const pIntelligent<T> & sp){
864 output << sp.toString() << std::endl;