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