4b31bb269fef02dfbf68b8af375c95ca4d9b91b4
[sdk] / compiler / bootstrap / ecere / bootstrap / OldList.c
1 #if defined(__GNUC__)
2 typedef long long int64;
3 typedef unsigned long long uint64;
4 #ifndef _WIN32
5 #define __declspec(x)
6 #endif
7 #elif defined(__TINYC__)
8 #include <stdarg.h>
9 #define __builtin_va_list va_list
10 #define __builtin_va_start va_start
11 #define __builtin_va_end va_end
12 #ifdef _WIN32
13 #define strcasecmp stricmp
14 #define strncasecmp strnicmp
15 #define __declspec(x) __attribute__((x))
16 #else
17 #define __declspec(x)
18 #endif
19 typedef long long int64;
20 typedef unsigned long long uint64;
21 #else
22 typedef __int64 int64;
23 typedef unsigned __int64 uint64;
24 #endif
25 #ifdef __BIG_ENDIAN__
26 #define __ENDIAN_PAD(x) (8 - (x))
27 #else
28 #define __ENDIAN_PAD(x) 0
29 #endif
30 #include <stdint.h>
31 #include <sys/types.h>
32
33 #if defined(_W64) || (defined(__WORDSIZE) && __WORDSIZE == 8) || defined(__x86_64__)
34 #define _64BIT 1
35 #else
36 #define _64BIT 0
37 #endif
38
39 #define arch_PointerSize                  sizeof(void *)
40 #define structSize_Instance               (_64BIT ? 24 : 12)
41
42 extern void *  __ecereNameSpace__ecere__com__eSystem_New(unsigned int size);
43
44 extern void *  __ecereNameSpace__ecere__com__eSystem_New0(unsigned int size);
45
46 extern void *  __ecereNameSpace__ecere__com__eSystem_Renew(void *  memory, unsigned int size);
47
48 extern void *  __ecereNameSpace__ecere__com__eSystem_Renew0(void *  memory, unsigned int size);
49
50 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__BTNode;
51
52 struct __ecereNameSpace__ecere__sys__BTNode;
53
54 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__BinaryTree;
55
56 struct __ecereNameSpace__ecere__sys__BinaryTree
57 {
58 struct __ecereNameSpace__ecere__sys__BTNode * root;
59 int count;
60 int (*  CompareKey)(struct __ecereNameSpace__ecere__sys__BinaryTree * tree, uintptr_t a, uintptr_t b);
61 void (*  FreeKey)(void *  key);
62 } __attribute__ ((gcc_struct));
63
64 struct __ecereNameSpace__ecere__sys__OldList
65 {
66 void * first, * last;
67 int count;
68 unsigned int offset;
69 unsigned int circ;
70 } __attribute__ ((gcc_struct));
71
72 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__OldList;
73
74 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Class;
75
76 struct __ecereNameSpace__ecere__com__Class
77 {
78 struct __ecereNameSpace__ecere__com__Class * prev;
79 struct __ecereNameSpace__ecere__com__Class * next;
80 char *  name;
81 int offset;
82 int structSize;
83 int (* *  _vTbl)();
84 int vTblSize;
85 int (*  Constructor)(struct __ecereNameSpace__ecere__com__Instance *);
86 void (*  Destructor)(struct __ecereNameSpace__ecere__com__Instance *);
87 int offsetClass;
88 int sizeClass;
89 struct __ecereNameSpace__ecere__com__Class * base;
90 struct __ecereNameSpace__ecere__sys__BinaryTree methods;
91 struct __ecereNameSpace__ecere__sys__BinaryTree members;
92 struct __ecereNameSpace__ecere__sys__BinaryTree prop;
93 struct __ecereNameSpace__ecere__sys__OldList membersAndProperties;
94 struct __ecereNameSpace__ecere__sys__BinaryTree classProperties;
95 struct __ecereNameSpace__ecere__sys__OldList derivatives;
96 int memberID;
97 int startMemberID;
98 int type;
99 struct __ecereNameSpace__ecere__com__Instance * module;
100 struct __ecereNameSpace__ecere__com__NameSpace *  nameSpace;
101 char *  dataTypeString;
102 struct __ecereNameSpace__ecere__com__Instance * dataType;
103 int typeSize;
104 int defaultAlignment;
105 void (*  Initialize)();
106 int memberOffset;
107 struct __ecereNameSpace__ecere__sys__OldList selfWatchers;
108 char *  designerClass;
109 unsigned int noExpansion;
110 char *  defaultProperty;
111 unsigned int comRedefinition;
112 int count;
113 unsigned int isRemote;
114 unsigned int internalDecl;
115 void *  data;
116 unsigned int computeSize;
117 int structAlignment;
118 int destructionWatchOffset;
119 unsigned int fixed;
120 struct __ecereNameSpace__ecere__sys__OldList delayedCPValues;
121 int inheritanceAccess;
122 char *  fullName;
123 void *  symbol;
124 struct __ecereNameSpace__ecere__sys__OldList conversions;
125 struct __ecereNameSpace__ecere__sys__OldList templateParams;
126 struct __ecereNameSpace__ecere__com__ClassTemplateArgument *  templateArgs;
127 struct __ecereNameSpace__ecere__com__Class * templateClass;
128 struct __ecereNameSpace__ecere__sys__OldList templatized;
129 int numParams;
130 } __attribute__ ((gcc_struct));
131
132 extern long long __ecereNameSpace__ecere__com__eClass_GetProperty(struct __ecereNameSpace__ecere__com__Class * _class, char *  name);
133
134 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Instance;
135
136 struct __ecereNameSpace__ecere__com__Instance
137 {
138 int (* *  _vTbl)();
139 struct __ecereNameSpace__ecere__com__Class * _class;
140 int _refCount;
141 } __attribute__ ((gcc_struct));
142
143 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Property;
144
145 struct __ecereNameSpace__ecere__com__Property
146 {
147 struct __ecereNameSpace__ecere__com__Property * prev;
148 struct __ecereNameSpace__ecere__com__Property * next;
149 char *  name;
150 unsigned int isProperty;
151 int memberAccess;
152 int id;
153 struct __ecereNameSpace__ecere__com__Class * _class;
154 char *  dataTypeString;
155 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
156 struct __ecereNameSpace__ecere__com__Instance * dataType;
157 void (*  Set)(void * , int);
158 int (*  Get)(void * );
159 unsigned int (*  IsSet)(void * );
160 void *  data;
161 void *  symbol;
162 int vid;
163 unsigned int conversion;
164 unsigned int watcherOffset;
165 char *  category;
166 unsigned int compiled;
167 unsigned int selfWatchable;
168 unsigned int isWatchable;
169 } __attribute__ ((gcc_struct));
170
171 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__DataMember;
172
173 struct __ecereNameSpace__ecere__com__DataMember
174 {
175 struct __ecereNameSpace__ecere__com__DataMember * prev;
176 struct __ecereNameSpace__ecere__com__DataMember * next;
177 char *  name;
178 unsigned int isProperty;
179 int memberAccess;
180 int id;
181 struct __ecereNameSpace__ecere__com__Class * _class;
182 char *  dataTypeString;
183 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
184 struct __ecereNameSpace__ecere__com__Instance * dataType;
185 int type;
186 int offset;
187 int memberID;
188 struct __ecereNameSpace__ecere__sys__OldList members;
189 struct __ecereNameSpace__ecere__sys__BinaryTree membersAlpha;
190 int memberOffset;
191 int structAlignment;
192 } __attribute__ ((gcc_struct));
193
194 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Method;
195
196 struct __ecereNameSpace__ecere__com__Method
197 {
198 char *  name;
199 struct __ecereNameSpace__ecere__com__Method * parent;
200 struct __ecereNameSpace__ecere__com__Method * left;
201 struct __ecereNameSpace__ecere__com__Method * right;
202 int depth;
203 int (*  function)();
204 int vid;
205 int type;
206 struct __ecereNameSpace__ecere__com__Class * _class;
207 void *  symbol;
208 char *  dataTypeString;
209 struct __ecereNameSpace__ecere__com__Instance * dataType;
210 int memberAccess;
211 } __attribute__ ((gcc_struct));
212
213 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__SerialBuffer;
214
215 struct __ecereNameSpace__ecere__com__SerialBuffer
216 {
217 unsigned char *  _buffer;
218 unsigned int count;
219 unsigned int _size;
220 unsigned int pos;
221 } __attribute__ ((gcc_struct));
222
223 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__DataValue;
224
225 struct __ecereNameSpace__ecere__com__DataValue
226 {
227 union
228 {
229 char c;
230 unsigned char uc;
231 short s;
232 unsigned short us;
233 int i;
234 unsigned int ui;
235 void *  p;
236 float f;
237 double d;
238 long long i64;
239 uint64 ui64;
240 } __attribute__ ((gcc_struct));
241 } __attribute__ ((gcc_struct));
242
243 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__ClassTemplateArgument;
244
245 struct __ecereNameSpace__ecere__com__ClassTemplateArgument
246 {
247 union
248 {
249 struct
250 {
251 char *  dataTypeString;
252 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
253 } __attribute__ ((gcc_struct));
254 struct __ecereNameSpace__ecere__com__DataValue expression;
255 struct
256 {
257 char *  memberString;
258 union
259 {
260 struct __ecereNameSpace__ecere__com__DataMember * member;
261 struct __ecereNameSpace__ecere__com__Property * prop;
262 struct __ecereNameSpace__ecere__com__Method * method;
263 } __attribute__ ((gcc_struct));
264 } __attribute__ ((gcc_struct));
265 } __attribute__ ((gcc_struct));
266 } __attribute__ ((gcc_struct));
267
268 struct __ecereNameSpace__ecere__sys__Item
269 {
270 struct __ecereNameSpace__ecere__sys__Item * prev, * next;
271 } __attribute__ ((gcc_struct));
272
273 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__Item;
274
275 extern void *  memcpy(void * , const void * , size_t size);
276
277 void __ecereMethod___ecereNameSpace__ecere__sys__Item_Copy(struct __ecereNameSpace__ecere__sys__Item * this, struct __ecereNameSpace__ecere__sys__Item * src, int size)
278 {
279 memcpy((unsigned char *)this + sizeof(struct __ecereNameSpace__ecere__sys__Item), (unsigned char *)src + sizeof(struct __ecereNameSpace__ecere__sys__Item), size - sizeof(struct __ecereNameSpace__ecere__sys__Item *));
280 }
281
282 struct __ecereNameSpace__ecere__sys__NamedItem
283 {
284 struct __ecereNameSpace__ecere__sys__NamedItem * prev, * next;
285 char * name;
286 } __attribute__ ((gcc_struct));
287
288 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__NamedItem;
289
290 struct __ecereNameSpace__ecere__sys__OldLink
291 {
292 struct __ecereNameSpace__ecere__sys__OldLink * prev, * next;
293 void * data;
294 } __attribute__ ((gcc_struct));
295
296 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__OldLink;
297
298 void __ecereMethod___ecereNameSpace__ecere__sys__OldLink_Free(struct __ecereNameSpace__ecere__sys__OldLink * this)
299 {
300 (__ecereNameSpace__ecere__com__eSystem_Delete(this->data), this->data = 0);
301 }
302
303 struct __ecereNameSpace__ecere__sys__NamedLink
304 {
305 struct __ecereNameSpace__ecere__sys__NamedLink * prev, * next;
306 char * name;
307 void * data;
308 } __attribute__ ((gcc_struct));
309
310 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__NamedLink;
311
312 struct __ecereNameSpace__ecere__sys__NamedLink64
313 {
314 struct __ecereNameSpace__ecere__sys__NamedLink64 * prev, * next;
315 char * name;
316 long long data;
317 } __attribute__ ((gcc_struct));
318
319 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__NamedLink64;
320
321 void __ecereMethod___ecereNameSpace__ecere__sys__OldList_Clear(struct __ecereNameSpace__ecere__sys__OldList * this);
322
323 void __ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove(struct __ecereNameSpace__ecere__sys__OldList * this, void *  item);
324
325 void __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(struct __ecereNameSpace__ecere__sys__OldList * this, void *  item);
326
327 void __ecereMethod___ecereNameSpace__ecere__sys__OldList_Merge(struct __ecereNameSpace__ecere__sys__OldList * this, struct __ecereNameSpace__ecere__sys__OldList * list1, struct __ecereNameSpace__ecere__sys__OldList * list2, int (* compare)(void *, void *, void *), void * data)
328 {
329 void * item;
330
331 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Clear(this);
332 this->offset = list1->offset;
333 while((list1->first && list2->first))
334 {
335 if(compare(list1->first, list2->first, data) <= 0)
336 {
337 item = list1->first;
338 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove(list1, item);
339 }
340 else
341 {
342 item = list2->first;
343 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove(list2, item);
344 }
345 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(this, item);
346 }
347 while((item = list1->first))
348 {
349 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove(list1, item);
350 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(this, item);
351 }
352 while((item = list2->first))
353 {
354 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove(list2, item);
355 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(this, item);
356 }
357 }
358
359 void __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(struct __ecereNameSpace__ecere__sys__OldList * this, void * item)
360 {
361 if(item)
362 {
363 struct __ecereNameSpace__ecere__sys__Item * link = (struct __ecereNameSpace__ecere__sys__Item *)((unsigned char *)item + this->offset);
364
365 link->prev = this->last;
366 if(link->prev)
367 ((struct __ecereNameSpace__ecere__sys__Item *)((unsigned char *)link->prev + this->offset))->next = item;
368 if(!this->first)
369 this->first = item;
370 this->last = item;
371 link->next = this->circ ? this->first : (((void *)0));
372 if(this->circ)
373 ((struct __ecereNameSpace__ecere__sys__Item *)((unsigned char *)this->first + this->offset))->prev = item;
374 this->count++;
375 }
376 }
377
378 unsigned int __ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert(struct __ecereNameSpace__ecere__sys__OldList * this, void * prevItem, void * item)
379 {
380 if(item && prevItem != item)
381 {
382 struct __ecereNameSpace__ecere__sys__Item * prevLink = (struct __ecereNameSpace__ecere__sys__Item *)((unsigned char *)prevItem + this->offset);
383 struct __ecereNameSpace__ecere__sys__Item * link = (struct __ecereNameSpace__ecere__sys__Item *)((unsigned char *)item + this->offset);
384
385 link->prev = prevItem ? prevItem : (this->circ ? this->last : (((void *)0)));
386 if(prevItem)
387 {
388 link->next = prevLink->next;
389 prevLink->next = item;
390 }
391 else
392 {
393 link->next = this->first;
394 this->first = item;
395 if(this->circ)
396 {
397 if(link->prev)
398 ((struct __ecereNameSpace__ecere__sys__Item *)((unsigned char *)link->prev + this->offset))->next = item;
399 else
400 link->next = item;
401 }
402 }
403 if(prevItem == this->last)
404 this->last = item;
405 if(link->next)
406 ((struct __ecereNameSpace__ecere__sys__Item *)((unsigned char *)link->next + this->offset))->prev = item;
407 this->count++;
408 return 0x1;
409 }
410 return 0x0;
411 }
412
413 void __ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove(struct __ecereNameSpace__ecere__sys__OldList * this, void * item)
414 {
415 if(item)
416 {
417 struct __ecereNameSpace__ecere__sys__Item * link = (struct __ecereNameSpace__ecere__sys__Item *)((unsigned char *)item + this->offset);
418
419 if(link->prev)
420 ((struct __ecereNameSpace__ecere__sys__Item *)((unsigned char *)link->prev + this->offset))->next = link->next;
421 if(link->next)
422 ((struct __ecereNameSpace__ecere__sys__Item *)((unsigned char *)link->next + this->offset))->prev = link->prev;
423 if(this->circ && this->last == this->first)
424 this->last = this->first = (((void *)0));
425 else
426 {
427 if(this->last == item)
428 this->last = link->prev;
429 if(this->first == item)
430 this->first = link->next;
431 }
432 link->prev = (((void *)0));
433 link->next = (((void *)0));
434 this->count--;
435 }
436 }
437
438 void __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(struct __ecereNameSpace__ecere__sys__OldList * this, void * item)
439 {
440 if(item)
441 {
442 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove(this, item);
443 (__ecereNameSpace__ecere__com__eSystem_Delete(item), item = 0);
444 }
445 }
446
447 void __ecereMethod___ecereNameSpace__ecere__sys__OldList_Free(struct __ecereNameSpace__ecere__sys__OldList * this, void (* freeFn)(void *))
448 {
449 void * item, * next;
450
451 for(item = this->first; item; item = next)
452 {
453 struct __ecereNameSpace__ecere__sys__Item * link = (struct __ecereNameSpace__ecere__sys__Item *)((unsigned char *)item + this->offset);
454
455 next = link->next;
456 if(freeFn)
457 freeFn(item);
458 (__ecereNameSpace__ecere__com__eSystem_Delete(item), item = 0);
459 if(next == this->first)
460 break;
461 }
462 this->first = this->last = (((void *)0));
463 this->count = 0;
464 }
465
466 void __ecereMethod___ecereNameSpace__ecere__sys__OldList_RemoveAll(struct __ecereNameSpace__ecere__sys__OldList * this, void (* freeFn)(void *))
467 {
468 void * item, * next;
469
470 for(item = this->first; item; item = next)
471 {
472 struct __ecereNameSpace__ecere__sys__Item * link = (struct __ecereNameSpace__ecere__sys__Item *)((unsigned char *)item + this->offset);
473
474 next = link->next;
475 if(freeFn)
476 freeFn(item);
477 if(next == this->first)
478 break;
479 }
480 this->first = this->last = (((void *)0));
481 this->count = 0;
482 }
483
484 void __ecereMethod___ecereNameSpace__ecere__sys__OldList_Clear(struct __ecereNameSpace__ecere__sys__OldList * this)
485 {
486 this->offset = 0;
487 this->circ = 0x0;
488 this->count = 0;
489 this->first = this->last = (((void *)0));
490 }
491
492 void __ecereMethod___ecereNameSpace__ecere__sys__OldList_Move(struct __ecereNameSpace__ecere__sys__OldList * this, void * item, void * prevItem)
493 {
494 if(item)
495 {
496 struct __ecereNameSpace__ecere__sys__Item * link = (struct __ecereNameSpace__ecere__sys__Item *)((unsigned char *)item + this->offset);
497 struct __ecereNameSpace__ecere__sys__Item * prevLink = (struct __ecereNameSpace__ecere__sys__Item *)((unsigned char *)prevItem + this->offset);
498
499 if(prevItem != item && (this->first != item || prevItem))
500 {
501 if(link->prev)
502 ((struct __ecereNameSpace__ecere__sys__Item *)((unsigned char *)link->prev + this->offset))->next = link->next;
503 if(link->next)
504 ((struct __ecereNameSpace__ecere__sys__Item *)((unsigned char *)link->next + this->offset))->prev = link->prev;
505 if(item == this->first)
506 this->first = link->next;
507 if(item == this->last)
508 this->last = link->prev;
509 if(prevItem == this->last)
510 this->last = item;
511 link->prev = prevItem ? prevItem : (this->circ ? this->last : (((void *)0)));
512 if(prevItem)
513 {
514 link->next = prevLink->next;
515 prevLink->next = item;
516 }
517 else
518 {
519 link->next = this->first;
520 this->first = item;
521 if(this->circ)
522 {
523 if(link->prev)
524 ((struct __ecereNameSpace__ecere__sys__Item *)((unsigned char *)link->prev + this->offset))->next = item;
525 else
526 link->next = item;
527 }
528 }
529 if(link->next)
530 ((struct __ecereNameSpace__ecere__sys__Item *)((unsigned char *)link->next + this->offset))->prev = item;
531 }
532 }
533 }
534
535 void __ecereMethod___ecereNameSpace__ecere__sys__OldList_Swap(struct __ecereNameSpace__ecere__sys__OldList * this, void * item1, void * item2)
536 {
537 struct __ecereNameSpace__ecere__sys__Item * link1 = (struct __ecereNameSpace__ecere__sys__Item *)((unsigned char *)item1 + this->offset);
538 struct __ecereNameSpace__ecere__sys__Item * link2 = (struct __ecereNameSpace__ecere__sys__Item *)((unsigned char *)item2 + this->offset);
539 struct __ecereNameSpace__ecere__sys__Item * prev1 = link1->prev, * next1 = link1->next;
540 void * tmp1 = item1, * tmp2 = item2;
541
542 link1->prev = link2->prev;
543 link1->next = link2->next;
544 link2->prev = prev1;
545 link2->next = next1;
546 if(this->first == tmp1)
547 this->first = item2;
548 else if(this->first == tmp2)
549 this->first = item1;
550 if(this->last == tmp1)
551 this->last = item1;
552 else if(this->last == tmp2)
553 this->last = item2;
554 if(link1->next)
555 ((struct __ecereNameSpace__ecere__sys__Item *)((unsigned char *)link1->next + this->offset))->prev = item2;
556 if(link1->prev)
557 ((struct __ecereNameSpace__ecere__sys__Item *)((unsigned char *)link1->prev + this->offset))->next = item2;
558 if(link2->next)
559 ((struct __ecereNameSpace__ecere__sys__Item *)((unsigned char *)link2->next + this->offset))->prev = item1;
560 if(link2->prev)
561 ((struct __ecereNameSpace__ecere__sys__Item *)((unsigned char *)link2->prev + this->offset))->next = item1;
562 }
563
564 void __ecereMethod___ecereNameSpace__ecere__sys__OldList_Sort(struct __ecereNameSpace__ecere__sys__OldList * this, int (* compare)(void *, void *, void *), void * data)
565 {
566 if(this->first && ((struct __ecereNameSpace__ecere__sys__Item *)((unsigned char *)this->first + this->offset))->next)
567 {
568 struct __ecereNameSpace__ecere__sys__OldList list1, list2;
569 void * middle, * end;
570
571 for(middle = this->first, list1.count = 0, list2.count = 0, end = ((struct __ecereNameSpace__ecere__sys__Item *)((unsigned char *)this->first + this->offset))->next; middle && end; middle = ((struct __ecereNameSpace__ecere__sys__Item *)((unsigned char *)middle + this->offset))->next, list1.count++, end = ((struct __ecereNameSpace__ecere__sys__Item *)((unsigned char *)end + this->offset))->next, list2.count++)
572 {
573 end = ((struct __ecereNameSpace__ecere__sys__Item *)((unsigned char *)end + this->offset))->next;
574 if(!end)
575 break;
576 }
577 list1.offset = this->offset;
578 list2.offset = this->offset;
579 list1.circ = this->circ;
580 list2.circ = this->circ;
581 list1.first = this->first;
582 list1.last = middle;
583 list2.first = ((struct __ecereNameSpace__ecere__sys__Item *)((unsigned char *)middle + this->offset))->next;
584 list2.last = this->last;
585 ((struct __ecereNameSpace__ecere__sys__Item *)((unsigned char *)list1.last + this->offset))->next = (((void *)0));
586 ((struct __ecereNameSpace__ecere__sys__Item *)((unsigned char *)list2.first + this->offset))->prev = (((void *)0));
587 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Sort(&list1, compare, data);
588 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Sort(&list2, compare, data);
589 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Merge(this, &list1, &list2, compare, data);
590 }
591 }
592
593 extern int strcmp(const char * , const char * );
594
595 void * __ecereMethod___ecereNameSpace__ecere__sys__OldList_FindName(struct __ecereNameSpace__ecere__sys__OldList * this, char * name, unsigned int warn)
596 {
597 void * result = (((void *)0));
598
599 if(name)
600 {
601 void * item;
602 struct __ecereNameSpace__ecere__sys__NamedItem * link;
603 int compare = 1;
604
605 for(item = this->first; item; item = link->next)
606 {
607 link = (struct __ecereNameSpace__ecere__sys__NamedItem *)(((unsigned char *)item) + this->offset);
608 if(link->name && (compare = strcmp(link->name, name)) >= 0)
609 break;
610 }
611 if(!compare)
612 result = item;
613 else if(warn)
614 ;
615 }
616 return result;
617 }
618
619 unsigned int __ecereMethod___ecereNameSpace__ecere__sys__OldList_PlaceName(struct __ecereNameSpace__ecere__sys__OldList * this, char * name, void ** place)
620 {
621 unsigned int result = 0x1;
622 void * item;
623 struct __ecereNameSpace__ecere__sys__NamedItem * link;
624 int compare = 1;
625
626 for(item = this->first; item; item = link->next)
627 {
628 link = (struct __ecereNameSpace__ecere__sys__NamedItem *)((unsigned char *)item + this->offset);
629 if(link->name && (compare = strcmp(link->name, name)) >= 0)
630 break;
631 }
632 if(!item)
633 *place = this->last;
634 else
635 *place = link->prev;
636 if(compare)
637 result = 0x1;
638 else
639 ;
640 return result;
641 }
642
643 unsigned int __ecereMethod___ecereNameSpace__ecere__sys__OldList_AddName(struct __ecereNameSpace__ecere__sys__OldList * this, void * item)
644 {
645 unsigned int result = 0x0;
646 void * place;
647 struct __ecereNameSpace__ecere__sys__NamedItem * link = ((struct __ecereNameSpace__ecere__sys__NamedItem *)((unsigned char *)item + this->offset));
648
649 if(__ecereMethod___ecereNameSpace__ecere__sys__OldList_PlaceName(this, link->name, &place))
650 {
651 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert(this, place, item);
652 result = 0x1;
653 }
654 return result;
655 }
656
657 struct __ecereNameSpace__ecere__sys__OldLink * __ecereMethod___ecereNameSpace__ecere__sys__OldList_FindLink(struct __ecereNameSpace__ecere__sys__OldList * this, void * data)
658 {
659 void * item;
660 struct __ecereNameSpace__ecere__sys__OldLink * link;
661
662 for(item = this->first; item; item = link->next)
663 {
664 link = (struct __ecereNameSpace__ecere__sys__OldLink *)((unsigned char *)item + this->offset);
665 if(link->data == data)
666 break;
667 }
668 return item;
669 }
670
671 void * __ecereMethod___ecereNameSpace__ecere__sys__OldList_FindNamedLink(struct __ecereNameSpace__ecere__sys__OldList * this, char * name, unsigned int warn)
672 {
673 if(name)
674 {
675 void * item = __ecereMethod___ecereNameSpace__ecere__sys__OldList_FindName(this, name, warn);
676
677 return item ? ((struct __ecereNameSpace__ecere__sys__NamedLink *)((unsigned char *)item + this->offset))->data : (((void *)0));
678 }
679 return (((void *)0));
680 }
681
682 void __ecereMethod___ecereNameSpace__ecere__sys__OldList_Copy(struct __ecereNameSpace__ecere__sys__OldList * this, struct __ecereNameSpace__ecere__sys__OldList * src, int size, void (* copy)(void * dest, void * src))
683 {
684 struct __ecereNameSpace__ecere__sys__Item * item;
685
686 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Clear(this);
687 for(item = src->first; item; item = item->next)
688 {
689 struct __ecereNameSpace__ecere__sys__Item * newItem = (struct __ecereNameSpace__ecere__sys__Item *)__ecereNameSpace__ecere__com__eSystem_New0(sizeof(unsigned char) * (size));
690
691 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(this, newItem);
692 __ecereMethod___ecereNameSpace__ecere__sys__Item_Copy(newItem, item, size);
693 if(copy)
694 copy(newItem, item);
695 }
696 }
697
698 extern struct __ecereNameSpace__ecere__com__Class * __ecereNameSpace__ecere__com__eSystem_RegisterClass(int type, char *  name, char *  baseName, int size, int sizeClass, unsigned int (* )(void * ), void (* )(void * ), struct __ecereNameSpace__ecere__com__Instance * module, int declMode, int inheritanceAccess);
699
700 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__NameSpace;
701
702 struct __ecereNameSpace__ecere__com__NameSpace
703 {
704 char *  name;
705 struct __ecereNameSpace__ecere__com__NameSpace *  btParent;
706 struct __ecereNameSpace__ecere__com__NameSpace *  left;
707 struct __ecereNameSpace__ecere__com__NameSpace *  right;
708 int depth;
709 struct __ecereNameSpace__ecere__com__NameSpace *  parent;
710 struct __ecereNameSpace__ecere__sys__BinaryTree nameSpaces;
711 struct __ecereNameSpace__ecere__sys__BinaryTree classes;
712 struct __ecereNameSpace__ecere__sys__BinaryTree defines;
713 struct __ecereNameSpace__ecere__sys__BinaryTree functions;
714 } __attribute__ ((gcc_struct));
715
716 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Module;
717
718 struct __ecereNameSpace__ecere__com__Module
719 {
720 struct __ecereNameSpace__ecere__com__Instance * application;
721 struct __ecereNameSpace__ecere__sys__OldList classes;
722 struct __ecereNameSpace__ecere__sys__OldList defines;
723 struct __ecereNameSpace__ecere__sys__OldList functions;
724 struct __ecereNameSpace__ecere__sys__OldList modules;
725 struct __ecereNameSpace__ecere__com__Instance * prev;
726 struct __ecereNameSpace__ecere__com__Instance * next;
727 char *  name;
728 void *  library;
729 void *  Unload;
730 int importType;
731 int origImportType;
732 struct __ecereNameSpace__ecere__com__NameSpace privateNameSpace;
733 struct __ecereNameSpace__ecere__com__NameSpace publicNameSpace;
734 } __attribute__ ((gcc_struct));
735
736 extern struct __ecereNameSpace__ecere__com__Instance * __thisModule;
737
738 extern struct __ecereNameSpace__ecere__com__Method * __ecereNameSpace__ecere__com__eClass_AddMethod(struct __ecereNameSpace__ecere__com__Class * _class, char *  name, char *  type, void *  function, int declMode);
739
740 extern struct __ecereNameSpace__ecere__com__DataMember * __ecereNameSpace__ecere__com__eClass_AddDataMember(struct __ecereNameSpace__ecere__com__Class * _class, char *  name, char *  type, unsigned int size, unsigned int alignment, int declMode);
741
742 void __ecereRegisterModule_OldList(struct __ecereNameSpace__ecere__com__Instance * module)
743 {
744 struct __ecereNameSpace__ecere__com__Class * class;
745
746 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::sys::Item", 0, sizeof(struct __ecereNameSpace__ecere__sys__Item), 0, 0, 0, module, 4, 1);
747 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + structSize_Instance)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + structSize_Instance)))->application && class)
748 __ecereClass___ecereNameSpace__ecere__sys__Item = class;
749 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "Copy", "void Copy(ecere::sys::Item src, int size)", __ecereMethod___ecereNameSpace__ecere__sys__Item_Copy, 1);
750 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "prev", "ecere::sys::Item", arch_PointerSize, arch_PointerSize, 1);
751 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "next", "ecere::sys::Item", arch_PointerSize, arch_PointerSize, 1);
752 if(class)
753 class->fixed = (unsigned int)1;
754 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::sys::NamedItem", 0, sizeof(struct __ecereNameSpace__ecere__sys__NamedItem), 0, 0, 0, module, 4, 1);
755 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + structSize_Instance)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + structSize_Instance)))->application && class)
756 __ecereClass___ecereNameSpace__ecere__sys__NamedItem = class;
757 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "prev", "ecere::sys::NamedItem", arch_PointerSize, arch_PointerSize, 1);
758 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "next", "ecere::sys::NamedItem", arch_PointerSize, arch_PointerSize, 1);
759 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "name", "char *", arch_PointerSize, arch_PointerSize, 1);
760 if(class)
761 class->fixed = (unsigned int)1;
762 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::sys::OldLink", 0, sizeof(struct __ecereNameSpace__ecere__sys__OldLink), 0, 0, 0, module, 4, 1);
763 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + structSize_Instance)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + structSize_Instance)))->application && class)
764 __ecereClass___ecereNameSpace__ecere__sys__OldLink = class;
765 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "Free", "void Free()", __ecereMethod___ecereNameSpace__ecere__sys__OldLink_Free, 1);
766 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "prev", "ecere::sys::OldLink", arch_PointerSize, arch_PointerSize, 1);
767 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "next", "ecere::sys::OldLink", arch_PointerSize, arch_PointerSize, 1);
768 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "data", "void *", arch_PointerSize, arch_PointerSize, 1);
769 if(class)
770 class->fixed = (unsigned int)1;
771 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::sys::NamedLink", 0, sizeof(struct __ecereNameSpace__ecere__sys__NamedLink), 0, 0, 0, module, 4, 1);
772 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + structSize_Instance)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + structSize_Instance)))->application && class)
773 __ecereClass___ecereNameSpace__ecere__sys__NamedLink = class;
774 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "prev", "ecere::sys::NamedLink", arch_PointerSize, arch_PointerSize, 1);
775 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "next", "ecere::sys::NamedLink", arch_PointerSize, arch_PointerSize, 1);
776 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "name", "char *", arch_PointerSize, arch_PointerSize, 1);
777 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "data", "void *", arch_PointerSize, arch_PointerSize, 1);
778 if(class)
779 class->fixed = (unsigned int)1;
780 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::sys::NamedLink64", 0, sizeof(struct __ecereNameSpace__ecere__sys__NamedLink64), 0, 0, 0, module, 4, 1);
781 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + structSize_Instance)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + structSize_Instance)))->application && class)
782 __ecereClass___ecereNameSpace__ecere__sys__NamedLink64 = class;
783 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "prev", "ecere::sys::NamedLink64", arch_PointerSize, arch_PointerSize, 1);
784 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "next", "ecere::sys::NamedLink64", arch_PointerSize, arch_PointerSize, 1);
785 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "name", "char *", arch_PointerSize, arch_PointerSize, 1);
786 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "data", "int64", 8, 8, 1);
787 if(class)
788 class->fixed = (unsigned int)1;
789 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(1, "ecere::sys::OldList", 0, sizeof(struct __ecereNameSpace__ecere__sys__OldList), 0, 0, 0, module, 4, 1);
790 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + structSize_Instance)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + structSize_Instance)))->application && class)
791 __ecereClass___ecereNameSpace__ecere__sys__OldList = class;
792 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "Add", "void Add(void * item)", __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add, 1);
793 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "AddName", "bool AddName(void * item)", __ecereMethod___ecereNameSpace__ecere__sys__OldList_AddName, 1);
794 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "Clear", "void Clear(void)", __ecereMethod___ecereNameSpace__ecere__sys__OldList_Clear, 1);
795 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "Copy", "void Copy(ecere::sys::OldList src, int size, void (* copy)(void * dest, void * src))", __ecereMethod___ecereNameSpace__ecere__sys__OldList_Copy, 1);
796 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "Delete", "void Delete(void * item)", __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete, 1);
797 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "FindLink", "ecere::sys::OldLink FindLink(void * data)", __ecereMethod___ecereNameSpace__ecere__sys__OldList_FindLink, 1);
798 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "FindName", "void * FindName(char * name, bool warn)", __ecereMethod___ecereNameSpace__ecere__sys__OldList_FindName, 1);
799 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "FindNamedLink", "void * FindNamedLink(char * name, bool warn)", __ecereMethod___ecereNameSpace__ecere__sys__OldList_FindNamedLink, 1);
800 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "Free", "void Free(void (* freeFn)(void *))", __ecereMethod___ecereNameSpace__ecere__sys__OldList_Free, 1);
801 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "Insert", "bool Insert(void * prevItem, void * item)", __ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert, 1);
802 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "Move", "void Move(void * item, void * prevItem)", __ecereMethod___ecereNameSpace__ecere__sys__OldList_Move, 1);
803 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "PlaceName", "bool PlaceName(char * name, void ** place)", __ecereMethod___ecereNameSpace__ecere__sys__OldList_PlaceName, 1);
804 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "Remove", "void Remove(void * item)", __ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove, 1);
805 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "RemoveAll", "void RemoveAll(void (* freeFn)(void *))", __ecereMethod___ecereNameSpace__ecere__sys__OldList_RemoveAll, 1);
806 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "Sort", "void Sort(int (* compare)(void *, void *, void *), void * data)", __ecereMethod___ecereNameSpace__ecere__sys__OldList_Sort, 1);
807 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "Swap", "void Swap(void * item1, void * item2)", __ecereMethod___ecereNameSpace__ecere__sys__OldList_Swap, 1);
808 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "first", "void *", arch_PointerSize, arch_PointerSize, 1);
809 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "last", "void *", arch_PointerSize, arch_PointerSize, 1);
810 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "count", "int", 4, 4, 1);
811 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "offset", "uint", 4, 4, 1);
812 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "circ", "bool", 4, 4, 1);
813 }
814
815 void __ecereUnregisterModule_OldList(struct __ecereNameSpace__ecere__com__Instance * module)
816 {
817
818 }
819