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