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 # if defined(__GNUC__) || defined(__TINYC__)
40 # define ecere_stdcall __attribute__((__stdcall__))
41 # define ecere_gcc_struct __attribute__((gcc_struct))
43 # define ecere_stdcall __stdcall
44 # define ecere_gcc_struct
47 # define ecere_stdcall
48 # define ecere_gcc_struct
51 #include <sys/types.h>
52 extern int __ecereVMethodID_class_OnCompare;
54 extern int __ecereVMethodID_class_OnCopy;
56 extern int __ecereVMethodID_class_OnFree;
58 struct __ecereNameSpace__ecere__com__CustomAVLTree
60 struct __ecereNameSpace__ecere__com__AVLNode * root;
64 struct __ecereNameSpace__ecere__sys__BTNode;
66 struct __ecereNameSpace__ecere__sys__OldList
75 struct __ecereNameSpace__ecere__com__DataValue
90 } ecere_gcc_struct __anon1;
93 struct __ecereNameSpace__ecere__com__SerialBuffer
95 unsigned char * _buffer;
101 extern void * __ecereNameSpace__ecere__com__eSystem_New(unsigned int size);
103 extern void * __ecereNameSpace__ecere__com__eSystem_New0(unsigned int size);
105 extern void * __ecereNameSpace__ecere__com__eSystem_Renew(void * memory, unsigned int size);
107 extern void * __ecereNameSpace__ecere__com__eSystem_Renew0(void * memory, unsigned int size);
109 extern void __ecereNameSpace__ecere__com__eSystem_Delete(void * memory);
111 struct __ecereNameSpace__ecere__com__AVLNode;
113 struct __ecereNameSpace__ecere__com__IteratorPointer;
115 struct __ecereNameSpace__ecere__com__AVLNode;
117 struct __ecereNameSpace__ecere__com__ClassTemplateParameter;
119 int __ecereVMethodID_class_OnCompare;
121 int __ecereVMethodID_class_OnFree;
123 struct __ecereNameSpace__ecere__com__AVLNode
125 struct __ecereNameSpace__ecere__com__AVLNode * parent, * left, * right;
130 struct __ecereNameSpace__ecere__com__AVLNode * __ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_minimum(struct __ecereNameSpace__ecere__com__AVLNode * this)
137 struct __ecereNameSpace__ecere__com__AVLNode * __ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_maximum(struct __ecereNameSpace__ecere__com__AVLNode * this)
144 void __ecereMethod___ecereNameSpace__ecere__com__AVLNode_RemoveSwap(struct __ecereNameSpace__ecere__com__AVLNode * this, struct __ecereNameSpace__ecere__com__AVLNode * swap)
148 swap->left->parent = swap->parent;
149 if(swap == swap->parent->left)
150 swap->parent->left = swap->left;
151 else if(swap == swap->parent->right)
152 swap->parent->right = swap->left;
153 swap->left = (((void *)0));
157 swap->right->parent = swap->parent;
158 if(swap == swap->parent->left)
159 swap->parent->left = swap->right;
160 else if(swap == swap->parent->right)
161 swap->parent->right = swap->right;
162 swap->right = (((void *)0));
164 if(swap == swap->parent->left)
165 swap->parent->left = (((void *)0));
166 else if(swap == swap->parent->right)
167 swap->parent->right = (((void *)0));
169 struct __ecereNameSpace__ecere__com__AVLNode * n;
171 for(n = swap->parent; n; n = n->parent)
173 int __simpleStruct0, __simpleStruct1;
174 int newDepth = (__simpleStruct0 = n->left ? (n->left->depth + 1) : 0, __simpleStruct1 = n->right ? (n->right->depth + 1) : 0, (__simpleStruct0 > __simpleStruct1) ? __simpleStruct0 : __simpleStruct1);
176 if(newDepth == n->depth)
183 swap->left = this->left;
185 this->left->parent = swap;
186 swap->right = this->right;
188 this->right->parent = swap;
189 swap->parent = this->parent;
190 this->left = (((void *)0));
191 this->right = (((void *)0));
194 if(this == this->parent->left)
195 this->parent->left = swap;
196 else if(this == this->parent->right)
197 this->parent->right = swap;
201 int __ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_balanceFactor(struct __ecereNameSpace__ecere__com__AVLNode * this)
203 int leftDepth = this->left ? (this->left->depth + 1) : 0;
204 int rightDepth = this->right ? (this->right->depth + 1) : 0;
206 return rightDepth - leftDepth;
209 void __ecereMethod___ecereNameSpace__ecere__com__AVLNode_SingleRotateRight(struct __ecereNameSpace__ecere__com__AVLNode * this)
211 int __simpleStruct2, __simpleStruct3;
212 int __simpleStruct0, __simpleStruct1;
216 if(this == this->parent->left)
217 this->parent->left = this->left;
218 else if(this == this->parent->right)
219 this->parent->right = this->left;
221 this->left->parent = this->parent;
222 this->parent = this->left;
223 this->left = this->parent->right;
225 this->left->parent = this;
226 this->parent->right = this;
227 this->depth = (__simpleStruct0 = this->left ? (this->left->depth + 1) : 0, __simpleStruct1 = this->right ? (this->right->depth + 1) : 0, (__simpleStruct0 > __simpleStruct1) ? __simpleStruct0 : __simpleStruct1);
228 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);
230 struct __ecereNameSpace__ecere__com__AVLNode * n;
232 for(n = this->parent->parent; n; n = n->parent)
234 int __simpleStruct0, __simpleStruct1;
235 int newDepth = (__simpleStruct0 = n->left ? (n->left->depth + 1) : 0, __simpleStruct1 = n->right ? (n->right->depth + 1) : 0, (__simpleStruct0 > __simpleStruct1) ? __simpleStruct0 : __simpleStruct1);
237 if(newDepth == n->depth)
244 void __ecereMethod___ecereNameSpace__ecere__com__AVLNode_SingleRotateLeft(struct __ecereNameSpace__ecere__com__AVLNode * this)
246 int __simpleStruct2, __simpleStruct3;
247 int __simpleStruct0, __simpleStruct1;
251 if(this == this->parent->right)
252 this->parent->right = this->right;
253 else if(this == this->parent->left)
254 this->parent->left = this->right;
256 this->right->parent = this->parent;
257 this->parent = this->right;
258 this->right = this->parent->left;
260 this->right->parent = this;
261 this->parent->left = this;
262 this->depth = (__simpleStruct0 = this->left ? (this->left->depth + 1) : 0, __simpleStruct1 = this->right ? (this->right->depth + 1) : 0, (__simpleStruct0 > __simpleStruct1) ? __simpleStruct0 : __simpleStruct1);
263 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);
265 struct __ecereNameSpace__ecere__com__AVLNode * n;
267 for(n = this->parent->parent; n; n = n->parent)
269 int __simpleStruct0, __simpleStruct1;
270 int newDepth = (__simpleStruct0 = n->left ? (n->left->depth + 1) : 0, __simpleStruct1 = n->right ? (n->right->depth + 1) : 0, (__simpleStruct0 > __simpleStruct1) ? __simpleStruct0 : __simpleStruct1);
272 if(newDepth == n->depth)
279 struct __ecereNameSpace__ecere__com__AVLNode * __ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_maximum(struct __ecereNameSpace__ecere__com__AVLNode * this);
281 struct __ecereNameSpace__ecere__com__AVLNode * __ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_minimum(struct __ecereNameSpace__ecere__com__AVLNode * this);
283 int __ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_count(struct __ecereNameSpace__ecere__com__AVLNode * this);
285 int __ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_depthProp(struct __ecereNameSpace__ecere__com__AVLNode * this);
287 int __ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_balanceFactor(struct __ecereNameSpace__ecere__com__AVLNode * this);
289 struct __ecereNameSpace__ecere__com__AVLNode * __ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_prev(struct __ecereNameSpace__ecere__com__AVLNode * this);
291 struct __ecereNameSpace__ecere__com__AVLNode * __ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_next(struct __ecereNameSpace__ecere__com__AVLNode * this);
293 void __ecereMethod___ecereNameSpace__ecere__com__AVLNode_DoubleRotateRight(struct __ecereNameSpace__ecere__com__AVLNode * this)
295 __ecereMethod___ecereNameSpace__ecere__com__AVLNode_SingleRotateLeft(this->left);
296 __ecereMethod___ecereNameSpace__ecere__com__AVLNode_SingleRotateRight(this);
299 void __ecereMethod___ecereNameSpace__ecere__com__AVLNode_DoubleRotateLeft(struct __ecereNameSpace__ecere__com__AVLNode * this)
301 __ecereMethod___ecereNameSpace__ecere__com__AVLNode_SingleRotateRight(this->right);
302 __ecereMethod___ecereNameSpace__ecere__com__AVLNode_SingleRotateLeft(this);
305 struct __ecereNameSpace__ecere__com__Property;
307 extern void __ecereNameSpace__ecere__com__eInstance_Watch(void * instance, struct __ecereNameSpace__ecere__com__Property * _property, void * object, void (* callback)(void * , void * ));
309 static __attribute__((unused)) struct __ecereNameSpace__ecere__com__Property * __ecereProp___ecereNameSpace__ecere__com__AVLNode_prev, * __ecerePropM___ecereNameSpace__ecere__com__AVLNode_prev;
311 static __attribute__((unused)) struct __ecereNameSpace__ecere__com__Property * __ecereProp___ecereNameSpace__ecere__com__AVLNode_next, * __ecerePropM___ecereNameSpace__ecere__com__AVLNode_next;
313 static __attribute__((unused)) struct __ecereNameSpace__ecere__com__Property * __ecereProp___ecereNameSpace__ecere__com__AVLNode_minimum, * __ecerePropM___ecereNameSpace__ecere__com__AVLNode_minimum;
315 static __attribute__((unused)) struct __ecereNameSpace__ecere__com__Property * __ecereProp___ecereNameSpace__ecere__com__AVLNode_maximum, * __ecerePropM___ecereNameSpace__ecere__com__AVLNode_maximum;
317 static __attribute__((unused)) struct __ecereNameSpace__ecere__com__Property * __ecereProp___ecereNameSpace__ecere__com__AVLNode_count, * __ecerePropM___ecereNameSpace__ecere__com__AVLNode_count;
319 static __attribute__((unused)) struct __ecereNameSpace__ecere__com__Property * __ecereProp___ecereNameSpace__ecere__com__AVLNode_depthProp, * __ecerePropM___ecereNameSpace__ecere__com__AVLNode_depthProp;
321 static __attribute__((unused)) struct __ecereNameSpace__ecere__com__Property * __ecereProp___ecereNameSpace__ecere__com__AVLNode_balanceFactor, * __ecerePropM___ecereNameSpace__ecere__com__AVLNode_balanceFactor;
323 struct __ecereNameSpace__ecere__com__AVLNode * __ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_next(struct __ecereNameSpace__ecere__com__AVLNode * this)
325 struct __ecereNameSpace__ecere__com__AVLNode * right = this->right;
328 return __ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_minimum(right);
331 struct __ecereNameSpace__ecere__com__AVLNode * parent = this->parent;
333 if(parent && this == parent->left)
338 return (((void *)0));
341 struct __ecereNameSpace__ecere__com__AVLNode * __ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_prev(struct __ecereNameSpace__ecere__com__AVLNode * this)
344 return __ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_maximum(this->left);
347 if(this->parent && this == this->parent->right)
355 int __ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_count(struct __ecereNameSpace__ecere__com__AVLNode * this)
357 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);
360 int __ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_depthProp(struct __ecereNameSpace__ecere__com__AVLNode * this)
362 int leftDepth = this->left ? (__ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_depthProp(this->left) + 1) : 0;
363 int rightDepth = this->right ? (__ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_depthProp(this->right) + 1) : 0;
365 return ((leftDepth > rightDepth) ? leftDepth : rightDepth);
368 struct __ecereNameSpace__ecere__com__AVLNode * __ecereMethod___ecereNameSpace__ecere__com__AVLNode_Rebalance(struct __ecereNameSpace__ecere__com__AVLNode * this)
372 int factor = __ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_balanceFactor(this);
376 if(__ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_balanceFactor(this->left) == 1)
377 __ecereMethod___ecereNameSpace__ecere__com__AVLNode_DoubleRotateRight(this);
379 __ecereMethod___ecereNameSpace__ecere__com__AVLNode_SingleRotateRight(this);
383 if(__ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_balanceFactor(this->right) == -1)
384 __ecereMethod___ecereNameSpace__ecere__com__AVLNode_DoubleRotateLeft(this);
386 __ecereMethod___ecereNameSpace__ecere__com__AVLNode_SingleRotateLeft(this);
395 struct __ecereNameSpace__ecere__com__AVLNode * __ecereMethod___ecereNameSpace__ecere__com__AVLNode_RemoveSwapLeft(struct __ecereNameSpace__ecere__com__AVLNode * this)
397 struct __ecereNameSpace__ecere__com__AVLNode * swap = this->left ? __ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_maximum(this->left) : this->right;
398 struct __ecereNameSpace__ecere__com__AVLNode * swapParent = (((void *)0));
402 swapParent = swap->parent;
403 __ecereMethod___ecereNameSpace__ecere__com__AVLNode_RemoveSwap(this, swap);
407 if(this == this->parent->left)
408 this->parent->left = (((void *)0));
409 else if(this == this->parent->right)
410 this->parent->right = (((void *)0));
413 struct __ecereNameSpace__ecere__com__AVLNode * n;
415 for(n = swap ? swap : this->parent; n; n = n->parent)
417 int __simpleStruct0, __simpleStruct1;
418 int newDepth = (__simpleStruct0 = n->left ? (n->left->depth + 1) : 0, __simpleStruct1 = n->right ? (n->right->depth + 1) : 0, (__simpleStruct0 > __simpleStruct1) ? __simpleStruct0 : __simpleStruct1);
420 if(newDepth == n->depth && n != swap)
425 if(swapParent && swapParent != this)
426 return __ecereMethod___ecereNameSpace__ecere__com__AVLNode_Rebalance(swapParent);
428 return __ecereMethod___ecereNameSpace__ecere__com__AVLNode_Rebalance(swap);
429 else if(this->parent)
430 return __ecereMethod___ecereNameSpace__ecere__com__AVLNode_Rebalance(this->parent);
432 return (((void *)0));
435 struct __ecereNameSpace__ecere__com__AVLNode * __ecereMethod___ecereNameSpace__ecere__com__AVLNode_RemoveSwapRight(struct __ecereNameSpace__ecere__com__AVLNode * this)
437 struct __ecereNameSpace__ecere__com__AVLNode * result;
438 struct __ecereNameSpace__ecere__com__AVLNode * swap = this->right ? __ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_minimum(this->right) : this->left;
439 struct __ecereNameSpace__ecere__com__AVLNode * swapParent = (((void *)0));
443 swapParent = swap->parent;
444 __ecereMethod___ecereNameSpace__ecere__com__AVLNode_RemoveSwap(this, swap);
448 if(this == this->parent->left)
449 this->parent->left = (((void *)0));
450 else if(this == this->parent->right)
451 this->parent->right = (((void *)0));
454 struct __ecereNameSpace__ecere__com__AVLNode * n;
456 for(n = swap ? swap : this->parent; n; n = n->parent)
458 int __simpleStruct0, __simpleStruct1;
459 int newDepth = (__simpleStruct0 = n->left ? (n->left->depth + 1) : 0, __simpleStruct1 = n->right ? (n->right->depth + 1) : 0, (__simpleStruct0 > __simpleStruct1) ? __simpleStruct0 : __simpleStruct1);
461 if(newDepth == n->depth && n != swap)
466 if(swapParent && swapParent != this)
467 result = __ecereMethod___ecereNameSpace__ecere__com__AVLNode_Rebalance(swapParent);
469 result = __ecereMethod___ecereNameSpace__ecere__com__AVLNode_Rebalance(swap);
470 else if(this->parent)
471 result = __ecereMethod___ecereNameSpace__ecere__com__AVLNode_Rebalance(this->parent);
473 result = (((void *)0));
477 struct __ecereNameSpace__ecere__com__Class;
479 struct __ecereNameSpace__ecere__com__Instance
482 struct __ecereNameSpace__ecere__com__Class * _class;
486 extern long long __ecereNameSpace__ecere__com__eClass_GetProperty(struct __ecereNameSpace__ecere__com__Class * _class, const char * name);
488 extern void __ecereNameSpace__ecere__com__eClass_SetProperty(struct __ecereNameSpace__ecere__com__Class * _class, const char * name, long long value);
490 extern void __ecereNameSpace__ecere__com__eEnum_AddFixedValue(struct __ecereNameSpace__ecere__com__Class * _class, const char * string, long long value);
492 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);
494 extern void __ecereNameSpace__ecere__com__eClass_DoneAddingTemplateParameters(struct __ecereNameSpace__ecere__com__Class * base);
496 struct __ecereNameSpace__ecere__com__Property
498 struct __ecereNameSpace__ecere__com__Property * prev;
499 struct __ecereNameSpace__ecere__com__Property * next;
501 unsigned int isProperty;
504 struct __ecereNameSpace__ecere__com__Class * _class;
505 const char * dataTypeString;
506 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
507 struct __ecereNameSpace__ecere__com__Instance * dataType;
508 void (* Set)(void * , int);
509 int (* Get)(void * );
510 unsigned int (* IsSet)(void * );
514 unsigned int conversion;
515 unsigned int watcherOffset;
516 const char * category;
517 unsigned int compiled;
518 unsigned int selfWatchable;
519 unsigned int isWatchable;
522 extern void __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property);
524 extern void __ecereNameSpace__ecere__com__eInstance_SetMethod(struct __ecereNameSpace__ecere__com__Instance * instance, const char * name, void * function);
526 extern void __ecereNameSpace__ecere__com__eInstance_IncRef(struct __ecereNameSpace__ecere__com__Instance * instance);
528 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);
530 extern void __ecereNameSpace__ecere__com__eInstance_FireWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property);
532 int __ecereVMethodID___ecereNameSpace__ecere__com__Container_Remove;
534 struct __ecereNameSpace__ecere__sys__BinaryTree;
536 struct __ecereNameSpace__ecere__sys__BinaryTree
538 struct __ecereNameSpace__ecere__sys__BTNode * root;
540 int (* CompareKey)(struct __ecereNameSpace__ecere__sys__BinaryTree * tree, uintptr_t a, uintptr_t b);
541 void (* FreeKey)(void * key);
544 struct __ecereNameSpace__ecere__com__AVLNode * __ecereMethod___ecereNameSpace__ecere__com__AVLNode_FindAll(struct __ecereNameSpace__ecere__com__AVLNode * this, const uint64 key);
546 struct __ecereNameSpace__ecere__com__AVLNode * __ecereMethod___ecereNameSpace__ecere__com__AVLNode_FindAll(struct __ecereNameSpace__ecere__com__AVLNode * this, const uint64 key)
548 struct __ecereNameSpace__ecere__com__AVLNode * result = (((void *)0));
552 if(!result && this->left)
553 result = __ecereMethod___ecereNameSpace__ecere__com__AVLNode_FindAll(this->left, key);
554 if(!result && this->right)
555 result = __ecereMethod___ecereNameSpace__ecere__com__AVLNode_FindAll(this->right, key);
559 struct __ecereNameSpace__ecere__com__DataMember;
561 struct __ecereNameSpace__ecere__com__DataMember
563 struct __ecereNameSpace__ecere__com__DataMember * prev;
564 struct __ecereNameSpace__ecere__com__DataMember * next;
566 unsigned int isProperty;
569 struct __ecereNameSpace__ecere__com__Class * _class;
570 const char * dataTypeString;
571 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
572 struct __ecereNameSpace__ecere__com__Instance * dataType;
576 struct __ecereNameSpace__ecere__sys__OldList members;
577 struct __ecereNameSpace__ecere__sys__BinaryTree membersAlpha;
579 short structAlignment;
580 short pointerAlignment;
583 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);
585 struct __ecereNameSpace__ecere__com__Method;
587 struct __ecereNameSpace__ecere__com__ClassTemplateArgument
593 const char * dataTypeString;
594 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
595 } ecere_gcc_struct __anon1;
596 struct __ecereNameSpace__ecere__com__DataValue expression;
599 const char * memberString;
602 struct __ecereNameSpace__ecere__com__DataMember * member;
603 struct __ecereNameSpace__ecere__com__Property * prop;
604 struct __ecereNameSpace__ecere__com__Method * method;
605 } ecere_gcc_struct __anon1;
606 } ecere_gcc_struct __anon2;
607 } ecere_gcc_struct __anon1;
610 struct __ecereNameSpace__ecere__com__Method
613 struct __ecereNameSpace__ecere__com__Method * parent;
614 struct __ecereNameSpace__ecere__com__Method * left;
615 struct __ecereNameSpace__ecere__com__Method * right;
620 struct __ecereNameSpace__ecere__com__Class * _class;
622 const char * dataTypeString;
623 struct __ecereNameSpace__ecere__com__Instance * dataType;
627 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);
629 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);
631 struct __ecereNameSpace__ecere__com__Module;
633 extern struct __ecereNameSpace__ecere__com__Class * __ecereNameSpace__ecere__com__eSystem_FindClass(struct __ecereNameSpace__ecere__com__Instance * module, const char * name);
635 extern struct __ecereNameSpace__ecere__com__Instance * __thisModule;
637 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);
639 struct __ecereNameSpace__ecere__com__NameSpace;
641 struct __ecereNameSpace__ecere__com__NameSpace
644 struct __ecereNameSpace__ecere__com__NameSpace * btParent;
645 struct __ecereNameSpace__ecere__com__NameSpace * left;
646 struct __ecereNameSpace__ecere__com__NameSpace * right;
648 struct __ecereNameSpace__ecere__com__NameSpace * parent;
649 struct __ecereNameSpace__ecere__sys__BinaryTree nameSpaces;
650 struct __ecereNameSpace__ecere__sys__BinaryTree classes;
651 struct __ecereNameSpace__ecere__sys__BinaryTree defines;
652 struct __ecereNameSpace__ecere__sys__BinaryTree functions;
655 struct __ecereNameSpace__ecere__com__Class
657 struct __ecereNameSpace__ecere__com__Class * prev;
658 struct __ecereNameSpace__ecere__com__Class * next;
664 unsigned int (* Constructor)(void * );
665 void (* Destructor)(void * );
668 struct __ecereNameSpace__ecere__com__Class * base;
669 struct __ecereNameSpace__ecere__sys__BinaryTree methods;
670 struct __ecereNameSpace__ecere__sys__BinaryTree members;
671 struct __ecereNameSpace__ecere__sys__BinaryTree prop;
672 struct __ecereNameSpace__ecere__sys__OldList membersAndProperties;
673 struct __ecereNameSpace__ecere__sys__BinaryTree classProperties;
674 struct __ecereNameSpace__ecere__sys__OldList derivatives;
678 struct __ecereNameSpace__ecere__com__Instance * module;
679 struct __ecereNameSpace__ecere__com__NameSpace * nameSpace;
680 const char * dataTypeString;
681 struct __ecereNameSpace__ecere__com__Instance * dataType;
683 int defaultAlignment;
684 void (* Initialize)();
686 struct __ecereNameSpace__ecere__sys__OldList selfWatchers;
687 const char * designerClass;
688 unsigned int noExpansion;
689 const char * defaultProperty;
690 unsigned int comRedefinition;
693 unsigned int internalDecl;
695 unsigned int computeSize;
696 short structAlignment;
697 short pointerAlignment;
698 int destructionWatchOffset;
700 struct __ecereNameSpace__ecere__sys__OldList delayedCPValues;
701 int inheritanceAccess;
702 const char * fullName;
704 struct __ecereNameSpace__ecere__sys__OldList conversions;
705 struct __ecereNameSpace__ecere__sys__OldList templateParams;
706 struct __ecereNameSpace__ecere__com__ClassTemplateArgument * templateArgs;
707 struct __ecereNameSpace__ecere__com__Class * templateClass;
708 struct __ecereNameSpace__ecere__sys__OldList templatized;
710 unsigned int isInstanceClass;
711 unsigned int byValueSystemClass;
714 struct __ecereNameSpace__ecere__com__Application
719 unsigned int isGUIApp;
720 struct __ecereNameSpace__ecere__sys__OldList allModules;
721 char * parsedCommand;
722 struct __ecereNameSpace__ecere__com__NameSpace systemNameSpace;
725 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__AddSide;
727 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__AVLNode;
729 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__CustomAVLTree;
731 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)
734 unsigned int reference = 0;
735 unsigned int offset = 0;
736 int t = Tclass->type;
737 int (* onCompare)(void *, void *, void *) = (void *)Tclass->_vTbl[__ecereVMethodID_class_OnCompare];
739 reference = (t == 1000 && !Tclass->byValueSystemClass) || t == 2 || t == 4 || t == 3;
740 offset = __ENDIAN_PAD(Tclass->typeSize);
741 a = reference ? ((unsigned char *)&key) + offset : (unsigned char *)(uintptr_t)key;
745 offset = __ENDIAN_PAD(sizeof(void *));
749 unsigned char * b = reference ? ((unsigned char *)&this->key) + offset : (unsigned char *)(uintptr_t)(uint64)(this->key);
750 int result = onCompare(Tclass, a, b);
762 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__IteratorPointer;
764 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_uint64;
766 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_int64;
768 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_uint;
770 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Instance;
772 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Module;
774 struct __ecereNameSpace__ecere__com__Module
776 struct __ecereNameSpace__ecere__com__Instance * application;
777 struct __ecereNameSpace__ecere__sys__OldList classes;
778 struct __ecereNameSpace__ecere__sys__OldList defines;
779 struct __ecereNameSpace__ecere__sys__OldList functions;
780 struct __ecereNameSpace__ecere__sys__OldList modules;
781 struct __ecereNameSpace__ecere__com__Instance * prev;
782 struct __ecereNameSpace__ecere__com__Instance * next;
788 struct __ecereNameSpace__ecere__com__NameSpace privateNameSpace;
789 struct __ecereNameSpace__ecere__com__NameSpace publicNameSpace;
792 struct __ecereNameSpace__ecere__com__IteratorPointer * __ecereMethod___ecereNameSpace__ecere__com__CustomAVLTree_GetFirst(struct __ecereNameSpace__ecere__com__Instance * this)
794 __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);
796 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)));
799 struct __ecereNameSpace__ecere__com__IteratorPointer * __ecereMethod___ecereNameSpace__ecere__com__CustomAVLTree_GetLast(struct __ecereNameSpace__ecere__com__Instance * this)
801 __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);
803 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)));
806 struct __ecereNameSpace__ecere__com__IteratorPointer * __ecereMethod___ecereNameSpace__ecere__com__CustomAVLTree_GetPrev(struct __ecereNameSpace__ecere__com__Instance * this, struct __ecereNameSpace__ecere__com__IteratorPointer * node)
808 __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);
810 return (void *)(__ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_prev(((struct __ecereNameSpace__ecere__com__AVLNode *)node)));
813 struct __ecereNameSpace__ecere__com__IteratorPointer * __ecereMethod___ecereNameSpace__ecere__com__CustomAVLTree_GetNext(struct __ecereNameSpace__ecere__com__Instance * this, struct __ecereNameSpace__ecere__com__IteratorPointer * node)
815 __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);
817 return (void *)(__ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_next(((struct __ecereNameSpace__ecere__com__AVLNode *)node)));
820 struct __ecereNameSpace__ecere__com__AVLNode * __ecereMethod___ecereNameSpace__ecere__com__CustomAVLTree_GetData(struct __ecereNameSpace__ecere__com__Instance * this, struct __ecereNameSpace__ecere__com__IteratorPointer * node)
822 __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);
824 return (struct __ecereNameSpace__ecere__com__AVLNode *)node;
827 unsigned int __ecereMethod___ecereNameSpace__ecere__com__CustomAVLTree_SetData(struct __ecereNameSpace__ecere__com__Instance * this, struct __ecereNameSpace__ecere__com__IteratorPointer * node, uint64 data)
829 __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);
834 void __ecereMethod___ecereNameSpace__ecere__com__CustomAVLTree_Remove(struct __ecereNameSpace__ecere__com__Instance * this, struct __ecereNameSpace__ecere__com__IteratorPointer * node)
836 __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);
837 struct __ecereNameSpace__ecere__com__AVLNode * parent = ((struct __ecereNameSpace__ecere__com__AVLNode *)node)->parent;
839 if(parent || ((struct __ecereNameSpace__ecere__com__AVLNode *)((uintptr_t)(__ecerePointer___ecereNameSpace__ecere__com__CustomAVLTree->root))) == (struct __ecereNameSpace__ecere__com__AVLNode *)node)
841 __ecerePointer___ecereNameSpace__ecere__com__CustomAVLTree->root = __ecereMethod___ecereNameSpace__ecere__com__AVLNode_RemoveSwapRight(((struct __ecereNameSpace__ecere__com__AVLNode *)node));
842 __ecerePointer___ecereNameSpace__ecere__com__CustomAVLTree->count--;
843 ((struct __ecereNameSpace__ecere__com__AVLNode *)node)->parent = (((void *)0));
847 struct __ecereNameSpace__ecere__com__IteratorPointer * __ecereMethod___ecereNameSpace__ecere__com__CustomAVLTree_Find(struct __ecereNameSpace__ecere__com__Instance * this, uint64 value)
849 __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);
851 return (struct __ecereNameSpace__ecere__com__IteratorPointer *)((struct __ecereNameSpace__ecere__com__AVLNode *)((uintptr_t)(value)));
854 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, int addSide)
857 int (* onCompare)(void *, void *, void *);
858 unsigned int offset = 0;
859 unsigned int reference = 0;
863 Tclass = __ecereClass_uint64;
865 onCompare = (void *)Tclass->_vTbl[__ecereVMethodID_class_OnCompare];
866 if((t == 1000 && !Tclass->byValueSystemClass) || t == 2 || t == 4 || t == 3 || t == 1)
869 offset = __ENDIAN_PAD((t == 1) ? sizeof(void *) : Tclass->typeSize);
871 a = reference ? ((unsigned char *)&node->key + offset) : ((unsigned char *)(uintptr_t)(uint64)(node->key));
880 unsigned char * b = reference ? ((unsigned char *)&this->key + offset) : (unsigned char *)(uintptr_t)(uint64)(this->key);
882 result = onCompare(Tclass, a, b);
910 struct __ecereNameSpace__ecere__com__AVLNode * n;
912 for(n = this; n; n = n->parent)
914 int __simpleStruct0, __simpleStruct1;
915 int newDepth = (__simpleStruct0 = n->left ? (n->left->depth + 1) : 0, __simpleStruct1 = n->right ? (n->right->depth + 1) : 0, (__simpleStruct0 > __simpleStruct1) ? __simpleStruct0 : __simpleStruct1);
917 if(newDepth == n->depth)
925 struct __ecereNameSpace__ecere__com__AVLNode * __ecereMethod___ecereNameSpace__ecere__com__AVLNode_FindEx(struct __ecereNameSpace__ecere__com__AVLNode * this, struct __ecereNameSpace__ecere__com__Class * Tclass, const uint64 key, struct __ecereNameSpace__ecere__com__AVLNode ** addTo, int * addSide)
928 unsigned int reference = 0;
929 unsigned int offset = 0;
930 int t = Tclass->type;
931 int (* onCompare)(void *, void *, void *) = (void *)Tclass->_vTbl[__ecereVMethodID_class_OnCompare];
932 unsigned int isInt64 = onCompare == (void *)__ecereClass_int64->_vTbl[__ecereVMethodID_class_OnCompare];
934 reference = (t == 1000 && !Tclass->byValueSystemClass) || t == 2 || t == 4 || t == 3;
935 offset = __ENDIAN_PAD(Tclass->typeSize);
936 a = reference ? ((unsigned char *)&key) + offset : (unsigned char *)(uintptr_t)key;
940 offset = __ENDIAN_PAD(sizeof(void *));
942 if(Tclass == __ecereClass_uint)
944 unsigned int ia = *(unsigned int *)a;
948 unsigned int ib = *(unsigned int *)(reference ? ((unsigned char *)&this->key) + offset : (unsigned char *)(uintptr_t)(uint64)(this->key));
949 int result = ia > ib ? 1 : ia < ib ? -1 : 0;
953 struct __ecereNameSpace__ecere__com__AVLNode * node = result < 0 ? this->left : this->right;
960 *addSide = (int)result;
973 a64 = *(long long *)a;
976 unsigned char * b = reference ? ((unsigned char *)&this->key) + offset : (unsigned char *)(uintptr_t)(uint64)(this->key);
981 long long b64 = *(long long *)b;
991 result = onCompare(Tclass, a, b);
994 struct __ecereNameSpace__ecere__com__AVLNode * node = result < 0 ? this->left : this->right;
1001 *addSide = (int)result;
1012 void __ecereMethod___ecereNameSpace__ecere__com__CustomAVLTree_FreeKey(struct __ecereNameSpace__ecere__com__Instance * this, struct __ecereNameSpace__ecere__com__AVLNode * item)
1014 __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);
1016 if(((struct __ecereNameSpace__ecere__com__Instance *)(char *)this)->_class->templateArgs[3].__anon1.__anon1.dataTypeClass->type == 1)
1018 struct __ecereNameSpace__ecere__com__Class * Tclass = ((struct __ecereNameSpace__ecere__com__Instance *)(char *)this)->_class->templateArgs[3].__anon1.__anon1.dataTypeClass;
1020 ((void (*)(void *, void *))(void *)Tclass->_vTbl[__ecereVMethodID_class_OnFree])(Tclass, (((unsigned char *)&item->key) + __ENDIAN_PAD(sizeof(void *))));
1023 (((void (* )(void * _class, void * data))((struct __ecereNameSpace__ecere__com__Instance *)(char *)this)->_class->templateArgs[4].__anon1.__anon1.dataTypeClass->_vTbl[__ecereVMethodID_class_OnFree])(((struct __ecereNameSpace__ecere__com__Instance * )(char * )this)->_class->templateArgs[4].__anon1.__anon1.dataTypeClass, ((void * )((uintptr_t)(item->key)))), item->key = 0);
1026 struct __ecereNameSpace__ecere__com__AVLNode * __ecereMethod___ecereNameSpace__ecere__com__CustomAVLTree_GetAtPosition(struct __ecereNameSpace__ecere__com__Instance * this, const uint64 pos, unsigned int create, unsigned int * justAdded)
1028 __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);
1030 return __ecerePointer___ecereNameSpace__ecere__com__CustomAVLTree->root ? __ecereMethod___ecereNameSpace__ecere__com__AVLNode_Find(((struct __ecereNameSpace__ecere__com__AVLNode *)((uintptr_t)(__ecerePointer___ecereNameSpace__ecere__com__CustomAVLTree->root))), ((struct __ecereNameSpace__ecere__com__Instance *)(char *)this)->_class->templateArgs[4].__anon1.__anon1.dataTypeClass, pos) : (((void *)0));
1033 void __ecereUnregisterModule_CustomAVLTree(struct __ecereNameSpace__ecere__com__Instance * module)
1036 __ecerePropM___ecereNameSpace__ecere__com__AVLNode_prev = (void *)0;
1037 __ecerePropM___ecereNameSpace__ecere__com__AVLNode_next = (void *)0;
1038 __ecerePropM___ecereNameSpace__ecere__com__AVLNode_minimum = (void *)0;
1039 __ecerePropM___ecereNameSpace__ecere__com__AVLNode_maximum = (void *)0;
1040 __ecerePropM___ecereNameSpace__ecere__com__AVLNode_count = (void *)0;
1041 __ecerePropM___ecereNameSpace__ecere__com__AVLNode_depthProp = (void *)0;
1042 __ecerePropM___ecereNameSpace__ecere__com__AVLNode_balanceFactor = (void *)0;
1045 struct __ecereNameSpace__ecere__com__IteratorPointer * __ecereMethod___ecereNameSpace__ecere__com__CustomAVLTree_Add(struct __ecereNameSpace__ecere__com__Instance * this, uint64 node)
1047 __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);
1049 if(!((struct __ecereNameSpace__ecere__com__AVLNode *)((uintptr_t)(__ecerePointer___ecereNameSpace__ecere__com__CustomAVLTree->root))))
1050 __ecerePointer___ecereNameSpace__ecere__com__CustomAVLTree->root = ((struct __ecereNameSpace__ecere__com__AVLNode *)((uintptr_t)(node)));
1053 struct __ecereNameSpace__ecere__com__Class * btClass = ((struct __ecereNameSpace__ecere__com__Instance *)(char *)this)->_class->templateArgs[3].__anon1.__anon1.dataTypeClass;
1054 struct __ecereNameSpace__ecere__com__Class * Tclass = btClass->templateArgs[0].__anon1.__anon1.dataTypeClass;
1058 Tclass = btClass->templateArgs[0].__anon1.__anon1.dataTypeClass = __ecereNameSpace__ecere__com__eSystem_FindClass(((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->application, btClass->templateArgs[0].__anon1.__anon1.dataTypeString);
1060 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))), (int)0))
1061 __ecerePointer___ecereNameSpace__ecere__com__CustomAVLTree->root = __ecereMethod___ecereNameSpace__ecere__com__AVLNode_Rebalance(((struct __ecereNameSpace__ecere__com__AVLNode *)((uintptr_t)(node))));
1063 return (((void *)0));
1065 __ecerePointer___ecereNameSpace__ecere__com__CustomAVLTree->count++;
1066 return (struct __ecereNameSpace__ecere__com__IteratorPointer *)((struct __ecereNameSpace__ecere__com__AVLNode *)((uintptr_t)(node)));
1069 struct __ecereNameSpace__ecere__com__IteratorPointer * __ecereMethod___ecereNameSpace__ecere__com__CustomAVLTree_AddEx(struct __ecereNameSpace__ecere__com__Instance * this, uint64 node, uint64 addNode, int addSide)
1071 __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);
1073 if(!((struct __ecereNameSpace__ecere__com__AVLNode *)((uintptr_t)(__ecerePointer___ecereNameSpace__ecere__com__CustomAVLTree->root))))
1074 __ecerePointer___ecereNameSpace__ecere__com__CustomAVLTree->root = ((struct __ecereNameSpace__ecere__com__AVLNode *)((uintptr_t)(node)));
1077 struct __ecereNameSpace__ecere__com__Class * Tclass = ((struct __ecereNameSpace__ecere__com__Instance *)(char *)this)->_class->templateArgs[3].__anon1.__anon1.dataTypeClass->templateArgs[0].__anon1.__anon1.dataTypeClass;
1081 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);
1083 if(__ecereMethod___ecereNameSpace__ecere__com__AVLNode_Add(((struct __ecereNameSpace__ecere__com__AVLNode *)((uintptr_t)(addNode))), Tclass, ((struct __ecereNameSpace__ecere__com__AVLNode *)((uintptr_t)(node))), addSide))
1084 __ecerePointer___ecereNameSpace__ecere__com__CustomAVLTree->root = __ecereMethod___ecereNameSpace__ecere__com__AVLNode_Rebalance(((struct __ecereNameSpace__ecere__com__AVLNode *)((uintptr_t)(node))));
1086 return (((void *)0));
1088 __ecerePointer___ecereNameSpace__ecere__com__CustomAVLTree->count++;
1089 return (struct __ecereNameSpace__ecere__com__IteratorPointer *)((struct __ecereNameSpace__ecere__com__AVLNode *)((uintptr_t)(node)));
1092 void __ecereMethod___ecereNameSpace__ecere__com__CustomAVLTree_Delete(struct __ecereNameSpace__ecere__com__Instance * this, struct __ecereNameSpace__ecere__com__IteratorPointer * _item)
1094 __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);
1095 struct __ecereNameSpace__ecere__com__AVLNode * item = (struct __ecereNameSpace__ecere__com__AVLNode *)_item;
1098 void (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * it);
1100 __internal_VirtualMethod = ((void (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * it))__ecereClass___ecereNameSpace__ecere__com__CustomAVLTree->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Remove]);
1101 __internal_VirtualMethod ? __internal_VirtualMethod(this, _item) : (void)1;
1103 __ecereMethod___ecereNameSpace__ecere__com__CustomAVLTree_FreeKey(this, ((struct __ecereNameSpace__ecere__com__AVLNode *)((uintptr_t)(item))));
1104 (((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);
1107 void __ecereMethod___ecereNameSpace__ecere__com__CustomAVLTree_Free(struct __ecereNameSpace__ecere__com__Instance * this)
1109 __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);
1110 struct __ecereNameSpace__ecere__com__AVLNode * item;
1112 item = ((struct __ecereNameSpace__ecere__com__AVLNode *)((uintptr_t)(__ecerePointer___ecereNameSpace__ecere__com__CustomAVLTree->root)));
1115 if(((struct __ecereNameSpace__ecere__com__AVLNode *)((uintptr_t)(item)))->left)
1117 struct __ecereNameSpace__ecere__com__AVLNode * left = ((struct __ecereNameSpace__ecere__com__AVLNode *)((uintptr_t)(item)))->left;
1119 ((struct __ecereNameSpace__ecere__com__AVLNode *)((uintptr_t)(item)))->left = (((void *)0));
1120 item = ((struct __ecereNameSpace__ecere__com__AVLNode *)((uintptr_t)(left)));
1122 else if(((struct __ecereNameSpace__ecere__com__AVLNode *)((uintptr_t)(item)))->right)
1124 struct __ecereNameSpace__ecere__com__AVLNode * right = ((struct __ecereNameSpace__ecere__com__AVLNode *)((uintptr_t)(item)))->right;
1126 ((struct __ecereNameSpace__ecere__com__AVLNode *)((uintptr_t)(item)))->right = (((void *)0));
1127 item = ((struct __ecereNameSpace__ecere__com__AVLNode *)((uintptr_t)(right)));
1131 struct __ecereNameSpace__ecere__com__AVLNode * parent = ((struct __ecereNameSpace__ecere__com__AVLNode *)((uintptr_t)(item)))->parent;
1133 __ecereMethod___ecereNameSpace__ecere__com__CustomAVLTree_FreeKey(this, ((struct __ecereNameSpace__ecere__com__AVLNode *)((uintptr_t)(item))));
1134 (((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);
1135 item = ((struct __ecereNameSpace__ecere__com__AVLNode *)((uintptr_t)(parent)));
1138 __ecerePointer___ecereNameSpace__ecere__com__CustomAVLTree->root = (((void *)0));
1139 __ecerePointer___ecereNameSpace__ecere__com__CustomAVLTree->count = 0;
1142 void __ecereRegisterModule_CustomAVLTree(struct __ecereNameSpace__ecere__com__Instance * module)
1144 struct __ecereNameSpace__ecere__com__ClassTemplateArgument __simpleStruct0 =
1150 .dataTypeString = "uint64"
1154 struct __ecereNameSpace__ecere__com__Class __attribute__((unused)) * class;
1156 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(4, "ecere::com::AddSide", "int", 0, 0, (void *)0, (void *)0, module, 2, 1);
1157 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)
1158 __ecereClass___ecereNameSpace__ecere__com__AddSide = class;
1159 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "compare", 0);
1160 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "left", -1);
1161 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "right", 1);
1162 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);
1163 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)
1164 __ecereClass___ecereNameSpace__ecere__com__AVLNode = class;
1165 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "Find", "thisclass Find(ecere::com::Class Tclass, const T key)", __ecereMethod___ecereNameSpace__ecere__com__AVLNode_Find, 1);
1166 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "__ecerePrivateData0", "byte[32]", 32, 1, 2);
1167 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "key", "T", 8, 8, 1);
1168 __ecerePropM___ecereNameSpace__ecere__com__AVLNode_prev = __ecereNameSpace__ecere__com__eClass_AddProperty(class, "prev", "thisclass", 0, __ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_prev, 1);
1169 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)
1170 __ecereProp___ecereNameSpace__ecere__com__AVLNode_prev = __ecerePropM___ecereNameSpace__ecere__com__AVLNode_prev, __ecerePropM___ecereNameSpace__ecere__com__AVLNode_prev = (void *)0;
1171 __ecerePropM___ecereNameSpace__ecere__com__AVLNode_next = __ecereNameSpace__ecere__com__eClass_AddProperty(class, "next", "thisclass", 0, __ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_next, 1);
1172 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)
1173 __ecereProp___ecereNameSpace__ecere__com__AVLNode_next = __ecerePropM___ecereNameSpace__ecere__com__AVLNode_next, __ecerePropM___ecereNameSpace__ecere__com__AVLNode_next = (void *)0;
1174 __ecerePropM___ecereNameSpace__ecere__com__AVLNode_minimum = __ecereNameSpace__ecere__com__eClass_AddProperty(class, "minimum", "thisclass", 0, __ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_minimum, 1);
1175 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)
1176 __ecereProp___ecereNameSpace__ecere__com__AVLNode_minimum = __ecerePropM___ecereNameSpace__ecere__com__AVLNode_minimum, __ecerePropM___ecereNameSpace__ecere__com__AVLNode_minimum = (void *)0;
1177 __ecerePropM___ecereNameSpace__ecere__com__AVLNode_maximum = __ecereNameSpace__ecere__com__eClass_AddProperty(class, "maximum", "thisclass", 0, __ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_maximum, 1);
1178 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)
1179 __ecereProp___ecereNameSpace__ecere__com__AVLNode_maximum = __ecerePropM___ecereNameSpace__ecere__com__AVLNode_maximum, __ecerePropM___ecereNameSpace__ecere__com__AVLNode_maximum = (void *)0;
1180 __ecerePropM___ecereNameSpace__ecere__com__AVLNode_count = __ecereNameSpace__ecere__com__eClass_AddProperty(class, "count", "int", 0, __ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_count, 1);
1181 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)
1182 __ecereProp___ecereNameSpace__ecere__com__AVLNode_count = __ecerePropM___ecereNameSpace__ecere__com__AVLNode_count, __ecerePropM___ecereNameSpace__ecere__com__AVLNode_count = (void *)0;
1183 __ecerePropM___ecereNameSpace__ecere__com__AVLNode_depthProp = __ecereNameSpace__ecere__com__eClass_AddProperty(class, "depthProp", "int", 0, __ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_depthProp, 1);
1184 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)
1185 __ecereProp___ecereNameSpace__ecere__com__AVLNode_depthProp = __ecerePropM___ecereNameSpace__ecere__com__AVLNode_depthProp, __ecerePropM___ecereNameSpace__ecere__com__AVLNode_depthProp = (void *)0;
1186 __ecerePropM___ecereNameSpace__ecere__com__AVLNode_balanceFactor = __ecereNameSpace__ecere__com__eClass_AddProperty(class, "balanceFactor", "int", 0, __ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_balanceFactor, 2);
1187 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)
1188 __ecereProp___ecereNameSpace__ecere__com__AVLNode_balanceFactor = __ecerePropM___ecereNameSpace__ecere__com__AVLNode_balanceFactor, __ecerePropM___ecereNameSpace__ecere__com__AVLNode_balanceFactor = (void *)0;
1189 __ecereNameSpace__ecere__com__eClass_AddTemplateParameter(class, "T", 0, 0, (((void *)0)));
1190 __ecereNameSpace__ecere__com__eClass_DoneAddingTemplateParameters(class);
1192 class->fixed = (unsigned int)1;
1193 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(0, "ecere::com::CustomAVLTree", "ecere::com::Container<BT, I = KT>", sizeof(struct __ecereNameSpace__ecere__com__CustomAVLTree), 0, (void *)0, (void *)0, module, 4, 1);
1194 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)
1195 __ecereClass___ecereNameSpace__ecere__com__CustomAVLTree = class;
1196 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "GetFirst", 0, __ecereMethod___ecereNameSpace__ecere__com__CustomAVLTree_GetFirst, 1);
1197 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "GetLast", 0, __ecereMethod___ecereNameSpace__ecere__com__CustomAVLTree_GetLast, 1);
1198 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "GetPrev", 0, __ecereMethod___ecereNameSpace__ecere__com__CustomAVLTree_GetPrev, 1);
1199 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "GetNext", 0, __ecereMethod___ecereNameSpace__ecere__com__CustomAVLTree_GetNext, 1);
1200 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "GetData", 0, __ecereMethod___ecereNameSpace__ecere__com__CustomAVLTree_GetData, 1);
1201 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "SetData", 0, __ecereMethod___ecereNameSpace__ecere__com__CustomAVLTree_SetData, 1);
1202 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "GetAtPosition", 0, __ecereMethod___ecereNameSpace__ecere__com__CustomAVLTree_GetAtPosition, 1);
1203 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "Add", 0, __ecereMethod___ecereNameSpace__ecere__com__CustomAVLTree_Add, 1);
1204 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "Remove", 0, __ecereMethod___ecereNameSpace__ecere__com__CustomAVLTree_Remove, 1);
1205 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "Find", 0, __ecereMethod___ecereNameSpace__ecere__com__CustomAVLTree_Find, 1);
1206 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "Free", 0, __ecereMethod___ecereNameSpace__ecere__com__CustomAVLTree_Free, 1);
1207 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "Delete", 0, __ecereMethod___ecereNameSpace__ecere__com__CustomAVLTree_Delete, 1);
1208 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "FreeKey", "void FreeKey(ecere::com::AVLNode<KT> item)", __ecereMethod___ecereNameSpace__ecere__com__CustomAVLTree_FreeKey, 1);
1209 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "root", "BT", sizeof(void *), 0xF000F000, 1);
1210 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "count", "int", 4, 4, 1);
1211 __ecereNameSpace__ecere__com__eClass_AddTemplateParameter(class, "BT", 0, "ecere::com::AVLNode<KT>", (((void *)0)));
1212 __ecereNameSpace__ecere__com__eClass_AddTemplateParameter(class, "KT", 0, 0, &__simpleStruct0);
1213 __ecereNameSpace__ecere__com__eClass_DoneAddingTemplateParameters(class);
1215 class->fixed = (unsigned int)1;
1218 void __ecereMethod___ecereNameSpace__ecere__com__AVLNode_Free(struct __ecereNameSpace__ecere__com__AVLNode * this);
1220 void __ecereMethod___ecereNameSpace__ecere__com__AVLNode_Free(struct __ecereNameSpace__ecere__com__AVLNode * this)
1223 __ecereMethod___ecereNameSpace__ecere__com__AVLNode_Free(this->left);
1225 __ecereMethod___ecereNameSpace__ecere__com__AVLNode_Free(this->right);
1226 ((this ? __extension__ ({
1227 void * __ecerePtrToDelete = (this);
1229 __ecereClass___ecereNameSpace__ecere__com__AVLNode->Destructor ? __ecereClass___ecereNameSpace__ecere__com__AVLNode->Destructor((void *)__ecerePtrToDelete) : 0, __ecereClass___ecereNameSpace__ecere__com__IteratorPointer->Destructor ? __ecereClass___ecereNameSpace__ecere__com__IteratorPointer->Destructor((void *)__ecerePtrToDelete) : 0, __ecereNameSpace__ecere__com__eSystem_Delete(__ecerePtrToDelete);