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