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