1 /* Code generated from eC source file: CustomAVLTree.ec */
3 typedef long long int64;
4 typedef unsigned long long uint64;
8 #elif defined(__TINYC__)
10 #define __builtin_va_list va_list
11 #define __builtin_va_start va_start
12 #define __builtin_va_end va_end
14 #define strcasecmp stricmp
15 #define strncasecmp strnicmp
16 #define __declspec(x) __attribute__((x))
20 typedef long long int64;
21 typedef unsigned long long uint64;
23 typedef __int64 int64;
24 typedef unsigned __int64 uint64;
27 #define __ENDIAN_PAD(x) (8 - (x))
29 #define __ENDIAN_PAD(x) 0
32 #include <sys/types.h>
34 #if /*defined(_W64) || */(defined(__WORDSIZE) && __WORDSIZE == 8) || defined(__x86_64__)
40 #define arch_PointerSize sizeof(void *)
41 #define structSize_Instance (_64BIT ? 24 : 12)
42 #define AVLNode_PrivateData (_64BIT ? 32 : 16)
44 #define _XSTR(x) _STR(x)
46 extern void * __ecereNameSpace__ecere__com__eSystem_New(unsigned int size);
48 extern void * __ecereNameSpace__ecere__com__eSystem_New0(unsigned int size);
50 extern void * __ecereNameSpace__ecere__com__eSystem_Renew(void * memory, unsigned int size);
52 extern void * __ecereNameSpace__ecere__com__eSystem_Renew0(void * memory, unsigned int size);
54 extern void __ecereNameSpace__ecere__com__eSystem_Delete(void * memory);
56 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__BTNode;
58 struct __ecereNameSpace__ecere__sys__BTNode;
60 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__BinaryTree;
62 struct __ecereNameSpace__ecere__sys__BinaryTree
64 struct __ecereNameSpace__ecere__sys__BTNode * root;
66 int (* CompareKey)(struct __ecereNameSpace__ecere__sys__BinaryTree * tree, uintptr_t a, uintptr_t b);
67 void (* FreeKey)(void * key);
68 } __attribute__ ((gcc_struct));
70 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__OldList;
72 struct __ecereNameSpace__ecere__sys__OldList
79 } __attribute__ ((gcc_struct));
81 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Class;
83 struct __ecereNameSpace__ecere__com__Class
85 struct __ecereNameSpace__ecere__com__Class * prev;
86 struct __ecereNameSpace__ecere__com__Class * next;
92 int (* Constructor)(struct __ecereNameSpace__ecere__com__Instance *);
93 void (* Destructor)(struct __ecereNameSpace__ecere__com__Instance *);
96 struct __ecereNameSpace__ecere__com__Class * base;
97 struct __ecereNameSpace__ecere__sys__BinaryTree methods;
98 struct __ecereNameSpace__ecere__sys__BinaryTree members;
99 struct __ecereNameSpace__ecere__sys__BinaryTree prop;
100 struct __ecereNameSpace__ecere__sys__OldList membersAndProperties;
101 struct __ecereNameSpace__ecere__sys__BinaryTree classProperties;
102 struct __ecereNameSpace__ecere__sys__OldList derivatives;
106 struct __ecereNameSpace__ecere__com__Instance * module;
107 struct __ecereNameSpace__ecere__com__NameSpace * nameSpace;
108 const char * dataTypeString;
109 struct __ecereNameSpace__ecere__com__Instance * dataType;
111 int defaultAlignment;
112 void (* Initialize)();
114 struct __ecereNameSpace__ecere__sys__OldList selfWatchers;
115 const char * designerClass;
116 unsigned int noExpansion;
117 const char * defaultProperty;
118 unsigned int comRedefinition;
121 unsigned int internalDecl;
123 unsigned int computeSize;
125 int destructionWatchOffset;
127 struct __ecereNameSpace__ecere__sys__OldList delayedCPValues;
128 int inheritanceAccess;
129 const char * fullName;
131 struct __ecereNameSpace__ecere__sys__OldList conversions;
132 struct __ecereNameSpace__ecere__sys__OldList templateParams;
133 struct __ecereNameSpace__ecere__com__ClassTemplateArgument * templateArgs;
134 struct __ecereNameSpace__ecere__com__Class * templateClass;
135 struct __ecereNameSpace__ecere__sys__OldList templatized;
137 unsigned int isInstanceClass;
138 unsigned int byValueSystemClass;
139 } __attribute__ ((gcc_struct));
141 extern long long __ecereNameSpace__ecere__com__eClass_GetProperty(struct __ecereNameSpace__ecere__com__Class * _class, const char * name);
143 extern void __ecereNameSpace__ecere__com__eClass_SetProperty(struct __ecereNameSpace__ecere__com__Class * _class, const char * name, long long value);
145 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Property;
147 struct __ecereNameSpace__ecere__com__Property
149 struct __ecereNameSpace__ecere__com__Property * prev;
150 struct __ecereNameSpace__ecere__com__Property * next;
152 unsigned int isProperty;
155 struct __ecereNameSpace__ecere__com__Class * _class;
156 const char * dataTypeString;
157 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
158 struct __ecereNameSpace__ecere__com__Instance * dataType;
159 void (* Set)(void * , int);
160 int (* Get)(void * );
161 unsigned int (* IsSet)(void * );
165 unsigned int conversion;
166 unsigned int watcherOffset;
167 const char * category;
168 unsigned int compiled;
169 unsigned int selfWatchable;
170 unsigned int isWatchable;
171 } __attribute__ ((gcc_struct));
173 extern void __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property);
175 extern void __ecereNameSpace__ecere__com__eInstance_SetMethod(struct __ecereNameSpace__ecere__com__Instance * instance, const char * name, void * function);
177 extern void __ecereNameSpace__ecere__com__eInstance_IncRef(struct __ecereNameSpace__ecere__com__Instance * instance);
179 extern void __ecereNameSpace__ecere__com__eInstance_StopWatching(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, struct __ecereNameSpace__ecere__com__Instance * object);
181 extern void __ecereNameSpace__ecere__com__eInstance_Watch(void * instance, struct __ecereNameSpace__ecere__com__Property * _property, void * object, void (* callback)(void * , void * ));
183 extern void __ecereNameSpace__ecere__com__eInstance_FireWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property);
185 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Instance;
187 struct __ecereNameSpace__ecere__com__Instance
190 struct __ecereNameSpace__ecere__com__Class * _class;
192 } __attribute__ ((gcc_struct));
194 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__DataMember;
196 struct __ecereNameSpace__ecere__com__DataMember
198 struct __ecereNameSpace__ecere__com__DataMember * prev;
199 struct __ecereNameSpace__ecere__com__DataMember * next;
201 unsigned int isProperty;
204 struct __ecereNameSpace__ecere__com__Class * _class;
205 const char * dataTypeString;
206 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
207 struct __ecereNameSpace__ecere__com__Instance * dataType;
211 struct __ecereNameSpace__ecere__sys__OldList members;
212 struct __ecereNameSpace__ecere__sys__BinaryTree membersAlpha;
215 } __attribute__ ((gcc_struct));
217 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Method;
219 struct __ecereNameSpace__ecere__com__Method
222 struct __ecereNameSpace__ecere__com__Method * parent;
223 struct __ecereNameSpace__ecere__com__Method * left;
224 struct __ecereNameSpace__ecere__com__Method * right;
229 struct __ecereNameSpace__ecere__com__Class * _class;
231 const char * dataTypeString;
232 struct __ecereNameSpace__ecere__com__Instance * dataType;
234 } __attribute__ ((gcc_struct));
236 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__SerialBuffer;
238 struct __ecereNameSpace__ecere__com__SerialBuffer
240 unsigned char * _buffer;
244 } __attribute__ ((gcc_struct));
246 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__DataValue;
248 struct __ecereNameSpace__ecere__com__DataValue
263 } __attribute__ ((gcc_struct)) __anon1;
264 } __attribute__ ((gcc_struct));
266 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__ClassTemplateArgument;
268 struct __ecereNameSpace__ecere__com__ClassTemplateArgument
274 const char * dataTypeString;
275 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
276 } __attribute__ ((gcc_struct)) __anon1;
277 struct __ecereNameSpace__ecere__com__DataValue expression;
280 const char * memberString;
283 struct __ecereNameSpace__ecere__com__DataMember * member;
284 struct __ecereNameSpace__ecere__com__Property * prop;
285 struct __ecereNameSpace__ecere__com__Method * method;
286 } __attribute__ ((gcc_struct)) __anon1;
287 } __attribute__ ((gcc_struct)) __anon2;
288 } __attribute__ ((gcc_struct)) __anon1;
289 } __attribute__ ((gcc_struct));
291 extern int __ecereVMethodID_class_OnCompare;
293 extern int __ecereVMethodID_class_OnCopy;
295 static struct __ecereNameSpace__ecere__com__Property * __ecereProp___ecereNameSpace__ecere__com__AVLNode_prev, * __ecerePropM___ecereNameSpace__ecere__com__AVLNode_prev;
297 static struct __ecereNameSpace__ecere__com__Property * __ecereProp___ecereNameSpace__ecere__com__AVLNode_next, * __ecerePropM___ecereNameSpace__ecere__com__AVLNode_next;
299 static struct __ecereNameSpace__ecere__com__Property * __ecereProp___ecereNameSpace__ecere__com__AVLNode_count, * __ecerePropM___ecereNameSpace__ecere__com__AVLNode_count;
301 static struct __ecereNameSpace__ecere__com__Property * __ecereProp___ecereNameSpace__ecere__com__AVLNode_depthProp, * __ecerePropM___ecereNameSpace__ecere__com__AVLNode_depthProp;
303 static struct __ecereNameSpace__ecere__com__Property * __ecereProp___ecereNameSpace__ecere__com__AVLNode_balanceFactor, * __ecerePropM___ecereNameSpace__ecere__com__AVLNode_balanceFactor;
305 struct __ecereNameSpace__ecere__com__AVLNode
307 struct __ecereNameSpace__ecere__com__AVLNode * parent, * left, * right;
310 } __attribute__ ((gcc_struct));
312 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__AVLNode;
314 struct __ecereNameSpace__ecere__com__AVLNode * __ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_maximum(struct __ecereNameSpace__ecere__com__AVLNode * this);
316 static struct __ecereNameSpace__ecere__com__Property * __ecereProp___ecereNameSpace__ecere__com__AVLNode_maximum, * __ecerePropM___ecereNameSpace__ecere__com__AVLNode_maximum;
318 struct __ecereNameSpace__ecere__com__AVLNode * __ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_prev(struct __ecereNameSpace__ecere__com__AVLNode * this)
321 return __ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_maximum(this->left);
324 if(this->parent && this == this->parent->right)
332 struct __ecereNameSpace__ecere__com__AVLNode * __ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_minimum(struct __ecereNameSpace__ecere__com__AVLNode * this);
334 static struct __ecereNameSpace__ecere__com__Property * __ecereProp___ecereNameSpace__ecere__com__AVLNode_minimum, * __ecerePropM___ecereNameSpace__ecere__com__AVLNode_minimum;
336 struct __ecereNameSpace__ecere__com__AVLNode * __ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_next(struct __ecereNameSpace__ecere__com__AVLNode * this)
338 struct __ecereNameSpace__ecere__com__AVLNode * right = this->right;
341 return __ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_minimum(right);
344 struct __ecereNameSpace__ecere__com__AVLNode * parent = this->parent;
346 if(parent && this == parent->left)
351 return (((void *)0));
354 struct __ecereNameSpace__ecere__com__AVLNode * __ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_minimum(struct __ecereNameSpace__ecere__com__AVLNode * this)
361 struct __ecereNameSpace__ecere__com__AVLNode * __ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_maximum(struct __ecereNameSpace__ecere__com__AVLNode * this)
368 int __ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_count(struct __ecereNameSpace__ecere__com__AVLNode * this)
370 return 1 + (this->left ? __ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_count(this->left) : 0) + (this->right ? __ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_count(this->right) : 0);
373 int __ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_depthProp(struct __ecereNameSpace__ecere__com__AVLNode * this)
375 int leftDepth = this->left ? (__ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_depthProp(this->left) + 1) : 0;
376 int rightDepth = this->right ? (__ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_depthProp(this->right) + 1) : 0;
378 return ((leftDepth > rightDepth) ? leftDepth : rightDepth);
381 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__IteratorPointer;
383 void __ecereMethod___ecereNameSpace__ecere__com__AVLNode_Free(struct __ecereNameSpace__ecere__com__AVLNode * this)
386 __ecereMethod___ecereNameSpace__ecere__com__AVLNode_Free(this->left);
388 __ecereMethod___ecereNameSpace__ecere__com__AVLNode_Free(this->right);
389 ((this ? (__ecereClass___ecereNameSpace__ecere__com__AVLNode->Destructor ? __ecereClass___ecereNameSpace__ecere__com__AVLNode->Destructor((void *)this) : 0, __ecereClass___ecereNameSpace__ecere__com__IteratorPointer->Destructor ? __ecereClass___ecereNameSpace__ecere__com__IteratorPointer->Destructor((void *)this) : 0, __ecereNameSpace__ecere__com__eSystem_Delete(this)) : 0), this = 0);
392 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_uint64;
394 unsigned int __ecereMethod___ecereNameSpace__ecere__com__AVLNode_Add(struct __ecereNameSpace__ecere__com__AVLNode * this, struct __ecereNameSpace__ecere__com__Class * Tclass, struct __ecereNameSpace__ecere__com__AVLNode * node)
397 Tclass = __ecereClass_uint64;
400 int result = ((int (*)(void *, void *, void *))(void *)Tclass->_vTbl[__ecereVMethodID_class_OnCompare])(Tclass, ((Tclass->type == 1000 && !Tclass->byValueSystemClass) || Tclass->type == 2 || Tclass->type == 4 || Tclass->type == 3 || Tclass->type == 1) ? (((unsigned char *)&node->key) + __ENDIAN_PAD((Tclass->type == 1) ? sizeof(void *) : Tclass->typeSize)) : (void *)*(uint64 *)(&node->key), ((Tclass->type == 1000 && !Tclass->byValueSystemClass) || Tclass->type == 2 || Tclass->type == 4 || Tclass->type == 3 || Tclass->type == 1) ? (((unsigned char *)&this->key) + __ENDIAN_PAD((Tclass->type == 1) ? sizeof(void *) : Tclass->typeSize)) : (void *)*(uint64 *)(&this->key));
416 struct __ecereNameSpace__ecere__com__AVLNode * n;
418 for(n = this; n; n = n->parent)
420 int __simpleStruct0, __simpleStruct1;
421 int newDepth = (__simpleStruct0 = n->left ? (n->left->depth + 1) : 0, __simpleStruct1 = n->right ? (n->right->depth + 1) : 0, (__simpleStruct0 > __simpleStruct1) ? __simpleStruct0 : __simpleStruct1);
423 if(newDepth == n->depth)
441 struct __ecereNameSpace__ecere__com__AVLNode * n;
443 for(n = this; n; n = n->parent)
445 int __simpleStruct0, __simpleStruct1;
446 int newDepth = (__simpleStruct0 = n->left ? (n->left->depth + 1) : 0, __simpleStruct1 = n->right ? (n->right->depth + 1) : 0, (__simpleStruct0 > __simpleStruct1) ? __simpleStruct0 : __simpleStruct1);
448 if(newDepth == n->depth)
459 struct __ecereNameSpace__ecere__com__AVLNode * __ecereMethod___ecereNameSpace__ecere__com__AVLNode_Find(struct __ecereNameSpace__ecere__com__AVLNode * this, struct __ecereNameSpace__ecere__com__Class * Tclass, const uint64 key)
463 int result = ((int (*)(void *, void *, void *))(void *)Tclass->_vTbl[__ecereVMethodID_class_OnCompare])(Tclass, ((Tclass->type == 1000 && !Tclass->byValueSystemClass) || Tclass->type == 2 || Tclass->type == 4 || Tclass->type == 3) ? (((unsigned char *)&key) + __ENDIAN_PAD(Tclass->typeSize)) : (void *)key, ((Tclass->type == 1000 && !Tclass->byValueSystemClass) || Tclass->type == 2 || Tclass->type == 4 || Tclass->type == 3 || Tclass->type == 1) ? (((unsigned char *)&this->key) + __ENDIAN_PAD((Tclass->type == 1) ? sizeof(void *) : Tclass->typeSize)) : (void *)*(uint64 *)(&this->key));
475 struct __ecereNameSpace__ecere__com__AVLNode * __ecereMethod___ecereNameSpace__ecere__com__AVLNode_FindAll(struct __ecereNameSpace__ecere__com__AVLNode * this, const uint64 key)
477 struct __ecereNameSpace__ecere__com__AVLNode * result = (((void *)0));
481 if(!result && this->left)
482 result = __ecereMethod___ecereNameSpace__ecere__com__AVLNode_FindAll(this->left, key);
483 if(!result && this->right)
484 result = __ecereMethod___ecereNameSpace__ecere__com__AVLNode_FindAll(this->right, key);
488 void __ecereMethod___ecereNameSpace__ecere__com__AVLNode_RemoveSwap(struct __ecereNameSpace__ecere__com__AVLNode * this, struct __ecereNameSpace__ecere__com__AVLNode * swap)
492 swap->left->parent = swap->parent;
493 if(swap == swap->parent->left)
494 swap->parent->left = swap->left;
495 else if(swap == swap->parent->right)
496 swap->parent->right = swap->left;
497 swap->left = (((void *)0));
501 swap->right->parent = swap->parent;
502 if(swap == swap->parent->left)
503 swap->parent->left = swap->right;
504 else if(swap == swap->parent->right)
505 swap->parent->right = swap->right;
506 swap->right = (((void *)0));
508 if(swap == swap->parent->left)
509 swap->parent->left = (((void *)0));
510 else if(swap == swap->parent->right)
511 swap->parent->right = (((void *)0));
513 struct __ecereNameSpace__ecere__com__AVLNode * n;
515 for(n = swap->parent; n; n = n->parent)
517 int __simpleStruct0, __simpleStruct1;
518 int newDepth = (__simpleStruct0 = n->left ? (n->left->depth + 1) : 0, __simpleStruct1 = n->right ? (n->right->depth + 1) : 0, (__simpleStruct0 > __simpleStruct1) ? __simpleStruct0 : __simpleStruct1);
520 if(newDepth == n->depth)
527 swap->left = this->left;
529 this->left->parent = swap;
530 swap->right = this->right;
532 this->right->parent = swap;
533 swap->parent = this->parent;
534 this->left = (((void *)0));
535 this->right = (((void *)0));
538 if(this == this->parent->left)
539 this->parent->left = swap;
540 else if(this == this->parent->right)
541 this->parent->right = swap;
545 struct __ecereNameSpace__ecere__com__AVLNode * __ecereMethod___ecereNameSpace__ecere__com__AVLNode_Rebalance();
547 struct __ecereNameSpace__ecere__com__AVLNode * __ecereMethod___ecereNameSpace__ecere__com__AVLNode_RemoveSwapLeft(struct __ecereNameSpace__ecere__com__AVLNode * this)
549 struct __ecereNameSpace__ecere__com__AVLNode * swap = this->left ? __ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_maximum(this->left) : this->right;
550 struct __ecereNameSpace__ecere__com__AVLNode * swapParent = (((void *)0));
554 swapParent = swap->parent;
555 __ecereMethod___ecereNameSpace__ecere__com__AVLNode_RemoveSwap(this, swap);
559 if(this == this->parent->left)
560 this->parent->left = (((void *)0));
561 else if(this == this->parent->right)
562 this->parent->right = (((void *)0));
565 struct __ecereNameSpace__ecere__com__AVLNode * n;
567 for(n = swap ? swap : this->parent; n; n = n->parent)
569 int __simpleStruct0, __simpleStruct1;
570 int newDepth = (__simpleStruct0 = n->left ? (n->left->depth + 1) : 0, __simpleStruct1 = n->right ? (n->right->depth + 1) : 0, (__simpleStruct0 > __simpleStruct1) ? __simpleStruct0 : __simpleStruct1);
572 if(newDepth == n->depth && n != swap)
577 if(swapParent && swapParent != this)
578 return __ecereMethod___ecereNameSpace__ecere__com__AVLNode_Rebalance(swapParent);
580 return __ecereMethod___ecereNameSpace__ecere__com__AVLNode_Rebalance(swap);
581 else if(this->parent)
582 return __ecereMethod___ecereNameSpace__ecere__com__AVLNode_Rebalance(this->parent);
584 return (((void *)0));
587 struct __ecereNameSpace__ecere__com__AVLNode * __ecereMethod___ecereNameSpace__ecere__com__AVLNode_RemoveSwapRight(struct __ecereNameSpace__ecere__com__AVLNode * this)
589 struct __ecereNameSpace__ecere__com__AVLNode * result;
590 struct __ecereNameSpace__ecere__com__AVLNode * swap = this->right ? __ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_minimum(this->right) : this->left;
591 struct __ecereNameSpace__ecere__com__AVLNode * swapParent = (((void *)0));
595 swapParent = swap->parent;
596 __ecereMethod___ecereNameSpace__ecere__com__AVLNode_RemoveSwap(this, swap);
600 if(this == this->parent->left)
601 this->parent->left = (((void *)0));
602 else if(this == this->parent->right)
603 this->parent->right = (((void *)0));
606 struct __ecereNameSpace__ecere__com__AVLNode * n;
608 for(n = swap ? swap : this->parent; n; n = n->parent)
610 int __simpleStruct0, __simpleStruct1;
611 int newDepth = (__simpleStruct0 = n->left ? (n->left->depth + 1) : 0, __simpleStruct1 = n->right ? (n->right->depth + 1) : 0, (__simpleStruct0 > __simpleStruct1) ? __simpleStruct0 : __simpleStruct1);
613 if(newDepth == n->depth && n != swap)
618 if(swapParent && swapParent != this)
619 result = __ecereMethod___ecereNameSpace__ecere__com__AVLNode_Rebalance(swapParent);
621 result = __ecereMethod___ecereNameSpace__ecere__com__AVLNode_Rebalance(swap);
622 else if(this->parent)
623 result = __ecereMethod___ecereNameSpace__ecere__com__AVLNode_Rebalance(this->parent);
625 result = (((void *)0));
629 int __ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_balanceFactor(struct __ecereNameSpace__ecere__com__AVLNode * this)
631 int leftDepth = this->left ? (this->left->depth + 1) : 0;
632 int rightDepth = this->right ? (this->right->depth + 1) : 0;
634 return rightDepth - leftDepth;
637 void __ecereMethod___ecereNameSpace__ecere__com__AVLNode_DoubleRotateRight();
639 void __ecereMethod___ecereNameSpace__ecere__com__AVLNode_SingleRotateRight();
641 void __ecereMethod___ecereNameSpace__ecere__com__AVLNode_DoubleRotateLeft();
643 void __ecereMethod___ecereNameSpace__ecere__com__AVLNode_SingleRotateLeft();
645 struct __ecereNameSpace__ecere__com__AVLNode * __ecereMethod___ecereNameSpace__ecere__com__AVLNode_Rebalance(struct __ecereNameSpace__ecere__com__AVLNode * this)
649 int factor = __ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_balanceFactor(this);
653 if(__ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_balanceFactor(this->left) == 1)
654 __ecereMethod___ecereNameSpace__ecere__com__AVLNode_DoubleRotateRight(this);
656 __ecereMethod___ecereNameSpace__ecere__com__AVLNode_SingleRotateRight(this);
660 if(__ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_balanceFactor(this->right) == -1)
661 __ecereMethod___ecereNameSpace__ecere__com__AVLNode_DoubleRotateLeft(this);
663 __ecereMethod___ecereNameSpace__ecere__com__AVLNode_SingleRotateLeft(this);
672 void __ecereMethod___ecereNameSpace__ecere__com__AVLNode_SingleRotateRight(struct __ecereNameSpace__ecere__com__AVLNode * this)
674 int __simpleStruct2, __simpleStruct3;
675 int __simpleStruct0, __simpleStruct1;
679 if(this == this->parent->left)
680 this->parent->left = this->left;
681 else if(this == this->parent->right)
682 this->parent->right = this->left;
684 this->left->parent = this->parent;
685 this->parent = this->left;
686 this->left = this->parent->right;
688 this->left->parent = this;
689 this->parent->right = this;
690 this->depth = (__simpleStruct0 = this->left ? (this->left->depth + 1) : 0, __simpleStruct1 = this->right ? (this->right->depth + 1) : 0, (__simpleStruct0 > __simpleStruct1) ? __simpleStruct0 : __simpleStruct1);
691 this->parent->depth = (__simpleStruct2 = this->parent->left ? (this->parent->left->depth + 1) : 0, __simpleStruct3 = this->parent->right ? (this->parent->right->depth + 1) : 0, (__simpleStruct2 > __simpleStruct3) ? __simpleStruct2 : __simpleStruct3);
693 struct __ecereNameSpace__ecere__com__AVLNode * n;
695 for(n = this->parent->parent; n; n = n->parent)
697 int __simpleStruct0, __simpleStruct1;
698 int newDepth = (__simpleStruct0 = n->left ? (n->left->depth + 1) : 0, __simpleStruct1 = n->right ? (n->right->depth + 1) : 0, (__simpleStruct0 > __simpleStruct1) ? __simpleStruct0 : __simpleStruct1);
700 if(newDepth == n->depth)
707 void __ecereMethod___ecereNameSpace__ecere__com__AVLNode_SingleRotateLeft(struct __ecereNameSpace__ecere__com__AVLNode * this)
709 int __simpleStruct2, __simpleStruct3;
710 int __simpleStruct0, __simpleStruct1;
714 if(this == this->parent->right)
715 this->parent->right = this->right;
716 else if(this == this->parent->left)
717 this->parent->left = this->right;
719 this->right->parent = this->parent;
720 this->parent = this->right;
721 this->right = this->parent->left;
723 this->right->parent = this;
724 this->parent->left = this;
725 this->depth = (__simpleStruct0 = this->left ? (this->left->depth + 1) : 0, __simpleStruct1 = this->right ? (this->right->depth + 1) : 0, (__simpleStruct0 > __simpleStruct1) ? __simpleStruct0 : __simpleStruct1);
726 this->parent->depth = (__simpleStruct2 = this->parent->left ? (this->parent->left->depth + 1) : 0, __simpleStruct3 = this->parent->right ? (this->parent->right->depth + 1) : 0, (__simpleStruct2 > __simpleStruct3) ? __simpleStruct2 : __simpleStruct3);
728 struct __ecereNameSpace__ecere__com__AVLNode * n;
730 for(n = this->parent->parent; n; n = n->parent)
732 int __simpleStruct0, __simpleStruct1;
733 int newDepth = (__simpleStruct0 = n->left ? (n->left->depth + 1) : 0, __simpleStruct1 = n->right ? (n->right->depth + 1) : 0, (__simpleStruct0 > __simpleStruct1) ? __simpleStruct0 : __simpleStruct1);
735 if(newDepth == n->depth)
742 void __ecereMethod___ecereNameSpace__ecere__com__AVLNode_DoubleRotateRight(struct __ecereNameSpace__ecere__com__AVLNode * this)
744 __ecereMethod___ecereNameSpace__ecere__com__AVLNode_SingleRotateLeft(this->left);
745 __ecereMethod___ecereNameSpace__ecere__com__AVLNode_SingleRotateRight(this);
748 void __ecereMethod___ecereNameSpace__ecere__com__AVLNode_DoubleRotateLeft(struct __ecereNameSpace__ecere__com__AVLNode * this)
750 __ecereMethod___ecereNameSpace__ecere__com__AVLNode_SingleRotateRight(this->right);
751 __ecereMethod___ecereNameSpace__ecere__com__AVLNode_SingleRotateLeft(this);
754 struct __ecereNameSpace__ecere__com__CustomAVLTree
756 struct __ecereNameSpace__ecere__com__AVLNode * root;
758 } __attribute__ ((gcc_struct));
760 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__CustomAVLTree;
762 struct __ecereNameSpace__ecere__com__IteratorPointer * __ecereMethod___ecereNameSpace__ecere__com__CustomAVLTree_GetFirst(struct __ecereNameSpace__ecere__com__Instance * this)
764 struct __ecereNameSpace__ecere__com__CustomAVLTree * __ecerePointer___ecereNameSpace__ecere__com__CustomAVLTree = (struct __ecereNameSpace__ecere__com__CustomAVLTree *)(this ? (((char *)this) + structSize_Instance) : 0);
766 return (struct __ecereNameSpace__ecere__com__IteratorPointer *)(__ecerePointer___ecereNameSpace__ecere__com__CustomAVLTree->root ? __ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_minimum(__ecerePointer___ecereNameSpace__ecere__com__CustomAVLTree->root) : (((void *)0)));
769 struct __ecereNameSpace__ecere__com__IteratorPointer * __ecereMethod___ecereNameSpace__ecere__com__CustomAVLTree_GetLast(struct __ecereNameSpace__ecere__com__Instance * this)
771 struct __ecereNameSpace__ecere__com__CustomAVLTree * __ecerePointer___ecereNameSpace__ecere__com__CustomAVLTree = (struct __ecereNameSpace__ecere__com__CustomAVLTree *)(this ? (((char *)this) + structSize_Instance) : 0);
773 return (struct __ecereNameSpace__ecere__com__IteratorPointer *)(__ecerePointer___ecereNameSpace__ecere__com__CustomAVLTree->root ? __ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_maximum(__ecerePointer___ecereNameSpace__ecere__com__CustomAVLTree->root) : (((void *)0)));
776 struct __ecereNameSpace__ecere__com__IteratorPointer * __ecereMethod___ecereNameSpace__ecere__com__CustomAVLTree_GetPrev(struct __ecereNameSpace__ecere__com__Instance * this, struct __ecereNameSpace__ecere__com__IteratorPointer * node)
778 struct __ecereNameSpace__ecere__com__CustomAVLTree * __ecerePointer___ecereNameSpace__ecere__com__CustomAVLTree = (struct __ecereNameSpace__ecere__com__CustomAVLTree *)(this ? (((char *)this) + structSize_Instance) : 0);
780 return __ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_prev(((struct __ecereNameSpace__ecere__com__AVLNode *)node));
783 struct __ecereNameSpace__ecere__com__IteratorPointer * __ecereMethod___ecereNameSpace__ecere__com__CustomAVLTree_GetNext(struct __ecereNameSpace__ecere__com__Instance * this, struct __ecereNameSpace__ecere__com__IteratorPointer * node)
785 struct __ecereNameSpace__ecere__com__CustomAVLTree * __ecerePointer___ecereNameSpace__ecere__com__CustomAVLTree = (struct __ecereNameSpace__ecere__com__CustomAVLTree *)(this ? (((char *)this) + structSize_Instance) : 0);
787 return __ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_next(((struct __ecereNameSpace__ecere__com__AVLNode *)node));
790 struct __ecereNameSpace__ecere__com__AVLNode * __ecereMethod___ecereNameSpace__ecere__com__CustomAVLTree_GetData(struct __ecereNameSpace__ecere__com__Instance * this, struct __ecereNameSpace__ecere__com__IteratorPointer * node)
792 struct __ecereNameSpace__ecere__com__CustomAVLTree * __ecerePointer___ecereNameSpace__ecere__com__CustomAVLTree = (struct __ecereNameSpace__ecere__com__CustomAVLTree *)(this ? (((char *)this) + structSize_Instance) : 0);
794 return (struct __ecereNameSpace__ecere__com__AVLNode *)node;
797 unsigned int __ecereMethod___ecereNameSpace__ecere__com__CustomAVLTree_SetData(struct __ecereNameSpace__ecere__com__Instance * this, struct __ecereNameSpace__ecere__com__IteratorPointer * node, uint64 data)
799 struct __ecereNameSpace__ecere__com__CustomAVLTree * __ecerePointer___ecereNameSpace__ecere__com__CustomAVLTree = (struct __ecereNameSpace__ecere__com__CustomAVLTree *)(this ? (((char *)this) + structSize_Instance) : 0);
804 extern struct __ecereNameSpace__ecere__com__Class * __ecereNameSpace__ecere__com__eSystem_FindClass(struct __ecereNameSpace__ecere__com__Instance * module, const char * name);
806 extern struct __ecereNameSpace__ecere__com__Instance * __thisModule;
808 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__NameSpace;
810 struct __ecereNameSpace__ecere__com__NameSpace
813 struct __ecereNameSpace__ecere__com__NameSpace * btParent;
814 struct __ecereNameSpace__ecere__com__NameSpace * left;
815 struct __ecereNameSpace__ecere__com__NameSpace * right;
817 struct __ecereNameSpace__ecere__com__NameSpace * parent;
818 struct __ecereNameSpace__ecere__sys__BinaryTree nameSpaces;
819 struct __ecereNameSpace__ecere__sys__BinaryTree classes;
820 struct __ecereNameSpace__ecere__sys__BinaryTree defines;
821 struct __ecereNameSpace__ecere__sys__BinaryTree functions;
822 } __attribute__ ((gcc_struct));
824 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Module;
826 struct __ecereNameSpace__ecere__com__Module
828 struct __ecereNameSpace__ecere__com__Instance * application;
829 struct __ecereNameSpace__ecere__sys__OldList classes;
830 struct __ecereNameSpace__ecere__sys__OldList defines;
831 struct __ecereNameSpace__ecere__sys__OldList functions;
832 struct __ecereNameSpace__ecere__sys__OldList modules;
833 struct __ecereNameSpace__ecere__com__Instance * prev;
834 struct __ecereNameSpace__ecere__com__Instance * next;
840 struct __ecereNameSpace__ecere__com__NameSpace privateNameSpace;
841 struct __ecereNameSpace__ecere__com__NameSpace publicNameSpace;
842 } __attribute__ ((gcc_struct));
844 struct __ecereNameSpace__ecere__com__IteratorPointer * __ecereMethod___ecereNameSpace__ecere__com__CustomAVLTree_Add(struct __ecereNameSpace__ecere__com__Instance * this, uint64 node)
846 struct __ecereNameSpace__ecere__com__CustomAVLTree * __ecerePointer___ecereNameSpace__ecere__com__CustomAVLTree = (struct __ecereNameSpace__ecere__com__CustomAVLTree *)(this ? (((char *)this) + structSize_Instance) : 0);
848 if(!__ecerePointer___ecereNameSpace__ecere__com__CustomAVLTree->root)
849 __ecerePointer___ecereNameSpace__ecere__com__CustomAVLTree->root = node;
852 struct __ecereNameSpace__ecere__com__Class * Tclass = ((struct __ecereNameSpace__ecere__com__Instance *)(char *)this)->_class->templateArgs[3].__anon1.__anon1.dataTypeClass->templateArgs[0].__anon1.__anon1.dataTypeClass;
856 Tclass = ((struct __ecereNameSpace__ecere__com__Instance *)(char *)this)->_class->templateArgs[3].__anon1.__anon1.dataTypeClass->templateArgs[0].__anon1.__anon1.dataTypeClass = __ecereNameSpace__ecere__com__eSystem_FindClass(((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + structSize_Instance)))->application, ((struct __ecereNameSpace__ecere__com__Instance *)(char *)this)->_class->templateArgs[3].__anon1.__anon1.dataTypeClass->templateArgs[0].__anon1.__anon1.dataTypeString);
858 if(__ecereMethod___ecereNameSpace__ecere__com__AVLNode_Add(__ecerePointer___ecereNameSpace__ecere__com__CustomAVLTree->root, Tclass, node))
859 __ecerePointer___ecereNameSpace__ecere__com__CustomAVLTree->root = (uint64)(__ecereMethod___ecereNameSpace__ecere__com__AVLNode_Rebalance(node));
861 return (((void *)0));
863 __ecerePointer___ecereNameSpace__ecere__com__CustomAVLTree->count++;
864 return (struct __ecereNameSpace__ecere__com__IteratorPointer *)node;
867 void __ecereMethod___ecereNameSpace__ecere__com__CustomAVLTree_Remove(struct __ecereNameSpace__ecere__com__Instance * this, struct __ecereNameSpace__ecere__com__IteratorPointer * node)
869 struct __ecereNameSpace__ecere__com__CustomAVLTree * __ecerePointer___ecereNameSpace__ecere__com__CustomAVLTree = (struct __ecereNameSpace__ecere__com__CustomAVLTree *)(this ? (((char *)this) + structSize_Instance) : 0);
870 struct __ecereNameSpace__ecere__com__AVLNode * parent = ((struct __ecereNameSpace__ecere__com__AVLNode *)node)->parent;
872 if(parent || __ecerePointer___ecereNameSpace__ecere__com__CustomAVLTree->root == (struct __ecereNameSpace__ecere__com__AVLNode *)node)
874 __ecerePointer___ecereNameSpace__ecere__com__CustomAVLTree->root = (uint64)(__ecereMethod___ecereNameSpace__ecere__com__AVLNode_RemoveSwapRight(((struct __ecereNameSpace__ecere__com__AVLNode *)node)));
875 __ecerePointer___ecereNameSpace__ecere__com__CustomAVLTree->count--;
876 ((struct __ecereNameSpace__ecere__com__AVLNode *)node)->parent = (((void *)0));
880 int __ecereVMethodID___ecereNameSpace__ecere__com__Container_Remove;
882 int __ecereVMethodID_class_OnFree;
884 void __ecereMethod___ecereNameSpace__ecere__com__CustomAVLTree_Delete(struct __ecereNameSpace__ecere__com__Instance * this, struct __ecereNameSpace__ecere__com__IteratorPointer * _item)
886 struct __ecereNameSpace__ecere__com__CustomAVLTree * __ecerePointer___ecereNameSpace__ecere__com__CustomAVLTree = (struct __ecereNameSpace__ecere__com__CustomAVLTree *)(this ? (((char *)this) + structSize_Instance) : 0);
887 struct __ecereNameSpace__ecere__com__AVLNode * item = (struct __ecereNameSpace__ecere__com__AVLNode *)_item;
889 ((void (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * it))__ecereClass___ecereNameSpace__ecere__com__CustomAVLTree->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Remove])(this, _item);
890 (((void (* )(void * _class, void * data))((struct __ecereNameSpace__ecere__com__Instance *)(char *)this)->_class->templateArgs[3].__anon1.__anon1.dataTypeClass->_vTbl[__ecereVMethodID_class_OnFree])(((struct __ecereNameSpace__ecere__com__Instance * )(char * )this)->_class->templateArgs[3].__anon1.__anon1.dataTypeClass, item), item = 0);
893 void __ecereMethod___ecereNameSpace__ecere__com__CustomAVLTree_Free(struct __ecereNameSpace__ecere__com__Instance * this)
895 struct __ecereNameSpace__ecere__com__CustomAVLTree * __ecerePointer___ecereNameSpace__ecere__com__CustomAVLTree = (struct __ecereNameSpace__ecere__com__CustomAVLTree *)(this ? (((char *)this) + structSize_Instance) : 0);
896 struct __ecereNameSpace__ecere__com__AVLNode * item;
898 while((item = __ecerePointer___ecereNameSpace__ecere__com__CustomAVLTree->root))
900 ((void (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * it))__ecereClass___ecereNameSpace__ecere__com__CustomAVLTree->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Remove])(this, item);
901 (((void (* )(void * _class, void * data))((struct __ecereNameSpace__ecere__com__Instance *)(char *)this)->_class->templateArgs[3].__anon1.__anon1.dataTypeClass->_vTbl[__ecereVMethodID_class_OnFree])(((struct __ecereNameSpace__ecere__com__Instance * )(char * )this)->_class->templateArgs[3].__anon1.__anon1.dataTypeClass, item), item = 0);
905 struct __ecereNameSpace__ecere__com__IteratorPointer * __ecereMethod___ecereNameSpace__ecere__com__CustomAVLTree_Find(struct __ecereNameSpace__ecere__com__Instance * this, uint64 value)
907 struct __ecereNameSpace__ecere__com__CustomAVLTree * __ecerePointer___ecereNameSpace__ecere__com__CustomAVLTree = (struct __ecereNameSpace__ecere__com__CustomAVLTree *)(this ? (((char *)this) + structSize_Instance) : 0);
909 return (struct __ecereNameSpace__ecere__com__IteratorPointer *)value;
912 extern struct __ecereNameSpace__ecere__com__Class * __ecereNameSpace__ecere__com__eSystem_RegisterClass(int type, const char * name, const char * baseName, int size, int sizeClass, unsigned int (* Constructor)(void * ), void (* Destructor)(void * ), struct __ecereNameSpace__ecere__com__Instance * module, int declMode, int inheritanceAccess);
914 extern struct __ecereNameSpace__ecere__com__Method * __ecereNameSpace__ecere__com__eClass_AddMethod(struct __ecereNameSpace__ecere__com__Class * _class, const char * name, const char * type, void * function, int declMode);
916 extern struct __ecereNameSpace__ecere__com__DataMember * __ecereNameSpace__ecere__com__eClass_AddDataMember(struct __ecereNameSpace__ecere__com__Class * _class, const char * name, const char * type, unsigned int size, unsigned int alignment, int declMode);
918 extern struct __ecereNameSpace__ecere__com__Property * __ecereNameSpace__ecere__com__eClass_AddProperty(struct __ecereNameSpace__ecere__com__Class * _class, const char * name, const char * dataType, void * setStmt, void * getStmt, int declMode);
920 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__ClassTemplateParameter;
922 struct __ecereNameSpace__ecere__com__ClassTemplateParameter;
924 extern struct __ecereNameSpace__ecere__com__ClassTemplateParameter * __ecereNameSpace__ecere__com__eClass_AddTemplateParameter(struct __ecereNameSpace__ecere__com__Class * _class, const char * name, int type, const void * info, struct __ecereNameSpace__ecere__com__ClassTemplateArgument * defaultArg);
926 extern void __ecereNameSpace__ecere__com__eClass_DoneAddingTemplateParameters(struct __ecereNameSpace__ecere__com__Class * base);
928 void __ecereRegisterModule_CustomAVLTree(struct __ecereNameSpace__ecere__com__Instance * module)
930 struct __ecereNameSpace__ecere__com__ClassTemplateArgument __simpleStruct0 =
936 .dataTypeString = "uint64"
940 struct __ecereNameSpace__ecere__com__Class * class;
942 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::AVLNode", "ecere::com::IteratorPointer", sizeof(struct __ecereNameSpace__ecere__com__AVLNode), 0, 0, 0, module, 4, 1);
943 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + structSize_Instance)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + structSize_Instance)))->application && class)
944 __ecereClass___ecereNameSpace__ecere__com__AVLNode = class;
945 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "Find", "thisclass Find(ecere::com::Class Tclass, const T key)", __ecereMethod___ecereNameSpace__ecere__com__AVLNode_Find, 1);
946 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "__ecerePrivateData0", "byte[" _XSTR(AVLNode_PrivateData) "]", AVLNode_PrivateData, 1, 2);
947 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "key", "T", 8, 8, 1);
948 __ecerePropM___ecereNameSpace__ecere__com__AVLNode_prev = __ecereNameSpace__ecere__com__eClass_AddProperty(class, "prev", "thisclass", 0, __ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_prev, 1);
949 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + structSize_Instance)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + structSize_Instance)))->application)
950 __ecereProp___ecereNameSpace__ecere__com__AVLNode_prev = __ecerePropM___ecereNameSpace__ecere__com__AVLNode_prev, __ecerePropM___ecereNameSpace__ecere__com__AVLNode_prev = (void *)0;
951 __ecerePropM___ecereNameSpace__ecere__com__AVLNode_next = __ecereNameSpace__ecere__com__eClass_AddProperty(class, "next", "thisclass", 0, __ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_next, 1);
952 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + structSize_Instance)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + structSize_Instance)))->application)
953 __ecereProp___ecereNameSpace__ecere__com__AVLNode_next = __ecerePropM___ecereNameSpace__ecere__com__AVLNode_next, __ecerePropM___ecereNameSpace__ecere__com__AVLNode_next = (void *)0;
954 __ecerePropM___ecereNameSpace__ecere__com__AVLNode_minimum = __ecereNameSpace__ecere__com__eClass_AddProperty(class, "minimum", "thisclass", 0, __ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_minimum, 1);
955 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + structSize_Instance)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + structSize_Instance)))->application)
956 __ecereProp___ecereNameSpace__ecere__com__AVLNode_minimum = __ecerePropM___ecereNameSpace__ecere__com__AVLNode_minimum, __ecerePropM___ecereNameSpace__ecere__com__AVLNode_minimum = (void *)0;
957 __ecerePropM___ecereNameSpace__ecere__com__AVLNode_maximum = __ecereNameSpace__ecere__com__eClass_AddProperty(class, "maximum", "thisclass", 0, __ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_maximum, 1);
958 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + structSize_Instance)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + structSize_Instance)))->application)
959 __ecereProp___ecereNameSpace__ecere__com__AVLNode_maximum = __ecerePropM___ecereNameSpace__ecere__com__AVLNode_maximum, __ecerePropM___ecereNameSpace__ecere__com__AVLNode_maximum = (void *)0;
960 __ecerePropM___ecereNameSpace__ecere__com__AVLNode_count = __ecereNameSpace__ecere__com__eClass_AddProperty(class, "count", "int", 0, __ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_count, 1);
961 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + structSize_Instance)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + structSize_Instance)))->application)
962 __ecereProp___ecereNameSpace__ecere__com__AVLNode_count = __ecerePropM___ecereNameSpace__ecere__com__AVLNode_count, __ecerePropM___ecereNameSpace__ecere__com__AVLNode_count = (void *)0;
963 __ecerePropM___ecereNameSpace__ecere__com__AVLNode_depthProp = __ecereNameSpace__ecere__com__eClass_AddProperty(class, "depthProp", "int", 0, __ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_depthProp, 1);
964 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + structSize_Instance)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + structSize_Instance)))->application)
965 __ecereProp___ecereNameSpace__ecere__com__AVLNode_depthProp = __ecerePropM___ecereNameSpace__ecere__com__AVLNode_depthProp, __ecerePropM___ecereNameSpace__ecere__com__AVLNode_depthProp = (void *)0;
966 __ecerePropM___ecereNameSpace__ecere__com__AVLNode_balanceFactor = __ecereNameSpace__ecere__com__eClass_AddProperty(class, "balanceFactor", "int", 0, __ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_balanceFactor, 2);
967 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + structSize_Instance)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + structSize_Instance)))->application)
968 __ecereProp___ecereNameSpace__ecere__com__AVLNode_balanceFactor = __ecerePropM___ecereNameSpace__ecere__com__AVLNode_balanceFactor, __ecerePropM___ecereNameSpace__ecere__com__AVLNode_balanceFactor = (void *)0;
969 __ecereNameSpace__ecere__com__eClass_AddTemplateParameter(class, "T", 0, 0, (((void *)0)));
970 __ecereNameSpace__ecere__com__eClass_DoneAddingTemplateParameters(class);
972 class->fixed = (unsigned int)1;
973 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(0, "ecere::com::CustomAVLTree", "ecere::com::Container<BT>", sizeof(struct __ecereNameSpace__ecere__com__CustomAVLTree), 0, 0, 0, module, 4, 1);
974 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + structSize_Instance)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + structSize_Instance)))->application && class)
975 __ecereClass___ecereNameSpace__ecere__com__CustomAVLTree = class;
976 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "GetFirst", 0, __ecereMethod___ecereNameSpace__ecere__com__CustomAVLTree_GetFirst, 1);
977 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "GetLast", 0, __ecereMethod___ecereNameSpace__ecere__com__CustomAVLTree_GetLast, 1);
978 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "GetPrev", 0, __ecereMethod___ecereNameSpace__ecere__com__CustomAVLTree_GetPrev, 1);
979 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "GetNext", 0, __ecereMethod___ecereNameSpace__ecere__com__CustomAVLTree_GetNext, 1);
980 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "GetData", 0, __ecereMethod___ecereNameSpace__ecere__com__CustomAVLTree_GetData, 1);
981 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "SetData", 0, __ecereMethod___ecereNameSpace__ecere__com__CustomAVLTree_SetData, 1);
982 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "Add", 0, __ecereMethod___ecereNameSpace__ecere__com__CustomAVLTree_Add, 1);
983 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "Remove", 0, __ecereMethod___ecereNameSpace__ecere__com__CustomAVLTree_Remove, 1);
984 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "Find", 0, __ecereMethod___ecereNameSpace__ecere__com__CustomAVLTree_Find, 1);
985 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "Free", 0, __ecereMethod___ecereNameSpace__ecere__com__CustomAVLTree_Free, 1);
986 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "Delete", 0, __ecereMethod___ecereNameSpace__ecere__com__CustomAVLTree_Delete, 1);
987 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "root", "BT", arch_PointerSize, arch_PointerSize, 1);
988 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "count", "int", 4, 4, 1);
989 __ecereNameSpace__ecere__com__eClass_AddTemplateParameter(class, "BT", 0, "ecere::com::AVLNode", (((void *)0)));
990 __ecereNameSpace__ecere__com__eClass_AddTemplateParameter(class, "KT", 0, 0, &__simpleStruct0);
991 __ecereNameSpace__ecere__com__eClass_DoneAddingTemplateParameters(class);
993 class->fixed = (unsigned int)1;
996 void __ecereUnregisterModule_CustomAVLTree(struct __ecereNameSpace__ecere__com__Instance * module)
999 __ecerePropM___ecereNameSpace__ecere__com__AVLNode_prev = (void *)0;
1000 __ecerePropM___ecereNameSpace__ecere__com__AVLNode_next = (void *)0;
1001 __ecerePropM___ecereNameSpace__ecere__com__AVLNode_minimum = (void *)0;
1002 __ecerePropM___ecereNameSpace__ecere__com__AVLNode_maximum = (void *)0;
1003 __ecerePropM___ecereNameSpace__ecere__com__AVLNode_count = (void *)0;
1004 __ecerePropM___ecereNameSpace__ecere__com__AVLNode_depthProp = (void *)0;
1005 __ecerePropM___ecereNameSpace__ecere__com__AVLNode_balanceFactor = (void *)0;