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