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