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