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