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