1 /* Code generated from eC source file: CustomAVLTree.ec */
3 #define __runtimePlatform 1
4 #elif defined(__APPLE__)
5 #define __runtimePlatform 3
7 #define __runtimePlatform 2
10 typedef long long int64;
11 typedef unsigned long long uint64;
15 #elif defined(__TINYC__)
17 #define __builtin_va_list va_list
18 #define __builtin_va_start va_start
19 #define __builtin_va_end va_end
21 #define strcasecmp stricmp
22 #define strncasecmp strnicmp
23 #define __declspec(x) __attribute__((x))
27 typedef long long int64;
28 typedef unsigned long long uint64;
30 typedef __int64 int64;
31 typedef unsigned __int64 uint64;
34 #define __ENDIAN_PAD(x) (8 - (x))
36 #define __ENDIAN_PAD(x) 0
39 #include <sys/types.h>
40 extern int __ecereVMethodID_class_OnCompare;
42 extern int __ecereVMethodID_class_OnCopy;
44 struct __ecereNameSpace__ecere__com__CustomAVLTree
46 struct __ecereNameSpace__ecere__com__AVLNode * root;
48 } __attribute__ ((gcc_struct));
50 struct __ecereNameSpace__ecere__sys__BTNode;
52 struct __ecereNameSpace__ecere__sys__OldList
59 } __attribute__ ((gcc_struct));
61 struct __ecereNameSpace__ecere__com__DataValue
76 } __attribute__ ((gcc_struct)) __anon1;
77 } __attribute__ ((gcc_struct));
79 struct __ecereNameSpace__ecere__com__SerialBuffer
81 unsigned char * _buffer;
85 } __attribute__ ((gcc_struct));
87 extern void * __ecereNameSpace__ecere__com__eSystem_New(unsigned int size);
89 extern void * __ecereNameSpace__ecere__com__eSystem_New0(unsigned int size);
91 extern void * __ecereNameSpace__ecere__com__eSystem_Renew(void * memory, unsigned int size);
93 extern void * __ecereNameSpace__ecere__com__eSystem_Renew0(void * memory, unsigned int size);
95 extern void __ecereNameSpace__ecere__com__eSystem_Delete(void * memory);
97 struct __ecereNameSpace__ecere__com__IteratorPointer;
99 struct __ecereNameSpace__ecere__com__ClassTemplateParameter;
101 int __ecereVMethodID_class_OnFree;
103 struct __ecereNameSpace__ecere__com__Property;
105 extern void __ecereNameSpace__ecere__com__eInstance_Watch(void * instance, struct __ecereNameSpace__ecere__com__Property * _property, void * object, void (* callback)(void * , void * ));
107 static __attribute__((unused)) struct __ecereNameSpace__ecere__com__Property * __ecereProp___ecereNameSpace__ecere__com__AVLNode_prev, * __ecerePropM___ecereNameSpace__ecere__com__AVLNode_prev;
109 static __attribute__((unused)) struct __ecereNameSpace__ecere__com__Property * __ecereProp___ecereNameSpace__ecere__com__AVLNode_next, * __ecerePropM___ecereNameSpace__ecere__com__AVLNode_next;
111 static __attribute__((unused)) struct __ecereNameSpace__ecere__com__Property * __ecereProp___ecereNameSpace__ecere__com__AVLNode_minimum, * __ecerePropM___ecereNameSpace__ecere__com__AVLNode_minimum;
113 static __attribute__((unused)) struct __ecereNameSpace__ecere__com__Property * __ecereProp___ecereNameSpace__ecere__com__AVLNode_maximum, * __ecerePropM___ecereNameSpace__ecere__com__AVLNode_maximum;
115 static __attribute__((unused)) struct __ecereNameSpace__ecere__com__Property * __ecereProp___ecereNameSpace__ecere__com__AVLNode_count, * __ecerePropM___ecereNameSpace__ecere__com__AVLNode_count;
117 static __attribute__((unused)) struct __ecereNameSpace__ecere__com__Property * __ecereProp___ecereNameSpace__ecere__com__AVLNode_depthProp, * __ecerePropM___ecereNameSpace__ecere__com__AVLNode_depthProp;
119 static __attribute__((unused)) struct __ecereNameSpace__ecere__com__Property * __ecereProp___ecereNameSpace__ecere__com__AVLNode_balanceFactor, * __ecerePropM___ecereNameSpace__ecere__com__AVLNode_balanceFactor;
121 struct __ecereNameSpace__ecere__com__AVLNode
123 struct __ecereNameSpace__ecere__com__AVLNode * parent, * left, * right;
126 } __attribute__ ((gcc_struct));
128 struct __ecereNameSpace__ecere__com__Class;
130 struct __ecereNameSpace__ecere__com__AVLNode * __ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_maximum(struct __ecereNameSpace__ecere__com__AVLNode * this);
132 struct __ecereNameSpace__ecere__com__AVLNode * __ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_minimum(struct __ecereNameSpace__ecere__com__AVLNode * this);
134 int __ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_count(struct __ecereNameSpace__ecere__com__AVLNode * this);
136 int __ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_depthProp(struct __ecereNameSpace__ecere__com__AVLNode * this);
138 int __ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_balanceFactor(struct __ecereNameSpace__ecere__com__AVLNode * this);
140 struct __ecereNameSpace__ecere__com__AVLNode * __ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_prev(struct __ecereNameSpace__ecere__com__AVLNode * this);
142 struct __ecereNameSpace__ecere__com__AVLNode * __ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_next(struct __ecereNameSpace__ecere__com__AVLNode * this);
144 struct __ecereNameSpace__ecere__com__Instance
147 struct __ecereNameSpace__ecere__com__Class * _class;
149 } __attribute__ ((gcc_struct));
151 extern long long __ecereNameSpace__ecere__com__eClass_GetProperty(struct __ecereNameSpace__ecere__com__Class * _class, const char * name);
153 extern void __ecereNameSpace__ecere__com__eClass_SetProperty(struct __ecereNameSpace__ecere__com__Class * _class, const char * name, long long value);
155 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);
157 extern void __ecereNameSpace__ecere__com__eClass_DoneAddingTemplateParameters(struct __ecereNameSpace__ecere__com__Class * base);
159 struct __ecereNameSpace__ecere__com__Property
161 struct __ecereNameSpace__ecere__com__Property * prev;
162 struct __ecereNameSpace__ecere__com__Property * next;
164 unsigned int isProperty;
167 struct __ecereNameSpace__ecere__com__Class * _class;
168 const char * dataTypeString;
169 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
170 struct __ecereNameSpace__ecere__com__Instance * dataType;
171 void (* Set)(void * , int);
172 int (* Get)(void * );
173 unsigned int (* IsSet)(void * );
177 unsigned int conversion;
178 unsigned int watcherOffset;
179 const char * category;
180 unsigned int compiled;
181 unsigned int selfWatchable;
182 unsigned int isWatchable;
183 } __attribute__ ((gcc_struct));
185 extern void __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property);
187 extern void __ecereNameSpace__ecere__com__eInstance_SetMethod(struct __ecereNameSpace__ecere__com__Instance * instance, const char * name, void * function);
189 extern void __ecereNameSpace__ecere__com__eInstance_IncRef(struct __ecereNameSpace__ecere__com__Instance * instance);
191 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);
193 extern void __ecereNameSpace__ecere__com__eInstance_FireWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property);
195 int __ecereVMethodID___ecereNameSpace__ecere__com__Container_Remove;
197 struct __ecereNameSpace__ecere__sys__BinaryTree;
199 struct __ecereNameSpace__ecere__sys__BinaryTree
201 struct __ecereNameSpace__ecere__sys__BTNode * root;
203 int (* CompareKey)(struct __ecereNameSpace__ecere__sys__BinaryTree * tree, uintptr_t a, uintptr_t b);
204 void (* FreeKey)(void * key);
205 } __attribute__ ((gcc_struct));
207 struct __ecereNameSpace__ecere__com__DataMember;
209 struct __ecereNameSpace__ecere__com__DataMember
211 struct __ecereNameSpace__ecere__com__DataMember * prev;
212 struct __ecereNameSpace__ecere__com__DataMember * next;
214 unsigned int isProperty;
217 struct __ecereNameSpace__ecere__com__Class * _class;
218 const char * dataTypeString;
219 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
220 struct __ecereNameSpace__ecere__com__Instance * dataType;
224 struct __ecereNameSpace__ecere__sys__OldList members;
225 struct __ecereNameSpace__ecere__sys__BinaryTree membersAlpha;
227 short structAlignment;
228 short pointerAlignment;
229 } __attribute__ ((gcc_struct));
231 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);
233 struct __ecereNameSpace__ecere__com__Method;
235 struct __ecereNameSpace__ecere__com__ClassTemplateArgument
241 const char * dataTypeString;
242 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
243 } __attribute__ ((gcc_struct)) __anon1;
244 struct __ecereNameSpace__ecere__com__DataValue expression;
247 const char * memberString;
250 struct __ecereNameSpace__ecere__com__DataMember * member;
251 struct __ecereNameSpace__ecere__com__Property * prop;
252 struct __ecereNameSpace__ecere__com__Method * method;
253 } __attribute__ ((gcc_struct)) __anon1;
254 } __attribute__ ((gcc_struct)) __anon2;
255 } __attribute__ ((gcc_struct)) __anon1;
256 } __attribute__ ((gcc_struct));
258 struct __ecereNameSpace__ecere__com__Method
261 struct __ecereNameSpace__ecere__com__Method * parent;
262 struct __ecereNameSpace__ecere__com__Method * left;
263 struct __ecereNameSpace__ecere__com__Method * right;
268 struct __ecereNameSpace__ecere__com__Class * _class;
270 const char * dataTypeString;
271 struct __ecereNameSpace__ecere__com__Instance * dataType;
273 } __attribute__ ((gcc_struct));
275 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);
277 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);
279 struct __ecereNameSpace__ecere__com__Module;
281 extern struct __ecereNameSpace__ecere__com__Class * __ecereNameSpace__ecere__com__eSystem_FindClass(struct __ecereNameSpace__ecere__com__Instance * module, const char * name);
283 extern struct __ecereNameSpace__ecere__com__Instance * __thisModule;
285 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);
287 struct __ecereNameSpace__ecere__com__NameSpace;
289 struct __ecereNameSpace__ecere__com__NameSpace
292 struct __ecereNameSpace__ecere__com__NameSpace * btParent;
293 struct __ecereNameSpace__ecere__com__NameSpace * left;
294 struct __ecereNameSpace__ecere__com__NameSpace * right;
296 struct __ecereNameSpace__ecere__com__NameSpace * parent;
297 struct __ecereNameSpace__ecere__sys__BinaryTree nameSpaces;
298 struct __ecereNameSpace__ecere__sys__BinaryTree classes;
299 struct __ecereNameSpace__ecere__sys__BinaryTree defines;
300 struct __ecereNameSpace__ecere__sys__BinaryTree functions;
301 } __attribute__ ((gcc_struct));
303 struct __ecereNameSpace__ecere__com__Class
305 struct __ecereNameSpace__ecere__com__Class * prev;
306 struct __ecereNameSpace__ecere__com__Class * next;
312 unsigned int (* Constructor)(void * );
313 void (* Destructor)(void * );
316 struct __ecereNameSpace__ecere__com__Class * base;
317 struct __ecereNameSpace__ecere__sys__BinaryTree methods;
318 struct __ecereNameSpace__ecere__sys__BinaryTree members;
319 struct __ecereNameSpace__ecere__sys__BinaryTree prop;
320 struct __ecereNameSpace__ecere__sys__OldList membersAndProperties;
321 struct __ecereNameSpace__ecere__sys__BinaryTree classProperties;
322 struct __ecereNameSpace__ecere__sys__OldList derivatives;
326 struct __ecereNameSpace__ecere__com__Instance * module;
327 struct __ecereNameSpace__ecere__com__NameSpace * nameSpace;
328 const char * dataTypeString;
329 struct __ecereNameSpace__ecere__com__Instance * dataType;
331 int defaultAlignment;
332 void (* Initialize)();
334 struct __ecereNameSpace__ecere__sys__OldList selfWatchers;
335 const char * designerClass;
336 unsigned int noExpansion;
337 const char * defaultProperty;
338 unsigned int comRedefinition;
341 unsigned int internalDecl;
343 unsigned int computeSize;
344 short structAlignment;
345 short pointerAlignment;
346 int destructionWatchOffset;
348 struct __ecereNameSpace__ecere__sys__OldList delayedCPValues;
349 int inheritanceAccess;
350 const char * fullName;
352 struct __ecereNameSpace__ecere__sys__OldList conversions;
353 struct __ecereNameSpace__ecere__sys__OldList templateParams;
354 struct __ecereNameSpace__ecere__com__ClassTemplateArgument * templateArgs;
355 struct __ecereNameSpace__ecere__com__Class * templateClass;
356 struct __ecereNameSpace__ecere__sys__OldList templatized;
358 unsigned int isInstanceClass;
359 unsigned int byValueSystemClass;
360 } __attribute__ ((gcc_struct));
362 struct __ecereNameSpace__ecere__com__Application
367 unsigned int isGUIApp;
368 struct __ecereNameSpace__ecere__sys__OldList allModules;
369 char * parsedCommand;
370 struct __ecereNameSpace__ecere__com__NameSpace systemNameSpace;
371 } __attribute__ ((gcc_struct));
373 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__AVLNode;
375 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__CustomAVLTree;
377 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__IteratorPointer;
379 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_uint64;
381 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Instance;
383 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Module;
385 struct __ecereNameSpace__ecere__com__Module
387 struct __ecereNameSpace__ecere__com__Instance * application;
388 struct __ecereNameSpace__ecere__sys__OldList classes;
389 struct __ecereNameSpace__ecere__sys__OldList defines;
390 struct __ecereNameSpace__ecere__sys__OldList functions;
391 struct __ecereNameSpace__ecere__sys__OldList modules;
392 struct __ecereNameSpace__ecere__com__Instance * prev;
393 struct __ecereNameSpace__ecere__com__Instance * next;
399 struct __ecereNameSpace__ecere__com__NameSpace privateNameSpace;
400 struct __ecereNameSpace__ecere__com__NameSpace publicNameSpace;
401 } __attribute__ ((gcc_struct));
403 struct __ecereNameSpace__ecere__com__AVLNode * __ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_prev(struct __ecereNameSpace__ecere__com__AVLNode * this)
406 return __ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_maximum(this->left);
409 if(this->parent && this == this->parent->right)
417 struct __ecereNameSpace__ecere__com__AVLNode * __ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_next(struct __ecereNameSpace__ecere__com__AVLNode * this)
419 struct __ecereNameSpace__ecere__com__AVLNode * right = this->right;
422 return __ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_minimum(right);
425 struct __ecereNameSpace__ecere__com__AVLNode * parent = this->parent;
427 if(parent && this == parent->left)
432 return (((void *)0));
435 struct __ecereNameSpace__ecere__com__AVLNode * __ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_minimum(struct __ecereNameSpace__ecere__com__AVLNode * this)
442 struct __ecereNameSpace__ecere__com__AVLNode * __ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_maximum(struct __ecereNameSpace__ecere__com__AVLNode * this)
449 int __ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_count(struct __ecereNameSpace__ecere__com__AVLNode * this)
451 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);
454 int __ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_depthProp(struct __ecereNameSpace__ecere__com__AVLNode * this)
456 int leftDepth = this->left ? (__ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_depthProp(this->left) + 1) : 0;
457 int rightDepth = this->right ? (__ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_depthProp(this->right) + 1) : 0;
459 return ((leftDepth > rightDepth) ? leftDepth : rightDepth);
462 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)
467 unsigned char * a, * b;
469 if((Tclass->type == 1000 && !Tclass->byValueSystemClass) || Tclass->type == 2 || Tclass->type == 4 || Tclass->type == 3)
471 a = (unsigned char *)&key;
472 a += __ENDIAN_PAD(Tclass->typeSize);
475 a = (unsigned char *)(uintptr_t)key;
476 if((Tclass->type == 1000 && !Tclass->byValueSystemClass) || Tclass->type == 2 || Tclass->type == 4 || Tclass->type == 3 || Tclass->type == 1)
478 b = (unsigned char *)&this->key;
479 b += __ENDIAN_PAD((Tclass->type == 1) ? sizeof(void *) : Tclass->typeSize);
482 b = (unsigned char *)(uintptr_t)*(uint64 *)(&this->key);
483 result = ((int (*)(void *, void *, void *))(void *)Tclass->_vTbl[__ecereVMethodID_class_OnCompare])(Tclass, a, b);
494 void __ecereMethod___ecereNameSpace__ecere__com__AVLNode_RemoveSwap(struct __ecereNameSpace__ecere__com__AVLNode * this, struct __ecereNameSpace__ecere__com__AVLNode * swap)
498 swap->left->parent = swap->parent;
499 if(swap == swap->parent->left)
500 swap->parent->left = swap->left;
501 else if(swap == swap->parent->right)
502 swap->parent->right = swap->left;
503 swap->left = (((void *)0));
507 swap->right->parent = swap->parent;
508 if(swap == swap->parent->left)
509 swap->parent->left = swap->right;
510 else if(swap == swap->parent->right)
511 swap->parent->right = swap->right;
512 swap->right = (((void *)0));
514 if(swap == swap->parent->left)
515 swap->parent->left = (((void *)0));
516 else if(swap == swap->parent->right)
517 swap->parent->right = (((void *)0));
519 struct __ecereNameSpace__ecere__com__AVLNode * n;
521 for(n = swap->parent; n; n = n->parent)
523 int __simpleStruct0, __simpleStruct1;
524 int newDepth = (__simpleStruct0 = n->left ? (n->left->depth + 1) : 0, __simpleStruct1 = n->right ? (n->right->depth + 1) : 0, (__simpleStruct0 > __simpleStruct1) ? __simpleStruct0 : __simpleStruct1);
526 if(newDepth == n->depth)
533 swap->left = this->left;
535 this->left->parent = swap;
536 swap->right = this->right;
538 this->right->parent = swap;
539 swap->parent = this->parent;
540 this->left = (((void *)0));
541 this->right = (((void *)0));
544 if(this == this->parent->left)
545 this->parent->left = swap;
546 else if(this == this->parent->right)
547 this->parent->right = swap;
551 int __ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_balanceFactor(struct __ecereNameSpace__ecere__com__AVLNode * this)
553 int leftDepth = this->left ? (this->left->depth + 1) : 0;
554 int rightDepth = this->right ? (this->right->depth + 1) : 0;
556 return rightDepth - leftDepth;
559 void __ecereMethod___ecereNameSpace__ecere__com__AVLNode_SingleRotateRight(struct __ecereNameSpace__ecere__com__AVLNode * this)
561 int __simpleStruct2, __simpleStruct3;
562 int __simpleStruct0, __simpleStruct1;
566 if(this == this->parent->left)
567 this->parent->left = this->left;
568 else if(this == this->parent->right)
569 this->parent->right = this->left;
571 this->left->parent = this->parent;
572 this->parent = this->left;
573 this->left = this->parent->right;
575 this->left->parent = this;
576 this->parent->right = this;
577 this->depth = (__simpleStruct0 = this->left ? (this->left->depth + 1) : 0, __simpleStruct1 = this->right ? (this->right->depth + 1) : 0, (__simpleStruct0 > __simpleStruct1) ? __simpleStruct0 : __simpleStruct1);
578 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);
580 struct __ecereNameSpace__ecere__com__AVLNode * n;
582 for(n = this->parent->parent; n; n = n->parent)
584 int __simpleStruct0, __simpleStruct1;
585 int newDepth = (__simpleStruct0 = n->left ? (n->left->depth + 1) : 0, __simpleStruct1 = n->right ? (n->right->depth + 1) : 0, (__simpleStruct0 > __simpleStruct1) ? __simpleStruct0 : __simpleStruct1);
587 if(newDepth == n->depth)
594 void __ecereMethod___ecereNameSpace__ecere__com__AVLNode_SingleRotateLeft(struct __ecereNameSpace__ecere__com__AVLNode * this)
596 int __simpleStruct2, __simpleStruct3;
597 int __simpleStruct0, __simpleStruct1;
601 if(this == this->parent->right)
602 this->parent->right = this->right;
603 else if(this == this->parent->left)
604 this->parent->left = this->right;
606 this->right->parent = this->parent;
607 this->parent = this->right;
608 this->right = this->parent->left;
610 this->right->parent = this;
611 this->parent->left = this;
612 this->depth = (__simpleStruct0 = this->left ? (this->left->depth + 1) : 0, __simpleStruct1 = this->right ? (this->right->depth + 1) : 0, (__simpleStruct0 > __simpleStruct1) ? __simpleStruct0 : __simpleStruct1);
613 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);
615 struct __ecereNameSpace__ecere__com__AVLNode * n;
617 for(n = this->parent->parent; n; n = n->parent)
619 int __simpleStruct0, __simpleStruct1;
620 int newDepth = (__simpleStruct0 = n->left ? (n->left->depth + 1) : 0, __simpleStruct1 = n->right ? (n->right->depth + 1) : 0, (__simpleStruct0 > __simpleStruct1) ? __simpleStruct0 : __simpleStruct1);
622 if(newDepth == n->depth)
629 struct __ecereNameSpace__ecere__com__IteratorPointer * __ecereMethod___ecereNameSpace__ecere__com__CustomAVLTree_GetFirst(struct __ecereNameSpace__ecere__com__Instance * this)
631 __attribute__((unused)) struct __ecereNameSpace__ecere__com__CustomAVLTree * __ecerePointer___ecereNameSpace__ecere__com__CustomAVLTree = (struct __ecereNameSpace__ecere__com__CustomAVLTree *)(this ? (((char *)this) + 0 + sizeof(struct __ecereNameSpace__ecere__com__Instance)) : 0);
633 return (struct __ecereNameSpace__ecere__com__IteratorPointer *)(__ecerePointer___ecereNameSpace__ecere__com__CustomAVLTree->root ? __ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_minimum(((struct __ecereNameSpace__ecere__com__AVLNode *)((uintptr_t)(__ecerePointer___ecereNameSpace__ecere__com__CustomAVLTree->root)))) : (((void *)0)));
636 struct __ecereNameSpace__ecere__com__IteratorPointer * __ecereMethod___ecereNameSpace__ecere__com__CustomAVLTree_GetLast(struct __ecereNameSpace__ecere__com__Instance * this)
638 __attribute__((unused)) struct __ecereNameSpace__ecere__com__CustomAVLTree * __ecerePointer___ecereNameSpace__ecere__com__CustomAVLTree = (struct __ecereNameSpace__ecere__com__CustomAVLTree *)(this ? (((char *)this) + 0 + sizeof(struct __ecereNameSpace__ecere__com__Instance)) : 0);
640 return (struct __ecereNameSpace__ecere__com__IteratorPointer *)(__ecerePointer___ecereNameSpace__ecere__com__CustomAVLTree->root ? __ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_maximum(((struct __ecereNameSpace__ecere__com__AVLNode *)((uintptr_t)(__ecerePointer___ecereNameSpace__ecere__com__CustomAVLTree->root)))) : (((void *)0)));
643 struct __ecereNameSpace__ecere__com__IteratorPointer * __ecereMethod___ecereNameSpace__ecere__com__CustomAVLTree_GetPrev(struct __ecereNameSpace__ecere__com__Instance * this, struct __ecereNameSpace__ecere__com__IteratorPointer * node)
645 __attribute__((unused)) struct __ecereNameSpace__ecere__com__CustomAVLTree * __ecerePointer___ecereNameSpace__ecere__com__CustomAVLTree = (struct __ecereNameSpace__ecere__com__CustomAVLTree *)(this ? (((char *)this) + 0 + sizeof(struct __ecereNameSpace__ecere__com__Instance)) : 0);
647 return (void *)(__ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_prev(((struct __ecereNameSpace__ecere__com__AVLNode *)node)));
650 struct __ecereNameSpace__ecere__com__IteratorPointer * __ecereMethod___ecereNameSpace__ecere__com__CustomAVLTree_GetNext(struct __ecereNameSpace__ecere__com__Instance * this, struct __ecereNameSpace__ecere__com__IteratorPointer * node)
652 __attribute__((unused)) struct __ecereNameSpace__ecere__com__CustomAVLTree * __ecerePointer___ecereNameSpace__ecere__com__CustomAVLTree = (struct __ecereNameSpace__ecere__com__CustomAVLTree *)(this ? (((char *)this) + 0 + sizeof(struct __ecereNameSpace__ecere__com__Instance)) : 0);
654 return (void *)(__ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_next(((struct __ecereNameSpace__ecere__com__AVLNode *)node)));
657 struct __ecereNameSpace__ecere__com__AVLNode * __ecereMethod___ecereNameSpace__ecere__com__CustomAVLTree_GetData(struct __ecereNameSpace__ecere__com__Instance * this, struct __ecereNameSpace__ecere__com__IteratorPointer * node)
659 __attribute__((unused)) struct __ecereNameSpace__ecere__com__CustomAVLTree * __ecerePointer___ecereNameSpace__ecere__com__CustomAVLTree = (struct __ecereNameSpace__ecere__com__CustomAVLTree *)(this ? (((char *)this) + 0 + sizeof(struct __ecereNameSpace__ecere__com__Instance)) : 0);
661 return (struct __ecereNameSpace__ecere__com__AVLNode *)node;
664 unsigned int __ecereMethod___ecereNameSpace__ecere__com__CustomAVLTree_SetData(struct __ecereNameSpace__ecere__com__Instance * this, struct __ecereNameSpace__ecere__com__IteratorPointer * node, uint64 data)
666 __attribute__((unused)) struct __ecereNameSpace__ecere__com__CustomAVLTree * __ecerePointer___ecereNameSpace__ecere__com__CustomAVLTree = (struct __ecereNameSpace__ecere__com__CustomAVLTree *)(this ? (((char *)this) + 0 + sizeof(struct __ecereNameSpace__ecere__com__Instance)) : 0);
671 struct __ecereNameSpace__ecere__com__IteratorPointer * __ecereMethod___ecereNameSpace__ecere__com__CustomAVLTree_Find(struct __ecereNameSpace__ecere__com__Instance * this, uint64 value)
673 __attribute__((unused)) struct __ecereNameSpace__ecere__com__CustomAVLTree * __ecerePointer___ecereNameSpace__ecere__com__CustomAVLTree = (struct __ecereNameSpace__ecere__com__CustomAVLTree *)(this ? (((char *)this) + 0 + sizeof(struct __ecereNameSpace__ecere__com__Instance)) : 0);
675 return (struct __ecereNameSpace__ecere__com__IteratorPointer *)((struct __ecereNameSpace__ecere__com__AVLNode *)((uintptr_t)(value)));
678 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)
681 Tclass = __ecereClass_uint64;
685 unsigned char * a, * b;
687 if((Tclass->type == 1000 && !Tclass->byValueSystemClass) || Tclass->type == 2 || Tclass->type == 4 || Tclass->type == 3 || Tclass->type == 1)
689 a = (unsigned char *)&node->key;
690 b = (unsigned char *)&this->key;
691 a += __ENDIAN_PAD((Tclass->type == 1) ? sizeof(void *) : Tclass->typeSize);
692 b += __ENDIAN_PAD((Tclass->type == 1) ? sizeof(void *) : Tclass->typeSize);
696 a = (unsigned char *)(uintptr_t)*(uint64 *)(&node->key);
697 b = (unsigned char *)(uintptr_t)*(uint64 *)(&this->key);
699 result = ((int (*)(void *, void *, void *))(void *)Tclass->_vTbl[__ecereVMethodID_class_OnCompare])(Tclass, a, b);
714 struct __ecereNameSpace__ecere__com__AVLNode * n;
716 for(n = this; n; n = n->parent)
718 int __simpleStruct0, __simpleStruct1;
719 int newDepth = (__simpleStruct0 = n->left ? (n->left->depth + 1) : 0, __simpleStruct1 = n->right ? (n->right->depth + 1) : 0, (__simpleStruct0 > __simpleStruct1) ? __simpleStruct0 : __simpleStruct1);
721 if(newDepth == n->depth)
739 struct __ecereNameSpace__ecere__com__AVLNode * n;
741 for(n = this; n; n = n->parent)
743 int __simpleStruct0, __simpleStruct1;
744 int newDepth = (__simpleStruct0 = n->left ? (n->left->depth + 1) : 0, __simpleStruct1 = n->right ? (n->right->depth + 1) : 0, (__simpleStruct0 > __simpleStruct1) ? __simpleStruct0 : __simpleStruct1);
746 if(newDepth == n->depth)
757 void __ecereMethod___ecereNameSpace__ecere__com__CustomAVLTree_Delete(struct __ecereNameSpace__ecere__com__Instance * this, struct __ecereNameSpace__ecere__com__IteratorPointer * _item)
759 __attribute__((unused)) struct __ecereNameSpace__ecere__com__CustomAVLTree * __ecerePointer___ecereNameSpace__ecere__com__CustomAVLTree = (struct __ecereNameSpace__ecere__com__CustomAVLTree *)(this ? (((char *)this) + 0 + sizeof(struct __ecereNameSpace__ecere__com__Instance)) : 0);
760 struct __ecereNameSpace__ecere__com__AVLNode * item = (struct __ecereNameSpace__ecere__com__AVLNode *)_item;
762 ((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);
763 (((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, ((void * )((uintptr_t)(item)))), item = 0);
766 void __ecereMethod___ecereNameSpace__ecere__com__CustomAVLTree_Free(struct __ecereNameSpace__ecere__com__Instance * this)
768 __attribute__((unused)) struct __ecereNameSpace__ecere__com__CustomAVLTree * __ecerePointer___ecereNameSpace__ecere__com__CustomAVLTree = (struct __ecereNameSpace__ecere__com__CustomAVLTree *)(this ? (((char *)this) + 0 + sizeof(struct __ecereNameSpace__ecere__com__Instance)) : 0);
769 struct __ecereNameSpace__ecere__com__AVLNode * item;
771 while((item = ((struct __ecereNameSpace__ecere__com__AVLNode *)((uintptr_t)(__ecerePointer___ecereNameSpace__ecere__com__CustomAVLTree->root)))))
773 ((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, (void *)(((struct __ecereNameSpace__ecere__com__AVLNode *)((uintptr_t)(item)))));
774 (((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, ((void * )((uintptr_t)(item)))), item = 0);
778 void __ecereUnregisterModule_CustomAVLTree(struct __ecereNameSpace__ecere__com__Instance * module)
781 __ecerePropM___ecereNameSpace__ecere__com__AVLNode_prev = (void *)0;
782 __ecerePropM___ecereNameSpace__ecere__com__AVLNode_next = (void *)0;
783 __ecerePropM___ecereNameSpace__ecere__com__AVLNode_minimum = (void *)0;
784 __ecerePropM___ecereNameSpace__ecere__com__AVLNode_maximum = (void *)0;
785 __ecerePropM___ecereNameSpace__ecere__com__AVLNode_count = (void *)0;
786 __ecerePropM___ecereNameSpace__ecere__com__AVLNode_depthProp = (void *)0;
787 __ecerePropM___ecereNameSpace__ecere__com__AVLNode_balanceFactor = (void *)0;
790 void __ecereMethod___ecereNameSpace__ecere__com__AVLNode_DoubleRotateRight(struct __ecereNameSpace__ecere__com__AVLNode * this)
792 __ecereMethod___ecereNameSpace__ecere__com__AVLNode_SingleRotateLeft(this->left);
793 __ecereMethod___ecereNameSpace__ecere__com__AVLNode_SingleRotateRight(this);
796 void __ecereMethod___ecereNameSpace__ecere__com__AVLNode_DoubleRotateLeft(struct __ecereNameSpace__ecere__com__AVLNode * this)
798 __ecereMethod___ecereNameSpace__ecere__com__AVLNode_SingleRotateRight(this->right);
799 __ecereMethod___ecereNameSpace__ecere__com__AVLNode_SingleRotateLeft(this);
802 struct __ecereNameSpace__ecere__com__AVLNode * __ecereMethod___ecereNameSpace__ecere__com__AVLNode_Rebalance(struct __ecereNameSpace__ecere__com__AVLNode * this)
806 int factor = __ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_balanceFactor(this);
810 if(__ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_balanceFactor(this->left) == 1)
811 __ecereMethod___ecereNameSpace__ecere__com__AVLNode_DoubleRotateRight(this);
813 __ecereMethod___ecereNameSpace__ecere__com__AVLNode_SingleRotateRight(this);
817 if(__ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_balanceFactor(this->right) == -1)
818 __ecereMethod___ecereNameSpace__ecere__com__AVLNode_DoubleRotateLeft(this);
820 __ecereMethod___ecereNameSpace__ecere__com__AVLNode_SingleRotateLeft(this);
829 struct __ecereNameSpace__ecere__com__AVLNode * __ecereMethod___ecereNameSpace__ecere__com__AVLNode_RemoveSwapLeft(struct __ecereNameSpace__ecere__com__AVLNode * this)
831 struct __ecereNameSpace__ecere__com__AVLNode * swap = this->left ? __ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_maximum(this->left) : this->right;
832 struct __ecereNameSpace__ecere__com__AVLNode * swapParent = (((void *)0));
836 swapParent = swap->parent;
837 __ecereMethod___ecereNameSpace__ecere__com__AVLNode_RemoveSwap(this, swap);
841 if(this == this->parent->left)
842 this->parent->left = (((void *)0));
843 else if(this == this->parent->right)
844 this->parent->right = (((void *)0));
847 struct __ecereNameSpace__ecere__com__AVLNode * n;
849 for(n = swap ? swap : this->parent; n; n = n->parent)
851 int __simpleStruct0, __simpleStruct1;
852 int newDepth = (__simpleStruct0 = n->left ? (n->left->depth + 1) : 0, __simpleStruct1 = n->right ? (n->right->depth + 1) : 0, (__simpleStruct0 > __simpleStruct1) ? __simpleStruct0 : __simpleStruct1);
854 if(newDepth == n->depth && n != swap)
859 if(swapParent && swapParent != this)
860 return __ecereMethod___ecereNameSpace__ecere__com__AVLNode_Rebalance(swapParent);
862 return __ecereMethod___ecereNameSpace__ecere__com__AVLNode_Rebalance(swap);
863 else if(this->parent)
864 return __ecereMethod___ecereNameSpace__ecere__com__AVLNode_Rebalance(this->parent);
866 return (((void *)0));
869 struct __ecereNameSpace__ecere__com__AVLNode * __ecereMethod___ecereNameSpace__ecere__com__AVLNode_RemoveSwapRight(struct __ecereNameSpace__ecere__com__AVLNode * this)
871 struct __ecereNameSpace__ecere__com__AVLNode * result;
872 struct __ecereNameSpace__ecere__com__AVLNode * swap = this->right ? __ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_minimum(this->right) : this->left;
873 struct __ecereNameSpace__ecere__com__AVLNode * swapParent = (((void *)0));
877 swapParent = swap->parent;
878 __ecereMethod___ecereNameSpace__ecere__com__AVLNode_RemoveSwap(this, swap);
882 if(this == this->parent->left)
883 this->parent->left = (((void *)0));
884 else if(this == this->parent->right)
885 this->parent->right = (((void *)0));
888 struct __ecereNameSpace__ecere__com__AVLNode * n;
890 for(n = swap ? swap : this->parent; n; n = n->parent)
892 int __simpleStruct0, __simpleStruct1;
893 int newDepth = (__simpleStruct0 = n->left ? (n->left->depth + 1) : 0, __simpleStruct1 = n->right ? (n->right->depth + 1) : 0, (__simpleStruct0 > __simpleStruct1) ? __simpleStruct0 : __simpleStruct1);
895 if(newDepth == n->depth && n != swap)
900 if(swapParent && swapParent != this)
901 result = __ecereMethod___ecereNameSpace__ecere__com__AVLNode_Rebalance(swapParent);
903 result = __ecereMethod___ecereNameSpace__ecere__com__AVLNode_Rebalance(swap);
904 else if(this->parent)
905 result = __ecereMethod___ecereNameSpace__ecere__com__AVLNode_Rebalance(this->parent);
907 result = (((void *)0));
911 struct __ecereNameSpace__ecere__com__IteratorPointer * __ecereMethod___ecereNameSpace__ecere__com__CustomAVLTree_Add(struct __ecereNameSpace__ecere__com__Instance * this, uint64 node)
913 __attribute__((unused)) struct __ecereNameSpace__ecere__com__CustomAVLTree * __ecerePointer___ecereNameSpace__ecere__com__CustomAVLTree = (struct __ecereNameSpace__ecere__com__CustomAVLTree *)(this ? (((char *)this) + 0 + sizeof(struct __ecereNameSpace__ecere__com__Instance)) : 0);
915 if(!((struct __ecereNameSpace__ecere__com__AVLNode *)((uintptr_t)(__ecerePointer___ecereNameSpace__ecere__com__CustomAVLTree->root))))
916 __ecerePointer___ecereNameSpace__ecere__com__CustomAVLTree->root = ((struct __ecereNameSpace__ecere__com__AVLNode *)((uintptr_t)(node)));
919 struct __ecereNameSpace__ecere__com__Class * Tclass = ((struct __ecereNameSpace__ecere__com__Instance *)(char *)this)->_class->templateArgs[3].__anon1.__anon1.dataTypeClass->templateArgs[0].__anon1.__anon1.dataTypeClass;
923 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 + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->application, ((struct __ecereNameSpace__ecere__com__Instance *)(char *)this)->_class->templateArgs[3].__anon1.__anon1.dataTypeClass->templateArgs[0].__anon1.__anon1.dataTypeString);
925 if(__ecereMethod___ecereNameSpace__ecere__com__AVLNode_Add(((struct __ecereNameSpace__ecere__com__AVLNode *)((uintptr_t)(__ecerePointer___ecereNameSpace__ecere__com__CustomAVLTree->root))), Tclass, ((struct __ecereNameSpace__ecere__com__AVLNode *)((uintptr_t)(node)))))
926 __ecerePointer___ecereNameSpace__ecere__com__CustomAVLTree->root = __ecereMethod___ecereNameSpace__ecere__com__AVLNode_Rebalance(((struct __ecereNameSpace__ecere__com__AVLNode *)((uintptr_t)(node))));
928 return (((void *)0));
930 __ecerePointer___ecereNameSpace__ecere__com__CustomAVLTree->count++;
931 return (struct __ecereNameSpace__ecere__com__IteratorPointer *)((struct __ecereNameSpace__ecere__com__AVLNode *)((uintptr_t)(node)));
934 void __ecereMethod___ecereNameSpace__ecere__com__CustomAVLTree_Remove(struct __ecereNameSpace__ecere__com__Instance * this, struct __ecereNameSpace__ecere__com__IteratorPointer * node)
936 __attribute__((unused)) struct __ecereNameSpace__ecere__com__CustomAVLTree * __ecerePointer___ecereNameSpace__ecere__com__CustomAVLTree = (struct __ecereNameSpace__ecere__com__CustomAVLTree *)(this ? (((char *)this) + 0 + sizeof(struct __ecereNameSpace__ecere__com__Instance)) : 0);
937 struct __ecereNameSpace__ecere__com__AVLNode * parent = ((struct __ecereNameSpace__ecere__com__AVLNode *)node)->parent;
939 if(parent || ((struct __ecereNameSpace__ecere__com__AVLNode *)((uintptr_t)(__ecerePointer___ecereNameSpace__ecere__com__CustomAVLTree->root))) == (struct __ecereNameSpace__ecere__com__AVLNode *)node)
941 __ecerePointer___ecereNameSpace__ecere__com__CustomAVLTree->root = __ecereMethod___ecereNameSpace__ecere__com__AVLNode_RemoveSwapRight(((struct __ecereNameSpace__ecere__com__AVLNode *)node));
942 __ecerePointer___ecereNameSpace__ecere__com__CustomAVLTree->count--;
943 ((struct __ecereNameSpace__ecere__com__AVLNode *)node)->parent = (((void *)0));
947 void __ecereRegisterModule_CustomAVLTree(struct __ecereNameSpace__ecere__com__Instance * module)
949 struct __ecereNameSpace__ecere__com__ClassTemplateArgument __simpleStruct0 =
955 .dataTypeString = "uint64"
959 struct __ecereNameSpace__ecere__com__Class __attribute__((unused)) * class;
961 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::AVLNode", "ecere::com::IteratorPointer", sizeof(struct __ecereNameSpace__ecere__com__AVLNode), 0, (void *)0, (void *)0, module, 4, 1);
962 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->application && class)
963 __ecereClass___ecereNameSpace__ecere__com__AVLNode = class;
964 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "Find", "thisclass Find(ecere::com::Class Tclass, const T key)", __ecereMethod___ecereNameSpace__ecere__com__AVLNode_Find, 1);
965 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "__ecerePrivateData0", "byte[32]", 32, 1, 2);
966 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "key", "T", 8, 8, 1);
967 __ecerePropM___ecereNameSpace__ecere__com__AVLNode_prev = __ecereNameSpace__ecere__com__eClass_AddProperty(class, "prev", "thisclass", 0, __ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_prev, 1);
968 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->application)
969 __ecereProp___ecereNameSpace__ecere__com__AVLNode_prev = __ecerePropM___ecereNameSpace__ecere__com__AVLNode_prev, __ecerePropM___ecereNameSpace__ecere__com__AVLNode_prev = (void *)0;
970 __ecerePropM___ecereNameSpace__ecere__com__AVLNode_next = __ecereNameSpace__ecere__com__eClass_AddProperty(class, "next", "thisclass", 0, __ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_next, 1);
971 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->application)
972 __ecereProp___ecereNameSpace__ecere__com__AVLNode_next = __ecerePropM___ecereNameSpace__ecere__com__AVLNode_next, __ecerePropM___ecereNameSpace__ecere__com__AVLNode_next = (void *)0;
973 __ecerePropM___ecereNameSpace__ecere__com__AVLNode_minimum = __ecereNameSpace__ecere__com__eClass_AddProperty(class, "minimum", "thisclass", 0, __ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_minimum, 1);
974 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->application)
975 __ecereProp___ecereNameSpace__ecere__com__AVLNode_minimum = __ecerePropM___ecereNameSpace__ecere__com__AVLNode_minimum, __ecerePropM___ecereNameSpace__ecere__com__AVLNode_minimum = (void *)0;
976 __ecerePropM___ecereNameSpace__ecere__com__AVLNode_maximum = __ecereNameSpace__ecere__com__eClass_AddProperty(class, "maximum", "thisclass", 0, __ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_maximum, 1);
977 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->application)
978 __ecereProp___ecereNameSpace__ecere__com__AVLNode_maximum = __ecerePropM___ecereNameSpace__ecere__com__AVLNode_maximum, __ecerePropM___ecereNameSpace__ecere__com__AVLNode_maximum = (void *)0;
979 __ecerePropM___ecereNameSpace__ecere__com__AVLNode_count = __ecereNameSpace__ecere__com__eClass_AddProperty(class, "count", "int", 0, __ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_count, 1);
980 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->application)
981 __ecereProp___ecereNameSpace__ecere__com__AVLNode_count = __ecerePropM___ecereNameSpace__ecere__com__AVLNode_count, __ecerePropM___ecereNameSpace__ecere__com__AVLNode_count = (void *)0;
982 __ecerePropM___ecereNameSpace__ecere__com__AVLNode_depthProp = __ecereNameSpace__ecere__com__eClass_AddProperty(class, "depthProp", "int", 0, __ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_depthProp, 1);
983 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->application)
984 __ecereProp___ecereNameSpace__ecere__com__AVLNode_depthProp = __ecerePropM___ecereNameSpace__ecere__com__AVLNode_depthProp, __ecerePropM___ecereNameSpace__ecere__com__AVLNode_depthProp = (void *)0;
985 __ecerePropM___ecereNameSpace__ecere__com__AVLNode_balanceFactor = __ecereNameSpace__ecere__com__eClass_AddProperty(class, "balanceFactor", "int", 0, __ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_balanceFactor, 2);
986 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->application)
987 __ecereProp___ecereNameSpace__ecere__com__AVLNode_balanceFactor = __ecerePropM___ecereNameSpace__ecere__com__AVLNode_balanceFactor, __ecerePropM___ecereNameSpace__ecere__com__AVLNode_balanceFactor = (void *)0;
988 __ecereNameSpace__ecere__com__eClass_AddTemplateParameter(class, "T", 0, 0, (((void *)0)));
989 __ecereNameSpace__ecere__com__eClass_DoneAddingTemplateParameters(class);
991 class->fixed = (unsigned int)1;
992 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(0, "ecere::com::CustomAVLTree", "ecere::com::Container<BT>", sizeof(struct __ecereNameSpace__ecere__com__CustomAVLTree), 0, (void *)0, (void *)0, module, 4, 1);
993 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->application && class)
994 __ecereClass___ecereNameSpace__ecere__com__CustomAVLTree = class;
995 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "GetFirst", 0, __ecereMethod___ecereNameSpace__ecere__com__CustomAVLTree_GetFirst, 1);
996 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "GetLast", 0, __ecereMethod___ecereNameSpace__ecere__com__CustomAVLTree_GetLast, 1);
997 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "GetPrev", 0, __ecereMethod___ecereNameSpace__ecere__com__CustomAVLTree_GetPrev, 1);
998 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "GetNext", 0, __ecereMethod___ecereNameSpace__ecere__com__CustomAVLTree_GetNext, 1);
999 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "GetData", 0, __ecereMethod___ecereNameSpace__ecere__com__CustomAVLTree_GetData, 1);
1000 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "SetData", 0, __ecereMethod___ecereNameSpace__ecere__com__CustomAVLTree_SetData, 1);
1001 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "Add", 0, __ecereMethod___ecereNameSpace__ecere__com__CustomAVLTree_Add, 1);
1002 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "Remove", 0, __ecereMethod___ecereNameSpace__ecere__com__CustomAVLTree_Remove, 1);
1003 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "Find", 0, __ecereMethod___ecereNameSpace__ecere__com__CustomAVLTree_Find, 1);
1004 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "Free", 0, __ecereMethod___ecereNameSpace__ecere__com__CustomAVLTree_Free, 1);
1005 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "Delete", 0, __ecereMethod___ecereNameSpace__ecere__com__CustomAVLTree_Delete, 1);
1006 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "root", "BT", sizeof(void *), 0xF000F000, 1);
1007 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "count", "int", 4, 4, 1);
1008 __ecereNameSpace__ecere__com__eClass_AddTemplateParameter(class, "BT", 0, "ecere::com::AVLNode", (((void *)0)));
1009 __ecereNameSpace__ecere__com__eClass_AddTemplateParameter(class, "KT", 0, 0, &__simpleStruct0);
1010 __ecereNameSpace__ecere__com__eClass_DoneAddingTemplateParameters(class);
1012 class->fixed = (unsigned int)1;
1015 struct __ecereNameSpace__ecere__com__AVLNode * __ecereMethod___ecereNameSpace__ecere__com__AVLNode_FindAll(struct __ecereNameSpace__ecere__com__AVLNode * this, const uint64 key);
1017 struct __ecereNameSpace__ecere__com__AVLNode * __ecereMethod___ecereNameSpace__ecere__com__AVLNode_FindAll(struct __ecereNameSpace__ecere__com__AVLNode * this, const uint64 key)
1019 struct __ecereNameSpace__ecere__com__AVLNode * result = (((void *)0));
1021 if(this->key == key)
1023 if(!result && this->left)
1024 result = __ecereMethod___ecereNameSpace__ecere__com__AVLNode_FindAll(this->left, key);
1025 if(!result && this->right)
1026 result = __ecereMethod___ecereNameSpace__ecere__com__AVLNode_FindAll(this->right, key);
1030 void __ecereMethod___ecereNameSpace__ecere__com__AVLNode_Free(struct __ecereNameSpace__ecere__com__AVLNode * this);
1032 void __ecereMethod___ecereNameSpace__ecere__com__AVLNode_Free(struct __ecereNameSpace__ecere__com__AVLNode * this)
1035 __ecereMethod___ecereNameSpace__ecere__com__AVLNode_Free(this->left);
1037 __ecereMethod___ecereNameSpace__ecere__com__AVLNode_Free(this->right);
1038 ((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);