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