Changeset 793 for cpp/frams/util/callbacks.cpp
- Timestamp:
- 05/29/18 16:51:14 (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
cpp/frams/util/callbacks.cpp
r286 r793 9 9 int MemberCallbackNode::equals(CallbackNode*n) 10 10 { 11 if (n==this) return 1;12 MemberCallbackNode *classok=dynamic_cast<MemberCallbackNode*>(n);13 if (!classok) return 0;14 return ((userdata==classok->userdata)&&(object==classok->object)&&(member==classok->member));11 if (n == this) return 1; 12 MemberCallbackNode *classok = dynamic_cast<MemberCallbackNode*>(n); 13 if (!classok) return 0; 14 return ((userdata == classok->userdata) && (object == classok->object) && (member == classok->member)); 15 15 } 16 16 #endif … … 18 18 int FunctionCallbackNode::equals(CallbackNode*n) 19 19 { 20 if (n==this) return 1;21 FunctionCallbackNode *classok=dynamic_cast<FunctionCallbackNode*>(n);22 if (!classok) return 0;23 return ((userdata==classok->userdata)&&(fun==classok->fun));20 if (n == this) return 1; 21 FunctionCallbackNode *classok = dynamic_cast<FunctionCallbackNode*>(n); 22 if (!classok) return 0; 23 return ((userdata == classok->userdata) && (fun == classok->fun)); 24 24 } 25 25 26 26 int StatrickCallbackNode::equals(CallbackNode*n) 27 27 { 28 if (n==this) return 1;29 StatrickCallbackNode *classok=dynamic_cast<StatrickCallbackNode*>(n);30 if (!classok) return 0;31 return ((object==classok->object)&&(userdata==classok->userdata)&&(fun==classok->fun));28 if (n == this) return 1; 29 StatrickCallbackNode *classok = dynamic_cast<StatrickCallbackNode*>(n); 30 if (!classok) return 0; 31 return ((object == classok->object) && (userdata == classok->userdata) && (fun == classok->fun)); 32 32 } 33 33 … … 36 36 CallbackNode* Callback::add(CallbackNode*n) 37 37 { 38 SList::operator+=(n);39 return n;38 SList::operator+=(n); 39 return n; 40 40 } 41 41 42 42 void Callback::removeNode(CallbackNode*n) 43 43 { 44 SList::operator-=(n);45 delete n;44 SList::operator-=(n); 45 delete n; 46 46 } 47 47 48 48 void Callback::remove(CallbackNode*node) 49 49 { 50 CallbackNode *n;51 //printf("Hint: removing callbacks (former 'DuoList') is more efficient using removeNode(). (refer to 'callbacks.h')\n");52 for (int i=0;n=(CallbackNode *)operator()(i);i++)53 if (node->equals(n))50 CallbackNode *n; 51 //printf("Hint: removing callbacks (former 'DuoList') is more efficient using removeNode(). (refer to 'callbacks.h')\n"); 52 for (int i = 0; n = (CallbackNode *)operator()(i); i++) 53 if (node->equals(n)) 54 54 { 55 55 SList::operator-=(i); 56 56 delete node; 57 if (n !=node) delete n;57 if (n != node) delete n; 58 58 return; 59 59 } 60 delete node; // tu nie wiem czy na pewno...60 delete node; // tu nie wiem czy na pewno... 61 61 } 62 62 63 63 void Callback::action(intptr_t data) 64 64 { 65 if (size()==0) return;66 SList copy=*this;67 FOREACH(CallbackNode*,n,copy)68 n->action(data);65 if (size() == 0) return; 66 SList copy = *this; 67 FOREACH(CallbackNode*, n, copy) 68 n->action(data); 69 69 } 70 70 71 71 Callback::~Callback() 72 72 { 73 CallbackNode *n;74 for (int i=size()-1;i>=0;i--)73 CallbackNode *n; 74 for (int i = size() - 1; i >= 0; i--) 75 75 { 76 n=(CallbackNode *)operator()(i);77 delete n;78 // todo: zrobic zeby kolejnosc delete callbacknode <-> delete callback nie wplywala na poprawne dzialania79 // blad odkryty 24.01 pokazal, ze deletowanie callbacknodow w ~callback80 // moze powodowac problemy, jezeli obiekty sa usuwane w "zlej" kolejnosci81 // ale na razie tak zostanie76 n = (CallbackNode *)operator()(i); 77 delete n; 78 // todo: zrobic zeby kolejnosc delete callbacknode <-> delete callback nie wplywala na poprawne dzialania 79 // blad odkryty 24.01 pokazal, ze deletowanie callbacknodow w ~callback 80 // moze powodowac problemy, jezeli obiekty sa usuwane w "zlej" kolejnosci 81 // ale na razie tak zostanie 82 82 } 83 83 }
Note: See TracChangeset
for help on using the changeset viewer.