compiler/libec: (#341, #351, #644, #771) Improved enum type matching and type handlin...
[sdk] / compiler / bootstrap / ecere / bootstrap / CustomAVLTree.c
1 /* Code generated from eC source file: CustomAVLTree.ec */
2 #if defined(__GNUC__)
3 typedef long long int64;
4 typedef unsigned long long uint64;
5 #ifndef _WIN32
6 #define __declspec(x)
7 #endif
8 #elif defined(__TINYC__)
9 #include <stdarg.h>
10 #define __builtin_va_list va_list
11 #define __builtin_va_start va_start
12 #define __builtin_va_end va_end
13 #ifdef _WIN32
14 #define strcasecmp stricmp
15 #define strncasecmp strnicmp
16 #define __declspec(x) __attribute__((x))
17 #else
18 #define __declspec(x)
19 #endif
20 typedef long long int64;
21 typedef unsigned long long uint64;
22 #else
23 typedef __int64 int64;
24 typedef unsigned __int64 uint64;
25 #endif
26 #ifdef __BIG_ENDIAN__
27 #define __ENDIAN_PAD(x) (8 - (x))
28 #else
29 #define __ENDIAN_PAD(x) 0
30 #endif
31 #include <stdint.h>
32 #include <sys/types.h>
33
34 #if /*defined(_W64) || */(defined(__WORDSIZE) && __WORDSIZE == 8) || defined(__x86_64__)
35 #define _64BIT 1
36 #else
37 #define _64BIT 0
38 #endif
39
40 #define arch_PointerSize                  sizeof(void *)
41 #define structSize_Instance               (_64BIT ? 24 : 12)
42 #define AVLNode_PrivateData               (_64BIT ? 32 : 16)
43 #define _STR(x) #x
44 #define _XSTR(x) _STR(x)
45
46 extern void *  __ecereNameSpace__ecere__com__eSystem_New(unsigned int size);
47
48 extern void *  __ecereNameSpace__ecere__com__eSystem_New0(unsigned int size);
49
50 extern void *  __ecereNameSpace__ecere__com__eSystem_Renew(void *  memory, unsigned int size);
51
52 extern void *  __ecereNameSpace__ecere__com__eSystem_Renew0(void *  memory, unsigned int size);
53
54 extern void __ecereNameSpace__ecere__com__eSystem_Delete(void *  memory);
55
56 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__BTNode;
57
58 struct __ecereNameSpace__ecere__sys__BTNode;
59
60 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__BinaryTree;
61
62 struct __ecereNameSpace__ecere__sys__BinaryTree
63 {
64 struct __ecereNameSpace__ecere__sys__BTNode * root;
65 int count;
66 int (*  CompareKey)(struct __ecereNameSpace__ecere__sys__BinaryTree * tree, uintptr_t a, uintptr_t b);
67 void (*  FreeKey)(void *  key);
68 } __attribute__ ((gcc_struct));
69
70 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__OldList;
71
72 struct __ecereNameSpace__ecere__sys__OldList
73 {
74 void *  first;
75 void *  last;
76 int count;
77 unsigned int offset;
78 unsigned int circ;
79 } __attribute__ ((gcc_struct));
80
81 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Class;
82
83 struct __ecereNameSpace__ecere__com__Class
84 {
85 struct __ecereNameSpace__ecere__com__Class * prev;
86 struct __ecereNameSpace__ecere__com__Class * next;
87 char *  name;
88 int offset;
89 int structSize;
90 int (* *  _vTbl)();
91 int vTblSize;
92 int (*  Constructor)(struct __ecereNameSpace__ecere__com__Instance *);
93 void (*  Destructor)(struct __ecereNameSpace__ecere__com__Instance *);
94 int offsetClass;
95 int sizeClass;
96 struct __ecereNameSpace__ecere__com__Class * base;
97 struct __ecereNameSpace__ecere__sys__BinaryTree methods;
98 struct __ecereNameSpace__ecere__sys__BinaryTree members;
99 struct __ecereNameSpace__ecere__sys__BinaryTree prop;
100 struct __ecereNameSpace__ecere__sys__OldList membersAndProperties;
101 struct __ecereNameSpace__ecere__sys__BinaryTree classProperties;
102 struct __ecereNameSpace__ecere__sys__OldList derivatives;
103 int memberID;
104 int startMemberID;
105 int type;
106 struct __ecereNameSpace__ecere__com__Instance * module;
107 struct __ecereNameSpace__ecere__com__NameSpace *  nameSpace;
108 char *  dataTypeString;
109 struct __ecereNameSpace__ecere__com__Instance * dataType;
110 int typeSize;
111 int defaultAlignment;
112 void (*  Initialize)();
113 int memberOffset;
114 struct __ecereNameSpace__ecere__sys__OldList selfWatchers;
115 char *  designerClass;
116 unsigned int noExpansion;
117 char *  defaultProperty;
118 unsigned int comRedefinition;
119 int count;
120 int isRemote;
121 unsigned int internalDecl;
122 void *  data;
123 unsigned int computeSize;
124 int structAlignment;
125 int destructionWatchOffset;
126 unsigned int fixed;
127 struct __ecereNameSpace__ecere__sys__OldList delayedCPValues;
128 int inheritanceAccess;
129 char *  fullName;
130 void *  symbol;
131 struct __ecereNameSpace__ecere__sys__OldList conversions;
132 struct __ecereNameSpace__ecere__sys__OldList templateParams;
133 struct __ecereNameSpace__ecere__com__ClassTemplateArgument *  templateArgs;
134 struct __ecereNameSpace__ecere__com__Class * templateClass;
135 struct __ecereNameSpace__ecere__sys__OldList templatized;
136 int numParams;
137 unsigned int isInstanceClass;
138 unsigned int byValueSystemClass;
139 } __attribute__ ((gcc_struct));
140
141 extern long long __ecereNameSpace__ecere__com__eClass_GetProperty(struct __ecereNameSpace__ecere__com__Class * _class, char *  name);
142
143 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Property;
144
145 struct __ecereNameSpace__ecere__com__Property
146 {
147 struct __ecereNameSpace__ecere__com__Property * prev;
148 struct __ecereNameSpace__ecere__com__Property * next;
149 char *  name;
150 unsigned int isProperty;
151 int memberAccess;
152 int id;
153 struct __ecereNameSpace__ecere__com__Class * _class;
154 char *  dataTypeString;
155 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
156 struct __ecereNameSpace__ecere__com__Instance * dataType;
157 void (*  Set)(void * , int);
158 int (*  Get)(void * );
159 unsigned int (*  IsSet)(void * );
160 void *  data;
161 void *  symbol;
162 int vid;
163 unsigned int conversion;
164 unsigned int watcherOffset;
165 char *  category;
166 unsigned int compiled;
167 unsigned int selfWatchable;
168 unsigned int isWatchable;
169 } __attribute__ ((gcc_struct));
170
171 extern void __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property);
172
173 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Instance;
174
175 struct __ecereNameSpace__ecere__com__Instance
176 {
177 int (* *  _vTbl)();
178 struct __ecereNameSpace__ecere__com__Class * _class;
179 int _refCount;
180 } __attribute__ ((gcc_struct));
181
182 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__DataMember;
183
184 struct __ecereNameSpace__ecere__com__DataMember
185 {
186 struct __ecereNameSpace__ecere__com__DataMember * prev;
187 struct __ecereNameSpace__ecere__com__DataMember * next;
188 char *  name;
189 unsigned int isProperty;
190 int memberAccess;
191 int id;
192 struct __ecereNameSpace__ecere__com__Class * _class;
193 char *  dataTypeString;
194 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
195 struct __ecereNameSpace__ecere__com__Instance * dataType;
196 int type;
197 int offset;
198 int memberID;
199 struct __ecereNameSpace__ecere__sys__OldList members;
200 struct __ecereNameSpace__ecere__sys__BinaryTree membersAlpha;
201 int memberOffset;
202 int structAlignment;
203 } __attribute__ ((gcc_struct));
204
205 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Method;
206
207 struct __ecereNameSpace__ecere__com__Method
208 {
209 char *  name;
210 struct __ecereNameSpace__ecere__com__Method * parent;
211 struct __ecereNameSpace__ecere__com__Method * left;
212 struct __ecereNameSpace__ecere__com__Method * right;
213 int depth;
214 int (*  function)();
215 int vid;
216 int type;
217 struct __ecereNameSpace__ecere__com__Class * _class;
218 void *  symbol;
219 char *  dataTypeString;
220 struct __ecereNameSpace__ecere__com__Instance * dataType;
221 int memberAccess;
222 } __attribute__ ((gcc_struct));
223
224 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__SerialBuffer;
225
226 struct __ecereNameSpace__ecere__com__SerialBuffer
227 {
228 unsigned char *  _buffer;
229 unsigned int count;
230 unsigned int _size;
231 unsigned int pos;
232 } __attribute__ ((gcc_struct));
233
234 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__DataValue;
235
236 struct __ecereNameSpace__ecere__com__DataValue
237 {
238 union
239 {
240 char c;
241 unsigned char uc;
242 short s;
243 unsigned short us;
244 int i;
245 unsigned int ui;
246 void *  p;
247 float f;
248 double d;
249 long long i64;
250 uint64 ui64;
251 } __attribute__ ((gcc_struct));
252 } __attribute__ ((gcc_struct));
253
254 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__ClassTemplateArgument;
255
256 struct __ecereNameSpace__ecere__com__ClassTemplateArgument
257 {
258 union
259 {
260 struct
261 {
262 char *  dataTypeString;
263 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
264 } __attribute__ ((gcc_struct));
265 struct __ecereNameSpace__ecere__com__DataValue expression;
266 struct
267 {
268 char *  memberString;
269 union
270 {
271 struct __ecereNameSpace__ecere__com__DataMember * member;
272 struct __ecereNameSpace__ecere__com__Property * prop;
273 struct __ecereNameSpace__ecere__com__Method * method;
274 } __attribute__ ((gcc_struct));
275 } __attribute__ ((gcc_struct));
276 } __attribute__ ((gcc_struct));
277 } __attribute__ ((gcc_struct));
278
279 extern int __ecereVMethodID_class_OnCompare;
280
281 extern int __ecereVMethodID_class_OnCopy;
282
283 static struct __ecereNameSpace__ecere__com__Property * __ecereProp___ecereNameSpace__ecere__com__AVLNode_prev, * __ecerePropM___ecereNameSpace__ecere__com__AVLNode_prev;
284
285 static struct __ecereNameSpace__ecere__com__Property * __ecereProp___ecereNameSpace__ecere__com__AVLNode_next, * __ecerePropM___ecereNameSpace__ecere__com__AVLNode_next;
286
287 static struct __ecereNameSpace__ecere__com__Property * __ecereProp___ecereNameSpace__ecere__com__AVLNode_count, * __ecerePropM___ecereNameSpace__ecere__com__AVLNode_count;
288
289 static struct __ecereNameSpace__ecere__com__Property * __ecereProp___ecereNameSpace__ecere__com__AVLNode_depthProp, * __ecerePropM___ecereNameSpace__ecere__com__AVLNode_depthProp;
290
291 static struct __ecereNameSpace__ecere__com__Property * __ecereProp___ecereNameSpace__ecere__com__AVLNode_balanceFactor, * __ecerePropM___ecereNameSpace__ecere__com__AVLNode_balanceFactor;
292
293 struct __ecereNameSpace__ecere__com__AVLNode
294 {
295 struct __ecereNameSpace__ecere__com__AVLNode * parent, * left, * right;
296 int depth;
297 uint64 key;
298 } __attribute__ ((gcc_struct));
299
300 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__AVLNode;
301
302 struct __ecereNameSpace__ecere__com__AVLNode * __ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_maximum(struct __ecereNameSpace__ecere__com__AVLNode * this);
303
304 static struct __ecereNameSpace__ecere__com__Property * __ecereProp___ecereNameSpace__ecere__com__AVLNode_maximum, * __ecerePropM___ecereNameSpace__ecere__com__AVLNode_maximum;
305
306 struct __ecereNameSpace__ecere__com__AVLNode * __ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_prev(struct __ecereNameSpace__ecere__com__AVLNode * this)
307 {
308 if(this->left)
309 return __ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_maximum(this->left);
310 while(this)
311 {
312 if(this->parent && this == this->parent->right)
313 return this->parent;
314 else
315 this = this->parent;
316 }
317 return this;
318 }
319
320 struct __ecereNameSpace__ecere__com__AVLNode * __ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_minimum(struct __ecereNameSpace__ecere__com__AVLNode * this);
321
322 static struct __ecereNameSpace__ecere__com__Property * __ecereProp___ecereNameSpace__ecere__com__AVLNode_minimum, * __ecerePropM___ecereNameSpace__ecere__com__AVLNode_minimum;
323
324 struct __ecereNameSpace__ecere__com__AVLNode * __ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_next(struct __ecereNameSpace__ecere__com__AVLNode * this)
325 {
326 struct __ecereNameSpace__ecere__com__AVLNode * right = this->right;
327
328 if(right)
329 return __ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_minimum(right);
330 while(this)
331 {
332 struct __ecereNameSpace__ecere__com__AVLNode * parent = this->parent;
333
334 if(parent && this == parent->left)
335 return parent;
336 else
337 this = parent;
338 }
339 return (((void *)0));
340 }
341
342 struct __ecereNameSpace__ecere__com__AVLNode * __ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_minimum(struct __ecereNameSpace__ecere__com__AVLNode * this)
343 {
344 while(this->left)
345 this = this->left;
346 return this;
347 }
348
349 struct __ecereNameSpace__ecere__com__AVLNode * __ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_maximum(struct __ecereNameSpace__ecere__com__AVLNode * this)
350 {
351 while(this->right)
352 this = this->right;
353 return this;
354 }
355
356 int __ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_count(struct __ecereNameSpace__ecere__com__AVLNode * this)
357 {
358 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);
359 }
360
361 int __ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_depthProp(struct __ecereNameSpace__ecere__com__AVLNode * this)
362 {
363 int leftDepth = this->left ? (__ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_depthProp(this->left) + 1) : 0;
364 int rightDepth = this->right ? (__ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_depthProp(this->right) + 1) : 0;
365
366 return ((leftDepth > rightDepth) ? leftDepth : rightDepth);
367 }
368
369 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__IteratorPointer;
370
371 void __ecereMethod___ecereNameSpace__ecere__com__AVLNode_Free(struct __ecereNameSpace__ecere__com__AVLNode * this)
372 {
373 if(this->left)
374 __ecereMethod___ecereNameSpace__ecere__com__AVLNode_Free(this->left);
375 if(this->right)
376 __ecereMethod___ecereNameSpace__ecere__com__AVLNode_Free(this->right);
377 ((this ? (__ecereClass___ecereNameSpace__ecere__com__AVLNode->Destructor ? __ecereClass___ecereNameSpace__ecere__com__AVLNode->Destructor(this) : 0, __ecereClass___ecereNameSpace__ecere__com__IteratorPointer->Destructor ? __ecereClass___ecereNameSpace__ecere__com__IteratorPointer->Destructor(this) : 0, __ecereNameSpace__ecere__com__eSystem_Delete(this)) : 0), this = 0);
378 }
379
380 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_uint64;
381
382 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)
383 {
384 uint64 newKey = node->key;
385
386 if(!Tclass)
387 Tclass = __ecereClass_uint64;
388 while(0x1)
389 {
390 int result = ((int (*)(void *, void *, void *))(void *)Tclass->_vTbl[__ecereVMethodID_class_OnCompare])(Tclass, ((Tclass->type == 1000 && !Tclass->byValueSystemClass) || Tclass->type == 2 || Tclass->type == 4 || Tclass->type == 3 || Tclass->type == 1) ? (((unsigned char *)&node->key) + __ENDIAN_PAD((Tclass->type == 1) ? sizeof(void *) : Tclass->typeSize)) : (void *)*(uint64 *)(&node->key), ((Tclass->type == 1000 && !Tclass->byValueSystemClass) || Tclass->type == 2 || Tclass->type == 4 || Tclass->type == 3 || Tclass->type == 1) ? (((unsigned char *)&this->key) + __ENDIAN_PAD((Tclass->type == 1) ? sizeof(void *) : Tclass->typeSize)) : (void *)*(uint64 *)(&this->key));
391
392 if(!result)
393 {
394 return 0x0;
395 }
396 else if(result > 0)
397 {
398 if(this->right)
399 this = this->right;
400 else
401 {
402 node->parent = this;
403 this->right = node;
404 node->depth = 0;
405 {
406 struct __ecereNameSpace__ecere__com__AVLNode * n;
407
408 for(n = this; n; n = n->parent)
409 {
410 int __simpleStruct0, __simpleStruct1;
411 int newDepth = (__simpleStruct0 = n->left ? (n->left->depth + 1) : 0, __simpleStruct1 = n->right ? (n->right->depth + 1) : 0, (__simpleStruct0 > __simpleStruct1) ? __simpleStruct0 : __simpleStruct1);
412
413 if(newDepth == n->depth)
414 break;
415 n->depth = newDepth;
416 }
417 }
418 return 0x1;
419 }
420 }
421 else
422 {
423 if(this->left)
424 this = this->left;
425 else
426 {
427 node->parent = this;
428 this->left = node;
429 node->depth = 0;
430 {
431 struct __ecereNameSpace__ecere__com__AVLNode * n;
432
433 for(n = this; n; n = n->parent)
434 {
435 int __simpleStruct0, __simpleStruct1;
436 int newDepth = (__simpleStruct0 = n->left ? (n->left->depth + 1) : 0, __simpleStruct1 = n->right ? (n->right->depth + 1) : 0, (__simpleStruct0 > __simpleStruct1) ? __simpleStruct0 : __simpleStruct1);
437
438 if(newDepth == n->depth)
439 break;
440 n->depth = newDepth;
441 }
442 }
443 return 0x1;
444 }
445 }
446 }
447 }
448
449 struct __ecereNameSpace__ecere__com__AVLNode * __ecereMethod___ecereNameSpace__ecere__com__AVLNode_Find(struct __ecereNameSpace__ecere__com__AVLNode * this, struct __ecereNameSpace__ecere__com__Class * Tclass, uint64 key)
450 {
451 while(this)
452 {
453 int result = ((int (*)(void *, void *, void *))(void *)Tclass->_vTbl[__ecereVMethodID_class_OnCompare])(Tclass, ((Tclass->type == 1000 && !Tclass->byValueSystemClass) || Tclass->type == 2 || Tclass->type == 4 || Tclass->type == 3) ? (((unsigned char *)&key) + __ENDIAN_PAD(Tclass->typeSize)) : (void *)key, ((Tclass->type == 1000 && !Tclass->byValueSystemClass) || Tclass->type == 2 || Tclass->type == 4 || Tclass->type == 3 || Tclass->type == 1) ? (((unsigned char *)&this->key) + __ENDIAN_PAD((Tclass->type == 1) ? sizeof(void *) : Tclass->typeSize)) : (void *)*(uint64 *)(&this->key));
454
455 if(result < 0)
456 this = this->left;
457 else if(result > 0)
458 this = this->right;
459 else
460 break;
461 }
462 return this;
463 }
464
465 struct __ecereNameSpace__ecere__com__AVLNode * __ecereMethod___ecereNameSpace__ecere__com__AVLNode_FindAll(struct __ecereNameSpace__ecere__com__AVLNode * this, uint64 key)
466 {
467 struct __ecereNameSpace__ecere__com__AVLNode * result = (((void *)0));
468
469 if(this->key == key)
470 result = this;
471 if(!result && this->left)
472 result = __ecereMethod___ecereNameSpace__ecere__com__AVLNode_FindAll(this->left, key);
473 if(!result && this->right)
474 result = __ecereMethod___ecereNameSpace__ecere__com__AVLNode_FindAll(this->right, key);
475 return result;
476 }
477
478 void __ecereMethod___ecereNameSpace__ecere__com__AVLNode_RemoveSwap(struct __ecereNameSpace__ecere__com__AVLNode * this, struct __ecereNameSpace__ecere__com__AVLNode * swap)
479 {
480 if(swap->left)
481 {
482 swap->left->parent = swap->parent;
483 if(swap == swap->parent->left)
484 swap->parent->left = swap->left;
485 else if(swap == swap->parent->right)
486 swap->parent->right = swap->left;
487 swap->left = (((void *)0));
488 }
489 if(swap->right)
490 {
491 swap->right->parent = swap->parent;
492 if(swap == swap->parent->left)
493 swap->parent->left = swap->right;
494 else if(swap == swap->parent->right)
495 swap->parent->right = swap->right;
496 swap->right = (((void *)0));
497 }
498 if(swap == swap->parent->left)
499 swap->parent->left = (((void *)0));
500 else if(swap == swap->parent->right)
501 swap->parent->right = (((void *)0));
502 {
503 struct __ecereNameSpace__ecere__com__AVLNode * n;
504
505 for(n = swap->parent; n; n = n->parent)
506 {
507 int __simpleStruct0, __simpleStruct1;
508 int newDepth = (__simpleStruct0 = n->left ? (n->left->depth + 1) : 0, __simpleStruct1 = n->right ? (n->right->depth + 1) : 0, (__simpleStruct0 > __simpleStruct1) ? __simpleStruct0 : __simpleStruct1);
509
510 if(newDepth == n->depth)
511 break;
512 n->depth = newDepth;
513 if(n == this)
514 break;
515 }
516 }
517 swap->left = this->left;
518 if(this->left)
519 this->left->parent = swap;
520 swap->right = this->right;
521 if(this->right)
522 this->right->parent = swap;
523 swap->parent = this->parent;
524 this->left = (((void *)0));
525 this->right = (((void *)0));
526 if(this->parent)
527 {
528 if(this == this->parent->left)
529 this->parent->left = swap;
530 else if(this == this->parent->right)
531 this->parent->right = swap;
532 }
533 }
534
535 struct __ecereNameSpace__ecere__com__AVLNode * __ecereMethod___ecereNameSpace__ecere__com__AVLNode_Rebalance();
536
537 struct __ecereNameSpace__ecere__com__AVLNode * __ecereMethod___ecereNameSpace__ecere__com__AVLNode_RemoveSwapLeft(struct __ecereNameSpace__ecere__com__AVLNode * this)
538 {
539 struct __ecereNameSpace__ecere__com__AVLNode * swap = this->left ? __ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_maximum(this->left) : this->right;
540 struct __ecereNameSpace__ecere__com__AVLNode * swapParent = (((void *)0));
541
542 if(swap)
543 {
544 swapParent = swap->parent;
545 __ecereMethod___ecereNameSpace__ecere__com__AVLNode_RemoveSwap(this, swap);
546 }
547 if(this->parent)
548 {
549 if(this == this->parent->left)
550 this->parent->left = (((void *)0));
551 else if(this == this->parent->right)
552 this->parent->right = (((void *)0));
553 }
554 {
555 struct __ecereNameSpace__ecere__com__AVLNode * n;
556
557 for(n = swap ? swap : this->parent; n; n = n->parent)
558 {
559 int __simpleStruct0, __simpleStruct1;
560 int newDepth = (__simpleStruct0 = n->left ? (n->left->depth + 1) : 0, __simpleStruct1 = n->right ? (n->right->depth + 1) : 0, (__simpleStruct0 > __simpleStruct1) ? __simpleStruct0 : __simpleStruct1);
561
562 if(newDepth == n->depth && n != swap)
563 break;
564 n->depth = newDepth;
565 }
566 }
567 if(swapParent && swapParent != this)
568 return __ecereMethod___ecereNameSpace__ecere__com__AVLNode_Rebalance(swapParent);
569 else if(swap)
570 return __ecereMethod___ecereNameSpace__ecere__com__AVLNode_Rebalance(swap);
571 else if(this->parent)
572 return __ecereMethod___ecereNameSpace__ecere__com__AVLNode_Rebalance(this->parent);
573 else
574 return (((void *)0));
575 }
576
577 struct __ecereNameSpace__ecere__com__AVLNode * __ecereMethod___ecereNameSpace__ecere__com__AVLNode_RemoveSwapRight(struct __ecereNameSpace__ecere__com__AVLNode * this)
578 {
579 struct __ecereNameSpace__ecere__com__AVLNode * result;
580 struct __ecereNameSpace__ecere__com__AVLNode * swap = this->right ? __ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_minimum(this->right) : this->left;
581 struct __ecereNameSpace__ecere__com__AVLNode * swapParent = (((void *)0));
582
583 if(swap)
584 {
585 swapParent = swap->parent;
586 __ecereMethod___ecereNameSpace__ecere__com__AVLNode_RemoveSwap(this, swap);
587 }
588 if(this->parent)
589 {
590 if(this == this->parent->left)
591 this->parent->left = (((void *)0));
592 else if(this == this->parent->right)
593 this->parent->right = (((void *)0));
594 }
595 {
596 struct __ecereNameSpace__ecere__com__AVLNode * n;
597
598 for(n = swap ? swap : this->parent; n; n = n->parent)
599 {
600 int __simpleStruct0, __simpleStruct1;
601 int newDepth = (__simpleStruct0 = n->left ? (n->left->depth + 1) : 0, __simpleStruct1 = n->right ? (n->right->depth + 1) : 0, (__simpleStruct0 > __simpleStruct1) ? __simpleStruct0 : __simpleStruct1);
602
603 if(newDepth == n->depth && n != swap)
604 break;
605 n->depth = newDepth;
606 }
607 }
608 if(swapParent && swapParent != this)
609 result = __ecereMethod___ecereNameSpace__ecere__com__AVLNode_Rebalance(swapParent);
610 else if(swap)
611 result = __ecereMethod___ecereNameSpace__ecere__com__AVLNode_Rebalance(swap);
612 else if(this->parent)
613 result = __ecereMethod___ecereNameSpace__ecere__com__AVLNode_Rebalance(this->parent);
614 else
615 result = (((void *)0));
616 return result;
617 }
618
619 int __ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_balanceFactor(struct __ecereNameSpace__ecere__com__AVLNode * this)
620 {
621 int leftDepth = this->left ? (this->left->depth + 1) : 0;
622 int rightDepth = this->right ? (this->right->depth + 1) : 0;
623
624 return rightDepth - leftDepth;
625 }
626
627 void __ecereMethod___ecereNameSpace__ecere__com__AVLNode_DoubleRotateRight();
628
629 void __ecereMethod___ecereNameSpace__ecere__com__AVLNode_SingleRotateRight();
630
631 void __ecereMethod___ecereNameSpace__ecere__com__AVLNode_DoubleRotateLeft();
632
633 void __ecereMethod___ecereNameSpace__ecere__com__AVLNode_SingleRotateLeft();
634
635 struct __ecereNameSpace__ecere__com__AVLNode * __ecereMethod___ecereNameSpace__ecere__com__AVLNode_Rebalance(struct __ecereNameSpace__ecere__com__AVLNode * this)
636 {
637 while(0x1)
638 {
639 int factor = __ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_balanceFactor(this);
640
641 if(factor < -1)
642 {
643 if(__ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_balanceFactor(this->left) == 1)
644 __ecereMethod___ecereNameSpace__ecere__com__AVLNode_DoubleRotateRight(this);
645 else
646 __ecereMethod___ecereNameSpace__ecere__com__AVLNode_SingleRotateRight(this);
647 }
648 else if(factor > 1)
649 {
650 if(__ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_balanceFactor(this->right) == -1)
651 __ecereMethod___ecereNameSpace__ecere__com__AVLNode_DoubleRotateLeft(this);
652 else
653 __ecereMethod___ecereNameSpace__ecere__com__AVLNode_SingleRotateLeft(this);
654 }
655 if(this->parent)
656 this = this->parent;
657 else
658 return this;
659 }
660 }
661
662 void __ecereMethod___ecereNameSpace__ecere__com__AVLNode_SingleRotateRight(struct __ecereNameSpace__ecere__com__AVLNode * this)
663 {
664 int __simpleStruct2, __simpleStruct3;
665 int __simpleStruct0, __simpleStruct1;
666
667 if(this->parent)
668 {
669 if(this == this->parent->left)
670 this->parent->left = this->left;
671 else if(this == this->parent->right)
672 this->parent->right = this->left;
673 }
674 this->left->parent = this->parent;
675 this->parent = this->left;
676 this->left = this->parent->right;
677 if(this->left)
678 this->left->parent = this;
679 this->parent->right = this;
680 this->depth = (__simpleStruct0 = this->left ? (this->left->depth + 1) : 0, __simpleStruct1 = this->right ? (this->right->depth + 1) : 0, (__simpleStruct0 > __simpleStruct1) ? __simpleStruct0 : __simpleStruct1);
681 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);
682 {
683 struct __ecereNameSpace__ecere__com__AVLNode * n;
684
685 for(n = this->parent->parent; n; n = n->parent)
686 {
687 int __simpleStruct0, __simpleStruct1;
688 int newDepth = (__simpleStruct0 = n->left ? (n->left->depth + 1) : 0, __simpleStruct1 = n->right ? (n->right->depth + 1) : 0, (__simpleStruct0 > __simpleStruct1) ? __simpleStruct0 : __simpleStruct1);
689
690 if(newDepth == n->depth)
691 break;
692 n->depth = newDepth;
693 }
694 }
695 }
696
697 void __ecereMethod___ecereNameSpace__ecere__com__AVLNode_SingleRotateLeft(struct __ecereNameSpace__ecere__com__AVLNode * this)
698 {
699 int __simpleStruct2, __simpleStruct3;
700 int __simpleStruct0, __simpleStruct1;
701
702 if(this->parent)
703 {
704 if(this == this->parent->right)
705 this->parent->right = this->right;
706 else if(this == this->parent->left)
707 this->parent->left = this->right;
708 }
709 this->right->parent = this->parent;
710 this->parent = this->right;
711 this->right = this->parent->left;
712 if(this->right)
713 this->right->parent = this;
714 this->parent->left = this;
715 this->depth = (__simpleStruct0 = this->left ? (this->left->depth + 1) : 0, __simpleStruct1 = this->right ? (this->right->depth + 1) : 0, (__simpleStruct0 > __simpleStruct1) ? __simpleStruct0 : __simpleStruct1);
716 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);
717 {
718 struct __ecereNameSpace__ecere__com__AVLNode * n;
719
720 for(n = this->parent->parent; n; n = n->parent)
721 {
722 int __simpleStruct0, __simpleStruct1;
723 int newDepth = (__simpleStruct0 = n->left ? (n->left->depth + 1) : 0, __simpleStruct1 = n->right ? (n->right->depth + 1) : 0, (__simpleStruct0 > __simpleStruct1) ? __simpleStruct0 : __simpleStruct1);
724
725 if(newDepth == n->depth)
726 break;
727 n->depth = newDepth;
728 }
729 }
730 }
731
732 void __ecereMethod___ecereNameSpace__ecere__com__AVLNode_DoubleRotateRight(struct __ecereNameSpace__ecere__com__AVLNode * this)
733 {
734 __ecereMethod___ecereNameSpace__ecere__com__AVLNode_SingleRotateLeft(this->left);
735 __ecereMethod___ecereNameSpace__ecere__com__AVLNode_SingleRotateRight(this);
736 }
737
738 void __ecereMethod___ecereNameSpace__ecere__com__AVLNode_DoubleRotateLeft(struct __ecereNameSpace__ecere__com__AVLNode * this)
739 {
740 __ecereMethod___ecereNameSpace__ecere__com__AVLNode_SingleRotateRight(this->right);
741 __ecereMethod___ecereNameSpace__ecere__com__AVLNode_SingleRotateLeft(this);
742 }
743
744 struct __ecereNameSpace__ecere__com__CustomAVLTree
745 {
746 struct __ecereNameSpace__ecere__com__AVLNode * root;
747 int count;
748 } __attribute__ ((gcc_struct));
749
750 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__CustomAVLTree;
751
752 struct __ecereNameSpace__ecere__com__IteratorPointer * __ecereMethod___ecereNameSpace__ecere__com__CustomAVLTree_GetFirst(struct __ecereNameSpace__ecere__com__Instance * this)
753 {
754 struct __ecereNameSpace__ecere__com__CustomAVLTree * __ecerePointer___ecereNameSpace__ecere__com__CustomAVLTree = (struct __ecereNameSpace__ecere__com__CustomAVLTree *)(this ? (((char *)this) + structSize_Instance) : 0);
755
756 return (struct __ecereNameSpace__ecere__com__IteratorPointer *)(__ecerePointer___ecereNameSpace__ecere__com__CustomAVLTree->root ? __ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_minimum(__ecerePointer___ecereNameSpace__ecere__com__CustomAVLTree->root) : (((void *)0)));
757 }
758
759 struct __ecereNameSpace__ecere__com__IteratorPointer * __ecereMethod___ecereNameSpace__ecere__com__CustomAVLTree_GetLast(struct __ecereNameSpace__ecere__com__Instance * this)
760 {
761 struct __ecereNameSpace__ecere__com__CustomAVLTree * __ecerePointer___ecereNameSpace__ecere__com__CustomAVLTree = (struct __ecereNameSpace__ecere__com__CustomAVLTree *)(this ? (((char *)this) + structSize_Instance) : 0);
762
763 return (struct __ecereNameSpace__ecere__com__IteratorPointer *)(__ecerePointer___ecereNameSpace__ecere__com__CustomAVLTree->root ? __ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_maximum(__ecerePointer___ecereNameSpace__ecere__com__CustomAVLTree->root) : (((void *)0)));
764 }
765
766 struct __ecereNameSpace__ecere__com__IteratorPointer * __ecereMethod___ecereNameSpace__ecere__com__CustomAVLTree_GetPrev(struct __ecereNameSpace__ecere__com__Instance * this, struct __ecereNameSpace__ecere__com__IteratorPointer * node)
767 {
768 struct __ecereNameSpace__ecere__com__CustomAVLTree * __ecerePointer___ecereNameSpace__ecere__com__CustomAVLTree = (struct __ecereNameSpace__ecere__com__CustomAVLTree *)(this ? (((char *)this) + structSize_Instance) : 0);
769
770 return __ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_prev(((struct __ecereNameSpace__ecere__com__AVLNode *)node));
771 }
772
773 struct __ecereNameSpace__ecere__com__IteratorPointer * __ecereMethod___ecereNameSpace__ecere__com__CustomAVLTree_GetNext(struct __ecereNameSpace__ecere__com__Instance * this, struct __ecereNameSpace__ecere__com__IteratorPointer * node)
774 {
775 struct __ecereNameSpace__ecere__com__CustomAVLTree * __ecerePointer___ecereNameSpace__ecere__com__CustomAVLTree = (struct __ecereNameSpace__ecere__com__CustomAVLTree *)(this ? (((char *)this) + structSize_Instance) : 0);
776
777 return __ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_next(((struct __ecereNameSpace__ecere__com__AVLNode *)node));
778 }
779
780 struct __ecereNameSpace__ecere__com__AVLNode * __ecereMethod___ecereNameSpace__ecere__com__CustomAVLTree_GetData(struct __ecereNameSpace__ecere__com__Instance * this, struct __ecereNameSpace__ecere__com__IteratorPointer * node)
781 {
782 struct __ecereNameSpace__ecere__com__CustomAVLTree * __ecerePointer___ecereNameSpace__ecere__com__CustomAVLTree = (struct __ecereNameSpace__ecere__com__CustomAVLTree *)(this ? (((char *)this) + structSize_Instance) : 0);
783
784 return (struct __ecereNameSpace__ecere__com__AVLNode *)node;
785 }
786
787 unsigned int __ecereMethod___ecereNameSpace__ecere__com__CustomAVLTree_SetData(struct __ecereNameSpace__ecere__com__Instance * this, struct __ecereNameSpace__ecere__com__IteratorPointer * node, uint64 data)
788 {
789 struct __ecereNameSpace__ecere__com__CustomAVLTree * __ecerePointer___ecereNameSpace__ecere__com__CustomAVLTree = (struct __ecereNameSpace__ecere__com__CustomAVLTree *)(this ? (((char *)this) + structSize_Instance) : 0);
790
791 return 0x0;
792 }
793
794 extern struct __ecereNameSpace__ecere__com__Class * __ecereNameSpace__ecere__com__eSystem_FindClass(struct __ecereNameSpace__ecere__com__Instance * module, char *  name);
795
796 extern struct __ecereNameSpace__ecere__com__Instance * __thisModule;
797
798 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__NameSpace;
799
800 struct __ecereNameSpace__ecere__com__NameSpace
801 {
802 char *  name;
803 struct __ecereNameSpace__ecere__com__NameSpace *  btParent;
804 struct __ecereNameSpace__ecere__com__NameSpace *  left;
805 struct __ecereNameSpace__ecere__com__NameSpace *  right;
806 int depth;
807 struct __ecereNameSpace__ecere__com__NameSpace *  parent;
808 struct __ecereNameSpace__ecere__sys__BinaryTree nameSpaces;
809 struct __ecereNameSpace__ecere__sys__BinaryTree classes;
810 struct __ecereNameSpace__ecere__sys__BinaryTree defines;
811 struct __ecereNameSpace__ecere__sys__BinaryTree functions;
812 } __attribute__ ((gcc_struct));
813
814 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Module;
815
816 struct __ecereNameSpace__ecere__com__Module
817 {
818 struct __ecereNameSpace__ecere__com__Instance * application;
819 struct __ecereNameSpace__ecere__sys__OldList classes;
820 struct __ecereNameSpace__ecere__sys__OldList defines;
821 struct __ecereNameSpace__ecere__sys__OldList functions;
822 struct __ecereNameSpace__ecere__sys__OldList modules;
823 struct __ecereNameSpace__ecere__com__Instance * prev;
824 struct __ecereNameSpace__ecere__com__Instance * next;
825 char *  name;
826 void *  library;
827 void *  Unload;
828 int importType;
829 int origImportType;
830 struct __ecereNameSpace__ecere__com__NameSpace privateNameSpace;
831 struct __ecereNameSpace__ecere__com__NameSpace publicNameSpace;
832 } __attribute__ ((gcc_struct));
833
834 struct __ecereNameSpace__ecere__com__IteratorPointer * __ecereMethod___ecereNameSpace__ecere__com__CustomAVLTree_Add(struct __ecereNameSpace__ecere__com__Instance * this, uint64 node)
835 {
836 struct __ecereNameSpace__ecere__com__CustomAVLTree * __ecerePointer___ecereNameSpace__ecere__com__CustomAVLTree = (struct __ecereNameSpace__ecere__com__CustomAVLTree *)(this ? (((char *)this) + structSize_Instance) : 0);
837
838 if(!__ecerePointer___ecereNameSpace__ecere__com__CustomAVLTree->root)
839 __ecerePointer___ecereNameSpace__ecere__com__CustomAVLTree->root = node;
840 else
841 {
842 struct __ecereNameSpace__ecere__com__Class * Tclass = ((struct __ecereNameSpace__ecere__com__Instance *)(char *)this)->_class->templateArgs[3].dataTypeClass->templateArgs[0].dataTypeClass;
843
844 if(!Tclass)
845 {
846 Tclass = ((struct __ecereNameSpace__ecere__com__Instance *)(char *)this)->_class->templateArgs[3].dataTypeClass->templateArgs[0].dataTypeClass = __ecereNameSpace__ecere__com__eSystem_FindClass(((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + structSize_Instance)))->application, ((struct __ecereNameSpace__ecere__com__Instance *)(char *)this)->_class->templateArgs[3].dataTypeClass->templateArgs[0].dataTypeString);
847 }
848 if(__ecereMethod___ecereNameSpace__ecere__com__AVLNode_Add(__ecerePointer___ecereNameSpace__ecere__com__CustomAVLTree->root, Tclass, node))
849 __ecerePointer___ecereNameSpace__ecere__com__CustomAVLTree->root = (uint64)(__ecereMethod___ecereNameSpace__ecere__com__AVLNode_Rebalance(node));
850 else
851 return (((void *)0));
852 }
853 __ecerePointer___ecereNameSpace__ecere__com__CustomAVLTree->count++;
854 return (struct __ecereNameSpace__ecere__com__IteratorPointer *)node;
855 }
856
857 void __ecereMethod___ecereNameSpace__ecere__com__CustomAVLTree_Remove(struct __ecereNameSpace__ecere__com__Instance * this, struct __ecereNameSpace__ecere__com__IteratorPointer * node)
858 {
859 struct __ecereNameSpace__ecere__com__CustomAVLTree * __ecerePointer___ecereNameSpace__ecere__com__CustomAVLTree = (struct __ecereNameSpace__ecere__com__CustomAVLTree *)(this ? (((char *)this) + structSize_Instance) : 0);
860 struct __ecereNameSpace__ecere__com__AVLNode * parent = ((struct __ecereNameSpace__ecere__com__AVLNode *)node)->parent;
861
862 if(parent || __ecerePointer___ecereNameSpace__ecere__com__CustomAVLTree->root == (struct __ecereNameSpace__ecere__com__AVLNode *)node)
863 {
864 __ecerePointer___ecereNameSpace__ecere__com__CustomAVLTree->root = (uint64)(__ecereMethod___ecereNameSpace__ecere__com__AVLNode_RemoveSwapRight(((struct __ecereNameSpace__ecere__com__AVLNode *)node)));
865 __ecerePointer___ecereNameSpace__ecere__com__CustomAVLTree->count--;
866 ((struct __ecereNameSpace__ecere__com__AVLNode *)node)->parent = (((void *)0));
867 }
868 }
869
870 int __ecereVMethodID___ecereNameSpace__ecere__com__Container_Remove;
871
872 int __ecereVMethodID_class_OnFree;
873
874 void __ecereMethod___ecereNameSpace__ecere__com__CustomAVLTree_Delete(struct __ecereNameSpace__ecere__com__Instance * this, struct __ecereNameSpace__ecere__com__IteratorPointer * _item)
875 {
876 struct __ecereNameSpace__ecere__com__CustomAVLTree * __ecerePointer___ecereNameSpace__ecere__com__CustomAVLTree = (struct __ecereNameSpace__ecere__com__CustomAVLTree *)(this ? (((char *)this) + structSize_Instance) : 0);
877 struct __ecereNameSpace__ecere__com__AVLNode * item = (struct __ecereNameSpace__ecere__com__AVLNode *)_item;
878
879 ((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);
880 (((void (* )(void *  _class, void *  data))((struct __ecereNameSpace__ecere__com__Instance *)(char *)this)->_class->templateArgs[3].dataTypeClass->_vTbl[__ecereVMethodID_class_OnFree])(((struct __ecereNameSpace__ecere__com__Instance *)(char *)this)->_class->templateArgs[3].dataTypeClass, item), item = 0);
881 }
882
883 void __ecereMethod___ecereNameSpace__ecere__com__CustomAVLTree_Free(struct __ecereNameSpace__ecere__com__Instance * this)
884 {
885 struct __ecereNameSpace__ecere__com__CustomAVLTree * __ecerePointer___ecereNameSpace__ecere__com__CustomAVLTree = (struct __ecereNameSpace__ecere__com__CustomAVLTree *)(this ? (((char *)this) + structSize_Instance) : 0);
886 struct __ecereNameSpace__ecere__com__AVLNode * item;
887
888 while(item = __ecerePointer___ecereNameSpace__ecere__com__CustomAVLTree->root)
889 {
890 ((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);
891 (((void (* )(void *  _class, void *  data))((struct __ecereNameSpace__ecere__com__Instance *)(char *)this)->_class->templateArgs[3].dataTypeClass->_vTbl[__ecereVMethodID_class_OnFree])(((struct __ecereNameSpace__ecere__com__Instance *)(char *)this)->_class->templateArgs[3].dataTypeClass, item), item = 0);
892 }
893 }
894
895 struct __ecereNameSpace__ecere__com__IteratorPointer * __ecereMethod___ecereNameSpace__ecere__com__CustomAVLTree_Find(struct __ecereNameSpace__ecere__com__Instance * this, uint64 value)
896 {
897 struct __ecereNameSpace__ecere__com__CustomAVLTree * __ecerePointer___ecereNameSpace__ecere__com__CustomAVLTree = (struct __ecereNameSpace__ecere__com__CustomAVLTree *)(this ? (((char *)this) + structSize_Instance) : 0);
898
899 return (struct __ecereNameSpace__ecere__com__IteratorPointer *)value;
900 }
901
902 extern struct __ecereNameSpace__ecere__com__Class * __ecereNameSpace__ecere__com__eSystem_RegisterClass(int type, char *  name, char *  baseName, int size, int sizeClass, unsigned int (*  Constructor)(void * ), void (*  Destructor)(void * ), struct __ecereNameSpace__ecere__com__Instance * module, int declMode, int inheritanceAccess);
903
904 extern struct __ecereNameSpace__ecere__com__Method * __ecereNameSpace__ecere__com__eClass_AddMethod(struct __ecereNameSpace__ecere__com__Class * _class, char *  name, char *  type, void *  function, int declMode);
905
906 extern struct __ecereNameSpace__ecere__com__DataMember * __ecereNameSpace__ecere__com__eClass_AddDataMember(struct __ecereNameSpace__ecere__com__Class * _class, char *  name, char *  type, unsigned int size, unsigned int alignment, int declMode);
907
908 extern struct __ecereNameSpace__ecere__com__Property * __ecereNameSpace__ecere__com__eClass_AddProperty(struct __ecereNameSpace__ecere__com__Class * _class, char *  name, char *  dataType, void *  setStmt, void *  getStmt, int declMode);
909
910 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__ClassTemplateParameter;
911
912 struct __ecereNameSpace__ecere__com__ClassTemplateParameter;
913
914 extern struct __ecereNameSpace__ecere__com__ClassTemplateParameter * __ecereNameSpace__ecere__com__eClass_AddTemplateParameter(struct __ecereNameSpace__ecere__com__Class * _class, char *  name, int type, void *  info, struct __ecereNameSpace__ecere__com__ClassTemplateArgument * defaultArg);
915
916 extern void __ecereNameSpace__ecere__com__eClass_DoneAddingTemplateParameters(struct __ecereNameSpace__ecere__com__Class * base);
917
918 void __ecereRegisterModule_CustomAVLTree(struct __ecereNameSpace__ecere__com__Instance * module)
919 {
920 struct __ecereNameSpace__ecere__com__ClassTemplateArgument __simpleStruct0 = 
921 {
922 "uint64", 0, 0, 0, 0
923 };
924 struct __ecereNameSpace__ecere__com__Class * class;
925
926 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::AVLNode", "ecere::com::IteratorPointer", sizeof(struct __ecereNameSpace__ecere__com__AVLNode), 0, 0, 0, module, 4, 1);
927 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + structSize_Instance)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + structSize_Instance)))->application && class)
928 __ecereClass___ecereNameSpace__ecere__com__AVLNode = class;
929 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "Find", "thisclass Find(ecere::com::Class Tclass, T key)", __ecereMethod___ecereNameSpace__ecere__com__AVLNode_Find, 1);
930 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "__ecerePrivateData0", "byte[" _XSTR(AVLNode_PrivateData) "]", AVLNode_PrivateData, 1, 2);
931 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "key", "T", 8, 8, 1);
932 __ecerePropM___ecereNameSpace__ecere__com__AVLNode_prev = __ecereNameSpace__ecere__com__eClass_AddProperty(class, "prev", "thisclass", 0, __ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_prev, 1);
933 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + structSize_Instance)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + structSize_Instance)))->application)
934 __ecereProp___ecereNameSpace__ecere__com__AVLNode_prev = __ecerePropM___ecereNameSpace__ecere__com__AVLNode_prev, __ecerePropM___ecereNameSpace__ecere__com__AVLNode_prev = (void *)0;
935 __ecerePropM___ecereNameSpace__ecere__com__AVLNode_next = __ecereNameSpace__ecere__com__eClass_AddProperty(class, "next", "thisclass", 0, __ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_next, 1);
936 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + structSize_Instance)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + structSize_Instance)))->application)
937 __ecereProp___ecereNameSpace__ecere__com__AVLNode_next = __ecerePropM___ecereNameSpace__ecere__com__AVLNode_next, __ecerePropM___ecereNameSpace__ecere__com__AVLNode_next = (void *)0;
938 __ecerePropM___ecereNameSpace__ecere__com__AVLNode_minimum = __ecereNameSpace__ecere__com__eClass_AddProperty(class, "minimum", "thisclass", 0, __ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_minimum, 1);
939 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + structSize_Instance)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + structSize_Instance)))->application)
940 __ecereProp___ecereNameSpace__ecere__com__AVLNode_minimum = __ecerePropM___ecereNameSpace__ecere__com__AVLNode_minimum, __ecerePropM___ecereNameSpace__ecere__com__AVLNode_minimum = (void *)0;
941 __ecerePropM___ecereNameSpace__ecere__com__AVLNode_maximum = __ecereNameSpace__ecere__com__eClass_AddProperty(class, "maximum", "thisclass", 0, __ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_maximum, 1);
942 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + structSize_Instance)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + structSize_Instance)))->application)
943 __ecereProp___ecereNameSpace__ecere__com__AVLNode_maximum = __ecerePropM___ecereNameSpace__ecere__com__AVLNode_maximum, __ecerePropM___ecereNameSpace__ecere__com__AVLNode_maximum = (void *)0;
944 __ecerePropM___ecereNameSpace__ecere__com__AVLNode_count = __ecereNameSpace__ecere__com__eClass_AddProperty(class, "count", "int", 0, __ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_count, 1);
945 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + structSize_Instance)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + structSize_Instance)))->application)
946 __ecereProp___ecereNameSpace__ecere__com__AVLNode_count = __ecerePropM___ecereNameSpace__ecere__com__AVLNode_count, __ecerePropM___ecereNameSpace__ecere__com__AVLNode_count = (void *)0;
947 __ecerePropM___ecereNameSpace__ecere__com__AVLNode_depthProp = __ecereNameSpace__ecere__com__eClass_AddProperty(class, "depthProp", "int", 0, __ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_depthProp, 1);
948 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + structSize_Instance)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + structSize_Instance)))->application)
949 __ecereProp___ecereNameSpace__ecere__com__AVLNode_depthProp = __ecerePropM___ecereNameSpace__ecere__com__AVLNode_depthProp, __ecerePropM___ecereNameSpace__ecere__com__AVLNode_depthProp = (void *)0;
950 __ecerePropM___ecereNameSpace__ecere__com__AVLNode_balanceFactor = __ecereNameSpace__ecere__com__eClass_AddProperty(class, "balanceFactor", "int", 0, __ecereProp___ecereNameSpace__ecere__com__AVLNode_Get_balanceFactor, 2);
951 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + structSize_Instance)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + structSize_Instance)))->application)
952 __ecereProp___ecereNameSpace__ecere__com__AVLNode_balanceFactor = __ecerePropM___ecereNameSpace__ecere__com__AVLNode_balanceFactor, __ecerePropM___ecereNameSpace__ecere__com__AVLNode_balanceFactor = (void *)0;
953 __ecereNameSpace__ecere__com__eClass_AddTemplateParameter(class, "T", 0, 0, (((void *)0)));
954 __ecereNameSpace__ecere__com__eClass_DoneAddingTemplateParameters(class);
955 if(class)
956 class->fixed = (unsigned int)1;
957 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(0, "ecere::com::CustomAVLTree", "ecere::com::Container<BT>", sizeof(struct __ecereNameSpace__ecere__com__CustomAVLTree), 0, 0, 0, module, 4, 1);
958 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + structSize_Instance)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + structSize_Instance)))->application && class)
959 __ecereClass___ecereNameSpace__ecere__com__CustomAVLTree = class;
960 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "GetFirst", 0, __ecereMethod___ecereNameSpace__ecere__com__CustomAVLTree_GetFirst, 1);
961 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "GetLast", 0, __ecereMethod___ecereNameSpace__ecere__com__CustomAVLTree_GetLast, 1);
962 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "GetPrev", 0, __ecereMethod___ecereNameSpace__ecere__com__CustomAVLTree_GetPrev, 1);
963 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "GetNext", 0, __ecereMethod___ecereNameSpace__ecere__com__CustomAVLTree_GetNext, 1);
964 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "GetData", 0, __ecereMethod___ecereNameSpace__ecere__com__CustomAVLTree_GetData, 1);
965 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "SetData", 0, __ecereMethod___ecereNameSpace__ecere__com__CustomAVLTree_SetData, 1);
966 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "Add", 0, __ecereMethod___ecereNameSpace__ecere__com__CustomAVLTree_Add, 1);
967 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "Remove", 0, __ecereMethod___ecereNameSpace__ecere__com__CustomAVLTree_Remove, 1);
968 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "Find", 0, __ecereMethod___ecereNameSpace__ecere__com__CustomAVLTree_Find, 1);
969 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "Free", 0, __ecereMethod___ecereNameSpace__ecere__com__CustomAVLTree_Free, 1);
970 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "Delete", 0, __ecereMethod___ecereNameSpace__ecere__com__CustomAVLTree_Delete, 1);
971 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "root", "BT", arch_PointerSize, arch_PointerSize, 1);
972 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "count", "int", 4, 4, 1);
973 __ecereNameSpace__ecere__com__eClass_AddTemplateParameter(class, "BT", 0, "ecere::com::AVLNode", (((void *)0)));
974 __ecereNameSpace__ecere__com__eClass_AddTemplateParameter(class, "KT", 0, 0, &__simpleStruct0);
975 __ecereNameSpace__ecere__com__eClass_DoneAddingTemplateParameters(class);
976 if(class)
977 class->fixed = (unsigned int)1;
978 }
979
980 void __ecereUnregisterModule_CustomAVLTree(struct __ecereNameSpace__ecere__com__Instance * module)
981 {
982
983 __ecerePropM___ecereNameSpace__ecere__com__AVLNode_prev = (void *)0;
984 __ecerePropM___ecereNameSpace__ecere__com__AVLNode_next = (void *)0;
985 __ecerePropM___ecereNameSpace__ecere__com__AVLNode_minimum = (void *)0;
986 __ecerePropM___ecereNameSpace__ecere__com__AVLNode_maximum = (void *)0;
987 __ecerePropM___ecereNameSpace__ecere__com__AVLNode_count = (void *)0;
988 __ecerePropM___ecereNameSpace__ecere__com__AVLNode_depthProp = (void *)0;
989 __ecerePropM___ecereNameSpace__ecere__com__AVLNode_balanceFactor = (void *)0;
990 }
991