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