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