compiler/libec: (#205) Fixed integer promotions to follow the C standard (6.3.1.1)
[sdk] / compiler / bootstrap / ecere / bootstrap / instance.c
1 /* Code generated from eC source file: instance.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 void exit(int status);
53
54 void * calloc(size_t nmemb, size_t size);
55
56 void free(void * ptr);
57
58 void * malloc(size_t size);
59
60 void * realloc(void * ptr, size_t size);
61
62 long int strtol(const char * nptr, char ** endptr, int base);
63
64 long long int strtoll(const char * nptr, char ** endptr, int base);
65
66 unsigned long long int strtoull(const char * nptr, char ** endptr, int base);
67
68 typedef __builtin_va_list va_list;
69
70 typedef void FILE;
71
72 FILE * bsl_stdin(void);
73
74 FILE * bsl_stdout(void);
75
76 FILE * bsl_stderr(void);
77
78 char * fgets(char * s, int size, FILE * stream);
79
80 FILE * fopen(const char * path, const char * mode);
81
82 int fclose(FILE * fp);
83
84 int fflush(FILE * stream);
85
86 int fgetc(FILE * stream);
87
88 int fprintf(FILE * stream, const char * format, ...);
89
90 int fputc(int c, FILE * stream);
91
92 size_t fread(void * ptr, size_t size, size_t nmemb, FILE * stream);
93
94 size_t fwrite(const void * ptr, size_t size, size_t nmemb, FILE * stream);
95
96 int vsnprintf(char *, size_t, const char *, va_list args);
97
98 int snprintf(char * str, size_t, const char * format, ...);
99
100 int fseek(FILE * stream, long offset, int whence);
101
102 long ftell(FILE * stream);
103
104 int feof(FILE * stream);
105
106 int ferror(FILE * stream);
107
108 int fileno(FILE * stream);
109
110
111 void * __ecereNameSpace__ecere__com__eSystem_Renew(void * memory, unsigned int size);
112
113 void * __ecereNameSpace__ecere__com__eSystem_Renew0(void * memory, unsigned int size);
114
115 void * __ecereNameSpace__ecere__com__eSystem_New(unsigned int size);
116
117 void * __ecereNameSpace__ecere__com__eSystem_New0(unsigned int size);
118
119 void __ecereNameSpace__ecere__com__eSystem_Delete(void * memory);
120
121 extern int __ecereVMethodID_class_OnGetDataFromString;
122
123 unsigned int Instance_LocateModule(const char * name, const char * fileName);
124
125 void Instance_COM_Initialize(int argc, char ** argv, char ** parsedCommand, int * argcPtr, const char *** argvPtr);
126
127 void * Instance_Module_Load(const char * libLocation, const char * name, void ** Load, void ** Unload);
128
129 void Instance_Module_Free(void * library);
130
131 void __ecereNameSpace__ecere__com__MemoryGuard_PushLoc(const char * loc)
132 {
133 }
134
135 void __ecereNameSpace__ecere__com__MemoryGuard_PopLoc()
136 {
137 }
138
139 struct __ecereNameSpace__ecere__com__DataValue
140 {
141 union
142 {
143 char c;
144 unsigned char uc;
145 short s;
146 unsigned short us;
147 int i;
148 unsigned int ui;
149 void * p;
150 float f;
151 double d;
152 long long i64;
153 uint64 ui64;
154 } ecere_gcc_struct __anon1;
155 } ecere_gcc_struct;
156
157 static unsigned int __ecereNameSpace__ecere__com__TOTAL_MEM = 0;
158
159 static unsigned int __ecereNameSpace__ecere__com__OUTSIDE_MEM = 0;
160
161 static unsigned int __ecereNameSpace__ecere__com__log1_5i(unsigned int number)
162 {
163 unsigned int pos;
164 uint64 current = sizeof(void *);
165
166 for(pos = 0; pos < 31; pos++)
167 {
168 if(current >= number)
169 break;
170 current = current * 3 / 2;
171 if(current == 1)
172 current = 2;
173 }
174 return pos;
175 }
176
177 static unsigned int __ecereNameSpace__ecere__com__pow1_5(unsigned int number)
178 {
179 unsigned int pos;
180 uint64 current = sizeof(void *);
181
182 for(pos = 0; pos < number; pos++)
183 {
184 current = current * 3 / 2;
185 if(current == 1)
186 current = 2;
187 }
188 return (unsigned int)current;
189 }
190
191 static unsigned int __ecereNameSpace__ecere__com__pow1_5i(unsigned int number)
192 {
193 unsigned int pos;
194 uint64 current = sizeof(void *);
195
196 for(pos = 0; pos < 31; pos++)
197 {
198 if(current >= number)
199 return (unsigned int)current;
200 current = current * 3 / 2;
201 if(current == 1)
202 current = 2;
203 }
204 return (unsigned int)current;
205 }
206
207 unsigned int __ecereNameSpace__ecere__com__log2i(unsigned int number)
208 {
209 unsigned int power;
210
211 for(power = 0; power < 32; power++)
212 if((1L << power) >= number)
213 break;
214 return power;
215 }
216
217 static unsigned int __ecereNameSpace__ecere__com__memoryInitialized = 0;
218
219 void __ecereNameSpace__ecere__com__CheckMemory()
220 {
221 }
222
223 extern struct __ecereNameSpace__ecere__com__Property * __ecereProp___ecereNameSpace__ecere__sys__BinaryTree_first;
224
225 extern struct __ecereNameSpace__ecere__com__Property * __ecereProp___ecereNameSpace__ecere__sys__BTNode_next;
226
227 unsigned int __ecereNameSpace__ecere__com__DefaultFunction()
228 {
229 return 1;
230 }
231
232 char * strlwr(char * string)
233 {
234 int c;
235
236 for(c = 0; string[c]; c++)
237 if(string[c] >= 'A' && string[c] <= 'Z')
238 string[c] += 'a' - 'A';
239 return string;
240 }
241
242 char * strupr(char * string)
243 {
244 int c;
245
246 for(c = 0; string[c]; c++)
247 if(string[c] >= 'a' && string[c] <= 'z')
248 string[c] -= 'a' - 'A';
249 return string;
250 }
251
252 static const char * __ecereNameSpace__ecere__com__platformNames[4] =
253 {
254 "", "win32", "linux", "apple"
255 };
256
257 static const int __ecereNameSpace__ecere__com__firstPlatform = 1;
258
259 static const int __ecereNameSpace__ecere__com__lastPlatform = 3;
260
261 extern int runtimePlatform;
262
263 unsigned int __ecereNameSpace__ecere__com__poolingDisabled;
264
265
266
267 unsigned int __ecereNameSpace__ecere__sys__UTF8Validate(const char * source)
268 {
269 if(source)
270 {
271 int c;
272
273 for(c = 0; source[c]; )
274 {
275 unsigned char ch = source[c];
276 unsigned int codePoint = 0;
277 int numBytes = 1;
278 int i;
279 unsigned char mask = (unsigned char)0x7F;
280
281 if(ch & 0x80)
282 {
283 if(ch & 0x40)
284 {
285 mask >>= 2;
286 numBytes++;
287 if(ch & 0x20)
288 {
289 numBytes++;
290 mask >>= 1;
291 if(ch & 0x10)
292 {
293 if(ch & 0x08)
294 return 0;
295 numBytes++;
296 mask >>= 1;
297 }
298 }
299 }
300 else
301 return 0;
302 }
303 for(i = 0; i < numBytes && (ch = source[c]); i++, c++)
304 {
305 codePoint <<= 6;
306 codePoint |= ch & mask;
307 mask = 0x3F;
308 if(i > 1)
309 {
310 if(!(ch & 0x80) || (ch & 0x40))
311 return 0;
312 }
313 }
314 if(i < numBytes)
315 return 0;
316 if(codePoint > 0x10FFFF || (codePoint >= 0xD800 && codePoint <= 0xDFFF) || (codePoint < 0x80 && numBytes > 1) || (codePoint < 0x800 && numBytes > 2) || (codePoint < 0x10000 && numBytes > 3))
317 return 0;
318 }
319 }
320 return 1;
321 }
322
323 int __ecereNameSpace__ecere__sys__ISO8859_1toUTF8(const char * source, char * dest, int max)
324 {
325 int c;
326 int d = 0;
327
328 for(c = 0; source[c]; c++)
329 {
330 unsigned int ch = ((unsigned char *)source)[c];
331
332 switch(ch)
333 {
334 case 150:
335 ch = 0x2012;
336 break;
337 }
338 if(ch < 0x80)
339 {
340 if(d + 1 >= max)
341 break;
342 dest[d++] = (char)ch;
343 }
344 else if(ch < 0x800)
345 {
346 if(d + 2 >= max)
347 break;
348 dest[d++] = 0xC0 | (unsigned char)((ch & 0x7C0) >> 6);
349 dest[d++] = 0x80 | (unsigned char)(ch & 0x03F);
350 }
351 else if(ch < 0x10000)
352 {
353 if(d + 3 >= max)
354 break;
355 dest[d++] = 0xE0 | (unsigned char)((ch & 0xF000) >> 12);
356 dest[d++] = 0x80 | (unsigned char)((ch & 0xFC0) >> 6);
357 dest[d++] = 0x80 | (unsigned char)(ch & 0x03F);
358 }
359 else
360 {
361 if(d + 4 >= max)
362 break;
363 dest[d++] = 0xF0 | (unsigned char)((ch & 0x1C0000) >> 18);
364 dest[d++] = 0x80 | (unsigned char)((ch & 0x3F000) >> 12);
365 dest[d++] = 0x80 | (unsigned char)((ch & 0xFC0) >> 6);
366 dest[d++] = 0x80 | (unsigned char)(ch & 0x03F);
367 }
368 }
369 dest[d] = 0;
370 return d;
371 }
372
373 int __ecereNameSpace__ecere__sys__UTF16toUTF8Buffer(const unsigned short * source, char * dest, int max)
374 {
375 int c;
376 int d = 0;
377 unsigned short u16;
378
379 for(c = 0; (u16 = source[c]); c++)
380 {
381 unsigned int ch;
382
383 if(u16 < 0xD800 || u16 > 0xDBFF)
384 ch = u16;
385 else
386 ch = (u16 << 10) + source[c++] + (0x10000 - (0xD800 << 10) - 0xDC00);
387 if(ch < 0x80)
388 {
389 if(d + 1 >= max)
390 break;
391 dest[d++] = (char)ch;
392 }
393 else if(ch < 0x800)
394 {
395 if(d + 2 >= max)
396 break;
397 dest[d++] = 0xC0 | (unsigned char)((ch & 0x7C0) >> 6);
398 dest[d++] = 0x80 | (unsigned char)(ch & 0x03F);
399 }
400 else if(ch < 0x10000)
401 {
402 if(d + 3 >= max)
403 break;
404 dest[d++] = 0xE0 | (unsigned char)((ch & 0xF000) >> 12);
405 dest[d++] = 0x80 | (unsigned char)((ch & 0xFC0) >> 6);
406 dest[d++] = 0x80 | (unsigned char)(ch & 0x03F);
407 }
408 else
409 {
410 if(d + 4 >= max)
411 break;
412 dest[d++] = 0xF0 | (unsigned char)((ch & 0x1C0000) >> 18);
413 dest[d++] = 0x80 | (unsigned char)((ch & 0x3F000) >> 12);
414 dest[d++] = 0x80 | (unsigned char)((ch & 0xFC0) >> 6);
415 dest[d++] = 0x80 | (unsigned char)(ch & 0x03F);
416 }
417 }
418 dest[d] = 0;
419 return d;
420 }
421
422 unsigned int __ecereNameSpace__ecere__sys__UTF8GetChar(const char * string, int * numBytes)
423 {
424 unsigned int ch;
425 unsigned char b = ((unsigned char *)string)[0];
426 int i;
427 unsigned char mask = (unsigned char)0x7F;
428 int nb = b ? 1 : 0;
429
430 ch = 0;
431 if(b & 0x80)
432 {
433 if(b & 0x40)
434 {
435 mask >>= 2;
436 nb++;
437 if(b & 0x20)
438 {
439 nb++;
440 mask >>= 1;
441 if(b & 0x10)
442 {
443 if(b & 0x08)
444 {
445 nb = 0;
446 }
447 nb++;
448 mask >>= 1;
449 }
450 }
451 }
452 else
453 nb = 0;
454 }
455 for(i = 0; i < nb; i++)
456 {
457 ch <<= 6;
458 ch |= (b = ((unsigned char *)string)[i]) & mask;
459 mask = 0x3F;
460 if(i > 1 && (!(b & 0x80) || (b & 0x40)))
461 {
462 nb = 0;
463 ch = 0;
464 }
465 }
466 if(i < nb || ch > 0x10FFFF || (ch >= 0xD800 && ch <= 0xDFFF) || (ch < 0x80 && nb > 1) || (ch < 0x800 && nb > 2) || (ch < 0x10000 && nb > 3))
467 {
468 ch = 0;
469 nb = 0;
470 }
471 if(numBytes)
472 *numBytes = nb;
473 return ch;
474 }
475
476 int __ecereNameSpace__ecere__sys__UTF8toUTF16Buffer(const char * source, unsigned short * dest, int max)
477 {
478 if(source)
479 {
480 int c;
481 int d = 0;
482
483 for(c = 0; source[c]; )
484 {
485 unsigned char ch = source[c];
486 unsigned int codePoint = 0;
487 int numBytes = 1;
488 int i;
489 unsigned char mask = (unsigned char)0x7F;
490
491 if(ch & 0x80 && ch & 0x40)
492 {
493 mask >>= 2;
494 numBytes++;
495 if(ch & 0x20)
496 {
497 numBytes++;
498 mask >>= 1;
499 if(ch & 0x10)
500 {
501 numBytes++;
502 mask >>= 1;
503 }
504 }
505 }
506 for(i = 0; i < numBytes; i++)
507 {
508 codePoint <<= 6;
509 codePoint |= source[c++] & mask;
510 mask = 0x3F;
511 }
512 if(codePoint > 0xFFFF)
513 {
514 unsigned short lead = (unsigned short)((0xD800 - (0x10000 >> 10)) + (codePoint >> 10));
515 unsigned short trail = (unsigned short)(0xDC00 | (codePoint & 0x3FF));
516
517 if(d >= max - 1)
518 break;
519 dest[d++] = lead;
520 dest[d++] = trail;
521 }
522 else
523 {
524 if(d >= max)
525 break;
526 dest[d++] = (unsigned short)codePoint;
527 }
528 }
529 dest[d] = 0;
530 return d;
531 }
532 return 0;
533 }
534
535 int __ecereNameSpace__ecere__sys__UTF32toUTF8Len(const unsigned int * source, int count, char * dest, int max)
536 {
537 int c;
538 int d = 0;
539 unsigned int ch;
540
541 for(c = 0; c < count && (ch = source[c]); c++)
542 {
543 if(ch < 0x80)
544 {
545 if(d + 1 >= max)
546 break;
547 dest[d++] = (char)ch;
548 }
549 else if(ch < 0x800)
550 {
551 if(d + 2 >= max)
552 break;
553 dest[d++] = 0xC0 | (unsigned char)((ch & 0x7C0) >> 6);
554 dest[d++] = 0x80 | (unsigned char)(ch & 0x03F);
555 }
556 else if(ch < 0x10000)
557 {
558 if(d + 3 >= max)
559 break;
560 dest[d++] = 0xE0 | (unsigned char)((ch & 0xF000) >> 12);
561 dest[d++] = 0x80 | (unsigned char)((ch & 0xFC0) >> 6);
562 dest[d++] = 0x80 | (unsigned char)(ch & 0x03F);
563 }
564 else
565 {
566 if(d + 4 >= max)
567 break;
568 dest[d++] = 0xF0 | (unsigned char)((ch & 0x1C0000) >> 18);
569 dest[d++] = 0x80 | (unsigned char)((ch & 0x3F000) >> 12);
570 dest[d++] = 0x80 | (unsigned char)((ch & 0xFC0) >> 6);
571 dest[d++] = 0x80 | (unsigned char)(ch & 0x03F);
572 }
573 }
574 dest[d] = 0;
575 return d;
576 }
577
578 struct __ecereNameSpace__ecere__sys__OldList
579 {
580 void *  first;
581 void *  last;
582 int count;
583 unsigned int offset;
584 unsigned int circ;
585 } ecere_gcc_struct;
586
587 struct __ecereNameSpace__ecere__com__SerialBuffer
588 {
589 unsigned char *  _buffer;
590 unsigned int count;
591 unsigned int _size;
592 unsigned int pos;
593 } ecere_gcc_struct;
594
595 extern void *  memset(void *  area, int value, size_t count);
596
597 extern void *  memcpy(void * , const void * , size_t size);
598
599 extern char *  strchr(const char * , int);
600
601 extern char *  __ecereNameSpace__ecere__sys__CopyString(const char *  string);
602
603 extern void *  memmove(void * , const void * , size_t size);
604
605 extern int strcmp(const char * , const char * );
606
607 extern char *  strncpy(char * , const char * , size_t n);
608
609 extern char *  __ecereNameSpace__ecere__sys__RSearchString(const char *  buffer, const char *  subStr, int maxLen, unsigned int matchCase, unsigned int matchWord);
610
611 extern size_t strlen(const char * );
612
613 extern int printf(const char * , ...);
614
615 extern char *  strcpy(char * , const char * );
616
617 extern char *  strstr(const char * , const char * );
618
619 extern int isspace(int c);
620
621 extern int strncmp(const char * , const char * , size_t n);
622
623 extern char *  strcat(char * , const char * );
624
625 extern char *  __ecereNameSpace__ecere__sys__TrimRSpaces(const char *  string, char *  output);
626
627 extern unsigned long strtoul(const char *  nptr, char * *  endptr, int base);
628
629 extern double strtod(const char * , char * * );
630
631 extern int sprintf(char * , const char * , ...);
632
633 extern char *  __ecereNameSpace__ecere__sys__GetLastDirectory(const char *  string, char *  output);
634
635 extern char *  __ecereNameSpace__ecere__sys__GetExtension(const char *  string, char *  output);
636
637 extern unsigned int __ecereNameSpace__ecere__sys__StripExtension(char *  string);
638
639 extern int strcasecmp(const char * , const char * );
640
641 extern double sin(double number);
642
643 extern double sinh(double number);
644
645 extern double cosh(double number);
646
647 extern double tanh(double number);
648
649 extern double sqrt(double number);
650
651 extern double cos(double number);
652
653 extern double tan(double number);
654
655 extern double atan2(double y, double x);
656
657 extern double asin(double number);
658
659 extern double acos(double number);
660
661 extern double atan(double number);
662
663 extern double asinh(double number);
664
665 extern double acosh(double number);
666
667 extern double atanh(double number);
668
669 extern double pow(double number, double number2);
670
671 extern double fmod(double x, double y);
672
673 extern double fabs(double number);
674
675 extern double log(double number);
676
677 extern double log10(double number);
678
679 extern double ceil(double number);
680
681 extern double floor(double number);
682
683 extern double exp(double number);
684
685 extern void qsort(void * , size_t, size_t, int (* )(void * , void * ));
686
687 extern int system(const char * );
688
689 extern int atoi(const char * );
690
691 extern double atof(const char * );
692
693 extern int tolower(int);
694
695 extern int toupper(int);
696
697 extern unsigned int isdigit(int);
698
699 extern char *  getenv(const char *  name);
700
701 extern int rename(const char *  oldpath, const char *  newpath);
702
703 extern char *  strncat(char * , const char * , size_t n);
704
705 extern size_t strspn(const char * , const char * );
706
707 extern size_t strcspn(const char * , const char * );
708
709 extern char *  strpbrk(const char * , const char * );
710
711 extern int strncasecmp(const char * , const char * , size_t n);
712
713 extern int memcmp(const void * , const void * , size_t size);
714
715 extern int vsprintf(char * , const char * , __builtin_va_list);
716
717 extern int puts(const char * );
718
719 extern int fputs(const char * , void *  stream);
720
721 extern int isalnum(int c);
722
723 extern int isalpha(int c);
724
725 extern int islower(int c);
726
727 extern int isupper(int c);
728
729 extern int isprint(int c);
730
731 int __ecereVMethodID_class_OnGetString;
732
733 const char *  __ecereProp___ecereNameSpace__ecere__com__Platform_Get_char__PTR_(int this);
734
735 int __ecereProp___ecereNameSpace__ecere__com__Platform_Set_char__PTR_(const char *  value);
736
737 char * __ecereNameSpace__ecere__sys__UTF16toUTF8(const unsigned short * source)
738 {
739 int c;
740 int d = 0;
741 int len;
742 char * dest;
743 unsigned short u16;
744 unsigned int invert = 0;
745
746 for(len = 0; source[len]; len++)
747 ;
748 dest = __ecereNameSpace__ecere__com__eSystem_New(sizeof(char) * (len * 3 + 1));
749 for(c = 0; (u16 = source[c]); c++)
750 {
751 unsigned int ch;
752
753 if(!c && (u16 == 0xFFFE || u16 == 0xFEFF))
754 {
755 if(u16 == 0xFFFE)
756 invert = 1;
757 continue;
758 }
759 if(invert)
760 {
761 u16 = ((u16 & 0xFF00) >> 8) | ((u16 & 0x00FF) << 8);
762 }
763 if(u16 < 0xD800 || u16 > 0xDBFF)
764 ch = u16;
765 else
766 ch = (u16 << 10) + source[c++] + (0x10000 - (0xD800 << 10) - 0xDC00);
767 if(ch < 0x80)
768 {
769 dest[d++] = (char)ch;
770 }
771 else if(ch < 0x800)
772 {
773 dest[d++] = 0xC0 | (unsigned char)((ch & 0x7C0) >> 6);
774 dest[d++] = 0x80 | (unsigned char)(ch & 0x03F);
775 }
776 else if(ch < 0x10000)
777 {
778 dest[d++] = 0xE0 | (unsigned char)((ch & 0xF000) >> 12);
779 dest[d++] = 0x80 | (unsigned char)((ch & 0xFC0) >> 6);
780 dest[d++] = 0x80 | (unsigned char)(ch & 0x03F);
781 }
782 else
783 {
784 dest[d++] = 0xF0 | (unsigned char)((ch & 0x1C0000) >> 18);
785 dest[d++] = 0x80 | (unsigned char)((ch & 0x3F000) >> 12);
786 dest[d++] = 0x80 | (unsigned char)((ch & 0xFC0) >> 6);
787 dest[d++] = 0x80 | (unsigned char)(ch & 0x03F);
788 }
789 }
790 dest[d] = 0;
791 dest = __ecereNameSpace__ecere__com__eSystem_Renew(dest, sizeof(char) * (d + 1));
792 return dest;
793 }
794
795 unsigned int __ecereNameSpace__ecere__com__LocateModule(const char * name, const char * fileName)
796 {
797 return Instance_LocateModule(name, fileName);
798 }
799
800 unsigned int __ecereNameSpace__ecere__com__pow2i(unsigned int number)
801 {
802 return 1 << __ecereNameSpace__ecere__com__log2i(number);
803 }
804
805 int __ecereNameSpace__ecere__com__GetRuntimePlatform()
806 {
807 return runtimePlatform;
808 }
809
810 void __ecereNameSpace__ecere__com__eSystem_SetPoolingDisabled(unsigned int disabled)
811 {
812 __ecereNameSpace__ecere__com__poolingDisabled = disabled;
813 }
814
815 struct __ecereNameSpace__ecere__com__EnumClassData
816 {
817 struct __ecereNameSpace__ecere__sys__OldList values;
818 long long largest;
819 } ecere_gcc_struct;
820
821 void __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(struct __ecereNameSpace__ecere__sys__OldList * this, void *  item);
822
823 void __ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove(struct __ecereNameSpace__ecere__sys__OldList * this, void *  item);
824
825 unsigned int __ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert(struct __ecereNameSpace__ecere__sys__OldList * this, void *  prevItem, void *  item);
826
827 void __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(struct __ecereNameSpace__ecere__sys__OldList * this, void *  item);
828
829 void __ecereMethod___ecereNameSpace__ecere__sys__OldList_Free(struct __ecereNameSpace__ecere__sys__OldList * this, void (*  freeFn)(void * ));
830
831 void __ecereNameSpace__ecere__com__memswap(unsigned char * a, unsigned char * b, unsigned int size)
832 {
833 unsigned int c;
834 unsigned char buffer[1024];
835
836 for(c = 0; c < size; )
837 {
838 int s = sizeof (buffer);
839
840 if(c + s > size)
841 s = size - c;
842 memcpy(buffer, a + c, s);
843 memcpy(a + c, b + c, s);
844 memcpy(b + c, buffer, s);
845 c += s;
846 }
847 }
848
849 unsigned short * __ecereNameSpace__ecere__sys__UTF8toUTF16(const char * source, int * wordCount)
850 {
851 if(source)
852 {
853 int len = (int)strlen(source);
854 unsigned short * dest = __ecereNameSpace__ecere__com__eSystem_New(sizeof(unsigned short) * (len + 1));
855 int c;
856 int d = 0;
857
858 for(c = 0; source[c]; )
859 {
860 unsigned char ch = source[c];
861 unsigned int codePoint = 0;
862 int numBytes = 1;
863 int i;
864 unsigned char mask = (unsigned char)0x7F;
865
866 if(ch & 0x80 && ch & 0x40)
867 {
868 mask >>= 2;
869 numBytes++;
870 if(ch & 0x20)
871 {
872 numBytes++;
873 mask >>= 1;
874 if(ch & 0x10)
875 {
876 numBytes++;
877 mask >>= 1;
878 }
879 }
880 }
881 for(i = 0; i < numBytes; i++)
882 {
883 codePoint <<= 6;
884 codePoint |= source[c++] & mask;
885 mask = 0x3F;
886 }
887 if(codePoint > 0xFFFF)
888 {
889 unsigned short lead = (unsigned short)((0xD800 - (0x10000 >> 10)) + (codePoint >> 10));
890 unsigned short trail = (unsigned short)(0xDC00 | (codePoint & 0x3FF));
891
892 dest[d++] = lead;
893 dest[d++] = trail;
894 }
895 else
896 {
897 dest[d++] = (unsigned short)codePoint;
898 }
899 }
900 dest[d] = 0;
901 if(wordCount)
902 *wordCount = d;
903 return dest;
904 }
905 return (((void *)0));
906 }
907
908 long long __ecereNameSpace__ecere__com___strtoi64(const char * string, const char ** endString, int base)
909 {
910 long long value = 0;
911 int sign = 1;
912 int c;
913 char ch;
914
915 for(c = 0; (ch = string[c]) && isspace(ch); c++)
916 ;
917 if(ch == '+')
918 c++;
919 else if(ch == '-')
920 {
921 sign = -1;
922 c++;
923 }
924 ;
925 if(!base)
926 {
927 if(ch == '0' && string[c + 1] == 'x')
928 {
929 base = 16;
930 c += 2;
931 }
932 else if(ch == '0')
933 {
934 base = 8;
935 c++;
936 }
937 else
938 base = 10;
939 }
940 for(; (ch = string[c]); c++)
941 {
942 if(ch >= '0' && ch <= '9')
943 ch -= '0';
944 else if(ch >= 'a' && ch <= 'z')
945 ch -= ('a' - 10);
946 else if(ch >= 'A' && ch <= 'Z')
947 ch -= ('A' - 10);
948 else
949 {
950 if(endString)
951 *endString = string + c;
952 break;
953 }
954 if(ch < base)
955 {
956 value *= base;
957 value += ch;
958 }
959 else
960 {
961 if(endString)
962 *endString = string + c;
963 break;
964 }
965 }
966 return sign * value;
967 }
968
969 uint64 __ecereNameSpace__ecere__com___strtoui64(const char * string, const char ** endString, int base)
970 {
971 uint64 value = 0;
972 int sign = 1;
973 int c;
974 char ch;
975
976 for(c = 0; (ch = string[c]) && isspace(ch); c++)
977 ;
978 if(ch == '+')
979 c++;
980 else if(ch == '-')
981 {
982 sign = -1;
983 c++;
984 }
985 ;
986 if(!base)
987 {
988 if(ch == '0' && string[c + 1] == 'x')
989 {
990 base = 16;
991 c += 2;
992 }
993 else if(ch == '0')
994 {
995 base = 8;
996 c++;
997 }
998 else
999 base = 10;
1000 }
1001 for(; (ch = string[c]); c++)
1002 {
1003 if(ch >= '0' && ch <= '9')
1004 ch -= '0';
1005 else if(ch >= 'a' && ch <= 'z')
1006 ch -= ('a' - 10);
1007 else if(ch >= 'A' && ch <= 'Z')
1008 ch -= ('A' - 10);
1009 else
1010 {
1011 if(endString)
1012 *endString = string + c;
1013 break;
1014 }
1015 if(ch < base)
1016 {
1017 value *= base;
1018 value += ch;
1019 }
1020 else
1021 {
1022 if(endString)
1023 *endString = string + c;
1024 break;
1025 }
1026 }
1027 return sign * value;
1028 }
1029
1030 int __ecereProp___ecereNameSpace__ecere__com__Platform_Set_char__PTR_(const char *  value)
1031 {
1032 if(value)
1033 {
1034 int c;
1035
1036 for(c = __ecereNameSpace__ecere__com__firstPlatform; c <= __ecereNameSpace__ecere__com__lastPlatform; c++)
1037 if(!strcasecmp(value, __ecereNameSpace__ecere__com__platformNames[c]))
1038 return c;
1039 }
1040 return 0;
1041 }
1042
1043 struct __ecereNameSpace__ecere__com__Class;
1044
1045 struct __ecereNameSpace__ecere__com__Instance
1046 {
1047 void * *  _vTbl;
1048 struct __ecereNameSpace__ecere__com__Class * _class;
1049 int _refCount;
1050 } ecere_gcc_struct;
1051
1052 void * __ecereNameSpace__ecere__com__eInstance_New(struct __ecereNameSpace__ecere__com__Class * _class);
1053
1054 struct __ecereNameSpace__ecere__com__DesignerBase
1055 {
1056 struct __ecereNameSpace__ecere__com__Instance * classDesigner;
1057 const char * objectClass;
1058 unsigned int isDragging;
1059 } ecere_gcc_struct;
1060
1061 int __ecereVMethodID___ecereNameSpace__ecere__com__ClassDesignerBase_Reset;
1062
1063 int __ecereVMethodID___ecereNameSpace__ecere__com__ClassDesignerBase_AddObject;
1064
1065 int __ecereVMethodID___ecereNameSpace__ecere__com__ClassDesignerBase_DestroyObject;
1066
1067 int __ecereVMethodID___ecereNameSpace__ecere__com__ClassDesignerBase_CreateNew;
1068
1069 void __ecereMethod___ecereNameSpace__ecere__com__IOChannel_Serialize(struct __ecereNameSpace__ecere__com__Instance * this, struct __ecereNameSpace__ecere__com__Class * class, const void * data);
1070
1071 void __ecereMethod___ecereNameSpace__ecere__com__IOChannel_Unserialize(struct __ecereNameSpace__ecere__com__Instance * this, struct __ecereNameSpace__ecere__com__Class * class, void * *  data);
1072
1073 int __ecereVMethodID___ecereNameSpace__ecere__com__DesignerBase_FindObject;
1074
1075 int __ecereVMethodID___ecereNameSpace__ecere__com__DesignerBase_AddToolBoxClass;
1076
1077 int __ecereVMethodID___ecereNameSpace__ecere__com__DesignerBase_AddDefaultMethod;
1078
1079 int __ecereVMethodID___ecereNameSpace__ecere__com__DesignerBase_ModifyCode;
1080
1081 int __ecereVMethodID___ecereNameSpace__ecere__com__DesignerBase_UpdateProperties;
1082
1083 int __ecereVMethodID___ecereNameSpace__ecere__com__ClassDesignerBase_ListToolBoxClasses;
1084
1085 int __ecereVMethodID___ecereNameSpace__ecere__com__ClassDesignerBase_PrepareTestObject;
1086
1087 struct __ecereNameSpace__ecere__com__Instance * __ecereProp___ecereNameSpace__ecere__com__DesignerBase_Get_classDesigner(struct __ecereNameSpace__ecere__com__Instance * this);
1088
1089 void __ecereProp___ecereNameSpace__ecere__com__DesignerBase_Set_classDesigner(struct __ecereNameSpace__ecere__com__Instance * this, struct __ecereNameSpace__ecere__com__Instance * value);
1090
1091 const char *  __ecereProp___ecereNameSpace__ecere__com__DesignerBase_Get_objectClass(struct __ecereNameSpace__ecere__com__Instance * this);
1092
1093 void __ecereProp___ecereNameSpace__ecere__com__DesignerBase_Set_objectClass(struct __ecereNameSpace__ecere__com__Instance * this, const char *  value);
1094
1095 unsigned int __ecereProp___ecereNameSpace__ecere__com__DesignerBase_Get_isDragging(struct __ecereNameSpace__ecere__com__Instance * this);
1096
1097 void __ecereProp___ecereNameSpace__ecere__com__DesignerBase_Set_isDragging(struct __ecereNameSpace__ecere__com__Instance * this, unsigned int value);
1098
1099 struct __ecereNameSpace__ecere__com__Instance * __ecereNameSpace__ecere__com__activeDesigner;
1100
1101 void __ecereNameSpace__ecere__com__SetActiveDesigner(struct __ecereNameSpace__ecere__com__Instance * designer)
1102 {
1103 __ecereNameSpace__ecere__com__activeDesigner = designer;
1104 }
1105
1106 struct __ecereNameSpace__ecere__com__Instance * __ecereNameSpace__ecere__com__GetActiveDesigner()
1107 {
1108 return __ecereNameSpace__ecere__com__activeDesigner;
1109 }
1110
1111 struct __ecereNameSpace__ecere__com__BTNamedLink;
1112
1113 struct __ecereNameSpace__ecere__com__BTNamedLink
1114 {
1115 const char * name;
1116 struct __ecereNameSpace__ecere__com__BTNamedLink * parent, * left, * right;
1117 int depth;
1118 void * data;
1119 } ecere_gcc_struct;
1120
1121 struct __ecereNameSpace__ecere__com__SelfWatcher;
1122
1123 struct __ecereNameSpace__ecere__com__Property;
1124
1125 struct __ecereNameSpace__ecere__com__Property
1126 {
1127 struct __ecereNameSpace__ecere__com__Property * prev, * next;
1128 const char * name;
1129 unsigned int isProperty;
1130 int memberAccess;
1131 int id;
1132 struct __ecereNameSpace__ecere__com__Class * _class;
1133 const char * dataTypeString;
1134 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
1135 struct __ecereNameSpace__ecere__com__Instance * dataType;
1136 void (* Set)(void *, int);
1137 int (* Get)(void *);
1138 unsigned int (* IsSet)(void *);
1139 void * data;
1140 void * symbol;
1141 int vid;
1142 unsigned int conversion;
1143 unsigned int watcherOffset;
1144 const char * category;
1145 unsigned int compiled;
1146 unsigned int selfWatchable, isWatchable;
1147 } ecere_gcc_struct;
1148
1149 int __ecereVMethodID___ecereNameSpace__ecere__com__ClassDesignerBase_FixProperty;
1150
1151 void __ecereNameSpace__ecere__com__eInstance_FireWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property);
1152
1153 struct __ecereNameSpace__ecere__com__SelfWatcher
1154 {
1155 struct __ecereNameSpace__ecere__com__SelfWatcher * prev, * next;
1156 void (* callback)(void *);
1157 struct __ecereNameSpace__ecere__com__Property * _property;
1158 } ecere_gcc_struct;
1159
1160 static __attribute__((unused)) struct __ecereNameSpace__ecere__com__Property * __ecereProp___ecereNameSpace__ecere__com__Class_char__PTR_, * __ecerePropM___ecereNameSpace__ecere__com__Class_char__PTR_;
1161
1162 static __attribute__((unused)) struct __ecereNameSpace__ecere__com__Property * __ecereProp___ecereNameSpace__ecere__com__Platform_char__PTR_, * __ecerePropM___ecereNameSpace__ecere__com__Platform_char__PTR_;
1163
1164 static __attribute__((unused)) struct __ecereNameSpace__ecere__com__Property * __ecereProp___ecereNameSpace__ecere__com__DesignerBase_classDesigner, * __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_classDesigner;
1165
1166 static __attribute__((unused)) struct __ecereNameSpace__ecere__com__Property * __ecereProp___ecereNameSpace__ecere__com__DesignerBase_objectClass, * __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_objectClass;
1167
1168 static __attribute__((unused)) struct __ecereNameSpace__ecere__com__Property * __ecereProp___ecereNameSpace__ecere__com__DesignerBase_isDragging, * __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_isDragging;
1169
1170 struct __ecereNameSpace__ecere__com__DefinedExpression;
1171
1172 struct __ecereNameSpace__ecere__com__MemBlock;
1173
1174 struct __ecereNameSpace__ecere__com__BlockPool
1175 {
1176 struct __ecereNameSpace__ecere__com__MemBlock * first, * last;
1177 struct __ecereNameSpace__ecere__com__MemBlock * free;
1178 unsigned int blockSize;
1179 unsigned int blockSpace;
1180 int numParts;
1181 int numBlocks;
1182 unsigned int totalSize;
1183 unsigned int usedSpace;
1184 } ecere_gcc_struct;
1185
1186 struct __ecereNameSpace__ecere__com__MemPart
1187 {
1188 void * memory;
1189 int blocksUsed;
1190 int size;
1191 struct __ecereNameSpace__ecere__com__BlockPool * pool;
1192 } ecere_gcc_struct;
1193
1194 static struct __ecereNameSpace__ecere__com__BlockPool * __ecereNameSpace__ecere__com__pools;
1195
1196 struct __ecereNameSpace__ecere__com__MemBlock
1197 {
1198 struct __ecereNameSpace__ecere__com__MemBlock * prev, * next;
1199 struct __ecereNameSpace__ecere__com__MemPart * part;
1200 unsigned int size;
1201 } ecere_gcc_struct;
1202
1203 unsigned int __ecereMethod___ecereNameSpace__ecere__com__BlockPool_Expand(struct __ecereNameSpace__ecere__com__BlockPool * this, unsigned int numBlocks)
1204 {
1205 unsigned char * memory = malloc(numBlocks * this->blockSpace);
1206
1207 __ecereNameSpace__ecere__com__TOTAL_MEM += numBlocks * this->blockSpace;
1208 if(memory)
1209 {
1210 int c;
1211 struct __ecereNameSpace__ecere__com__MemBlock * block = (struct __ecereNameSpace__ecere__com__MemBlock *)memory;
1212 struct __ecereNameSpace__ecere__com__MemPart * part = calloc(1, sizeof(struct __ecereNameSpace__ecere__com__MemPart));
1213
1214 __ecereNameSpace__ecere__com__TOTAL_MEM += sizeof(struct __ecereNameSpace__ecere__com__MemPart);
1215 this->free = block;
1216 for(c = 0; c < numBlocks - 1; c++)
1217 {
1218 block->part = part;
1219 block->prev = (((void *)0));
1220 block->next = (struct __ecereNameSpace__ecere__com__MemBlock *)((unsigned char *)block + this->blockSpace);
1221 block = block->next;
1222 }
1223 part->blocksUsed = 0;
1224 part->pool = this;
1225 part->memory = memory;
1226 part->size = numBlocks;
1227 block->part = part;
1228 block->prev = (((void *)0));
1229 block->next = (((void *)0));
1230 this->totalSize += numBlocks;
1231 this->numParts++;
1232 return 1;
1233 }
1234 return 0;
1235 }
1236
1237 void __ecereMethod___ecereNameSpace__ecere__com__BlockPool_Remove(struct __ecereNameSpace__ecere__com__BlockPool * this, struct __ecereNameSpace__ecere__com__MemBlock * block)
1238 {
1239 if(block->prev)
1240 block->prev->next = block->next;
1241 if(block->next)
1242 block->next->prev = block->prev;
1243 if(this->first == block)
1244 this->first = block->next;
1245 if(this->last == block)
1246 this->last = block->prev;
1247 block->next = this->free;
1248 this->free = block;
1249 block->part->blocksUsed--;
1250 this->numBlocks--;
1251 (*block->part->pool).usedSpace -= block->size;
1252 if(!block->part->blocksUsed && this->numBlocks && this->totalSize > this->numBlocks + this->numBlocks / 2)
1253 {
1254 struct __ecereNameSpace__ecere__com__MemBlock * next = this->free, * prev = (((void *)0));
1255 struct __ecereNameSpace__ecere__com__MemPart * part = block->part;
1256
1257 this->free = (((void *)0));
1258 this->totalSize -= part->size;
1259 while(next)
1260 {
1261 if(next->part != part)
1262 {
1263 if(prev)
1264 prev->next = next;
1265 else
1266 this->free = next;
1267 prev = next;
1268 }
1269 next = next->next;
1270 }
1271 ;
1272 if(prev)
1273 prev->next = (((void *)0));
1274 __ecereNameSpace__ecere__com__TOTAL_MEM -= part->size * this->blockSpace;
1275 __ecereNameSpace__ecere__com__TOTAL_MEM -= sizeof(struct __ecereNameSpace__ecere__com__MemPart);
1276 this->numParts--;
1277 free(part->memory);
1278 free(part);
1279 }
1280 }
1281
1282 struct __ecereNameSpace__ecere__com__MemBlock * __ecereMethod___ecereNameSpace__ecere__com__BlockPool_Add(struct __ecereNameSpace__ecere__com__BlockPool * this)
1283 {
1284 int __simpleStruct0;
1285 struct __ecereNameSpace__ecere__com__MemBlock * block = (((void *)0));
1286
1287 if(!this->free)
1288 __ecereMethod___ecereNameSpace__ecere__com__BlockPool_Expand(this, (__simpleStruct0 = this->numBlocks / 2, (1 > __simpleStruct0) ? 1 : __simpleStruct0));
1289 if(this->free)
1290 {
1291 block = this->free;
1292 block->prev = this->last;
1293 if(block->prev)
1294 block->prev->next = block;
1295 if(!this->first)
1296 this->first = block;
1297 this->last = block;
1298 this->free = block->next;
1299 block->next = (((void *)0));
1300 block->part->blocksUsed++;
1301 this->numBlocks++;
1302 }
1303 return block;
1304 }
1305
1306 static void __ecereNameSpace__ecere__com__InitMemory()
1307 {
1308 int c;
1309
1310 __ecereNameSpace__ecere__com__memoryInitialized = 1;
1311 __ecereNameSpace__ecere__com__pools = calloc(1, sizeof(struct __ecereNameSpace__ecere__com__BlockPool) * 31);
1312 for(c = 0; c < 31; c++)
1313 {
1314 int expansion;
1315
1316 __ecereNameSpace__ecere__com__pools[c].blockSize = __ecereNameSpace__ecere__com__pow1_5(c);
1317 if(__ecereNameSpace__ecere__com__pools[c].blockSize % sizeof(void *))
1318 __ecereNameSpace__ecere__com__pools[c].blockSize += sizeof(void *) - (__ecereNameSpace__ecere__com__pools[c].blockSize % sizeof(void *));
1319 __ecereNameSpace__ecere__com__pools[c].blockSpace = __ecereNameSpace__ecere__com__pools[c].blockSize;
1320 __ecereNameSpace__ecere__com__pools[c].blockSpace += sizeof(struct __ecereNameSpace__ecere__com__MemBlock);
1321 expansion = (__ecereNameSpace__ecere__com__pools[c].blockSize < 128) ? 1024 : (131072 / __ecereNameSpace__ecere__com__pools[c].blockSize);
1322 if(c < 12)
1323 __ecereMethod___ecereNameSpace__ecere__com__BlockPool_Expand(&__ecereNameSpace__ecere__com__pools[c], ((1 > expansion) ? 1 : expansion));
1324 }
1325 }
1326
1327 static void __ecereNameSpace__ecere__com___myfree(void * pointer)
1328 {
1329 if(pointer)
1330 {
1331 struct __ecereNameSpace__ecere__com__MemBlock * block = (struct __ecereNameSpace__ecere__com__MemBlock *)((unsigned char *)pointer - sizeof(struct __ecereNameSpace__ecere__com__MemBlock));
1332 struct __ecereNameSpace__ecere__com__MemPart * part = block->part;
1333 struct __ecereNameSpace__ecere__com__BlockPool * pool = part ? part->pool : (((void *)0));
1334
1335 if(pool)
1336 __ecereMethod___ecereNameSpace__ecere__com__BlockPool_Remove((&*pool), block);
1337 else
1338 {
1339 __ecereNameSpace__ecere__com__TOTAL_MEM -= sizeof(struct __ecereNameSpace__ecere__com__MemBlock) + block->size;
1340 __ecereNameSpace__ecere__com__OUTSIDE_MEM -= sizeof(struct __ecereNameSpace__ecere__com__MemBlock) + block->size;
1341 free(block);
1342 }
1343 }
1344 }
1345
1346 static void * __ecereNameSpace__ecere__com___mymalloc(unsigned int size)
1347 {
1348 struct __ecereNameSpace__ecere__com__MemBlock * block = (((void *)0));
1349
1350 if(size)
1351 {
1352 unsigned int p = __ecereNameSpace__ecere__com__log1_5i(size);
1353
1354 if(!__ecereNameSpace__ecere__com__memoryInitialized)
1355 __ecereNameSpace__ecere__com__InitMemory();
1356 if(!__ecereNameSpace__ecere__com__poolingDisabled && p < 31)
1357 {
1358 block = __ecereMethod___ecereNameSpace__ecere__com__BlockPool_Add(&__ecereNameSpace__ecere__com__pools[p]);
1359 if(block)
1360 {
1361 block->size = size;
1362 __ecereNameSpace__ecere__com__pools[p].usedSpace += size;
1363 }
1364 }
1365 else
1366 {
1367 block = malloc(sizeof(struct __ecereNameSpace__ecere__com__MemBlock) + size);
1368 if(block)
1369 {
1370 __ecereNameSpace__ecere__com__TOTAL_MEM += sizeof(struct __ecereNameSpace__ecere__com__MemBlock) + size;
1371 __ecereNameSpace__ecere__com__OUTSIDE_MEM += sizeof(struct __ecereNameSpace__ecere__com__MemBlock) + size;
1372 block->part = (((void *)0));
1373 block->size = size;
1374 }
1375 }
1376 }
1377 return block ? ((struct __ecereNameSpace__ecere__com__MemBlock *)block + 1) : (((void *)0));
1378 }
1379
1380 static void __ecereNameSpace__ecere__com___free(void * pointer)
1381 {
1382 if(pointer)
1383 {
1384 __ecereNameSpace__ecere__com___myfree(pointer);
1385 }
1386 }
1387
1388 static void * __ecereNameSpace__ecere__com___mycalloc(int n, unsigned int size)
1389 {
1390 void * pointer = __ecereNameSpace__ecere__com___mymalloc(n * size);
1391
1392 if(pointer)
1393 memset(pointer, 0, n * size);
1394 return pointer;
1395 }
1396
1397 static void * __ecereNameSpace__ecere__com___myrealloc(void * pointer, unsigned int size)
1398 {
1399 struct __ecereNameSpace__ecere__com__MemBlock * block = pointer ? ((struct __ecereNameSpace__ecere__com__MemBlock *)((unsigned char *)pointer - sizeof(struct __ecereNameSpace__ecere__com__MemBlock))) : (((void *)0));
1400 void * newPointer = (((void *)0));
1401 struct __ecereNameSpace__ecere__com__MemPart * part = block ? block->part : (((void *)0));
1402 struct __ecereNameSpace__ecere__com__BlockPool * pool = part ? part->pool : (((void *)0));
1403
1404 if(block)
1405 {
1406 if(pool)
1407 {
1408 unsigned int ns = __ecereNameSpace__ecere__com__pow1_5i(size);
1409 unsigned int mod = ns % sizeof(void *);
1410
1411 if(mod)
1412 ns += sizeof(void *) - mod;
1413 if(ns == (*pool).blockSize)
1414 {
1415 newPointer = pointer;
1416 (*pool).usedSpace += size - block->size;
1417 block->size = size;
1418 }
1419 }
1420 else if(size)
1421 {
1422 struct __ecereNameSpace__ecere__com__MemBlock * newBlock = realloc(block, sizeof(struct __ecereNameSpace__ecere__com__MemBlock) + size);
1423
1424 if(newBlock)
1425 {
1426 __ecereNameSpace__ecere__com__TOTAL_MEM += size - newBlock->size;
1427 __ecereNameSpace__ecere__com__OUTSIDE_MEM += size - newBlock->size;
1428 newPointer = ((struct __ecereNameSpace__ecere__com__MemBlock *)newBlock + 1);
1429 }
1430 }
1431 }
1432 if(!newPointer)
1433 {
1434 newPointer = __ecereNameSpace__ecere__com___mymalloc(size);
1435 if(pointer && newPointer)
1436 {
1437 unsigned int __simpleStruct0;
1438
1439 memcpy(newPointer, pointer, (__simpleStruct0 = block->size, (size < __simpleStruct0) ? size : __simpleStruct0));
1440 __ecereNameSpace__ecere__com___myfree(pointer);
1441 }
1442 }
1443 return newPointer;
1444 }
1445
1446 static void * __ecereNameSpace__ecere__com___mycrealloc(void * pointer, unsigned int size)
1447 {
1448 struct __ecereNameSpace__ecere__com__MemBlock * block = pointer ? ((struct __ecereNameSpace__ecere__com__MemBlock *)((unsigned char *)pointer - sizeof(struct __ecereNameSpace__ecere__com__MemBlock))) : (((void *)0));
1449 void * newPointer = (((void *)0));
1450 struct __ecereNameSpace__ecere__com__MemPart * part = block ? block->part : (((void *)0));
1451 struct __ecereNameSpace__ecere__com__BlockPool * pool = part ? part->pool : (((void *)0));
1452
1453 if(block)
1454 {
1455 if(pool)
1456 {
1457 unsigned int ns = __ecereNameSpace__ecere__com__pow1_5i(size);
1458 unsigned int mod = ns % sizeof(void *);
1459
1460 if(mod)
1461 ns += sizeof(void *) - mod;
1462 if(ns == (*pool).blockSize)
1463 {
1464 int extra = size - block->size;
1465
1466 newPointer = pointer;
1467 (*pool).usedSpace += extra;
1468 if(extra > 0)
1469 memset((unsigned char *)pointer + block->size, 0, extra);
1470 block->size = size;
1471 }
1472 }
1473 else if(size)
1474 {
1475 struct __ecereNameSpace__ecere__com__MemBlock * newBlock = realloc(block, sizeof(struct __ecereNameSpace__ecere__com__MemBlock) + size);
1476
1477 if(newBlock)
1478 {
1479 int extra = size - newBlock->size;
1480
1481 __ecereNameSpace__ecere__com__TOTAL_MEM += extra;
1482 __ecereNameSpace__ecere__com__OUTSIDE_MEM += extra;
1483 newPointer = ((struct __ecereNameSpace__ecere__com__MemBlock *)newBlock + 1);
1484 if(extra > 0)
1485 memset((unsigned char *)newPointer + newBlock->size, 0, extra);
1486 newBlock->size = size;
1487 }
1488 }
1489 }
1490 if(!newPointer)
1491 {
1492 newPointer = __ecereNameSpace__ecere__com___mymalloc(size);
1493 if(newPointer)
1494 {
1495 if(pointer)
1496 {
1497 unsigned int __simpleStruct0;
1498
1499 memcpy(newPointer, pointer, (__simpleStruct0 = block->size, (size < __simpleStruct0) ? size : __simpleStruct0));
1500 if(size > block->size)
1501 memset((unsigned char *)newPointer + block->size, 0, size - block->size);
1502 __ecereNameSpace__ecere__com___myfree(pointer);
1503 }
1504 else
1505 memset((unsigned char *)newPointer, 0, size);
1506 }
1507 }
1508 return newPointer;
1509 }
1510
1511 static void * __ecereNameSpace__ecere__com___malloc(unsigned int size)
1512 {
1513 void * pointer;
1514
1515 pointer = size ? __ecereNameSpace__ecere__com___mymalloc(size + 2 * 0) : (((void *)0));
1516 return pointer ? ((unsigned char *)pointer + 0) : (((void *)0));
1517 }
1518
1519 void __ecereNameSpace__ecere__com__eSystem_Delete(void * memory)
1520 {
1521 if(memory)
1522 __ecereNameSpace__ecere__com___free(memory);
1523 }
1524
1525 static void * __ecereNameSpace__ecere__com___calloc(int n, unsigned int size)
1526 {
1527 void * pointer;
1528
1529 pointer = (n * size) ? __ecereNameSpace__ecere__com___mycalloc(1, n * size + 2 * 0) : (((void *)0));
1530 return pointer ? ((unsigned char *)pointer + 0) : (((void *)0));
1531 }
1532
1533 static void * __ecereNameSpace__ecere__com___realloc(void * pointer, unsigned int size)
1534 {
1535 if(!size)
1536 {
1537 __ecereNameSpace__ecere__com___free(pointer);
1538 return (((void *)0));
1539 }
1540 pointer = __ecereNameSpace__ecere__com___myrealloc(pointer, size);
1541 return pointer ? ((unsigned char *)pointer + 0) : (((void *)0));
1542 }
1543
1544 static void * __ecereNameSpace__ecere__com___crealloc(void * pointer, unsigned int size)
1545 {
1546 if(!size)
1547 return (((void *)0));
1548 pointer = __ecereNameSpace__ecere__com___mycrealloc(pointer, size);
1549 return pointer ? ((unsigned char *)pointer + 0) : (((void *)0));
1550 }
1551
1552 void * __ecereNameSpace__ecere__com__eSystem_New(unsigned int size)
1553 {
1554 return __ecereNameSpace__ecere__com___malloc(size);
1555 }
1556
1557 void * __ecereNameSpace__ecere__com__eSystem_New0(unsigned int size)
1558 {
1559 return __ecereNameSpace__ecere__com___calloc(1, size);
1560 }
1561
1562 void * __ecereNameSpace__ecere__com__eSystem_Renew(void * memory, unsigned int size)
1563 {
1564 return __ecereNameSpace__ecere__com___realloc(memory, size);
1565 }
1566
1567 void * __ecereNameSpace__ecere__com__eSystem_Renew0(void * memory, unsigned int size)
1568 {
1569 return __ecereNameSpace__ecere__com___crealloc(memory, size);
1570 }
1571
1572 struct __ecereNameSpace__ecere__sys__BTNode;
1573
1574 struct __ecereNameSpace__ecere__sys__BTNode
1575 {
1576 uintptr_t key;
1577 struct __ecereNameSpace__ecere__sys__BTNode * parent;
1578 struct __ecereNameSpace__ecere__sys__BTNode * left;
1579 struct __ecereNameSpace__ecere__sys__BTNode * right;
1580 int depth;
1581 } ecere_gcc_struct;
1582
1583 struct __ecereNameSpace__ecere__sys__BTNode * __ecereProp___ecereNameSpace__ecere__sys__BTNode_Get_next(struct __ecereNameSpace__ecere__sys__BTNode * this);
1584
1585 struct __ecereNameSpace__ecere__sys__OldLink;
1586
1587 struct __ecereNameSpace__ecere__sys__OldLink
1588 {
1589 struct __ecereNameSpace__ecere__sys__OldLink * prev;
1590 struct __ecereNameSpace__ecere__sys__OldLink * next;
1591 void *  data;
1592 } ecere_gcc_struct;
1593
1594 struct __ecereNameSpace__ecere__sys__OldLink * __ecereMethod___ecereNameSpace__ecere__sys__OldList_FindLink(struct __ecereNameSpace__ecere__sys__OldList * this, void *  data);
1595
1596 struct __ecereNameSpace__ecere__sys__NamedLink64;
1597
1598 struct __ecereNameSpace__ecere__sys__NamedLink64
1599 {
1600 struct __ecereNameSpace__ecere__sys__NamedLink64 * prev;
1601 struct __ecereNameSpace__ecere__sys__NamedLink64 * next;
1602 char *  name;
1603 long long data;
1604 } ecere_gcc_struct;
1605
1606 static void __ecereNameSpace__ecere__com__FreeEnumValue(struct __ecereNameSpace__ecere__sys__NamedLink64 * value)
1607 {
1608 (__ecereNameSpace__ecere__com__eSystem_Delete(value->name), value->name = 0);
1609 }
1610
1611 struct __ecereNameSpace__ecere__com__Method;
1612
1613 struct __ecereNameSpace__ecere__com__Method
1614 {
1615 const char * name;
1616 struct __ecereNameSpace__ecere__com__Method * parent, * left, * right;
1617 int depth;
1618 int (* function)();
1619 int vid;
1620 int type;
1621 struct __ecereNameSpace__ecere__com__Class * _class;
1622 void * symbol;
1623 const char * dataTypeString;
1624 struct __ecereNameSpace__ecere__com__Instance * dataType;
1625 int memberAccess;
1626 } ecere_gcc_struct;
1627
1628 struct __ecereNameSpace__ecere__com__ObjectInfo;
1629
1630 struct __ecereNameSpace__ecere__com__ObjectInfo
1631 {
1632 struct __ecereNameSpace__ecere__com__ObjectInfo * prev, * next;
1633 struct __ecereNameSpace__ecere__com__Instance * instance;
1634 char * name;
1635 struct __ecereNameSpace__ecere__com__Instance * instCode;
1636 unsigned int deleted;
1637 struct __ecereNameSpace__ecere__com__ObjectInfo * oClass;
1638 struct __ecereNameSpace__ecere__sys__OldList instances;
1639 struct __ecereNameSpace__ecere__com__Instance * classDefinition;
1640 unsigned int modified;
1641 void * i18nStrings;
1642 } ecere_gcc_struct;
1643
1644 int __ecereVMethodID___ecereNameSpace__ecere__com__DesignerBase_RenameObject;
1645
1646 int __ecereVMethodID___ecereNameSpace__ecere__com__DesignerBase_SelectObjectFromDesigner;
1647
1648 int __ecereVMethodID___ecereNameSpace__ecere__com__DesignerBase_CodeAddObject;
1649
1650 int __ecereVMethodID___ecereNameSpace__ecere__com__DesignerBase_SheetAddObject;
1651
1652 int __ecereVMethodID___ecereNameSpace__ecere__com__DesignerBase_DeleteObject;
1653
1654 int __ecereVMethodID___ecereNameSpace__ecere__com__DesignerBase_ObjectContainsCode;
1655
1656 int __ecereVMethodID___ecereNameSpace__ecere__com__ClassDesignerBase_SelectObject;
1657
1658 int __ecereVMethodID___ecereNameSpace__ecere__com__ClassDesignerBase_CreateObject;
1659
1660 int __ecereVMethodID___ecereNameSpace__ecere__com__ClassDesignerBase_PostCreateObject;
1661
1662 int __ecereVMethodID___ecereNameSpace__ecere__com__ClassDesignerBase_DroppedObject;
1663
1664 struct __ecereNameSpace__ecere__com__Module;
1665
1666 struct __ecereNameSpace__ecere__com__Class * __ecereNameSpace__ecere__com__eSystem_FindClass(struct __ecereNameSpace__ecere__com__Instance * module, const char * name);
1667
1668 extern unsigned int __ecereDll_Load_ecere(struct __ecereNameSpace__ecere__com__Instance * module);
1669
1670 extern unsigned int __ecereDll_Unload_ecere(struct __ecereNameSpace__ecere__com__Instance * module);
1671
1672 extern struct __ecereNameSpace__ecere__com__Instance * __thisModule;
1673
1674 extern void __ecereNameSpace__ecere__com__InitializeDataTypes1(struct __ecereNameSpace__ecere__com__Instance * module);
1675
1676 extern void __ecereNameSpace__ecere__com__InitializeDataTypes(struct __ecereNameSpace__ecere__com__Instance * module);
1677
1678 struct __ecereNameSpace__ecere__com__Class * __ecereProp___ecereNameSpace__ecere__com__Class_Set_char__PTR_(const char *  value)
1679 {
1680 struct __ecereNameSpace__ecere__com__Class * theClass = __ecereNameSpace__ecere__com__eSystem_FindClass(__thisModule, value);
1681
1682 return theClass;
1683 }
1684
1685 struct __ecereNameSpace__ecere__com__BitMember;
1686
1687 struct __ecereNameSpace__ecere__com__BitMember
1688 {
1689 struct __ecereNameSpace__ecere__com__BitMember * prev, * next;
1690 const char * name;
1691 unsigned int isProperty;
1692 int memberAccess;
1693 int id;
1694 struct __ecereNameSpace__ecere__com__Class * _class;
1695 const char * dataTypeString;
1696 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
1697 struct __ecereNameSpace__ecere__com__Instance * dataType;
1698 int type;
1699 int size;
1700 int pos;
1701 uint64 mask;
1702 } ecere_gcc_struct;
1703
1704 struct __ecereNameSpace__ecere__com__ClassProperty;
1705
1706 struct __ecereNameSpace__ecere__com__ClassProperty
1707 {
1708 const char * name;
1709 struct __ecereNameSpace__ecere__com__ClassProperty * parent, * left, * right;
1710 int depth;
1711 void (* Set)(struct __ecereNameSpace__ecere__com__Class *, long long);
1712 long long (* Get)(struct __ecereNameSpace__ecere__com__Class *);
1713 const char * dataTypeString;
1714 struct __ecereNameSpace__ecere__com__Instance * dataType;
1715 unsigned int constant;
1716 } ecere_gcc_struct;
1717
1718 struct __ecereNameSpace__ecere__com__Watcher;
1719
1720 struct __ecereNameSpace__ecere__com__Watcher
1721 {
1722 struct __ecereNameSpace__ecere__com__Watcher * prev, * next;
1723 void (* callback)(void *, void *);
1724 struct __ecereNameSpace__ecere__com__Instance * object;
1725 } ecere_gcc_struct;
1726
1727 void __ecereNameSpace__ecere__com__eInstance_Watch(void * instance, struct __ecereNameSpace__ecere__com__Property * _property, void * object, void (* callback)(void *, void *))
1728 {
1729 if(_property->isWatchable)
1730 {
1731 struct __ecereNameSpace__ecere__sys__OldList * watchers = (struct __ecereNameSpace__ecere__sys__OldList *)((unsigned char *)instance + _property->watcherOffset);
1732
1733 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*watchers), __extension__ ({
1734 struct __ecereNameSpace__ecere__com__Watcher * __ecereInstance1 = __ecereNameSpace__ecere__com__eSystem_New0(sizeof(struct __ecereNameSpace__ecere__com__Watcher));
1735
1736 __ecereInstance1->callback = callback, __ecereInstance1->object = object, __ecereInstance1;
1737 }));
1738 }
1739 }
1740
1741 struct __ecereNameSpace__ecere__com__NameSpace;
1742
1743 struct __ecereNameSpace__ecere__com__DefinedExpression
1744 {
1745 struct __ecereNameSpace__ecere__com__DefinedExpression * prev, * next;
1746 const char * name;
1747 const char * value;
1748 struct __ecereNameSpace__ecere__com__NameSpace * nameSpace;
1749 } ecere_gcc_struct;
1750
1751 struct __ecereNameSpace__ecere__sys__BinaryTree;
1752
1753 struct __ecereNameSpace__ecere__sys__BinaryTree
1754 {
1755 struct __ecereNameSpace__ecere__sys__BTNode * root;
1756 int count;
1757 int (*  CompareKey)(struct __ecereNameSpace__ecere__sys__BinaryTree * tree, uintptr_t a, uintptr_t b);
1758 void (*  FreeKey)(void *  key);
1759 } ecere_gcc_struct;
1760
1761 struct __ecereNameSpace__ecere__com__NameSpace
1762 {
1763 const char * name;
1764 struct __ecereNameSpace__ecere__com__NameSpace * btParent, * left, * right;
1765 int depth;
1766 struct __ecereNameSpace__ecere__com__NameSpace * parent;
1767 struct __ecereNameSpace__ecere__sys__BinaryTree nameSpaces;
1768 struct __ecereNameSpace__ecere__sys__BinaryTree classes;
1769 struct __ecereNameSpace__ecere__sys__BinaryTree defines;
1770 struct __ecereNameSpace__ecere__sys__BinaryTree functions;
1771 } ecere_gcc_struct;
1772
1773 struct __ecereNameSpace__ecere__sys__BTNode * __ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(struct __ecereNameSpace__ecere__sys__BinaryTree * this);
1774
1775 struct __ecereNameSpace__ecere__sys__BTNode * __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(struct __ecereNameSpace__ecere__sys__BinaryTree * this, const char *  key);
1776
1777 void __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(struct __ecereNameSpace__ecere__sys__BinaryTree * this, struct __ecereNameSpace__ecere__sys__BTNode * node);
1778
1779 int __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString(struct __ecereNameSpace__ecere__sys__BinaryTree * this, const char *  a, const char *  b);
1780
1781 unsigned int __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(struct __ecereNameSpace__ecere__sys__BinaryTree * this, struct __ecereNameSpace__ecere__sys__BTNode * node);
1782
1783 struct __ecereNameSpace__ecere__sys__BTNode * __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Find(struct __ecereNameSpace__ecere__sys__BinaryTree * this, uintptr_t key);
1784
1785 struct __ecereNameSpace__ecere__com__Application
1786 {
1787 int argc;
1788 const char * *  argv;
1789 int exitCode;
1790 unsigned int isGUIApp;
1791 struct __ecereNameSpace__ecere__sys__OldList allModules;
1792 char *  parsedCommand;
1793 struct __ecereNameSpace__ecere__com__NameSpace systemNameSpace;
1794 } ecere_gcc_struct;
1795
1796 static void __ecereNameSpace__ecere__com__NameSpace_Free(struct __ecereNameSpace__ecere__com__NameSpace * parentNameSpace)
1797 {
1798 struct __ecereNameSpace__ecere__com__NameSpace * nameSpace;
1799
1800 (__ecereNameSpace__ecere__com__eSystem_Delete((void *)parentNameSpace->name), parentNameSpace->name = 0);
1801 while((nameSpace = (struct __ecereNameSpace__ecere__com__NameSpace *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&parentNameSpace->nameSpaces)))
1802 {
1803 __ecereNameSpace__ecere__com__NameSpace_Free(nameSpace);
1804 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&parentNameSpace->nameSpaces, (struct __ecereNameSpace__ecere__sys__BTNode *)nameSpace);
1805 }
1806 }
1807
1808 static struct __ecereNameSpace__ecere__com__BTNamedLink * __ecereNameSpace__ecere__com__ScanNameSpace(struct __ecereNameSpace__ecere__com__NameSpace * nameSpace, const char * name, void * listOffset)
1809 {
1810 struct __ecereNameSpace__ecere__sys__BinaryTree * tree = (struct __ecereNameSpace__ecere__sys__BinaryTree *)((unsigned char *)nameSpace + (uintptr_t)listOffset);
1811 struct __ecereNameSpace__ecere__com__BTNamedLink * link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Find((&*tree), (uintptr_t)name);
1812 struct __ecereNameSpace__ecere__com__NameSpace * child;
1813
1814 if(!link)
1815 {
1816 for(child = (struct __ecereNameSpace__ecere__com__NameSpace *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&nameSpace->nameSpaces); child; child = (struct __ecereNameSpace__ecere__com__NameSpace *)__ecereProp___ecereNameSpace__ecere__sys__BTNode_Get_next(((struct __ecereNameSpace__ecere__sys__BTNode *)child)))
1817 {
1818 link = __ecereNameSpace__ecere__com__ScanNameSpace(child, name, listOffset);
1819 if(link)
1820 break;
1821 }
1822 }
1823 return link;
1824 }
1825
1826 struct __ecereNameSpace__ecere__com__Module
1827 {
1828 struct __ecereNameSpace__ecere__com__Instance * application;
1829 struct __ecereNameSpace__ecere__sys__OldList classes;
1830 struct __ecereNameSpace__ecere__sys__OldList defines;
1831 struct __ecereNameSpace__ecere__sys__OldList functions;
1832 struct __ecereNameSpace__ecere__sys__OldList modules;
1833 struct __ecereNameSpace__ecere__com__Instance * prev;
1834 struct __ecereNameSpace__ecere__com__Instance * next;
1835 const char *  name;
1836 void *  library;
1837 void *  Unload;
1838 int importType;
1839 int origImportType;
1840 struct __ecereNameSpace__ecere__com__NameSpace privateNameSpace;
1841 struct __ecereNameSpace__ecere__com__NameSpace publicNameSpace;
1842 } ecere_gcc_struct;
1843
1844 static struct __ecereNameSpace__ecere__com__BTNamedLink * __ecereNameSpace__ecere__com__SearchNameSpace(struct __ecereNameSpace__ecere__com__NameSpace * nameSpace, const char * name, void * listOffset)
1845 {
1846 int start = 0, c;
1847 char ch;
1848 int level = 0;
1849
1850 for(c = 0; (ch = name[c]); c++)
1851 {
1852 if(ch == '<')
1853 level++;
1854 if(ch == '>')
1855 level--;
1856 if(level == 0 && (ch == '.' || (ch == ':' && name[c + 1] == ':')))
1857 {
1858 struct __ecereNameSpace__ecere__com__NameSpace * newSpace;
1859 char * spaceName = __ecereNameSpace__ecere__com___malloc(c - start + 1);
1860
1861 memcpy(spaceName, name + start, c - start);
1862 spaceName[c - start] = '\0';
1863 newSpace = (struct __ecereNameSpace__ecere__com__NameSpace *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&nameSpace->nameSpaces, spaceName);
1864 __ecereNameSpace__ecere__com___free(spaceName);
1865 if(!newSpace)
1866 return (((void *)0));
1867 nameSpace = newSpace;
1868 if(level == 0 && ch == ':')
1869 c++;
1870 start = c + 1;
1871 }
1872 }
1873 if(c - start)
1874 {
1875 return __ecereNameSpace__ecere__com__ScanNameSpace(nameSpace, name + start, listOffset);
1876 }
1877 return (((void *)0));
1878 }
1879
1880 void __ecereUnregisterModule_instance(struct __ecereNameSpace__ecere__com__Instance * module)
1881 {
1882
1883 __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_classDesigner = (void *)0;
1884 __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_objectClass = (void *)0;
1885 __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_isDragging = (void *)0;
1886 }
1887
1888 struct __ecereNameSpace__ecere__com__DataMember;
1889
1890 struct __ecereNameSpace__ecere__com__DataMember
1891 {
1892 struct __ecereNameSpace__ecere__com__DataMember * prev, * next;
1893 const char * name;
1894 unsigned int isProperty;
1895 int memberAccess;
1896 int id;
1897 struct __ecereNameSpace__ecere__com__Class * _class;
1898 const char * dataTypeString;
1899 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
1900 struct __ecereNameSpace__ecere__com__Instance * dataType;
1901 int type;
1902 int offset;
1903 int memberID;
1904 struct __ecereNameSpace__ecere__sys__OldList members;
1905 struct __ecereNameSpace__ecere__sys__BinaryTree membersAlpha;
1906 int memberOffset;
1907 short structAlignment;
1908 short pointerAlignment;
1909 } ecere_gcc_struct;
1910
1911 struct __ecereNameSpace__ecere__com__ClassTemplateArgument
1912 {
1913 union
1914 {
1915 struct
1916 {
1917 const char * dataTypeString;
1918 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
1919 } ecere_gcc_struct __anon1;
1920 struct __ecereNameSpace__ecere__com__DataValue expression;
1921 struct
1922 {
1923 const char * memberString;
1924 union
1925 {
1926 struct __ecereNameSpace__ecere__com__DataMember * member;
1927 struct __ecereNameSpace__ecere__com__Property * prop;
1928 struct __ecereNameSpace__ecere__com__Method * method;
1929 } ecere_gcc_struct __anon1;
1930 } ecere_gcc_struct __anon2;
1931 } ecere_gcc_struct __anon1;
1932 } ecere_gcc_struct;
1933
1934 static void __ecereNameSpace__ecere__com__DataMember_Free(struct __ecereNameSpace__ecere__com__DataMember * parentMember)
1935 {
1936 struct __ecereNameSpace__ecere__com__DataMember * member;
1937 struct __ecereNameSpace__ecere__com__BTNamedLink * namedLink;
1938
1939 (__ecereNameSpace__ecere__com__eSystem_Delete((void *)parentMember->name), parentMember->name = 0);
1940 (__ecereNameSpace__ecere__com__eSystem_Delete((void *)parentMember->dataTypeString), parentMember->dataTypeString = 0);
1941 while((member = parentMember->members.first))
1942 {
1943 __ecereNameSpace__ecere__com__DataMember_Free(member);
1944 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&parentMember->members, member);
1945 }
1946 while((namedLink = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&parentMember->membersAlpha)))
1947 {
1948 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&parentMember->membersAlpha, (struct __ecereNameSpace__ecere__sys__BTNode *)namedLink);
1949 }
1950 }
1951
1952 static struct __ecereNameSpace__ecere__com__DataMember * __ecereNameSpace__ecere__com__FindDataMember(struct __ecereNameSpace__ecere__sys__OldList * list, struct __ecereNameSpace__ecere__sys__BinaryTree * alist, const char * name, unsigned int * offset, int * id, unsigned int searchPrivate, struct __ecereNameSpace__ecere__com__DataMember ** subMemberStack, int * subMemberStackPos)
1953 {
1954 struct __ecereNameSpace__ecere__com__BTNamedLink * link;
1955 struct __ecereNameSpace__ecere__com__DataMember * dataMember;
1956
1957 link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(alist, name);
1958 if(link)
1959 {
1960 dataMember = link->data;
1961 if(dataMember->type == 0 && (dataMember->memberAccess == 1 || searchPrivate || !dataMember->dataTypeString))
1962 {
1963 if(offset)
1964 *offset += dataMember->offset;
1965 if(id)
1966 *id = dataMember->id;
1967 return dataMember;
1968 }
1969 return (((void *)0));
1970 }
1971 for(dataMember = list->first; dataMember; dataMember = dataMember->next)
1972 {
1973 if(!dataMember->isProperty && (dataMember->memberAccess == 1 || searchPrivate) && !dataMember->name && (dataMember->type == 1 || dataMember->type == 2))
1974 {
1975 struct __ecereNameSpace__ecere__com__DataMember * childMember;
1976
1977 if(subMemberStackPos)
1978 subMemberStack[(*subMemberStackPos)++] = dataMember;
1979 childMember = __ecereNameSpace__ecere__com__FindDataMember(&dataMember->members, &dataMember->membersAlpha, name, offset, id, searchPrivate, subMemberStack, subMemberStackPos);
1980 if(childMember)
1981 {
1982 if(offset)
1983 *offset += dataMember->offset;
1984 if(id)
1985 *id += dataMember->id;
1986 return childMember;
1987 }
1988 if(subMemberStackPos)
1989 (*subMemberStackPos)--;
1990 }
1991 }
1992 return (((void *)0));
1993 }
1994
1995 struct __ecereNameSpace__ecere__com__DataMember * __ecereNameSpace__ecere__com__eMember_AddDataMember(struct __ecereNameSpace__ecere__com__DataMember * member, const char * name, const char * type, unsigned int size, unsigned int alignment, int declMode)
1996 {
1997 if(name && !__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&member->membersAlpha, name))
1998 {
1999 struct __ecereNameSpace__ecere__com__DataMember * dataMember;
2000
2001 if(alignment)
2002 {
2003 short __simpleStruct0;
2004 unsigned int pointerAlignment = alignment == 0xF000F000;
2005
2006 if(pointerAlignment)
2007 alignment = sizeof(void *);
2008 if(pointerAlignment && member->structAlignment <= 4)
2009 member->pointerAlignment = 1;
2010 else if(!pointerAlignment && alignment >= 8)
2011 member->pointerAlignment = 0;
2012 member->structAlignment = (__simpleStruct0 = member->structAlignment, (__simpleStruct0 > alignment) ? __simpleStruct0 : alignment);
2013 if(member->memberOffset % alignment)
2014 member->memberOffset += alignment - (member->memberOffset % alignment);
2015 }
2016 dataMember = __extension__ ({
2017 struct __ecereNameSpace__ecere__com__DataMember * __ecereInstance1 = __ecereNameSpace__ecere__com__eSystem_New0(sizeof(struct __ecereNameSpace__ecere__com__DataMember));
2018
2019 __ecereInstance1->name = __ecereNameSpace__ecere__sys__CopyString(name), __ecereInstance1->_class = member->_class, __ecereInstance1->dataTypeString = __ecereNameSpace__ecere__sys__CopyString(type), __ecereInstance1->id = member->memberID++, __ecereInstance1->offset = (member->type == 1) ? 0 : member->memberOffset, __ecereInstance1->memberAccess = declMode, __ecereInstance1->membersAlpha.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString, __ecereInstance1;
2020 });
2021 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&member->members, dataMember);
2022 if(member->type == 1)
2023 {
2024 if(size > member->memberOffset)
2025 member->memberOffset = size;
2026 }
2027 else
2028 member->memberOffset += size;
2029 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&member->membersAlpha, (struct __ecereNameSpace__ecere__sys__BTNode *)__extension__ ({
2030 struct __ecereNameSpace__ecere__com__BTNamedLink * __ecereInstance1 = __ecereNameSpace__ecere__com__eSystem_New0(sizeof(struct __ecereNameSpace__ecere__com__BTNamedLink));
2031
2032 __ecereInstance1->name = dataMember->name, __ecereInstance1->data = dataMember, __ecereInstance1;
2033 }));
2034 return dataMember;
2035 }
2036 return (((void *)0));
2037 }
2038
2039 static void __ecereNameSpace__ecere__com__SetMemberClass(struct __ecereNameSpace__ecere__com__DataMember * member, struct __ecereNameSpace__ecere__com__Class * _class)
2040 {
2041 struct __ecereNameSpace__ecere__com__DataMember * dataMember;
2042
2043 member->_class = _class;
2044 for(dataMember = member->members.first; dataMember; dataMember = dataMember->next)
2045 __ecereNameSpace__ecere__com__SetMemberClass(dataMember, _class);
2046 }
2047
2048 struct __ecereNameSpace__ecere__com__DataMember * __ecereNameSpace__ecere__com__eMember_New(int type, int declMode)
2049 {
2050 return __extension__ ({
2051 struct __ecereNameSpace__ecere__com__DataMember * __ecereInstance1 = __ecereNameSpace__ecere__com__eSystem_New0(sizeof(struct __ecereNameSpace__ecere__com__DataMember));
2052
2053 __ecereInstance1->type = type, __ecereInstance1->memberAccess = declMode, __ecereInstance1->membersAlpha.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString, __ecereInstance1;
2054 });
2055 }
2056
2057 struct __ecereNameSpace__ecere__com__Class
2058 {
2059 struct __ecereNameSpace__ecere__com__Class * prev, * next;
2060 const char * name;
2061 int offset, structSize;
2062 void ** _vTbl;
2063 int vTblSize;
2064 unsigned int (* Constructor)(void *);
2065 void (* Destructor)(void *);
2066 int offsetClass, sizeClass;
2067 struct __ecereNameSpace__ecere__com__Class * base;
2068 struct __ecereNameSpace__ecere__sys__BinaryTree methods;
2069 struct __ecereNameSpace__ecere__sys__BinaryTree members;
2070 struct __ecereNameSpace__ecere__sys__BinaryTree prop;
2071 struct __ecereNameSpace__ecere__sys__OldList membersAndProperties;
2072 struct __ecereNameSpace__ecere__sys__BinaryTree classProperties;
2073 struct __ecereNameSpace__ecere__sys__OldList derivatives;
2074 int memberID, startMemberID;
2075 int type;
2076 struct __ecereNameSpace__ecere__com__Instance * module;
2077 struct __ecereNameSpace__ecere__com__NameSpace * nameSpace;
2078 const char * dataTypeString;
2079 struct __ecereNameSpace__ecere__com__Instance * dataType;
2080 int typeSize;
2081 int defaultAlignment;
2082 void (* Initialize)();
2083 int memberOffset;
2084 struct __ecereNameSpace__ecere__sys__OldList selfWatchers;
2085 const char * designerClass;
2086 unsigned int noExpansion;
2087 const char * defaultProperty;
2088 unsigned int comRedefinition;
2089 int count;
2090 int isRemote;
2091 unsigned int internalDecl;
2092 void * data;
2093 unsigned int computeSize;
2094 short structAlignment;
2095 short pointerAlignment;
2096 int destructionWatchOffset;
2097 unsigned int fixed;
2098 struct __ecereNameSpace__ecere__sys__OldList delayedCPValues;
2099 int inheritanceAccess;
2100 const char * fullName;
2101 void * symbol;
2102 struct __ecereNameSpace__ecere__sys__OldList conversions;
2103 struct __ecereNameSpace__ecere__sys__OldList templateParams;
2104 struct __ecereNameSpace__ecere__com__ClassTemplateArgument * templateArgs;
2105 struct __ecereNameSpace__ecere__com__Class * templateClass;
2106 struct __ecereNameSpace__ecere__sys__OldList templatized;
2107 int numParams;
2108 unsigned int isInstanceClass;
2109 unsigned int byValueSystemClass;
2110 } ecere_gcc_struct;
2111
2112 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Angle;
2113
2114 static struct __ecereNameSpace__ecere__com__Class * __ecereClass_unichar;
2115
2116 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Property;
2117
2118 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__BTNamedLink;
2119
2120 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__SelfWatcher;
2121
2122 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__AccessMode;
2123
2124 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__SubModule;
2125
2126 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__DataMemberType;
2127
2128 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__ClassType;
2129
2130 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Class;
2131
2132 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__TemplateParameterType;
2133
2134 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__TemplateMemberType;
2135
2136 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__ClassTemplateArgument;
2137
2138 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__ClassTemplateParameter;
2139
2140 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__MethodType;
2141
2142 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Method;
2143
2144 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__ImportType;
2145
2146 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__NameSpace;
2147
2148 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__DataValue;
2149
2150 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__DataMember;
2151
2152 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__BitMember;
2153
2154 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__ClassProperty;
2155
2156 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__DefinedExpression;
2157
2158 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__GlobalFunction;
2159
2160 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__EnumClassData;
2161
2162 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Watcher;
2163
2164 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__MemBlock;
2165
2166 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__MemPart;
2167
2168 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__BlockPool;
2169
2170 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Platform;
2171
2172 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__ObjectInfo;
2173
2174 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__DesignerBase;
2175
2176 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__ClassDesignerBase;
2177
2178 const char * __ecereMethod_unichar_OnGetString(struct __ecereNameSpace__ecere__com__Class * class, unsigned int * this, char * tempString, void * fieldData, unsigned int * needClass)
2179 {
2180 __ecereNameSpace__ecere__sys__UTF32toUTF8Len(&(*this), 1, tempString, 5);
2181 return tempString;
2182 }
2183
2184 unsigned int __ecereMethod_unichar_OnGetDataFromString(struct __ecereNameSpace__ecere__com__Class * class, unsigned int * this, const char * string)
2185 {
2186 int nb;
2187
2188 (*this) = __ecereNameSpace__ecere__sys__UTF8GetChar(string, &nb);
2189 return 1;
2190 }
2191
2192 const char *  __ecereProp___ecereNameSpace__ecere__com__Class_Get_char__PTR_(struct __ecereNameSpace__ecere__com__Class * this)
2193 {
2194 return this->name;
2195 }
2196
2197 const char * __ecereMethod___ecereNameSpace__ecere__com__Class_OnGetString(struct __ecereNameSpace__ecere__com__Class * class, struct __ecereNameSpace__ecere__com__Class * this, char * tempString, void * fieldData, unsigned int * needClass)
2198 {
2199 return this->name;
2200 }
2201
2202 void __ecereMethod___ecereNameSpace__ecere__com__Class_OnFree(struct __ecereNameSpace__ecere__com__Class * class, struct __ecereNameSpace__ecere__com__Class * this)
2203 {
2204 }
2205
2206 static void __ecereNameSpace__ecere__com__FixDerivativeVirtualMethod(struct __ecereNameSpace__ecere__com__Class * base, const char * name, int vid, void * origFunction, const char * type)
2207 {
2208 struct __ecereNameSpace__ecere__sys__OldLink * derivative;
2209
2210 for(derivative = base->derivatives.first; derivative; derivative = derivative->next)
2211 {
2212 struct __ecereNameSpace__ecere__com__Class * _class = derivative->data;
2213 struct __ecereNameSpace__ecere__com__Method * method, * next;
2214 void * function = origFunction;
2215
2216 _class->vTblSize++;
2217 _class->_vTbl = __ecereNameSpace__ecere__com__eSystem_Renew(_class->_vTbl, sizeof(void *) * (_class->vTblSize));
2218 memmove(_class->_vTbl + vid + 1, _class->_vTbl + vid, (_class->vTblSize - vid - 1) * sizeof(void *));
2219 method = (struct __ecereNameSpace__ecere__com__Method *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&_class->methods, name);
2220 if(method)
2221 {
2222 if(method->function)
2223 function = method->function;
2224 if(!method->symbol)
2225 {
2226 (__ecereNameSpace__ecere__com__eSystem_Delete((void *)method->name), method->name = 0);
2227 (__ecereNameSpace__ecere__com__eSystem_Delete((void *)method->dataTypeString), method->dataTypeString = 0);
2228 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&_class->methods, (struct __ecereNameSpace__ecere__sys__BTNode *)method);
2229 }
2230 else
2231 {
2232 (__ecereNameSpace__ecere__com__eSystem_Delete((void *)method->dataTypeString), method->dataTypeString = 0);
2233 method->type = 1;
2234 method->dataTypeString = __ecereNameSpace__ecere__sys__CopyString(type);
2235 method->_class = base;
2236 }
2237 }
2238 for(method = (struct __ecereNameSpace__ecere__com__Method *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&_class->methods); method; method = next)
2239 {
2240 next = (struct __ecereNameSpace__ecere__com__Method *)__ecereProp___ecereNameSpace__ecere__sys__BTNode_Get_next(((struct __ecereNameSpace__ecere__sys__BTNode *)method));
2241 if(method->type == 1)
2242 method->vid++;
2243 }
2244 _class->_vTbl[vid] = function;
2245 {
2246 struct __ecereNameSpace__ecere__sys__OldLink * templateLink;
2247
2248 for(templateLink = _class->templatized.first; templateLink; templateLink = templateLink->next)
2249 {
2250 struct __ecereNameSpace__ecere__com__Class * template = templateLink->data;
2251
2252 template->_vTbl = _class->_vTbl;
2253 }
2254 }
2255 if(_class->derivatives.first || _class->templatized.first)
2256 __ecereNameSpace__ecere__com__FixDerivativeVirtualMethod(_class, name, vid, function, type);
2257 }
2258 {
2259 struct __ecereNameSpace__ecere__sys__OldLink * templateLink;
2260
2261 for(templateLink = base->templatized.first; templateLink; templateLink = templateLink->next)
2262 {
2263 struct __ecereNameSpace__ecere__com__Class * template = templateLink->data;
2264
2265 template->_vTbl = base->_vTbl;
2266 __ecereNameSpace__ecere__com__FixDerivativeVirtualMethod(template, name, vid, origFunction, type);
2267 }
2268 }
2269 }
2270
2271 static void __ecereNameSpace__ecere__com__FixDerivativeProperty(struct __ecereNameSpace__ecere__com__Class * base, struct __ecereNameSpace__ecere__com__Property * _property)
2272 {
2273 struct __ecereNameSpace__ecere__sys__OldLink * derivative;
2274
2275 for(derivative = base->derivatives.first; derivative; derivative = derivative->next)
2276 {
2277 struct __ecereNameSpace__ecere__com__Class * _class = derivative->data;
2278 struct __ecereNameSpace__ecere__com__Property * prop;
2279 struct __ecereNameSpace__ecere__com__BTNamedLink * link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&_class->prop, _property->name);
2280
2281 if(link)
2282 {
2283 prop = link->data;
2284 if(!prop->Set && !prop->Get && prop->memberAccess == 4)
2285 {
2286 struct __ecereNameSpace__ecere__com__SelfWatcher * watcher;
2287
2288 for(watcher = _class->selfWatchers.first; watcher; watcher = watcher->next)
2289 {
2290 if(watcher->_property == prop)
2291 watcher->_property = _property;
2292 }
2293 _property->selfWatchable = 1;
2294 (__ecereNameSpace__ecere__com__eSystem_Delete((void *)prop->name), prop->name = 0);
2295 (__ecereNameSpace__ecere__com__eSystem_Delete((void *)prop->dataTypeString), prop->dataTypeString = 0);
2296 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&_class->membersAndProperties, prop);
2297 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&_class->prop, (struct __ecereNameSpace__ecere__sys__BTNode *)link);
2298 }
2299 }
2300 for(prop = _class->membersAndProperties.first; prop; prop = prop->next)
2301 prop->id++;
2302 _class->memberID++;
2303 _class->startMemberID++;
2304 __ecereNameSpace__ecere__com__FixDerivativeProperty(_class, _property);
2305 }
2306 }
2307
2308 static void __ecereNameSpace__ecere__com__SetDelayedCPValues(struct __ecereNameSpace__ecere__com__Class * _class, struct __ecereNameSpace__ecere__com__ClassProperty * _property)
2309 {
2310 struct __ecereNameSpace__ecere__sys__OldLink * deriv;
2311 struct __ecereNameSpace__ecere__sys__NamedLink64 * value, * next;
2312
2313 for(value = _class->delayedCPValues.first; value; value = next)
2314 {
2315 next = value->next;
2316 if(!strcmp(value->name, _property->name))
2317 {
2318 _property->Set(_class, value->data);
2319 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&_class->delayedCPValues, value);
2320 }
2321 }
2322 for(deriv = _class->derivatives.first; deriv; deriv = deriv->next)
2323 {
2324 __ecereNameSpace__ecere__com__SetDelayedCPValues(deriv->data, _property);
2325 }
2326 }
2327
2328 struct __ecereNameSpace__ecere__com__ClassProperty * __ecereNameSpace__ecere__com__eClass_FindClassProperty(struct __ecereNameSpace__ecere__com__Class * _class, const char * name)
2329 {
2330 struct __ecereNameSpace__ecere__com__ClassProperty * _property = (((void *)0));
2331
2332 if(name && _class)
2333 {
2334 struct __ecereNameSpace__ecere__com__Class * origClass = _class;
2335
2336 for(; _class; _class = _class->base)
2337 {
2338 _property = (struct __ecereNameSpace__ecere__com__ClassProperty *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&_class->classProperties, name);
2339 if(_property)
2340 break;
2341 }
2342 if(!_property && origClass->type == 4)
2343 {
2344 struct __ecereNameSpace__ecere__com__Class * enumClass = __ecereNameSpace__ecere__com__eSystem_FindClass(origClass->module, "enum");
2345
2346 _property = __ecereNameSpace__ecere__com__eClass_FindClassProperty(enumClass, name);
2347 }
2348 }
2349 return _property;
2350 }
2351
2352 struct __ecereNameSpace__ecere__com__Method * __ecereNameSpace__ecere__com__eClass_FindMethod(struct __ecereNameSpace__ecere__com__Class * _class, const char * name, struct __ecereNameSpace__ecere__com__Instance * module)
2353 {
2354 if(_class && name)
2355 {
2356 for(; _class; _class = _class->base)
2357 {
2358 struct __ecereNameSpace__ecere__com__Method * method;
2359
2360 if(_class->templateClass)
2361 _class = _class->templateClass;
2362 method = (struct __ecereNameSpace__ecere__com__Method *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&_class->methods, name);
2363 if(method && (method->memberAccess == 1 || _class->module == module || !method->dataTypeString))
2364 {
2365 if(!method->dataTypeString)
2366 {
2367 if(_class->module != module)
2368 {
2369 if(method->memberAccess == 1)
2370 module = _class->module;
2371 else
2372 {
2373 return (((void *)0));
2374 }
2375 }
2376 }
2377 else
2378 {
2379 return method;
2380 }
2381 }
2382 if(_class->inheritanceAccess == 2 && _class->module != module)
2383 break;
2384 }
2385 }
2386 return (((void *)0));
2387 }
2388
2389 static unsigned int __ecereNameSpace__ecere__com__ConstructInstance(void * instance, struct __ecereNameSpace__ecere__com__Class * _class, struct __ecereNameSpace__ecere__com__Class * from)
2390 {
2391 if(_class->templateClass)
2392 _class = _class->templateClass;
2393 if(_class->base && from != _class->base)
2394 {
2395 if(!__ecereNameSpace__ecere__com__ConstructInstance(instance, _class->base, from))
2396 return 0;
2397 }
2398 if(_class->Initialize)
2399 {
2400 void (* Initialize)(struct __ecereNameSpace__ecere__com__Instance * module) = (void *)_class->Initialize;
2401
2402 _class->Initialize = (((void *)0));
2403 Initialize(_class->module);
2404 }
2405 if(_class->Constructor)
2406 {
2407 if(!_class->Constructor(instance))
2408 {
2409 for(; _class; _class = _class->base)
2410 {
2411 if(_class->templateClass)
2412 _class = _class->templateClass;
2413 if(_class->Destructor)
2414 _class->Destructor(instance);
2415 }
2416 return 0;
2417 }
2418 }
2419 (_class->templateClass ? _class->templateClass : _class)->count++;
2420 return 1;
2421 }
2422
2423 struct __ecereNameSpace__ecere__com__Property * __ecereNameSpace__ecere__com__eClass_FindProperty(struct __ecereNameSpace__ecere__com__Class * _class, const char * name, struct __ecereNameSpace__ecere__com__Instance * module)
2424 {
2425 if(_class && name)
2426 {
2427 if(!strncmp(name, "const ", 6))
2428 name += 6;
2429 for(; _class; _class = _class->base)
2430 {
2431 struct __ecereNameSpace__ecere__com__BTNamedLink * link;
2432
2433 if(_class->templateClass)
2434 _class = _class->templateClass;
2435 link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&_class->prop, name);
2436 if(link)
2437 {
2438 struct __ecereNameSpace__ecere__com__Property * _property = (struct __ecereNameSpace__ecere__com__Property *)link->data;
2439
2440 if(_property->memberAccess == 1 || _class->module == module || !_property->dataTypeString)
2441 {
2442 if(!_property->dataTypeString)
2443 {
2444 if(_class->module != module)
2445 {
2446 if(_property->memberAccess == 1)
2447 module = _class->module;
2448 else
2449 {
2450 return (((void *)0));
2451 }
2452 }
2453 }
2454 else
2455 {
2456 return _property;
2457 }
2458 }
2459 }
2460 if(_class->inheritanceAccess == 2 && _class->module != module)
2461 break;
2462 }
2463 }
2464 return (((void *)0));
2465 }
2466
2467 struct __ecereNameSpace__ecere__com__DataMember * __ecereNameSpace__ecere__com__eClass_FindDataMember(struct __ecereNameSpace__ecere__com__Class * _class, const char * name, struct __ecereNameSpace__ecere__com__Instance * module, struct __ecereNameSpace__ecere__com__DataMember ** subMemberStack, int * subMemberStackPos)
2468 {
2469 struct __ecereNameSpace__ecere__com__DataMember * dataMember = (((void *)0));
2470
2471 if(subMemberStackPos)
2472 *subMemberStackPos = 0;
2473 if(_class && name)
2474 {
2475 for(; _class; _class = _class->base)
2476 {
2477 if(_class->templateClass)
2478 _class = _class->templateClass;
2479 dataMember = __ecereNameSpace__ecere__com__FindDataMember(&_class->membersAndProperties, &_class->members, name, (((void *)0)), (((void *)0)), _class->module == module, subMemberStack, subMemberStackPos);
2480 if(dataMember)
2481 {
2482 if(!dataMember->dataTypeString)
2483 {
2484 if(_class->module != module)
2485 {
2486 if(dataMember->memberAccess == 1)
2487 module = _class->module;
2488 else
2489 {
2490 return (((void *)0));
2491 }
2492 }
2493 dataMember = (((void *)0));
2494 }
2495 else
2496 {
2497 dataMember->_class = _class->templateClass ? _class->templateClass : _class;
2498 return dataMember;
2499 }
2500 }
2501 if(_class->inheritanceAccess == 2 && _class->module != module)
2502 break;
2503 }
2504 }
2505 return dataMember;
2506 }
2507
2508 struct __ecereNameSpace__ecere__com__DataMember * __ecereNameSpace__ecere__com__eClass_FindDataMemberAndOffset(struct __ecereNameSpace__ecere__com__Class * _class, const char * name, unsigned int * offset, struct __ecereNameSpace__ecere__com__Instance * module, struct __ecereNameSpace__ecere__com__DataMember ** subMemberStack, int * subMemberStackPos)
2509 {
2510 struct __ecereNameSpace__ecere__com__DataMember * dataMember = (((void *)0));
2511
2512 if(subMemberStackPos)
2513 *subMemberStackPos = 0;
2514 if(offset)
2515 *offset = 0;
2516 if(_class)
2517 {
2518 for(; _class; _class = _class->base)
2519 {
2520 if(_class->templateClass)
2521 _class = _class->templateClass;
2522 dataMember = __ecereNameSpace__ecere__com__FindDataMember(&_class->membersAndProperties, &_class->members, name, offset, (((void *)0)), _class->module == module, subMemberStack, subMemberStackPos);
2523 if(dataMember)
2524 {
2525 if(!dataMember->dataTypeString)
2526 {
2527 if(_class->module != module)
2528 {
2529 if(dataMember->memberAccess == 1)
2530 module = _class->module;
2531 else
2532 {
2533 return (((void *)0));
2534 }
2535 }
2536 dataMember = (((void *)0));
2537 }
2538 else
2539 {
2540 dataMember->_class = _class;
2541 return dataMember;
2542 }
2543 }
2544 if(_class->inheritanceAccess == 2 && _class->module != module)
2545 break;
2546 }
2547 }
2548 return dataMember;
2549 }
2550
2551 struct __ecereNameSpace__ecere__com__DataMember * __ecereNameSpace__ecere__com__eClass_FindDataMemberAndId(struct __ecereNameSpace__ecere__com__Class * _class, const char * name, int * id, struct __ecereNameSpace__ecere__com__Instance * module, struct __ecereNameSpace__ecere__com__DataMember ** subMemberStack, int * subMemberStackPos)
2552 {
2553 struct __ecereNameSpace__ecere__com__DataMember * dataMember = (((void *)0));
2554
2555 if(subMemberStackPos)
2556 *subMemberStackPos = 0;
2557 if(_class)
2558 {
2559 for(; _class; _class = _class->base)
2560 {
2561 if(_class->templateClass)
2562 _class = _class->templateClass;
2563 dataMember = __ecereNameSpace__ecere__com__FindDataMember(&_class->membersAndProperties, &_class->members, name, (((void *)0)), id, _class->module == module, subMemberStack, subMemberStackPos);
2564 if(dataMember)
2565 {
2566 if(!dataMember->dataTypeString)
2567 {
2568 if(_class->module != module)
2569 {
2570 if(dataMember->memberAccess == 1)
2571 module = _class->module;
2572 else
2573 {
2574 return (((void *)0));
2575 }
2576 }
2577 dataMember = (((void *)0));
2578 }
2579 else
2580 {
2581 dataMember->_class = _class;
2582 return dataMember;
2583 }
2584 }
2585 if(_class->inheritanceAccess == 2 && _class->module != module)
2586 break;
2587 }
2588 }
2589 return dataMember;
2590 }
2591
2592 static void __ecereNameSpace__ecere__com__FixOffsets(struct __ecereNameSpace__ecere__com__Class * _class)
2593 {
2594 struct __ecereNameSpace__ecere__sys__OldLink * deriv;
2595
2596 _class->structSize += _class->base->structSize - _class->offset;
2597 _class->offset = _class->base->structSize;
2598 for(deriv = _class->derivatives.first; deriv; deriv = deriv->next)
2599 __ecereNameSpace__ecere__com__FixOffsets(deriv->data);
2600 }
2601
2602 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)
2603 {
2604 if(_class && name)
2605 {
2606 if(!__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&_class->members, name))
2607 {
2608 struct __ecereNameSpace__ecere__com__DataMember * dataMember;
2609
2610 if(alignment)
2611 {
2612 short __simpleStruct0;
2613 unsigned int pointerAlignment = alignment == 0xF000F000;
2614
2615 if(pointerAlignment)
2616 alignment = sizeof(void *);
2617 if(pointerAlignment && _class->structAlignment <= 4)
2618 _class->pointerAlignment = 1;
2619 else if(!pointerAlignment && alignment >= 8)
2620 _class->pointerAlignment = 0;
2621 _class->structAlignment = (__simpleStruct0 = _class->structAlignment, (__simpleStruct0 > alignment) ? __simpleStruct0 : alignment);
2622 if(_class->memberOffset % alignment)
2623 _class->memberOffset += alignment - (_class->memberOffset % alignment);
2624 }
2625 dataMember = __extension__ ({
2626 struct __ecereNameSpace__ecere__com__DataMember * __ecereInstance1 = __ecereNameSpace__ecere__com__eSystem_New0(sizeof(struct __ecereNameSpace__ecere__com__DataMember));
2627
2628 __ecereInstance1->name = __ecereNameSpace__ecere__sys__CopyString(name), __ecereInstance1->dataTypeString = __ecereNameSpace__ecere__sys__CopyString(type), __ecereInstance1->id = _class->memberID++, __ecereInstance1->_class = _class, __ecereInstance1->offset = _class->memberOffset, __ecereInstance1->memberOffset = size, __ecereInstance1->memberAccess = declMode, __ecereInstance1->membersAlpha.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString, __ecereInstance1;
2629 });
2630 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&_class->membersAndProperties, dataMember);
2631 _class->memberOffset += size;
2632 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&_class->members, (struct __ecereNameSpace__ecere__sys__BTNode *)__extension__ ({
2633 struct __ecereNameSpace__ecere__com__BTNamedLink * __ecereInstance1 = __ecereNameSpace__ecere__com__eSystem_New0(sizeof(struct __ecereNameSpace__ecere__com__BTNamedLink));
2634
2635 __ecereInstance1->name = dataMember->name, __ecereInstance1->data = dataMember, __ecereInstance1;
2636 }));
2637 return dataMember;
2638 }
2639 }
2640 return (((void *)0));
2641 }
2642
2643 void __ecereNameSpace__ecere__com__eEnum_AddFixedValue(struct __ecereNameSpace__ecere__com__Class * _class, const char * string, long long value)
2644 {
2645 if(_class && _class->type == 4)
2646 {
2647 struct __ecereNameSpace__ecere__com__EnumClassData * data = (struct __ecereNameSpace__ecere__com__EnumClassData *)_class->data;
2648 struct __ecereNameSpace__ecere__sys__NamedLink64 * item;
2649
2650 for(item = data->values.first; item; item = item->next)
2651 if(!strcmp(item->name, string))
2652 break;
2653 if(!item)
2654 {
2655 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&data->values, __extension__ ({
2656 struct __ecereNameSpace__ecere__sys__NamedLink64 * __ecereInstance1 = __ecereNameSpace__ecere__com__eSystem_New0(sizeof(struct __ecereNameSpace__ecere__sys__NamedLink64));
2657
2658 __ecereInstance1->data = value, __ecereInstance1->name = __ecereNameSpace__ecere__sys__CopyString(string), __ecereInstance1;
2659 }));
2660 if(value > data->largest)
2661 data->largest = value;
2662 }
2663 }
2664 }
2665
2666 long long __ecereNameSpace__ecere__com__eEnum_AddValue(struct __ecereNameSpace__ecere__com__Class * _class, const char * string)
2667 {
2668 if(_class && _class->type == 4)
2669 {
2670 struct __ecereNameSpace__ecere__com__EnumClassData * data = (struct __ecereNameSpace__ecere__com__EnumClassData *)_class->data;
2671 long long value = data->largest + 1;
2672 struct __ecereNameSpace__ecere__sys__NamedLink64 * item;
2673
2674 for(item = data->values.first; item; item = item->next)
2675 if(!strcmp(item->name, string))
2676 break;
2677 if(!item)
2678 {
2679 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&data->values, __extension__ ({
2680 struct __ecereNameSpace__ecere__sys__NamedLink64 * __ecereInstance1 = __ecereNameSpace__ecere__com__eSystem_New0(sizeof(struct __ecereNameSpace__ecere__sys__NamedLink64));
2681
2682 __ecereInstance1->data = value, __ecereInstance1->name = __ecereNameSpace__ecere__sys__CopyString(string), __ecereInstance1;
2683 }));
2684 if(value > data->largest)
2685 data->largest = value;
2686 return value;
2687 }
2688 }
2689 return -1;
2690 }
2691
2692 static long long __ecereNameSpace__ecere__com__GetEnumSize(struct __ecereNameSpace__ecere__com__Class * _class)
2693 {
2694 struct __ecereNameSpace__ecere__com__EnumClassData * data = (struct __ecereNameSpace__ecere__com__EnumClassData *)_class->data;
2695
2696 return data->largest + 1;
2697 }
2698
2699 struct __ecereNameSpace__ecere__com__Class * __ecereNameSpace__ecere__com__eClass_GetDesigner(struct __ecereNameSpace__ecere__com__Class * _class)
2700 {
2701 for(; _class; _class = _class->base)
2702 {
2703 if(_class->designerClass)
2704 return (struct __ecereNameSpace__ecere__com__Class *)__ecereNameSpace__ecere__com__eSystem_FindClass(_class->module, _class->designerClass);
2705 }
2706 return (((void *)0));
2707 }
2708
2709 const char * __ecereMethod___ecereNameSpace__ecere__com__Platform_OnGetString(struct __ecereNameSpace__ecere__com__Class * class, int * this, char * tempString, void * fieldData, unsigned int * needClass)
2710 {
2711 if((*this) >= __ecereNameSpace__ecere__com__firstPlatform && (*this) <= __ecereNameSpace__ecere__com__lastPlatform)
2712 {
2713 if(tempString)
2714 strcpy(tempString, __ecereNameSpace__ecere__com__platformNames[*(int *)this]);
2715 return __ecereNameSpace__ecere__com__platformNames[*(int *)this];
2716 }
2717 if(tempString && tempString[0])
2718 tempString[0] = '\0';
2719 return (((void *)0));
2720 }
2721
2722 unsigned int __ecereMethod___ecereNameSpace__ecere__com__Platform_OnGetDataFromString(struct __ecereNameSpace__ecere__com__Class * class, int * this, const char * string)
2723 {
2724 (*this) = __ecereProp___ecereNameSpace__ecere__com__Platform_Set_char__PTR_(string);
2725 return (*this) != 0;
2726 }
2727
2728 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__OldLink;
2729
2730 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Module;
2731
2732 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_char__PTR_;
2733
2734 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_String;
2735
2736 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Application;
2737
2738 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Instance;
2739
2740 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)
2741 {
2742 if(_class && !_class->comRedefinition && name)
2743 {
2744 struct __ecereNameSpace__ecere__com__Class * base;
2745
2746 for(base = _class; base; base = base->base)
2747 {
2748 struct __ecereNameSpace__ecere__com__Method * method;
2749
2750 if(base->templateClass)
2751 base = base->templateClass;
2752 method = (struct __ecereNameSpace__ecere__com__Method *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&base->methods, name);
2753 if(method)
2754 {
2755 if(method->type == 1)
2756 {
2757 struct __ecereNameSpace__ecere__sys__OldLink * deriv;
2758 void * oldFunction = _class->_vTbl[method->vid];
2759
2760 if(method->vid >= _class->vTblSize)
2761 printf("error: virtual methods overriding failure\n");
2762 else
2763 _class->_vTbl[method->vid] = function ? function : (void *)__ecereNameSpace__ecere__com__DefaultFunction;
2764 for(deriv = _class->derivatives.first; deriv; deriv = deriv->next)
2765 {
2766 struct __ecereNameSpace__ecere__com__Class * derivClass = deriv->data;
2767
2768 if(derivClass->_vTbl[method->vid] == oldFunction)
2769 __ecereNameSpace__ecere__com__eClass_AddMethod(derivClass, name, type, function, declMode);
2770 }
2771 {
2772 struct __ecereNameSpace__ecere__sys__OldLink * templateLink;
2773
2774 for(templateLink = _class->templatized.first; templateLink; templateLink = templateLink->next)
2775 {
2776 struct __ecereNameSpace__ecere__com__Class * template = templateLink->data;
2777
2778 for(deriv = template->derivatives.first; deriv; deriv = deriv->next)
2779 {
2780 struct __ecereNameSpace__ecere__com__Class * derivClass = deriv->data;
2781
2782 if(derivClass->_vTbl[method->vid] == oldFunction)
2783 __ecereNameSpace__ecere__com__eClass_AddMethod(derivClass, name, type, function, declMode);
2784 }
2785 }
2786 }
2787 }
2788 else
2789 {
2790 if(base == _class)
2791 {
2792 break;
2793 }
2794 base = (((void *)0));
2795 break;
2796 }
2797 return method;
2798 }
2799 }
2800 if(!base)
2801 {
2802 struct __ecereNameSpace__ecere__com__Method * method = (method = __ecereNameSpace__ecere__com__eSystem_New0(sizeof(struct __ecereNameSpace__ecere__com__Method)), method->name = __ecereNameSpace__ecere__sys__CopyString(name), method->function = function ? function : (void *)(__ecereNameSpace__ecere__com__DefaultFunction), method->_class = _class, method->dataTypeString = __ecereNameSpace__ecere__sys__CopyString(type), method->memberAccess = declMode, method);
2803
2804 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&_class->methods, (struct __ecereNameSpace__ecere__sys__BTNode *)method);
2805 return method;
2806 }
2807 }
2808 return (((void *)0));
2809 }
2810
2811 unsigned int __ecereNameSpace__ecere__com__eMember_AddMember(struct __ecereNameSpace__ecere__com__DataMember * addTo, struct __ecereNameSpace__ecere__com__DataMember * dataMember)
2812 {
2813 short __simpleStruct0, __simpleStruct1;
2814
2815 if(dataMember->name && __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&addTo->membersAlpha, dataMember->name))
2816 {
2817 __ecereNameSpace__ecere__com__DataMember_Free(dataMember);
2818 ((dataMember ? (__ecereClass___ecereNameSpace__ecere__com__DataMember->Destructor ? __ecereClass___ecereNameSpace__ecere__com__DataMember->Destructor((void *)dataMember) : 0, __ecereNameSpace__ecere__com__eSystem_Delete(dataMember)) : 0), dataMember = 0);
2819 return 0;
2820 }
2821 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&addTo->members, dataMember);
2822 if(dataMember->name)
2823 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&addTo->membersAlpha, (struct __ecereNameSpace__ecere__sys__BTNode *)__extension__ ({
2824 struct __ecereNameSpace__ecere__com__BTNamedLink * __ecereInstance1 = __ecereNameSpace__ecere__com__eSystem_New0(sizeof(struct __ecereNameSpace__ecere__com__BTNamedLink));
2825
2826 __ecereInstance1->name = dataMember->name, __ecereInstance1->data = dataMember, __ecereInstance1;
2827 }));
2828 dataMember->_class = addTo->_class;
2829 dataMember->id = addTo->memberID;
2830 if(dataMember->type == 1)
2831 addTo->memberID += 1;
2832 else
2833 addTo->memberID += dataMember->memberID;
2834 if(dataMember->pointerAlignment && dataMember->structAlignment <= 4)
2835 addTo->pointerAlignment = 1;
2836 else if(!dataMember->pointerAlignment && dataMember->structAlignment >= 8)
2837 addTo->pointerAlignment = 0;
2838 addTo->structAlignment = (__simpleStruct0 = addTo->structAlignment, __simpleStruct1 = dataMember->structAlignment, (__simpleStruct0 > __simpleStruct1) ? __simpleStruct0 : __simpleStruct1);
2839 dataMember->offset = (addTo->type == 1) ? 0 : addTo->memberOffset;
2840 if(dataMember->structAlignment)
2841 {
2842 if(addTo->memberOffset % dataMember->structAlignment)
2843 addTo->memberOffset += dataMember->structAlignment - (addTo->memberOffset % dataMember->structAlignment);
2844 }
2845 if(addTo->type == 1)
2846 {
2847 if(dataMember->memberOffset > addTo->memberOffset)
2848 addTo->memberOffset = dataMember->memberOffset;
2849 }
2850 else
2851 addTo->memberOffset += dataMember->memberOffset;
2852 return 1;
2853 }
2854
2855 unsigned int __ecereNameSpace__ecere__com__eClass_AddMember(struct __ecereNameSpace__ecere__com__Class * _class, struct __ecereNameSpace__ecere__com__DataMember * dataMember)
2856 {
2857 short __simpleStruct0, __simpleStruct1;
2858
2859 if(!_class || _class->comRedefinition || (dataMember->name && __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&_class->members, dataMember->name)))
2860 {
2861 __ecereNameSpace__ecere__com__DataMember_Free(dataMember);
2862 ((dataMember ? (__ecereClass___ecereNameSpace__ecere__com__DataMember->Destructor ? __ecereClass___ecereNameSpace__ecere__com__DataMember->Destructor((void *)dataMember) : 0, __ecereNameSpace__ecere__com__eSystem_Delete(dataMember)) : 0), dataMember = 0);
2863 return 0;
2864 }
2865 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&_class->membersAndProperties, dataMember);
2866 if(dataMember->name)
2867 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&_class->members, (struct __ecereNameSpace__ecere__sys__BTNode *)__extension__ ({
2868 struct __ecereNameSpace__ecere__com__BTNamedLink * __ecereInstance1 = __ecereNameSpace__ecere__com__eSystem_New0(sizeof(struct __ecereNameSpace__ecere__com__BTNamedLink));
2869
2870 __ecereInstance1->name = dataMember->name, __ecereInstance1->data = dataMember, __ecereInstance1;
2871 }));
2872 __ecereNameSpace__ecere__com__SetMemberClass(dataMember, _class);
2873 dataMember->id = _class->memberID;
2874 if(dataMember->pointerAlignment && dataMember->structAlignment <= 4)
2875 _class->pointerAlignment = 1;
2876 else if(!dataMember->pointerAlignment && dataMember->structAlignment >= 8)
2877 _class->pointerAlignment = 0;
2878 _class->structAlignment = (__simpleStruct0 = _class->structAlignment, __simpleStruct1 = dataMember->structAlignment, (__simpleStruct0 > __simpleStruct1) ? __simpleStruct0 : __simpleStruct1);
2879 if(dataMember->type == 1)
2880 _class->memberID += 1;
2881 else
2882 _class->memberID += dataMember->memberID;
2883 if(dataMember->structAlignment)
2884 {
2885 if(_class->memberOffset % dataMember->structAlignment)
2886 _class->memberOffset += dataMember->structAlignment - (_class->memberOffset % dataMember->structAlignment);
2887 }
2888 dataMember->offset = _class->memberOffset;
2889 _class->memberOffset += dataMember->memberOffset;
2890 return 1;
2891 }
2892
2893 struct __ecereNameSpace__ecere__com__BitMember * __ecereNameSpace__ecere__com__eClass_AddBitMember(struct __ecereNameSpace__ecere__com__Class * _class, const char * name, const char * type, int bitSize, int bitPos, int declMode)
2894 {
2895 if(_class && name && !__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&_class->members, name))
2896 {
2897 uint64 mask = 0;
2898 int c;
2899 struct __ecereNameSpace__ecere__com__BitMember * bitMember = (bitMember = __ecereNameSpace__ecere__com__eSystem_New0(sizeof(struct __ecereNameSpace__ecere__com__BitMember)), bitMember->name = __ecereNameSpace__ecere__sys__CopyString(name), bitMember->_class = _class, bitMember->dataTypeString = __ecereNameSpace__ecere__sys__CopyString(type), bitMember->id = _class->memberID++, bitMember->memberAccess = declMode, bitMember);
2900
2901 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&_class->membersAndProperties, bitMember);
2902 if(bitSize)
2903 {
2904 bitMember->pos = (bitPos == -1) ? _class->memberOffset : bitPos;
2905 bitMember->size = bitSize;
2906 _class->memberOffset = bitMember->pos + bitMember->size;
2907 for(c = 0; c < bitSize; c++)
2908 {
2909 if(c)
2910 mask <<= 1;
2911 mask |= 1;
2912 }
2913 bitMember->mask = mask << bitMember->pos;
2914 }
2915 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&_class->members, (struct __ecereNameSpace__ecere__sys__BTNode *)__extension__ ({
2916 struct __ecereNameSpace__ecere__com__BTNamedLink * __ecereInstance1 = __ecereNameSpace__ecere__com__eSystem_New0(sizeof(struct __ecereNameSpace__ecere__com__BTNamedLink));
2917
2918 __ecereInstance1->name = bitMember->name, __ecereInstance1->data = bitMember, __ecereInstance1;
2919 }));
2920 return bitMember;
2921 }
2922 return (((void *)0));
2923 }
2924
2925 const char *  __ecereProp___ecereNameSpace__ecere__com__Platform_Get_char__PTR_(int this)
2926 {
2927 return ((const char *  (*)(struct __ecereNameSpace__ecere__com__Class *, const void *, char *  tempString, void *  fieldData, unsigned int *  needClass))__ecereClass___ecereNameSpace__ecere__com__Platform->_vTbl[__ecereVMethodID_class_OnGetString])(__ecereClass___ecereNameSpace__ecere__com__Platform, (void *)&this, (((void *)0)), (((void *)0)), (((void *)0)));
2928 }
2929
2930 struct __ecereNameSpace__ecere__com__Instance * __ecereProp___ecereNameSpace__ecere__com__DesignerBase_Get_classDesigner(struct __ecereNameSpace__ecere__com__Instance * this)
2931 {
2932 __attribute__((unused)) struct __ecereNameSpace__ecere__com__DesignerBase * __ecerePointer___ecereNameSpace__ecere__com__DesignerBase = (struct __ecereNameSpace__ecere__com__DesignerBase *)(this ? (((char *)this) + __ecereClass___ecereNameSpace__ecere__com__DesignerBase->offset) : 0);
2933
2934 return __ecerePointer___ecereNameSpace__ecere__com__DesignerBase->classDesigner;
2935 }
2936
2937 const char *  __ecereProp___ecereNameSpace__ecere__com__DesignerBase_Get_objectClass(struct __ecereNameSpace__ecere__com__Instance * this)
2938 {
2939 __attribute__((unused)) struct __ecereNameSpace__ecere__com__DesignerBase * __ecerePointer___ecereNameSpace__ecere__com__DesignerBase = (struct __ecereNameSpace__ecere__com__DesignerBase *)(this ? (((char *)this) + __ecereClass___ecereNameSpace__ecere__com__DesignerBase->offset) : 0);
2940
2941 return __ecerePointer___ecereNameSpace__ecere__com__DesignerBase->objectClass;
2942 }
2943
2944 unsigned int __ecereProp___ecereNameSpace__ecere__com__DesignerBase_Get_isDragging(struct __ecereNameSpace__ecere__com__Instance * this)
2945 {
2946 __attribute__((unused)) struct __ecereNameSpace__ecere__com__DesignerBase * __ecerePointer___ecereNameSpace__ecere__com__DesignerBase = (struct __ecereNameSpace__ecere__com__DesignerBase *)(this ? (((char *)this) + __ecereClass___ecereNameSpace__ecere__com__DesignerBase->offset) : 0);
2947
2948 return __ecerePointer___ecereNameSpace__ecere__com__DesignerBase->isDragging;
2949 }
2950
2951 struct __ecereNameSpace__ecere__com__Method * __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(struct __ecereNameSpace__ecere__com__Class * _class, const char * name, const char * type, void * function, int declMode)
2952 {
2953 if(_class && !_class->comRedefinition && name)
2954 {
2955 struct __ecereNameSpace__ecere__com__Class * base;
2956
2957 for(base = _class; base; base = base->base)
2958 {
2959 struct __ecereNameSpace__ecere__com__Method * method = (struct __ecereNameSpace__ecere__com__Method *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&base->methods, name);
2960
2961 if(method)
2962 {
2963 if(method->type == 1)
2964 {
2965 if(method->vid >= _class->vTblSize)
2966 printf("error: virtual methods overriding failure\n");
2967 else
2968 _class->_vTbl[method->vid] = function ? function : (void *)__ecereNameSpace__ecere__com__DefaultFunction;
2969 }
2970 else
2971 base = (((void *)0));
2972 return method;
2973 }
2974 }
2975 if(!base)
2976 {
2977 struct __ecereNameSpace__ecere__com__Method * method = (method = __ecereNameSpace__ecere__com__eSystem_New0(sizeof(struct __ecereNameSpace__ecere__com__Method)), method->name = __ecereNameSpace__ecere__sys__CopyString(name), method->function = function ? function : (void *)(__ecereNameSpace__ecere__com__DefaultFunction), method->type = 1, method->_class = _class, method->vid = _class->vTblSize++, method->dataTypeString = __ecereNameSpace__ecere__sys__CopyString(type), method->memberAccess = declMode, method);
2978
2979 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&_class->methods, (struct __ecereNameSpace__ecere__sys__BTNode *)method);
2980 _class->_vTbl = __ecereNameSpace__ecere__com__eSystem_Renew(_class->_vTbl, sizeof(void *) * (_class->vTblSize));
2981 _class->_vTbl[method->vid] = function ? function : (void *)__ecereNameSpace__ecere__com__DefaultFunction;
2982 if(_class->derivatives.first || _class->templatized.first)
2983 __ecereNameSpace__ecere__com__FixDerivativeVirtualMethod(_class, name, method->vid, function ? function : (void *)__ecereNameSpace__ecere__com__DefaultFunction, type);
2984 return method;
2985 }
2986 }
2987 return (((void *)0));
2988 }
2989
2990 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)
2991 {
2992 struct __ecereNameSpace__ecere__com__Property * _property = (((void *)0));
2993
2994 if(_class)
2995 {
2996 struct __ecereNameSpace__ecere__com__BTNamedLink * link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&_class->prop, name ? name : dataType);
2997 unsigned int isConversion = name ? 0 : 1;
2998
2999 if(!name && dataType && !strncmp(dataType, "const ", 6))
3000 {
3001 name = dataType + 6;
3002 isConversion = 1;
3003 }
3004 if(link)
3005 _property = link->data;
3006 if(!_property)
3007 {
3008 _property = __extension__ ({
3009 struct __ecereNameSpace__ecere__com__Property * __ecereInstance1 = __ecereNameSpace__ecere__com__eSystem_New0(sizeof(struct __ecereNameSpace__ecere__com__Property));
3010
3011 __ecereInstance1->isProperty = 1, __ecereInstance1->name = __ecereNameSpace__ecere__sys__CopyString(name ? name : dataType), __ecereInstance1->id = (name && (setStmt || getStmt || dataType)) ? _class->memberID++ : 0, __ecereInstance1->Set = setStmt, __ecereInstance1->Get = getStmt, __ecereInstance1->dataTypeString = __ecereNameSpace__ecere__sys__CopyString(dataType), __ecereInstance1->_class = _class, __ecereInstance1->compiled = 1, __ecereInstance1->conversion = isConversion, __ecereInstance1->memberAccess = declMode, __ecereInstance1;
3012 });
3013 if(!isConversion)
3014 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&_class->membersAndProperties, _property);
3015 else
3016 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&_class->conversions, _property);
3017 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&_class->prop, (struct __ecereNameSpace__ecere__sys__BTNode *)__extension__ ({
3018 struct __ecereNameSpace__ecere__com__BTNamedLink * __ecereInstance1 = __ecereNameSpace__ecere__com__eSystem_New0(sizeof(struct __ecereNameSpace__ecere__com__BTNamedLink));
3019
3020 __ecereInstance1->name = _property->name, __ecereInstance1->data = _property, __ecereInstance1;
3021 }));
3022 if(!_property->conversion)
3023 {
3024 __ecereNameSpace__ecere__com__FixDerivativeProperty(_class, _property);
3025 }
3026 }
3027 }
3028 return _property;
3029 }
3030
3031 struct __ecereNameSpace__ecere__com__ClassProperty * __ecereNameSpace__ecere__com__eClass_AddClassProperty(struct __ecereNameSpace__ecere__com__Class * _class, const char * name, const char * dataType, void * setStmt, void * getStmt)
3032 {
3033 if(name && !__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&_class->classProperties, name))
3034 {
3035 struct __ecereNameSpace__ecere__com__ClassProperty * _property = (_property = __ecereNameSpace__ecere__com__eSystem_New0(sizeof(struct __ecereNameSpace__ecere__com__ClassProperty)), _property->name = __ecereNameSpace__ecere__sys__CopyString(name), _property->Set = setStmt, _property->Get = getStmt, _property->dataTypeString = __ecereNameSpace__ecere__sys__CopyString(dataType), _property);
3036
3037 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&_class->classProperties, (struct __ecereNameSpace__ecere__sys__BTNode *)_property);
3038 __ecereNameSpace__ecere__com__SetDelayedCPValues(_class, _property);
3039 return _property;
3040 }
3041 return (((void *)0));
3042 }
3043
3044 long long __ecereNameSpace__ecere__com__eClass_GetProperty(struct __ecereNameSpace__ecere__com__Class * _class, const char * name)
3045 {
3046 struct __ecereNameSpace__ecere__com__ClassProperty * _property = __ecereNameSpace__ecere__com__eClass_FindClassProperty(_class, name);
3047
3048 if(_property && _property->Get && _property->Get != (void *)1)
3049 {
3050 long long result = _property->Get(_class);
3051
3052 return result;
3053 }
3054 return 0;
3055 }
3056
3057 void __ecereNameSpace__ecere__com__eClass_SetProperty(struct __ecereNameSpace__ecere__com__Class * _class, const char * name, long long value)
3058 {
3059 struct __ecereNameSpace__ecere__com__ClassProperty * _property = __ecereNameSpace__ecere__com__eClass_FindClassProperty(_class, name);
3060
3061 if(_property)
3062 {
3063 if(_property->Set)
3064 ((void (*)(void *, long long))_property->Set)(_class, value);
3065 }
3066 else
3067 {
3068 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&_class->delayedCPValues, __extension__ ({
3069 struct __ecereNameSpace__ecere__sys__NamedLink64 * __ecereInstance1 = __ecereNameSpace__ecere__com__eSystem_New0(sizeof(struct __ecereNameSpace__ecere__sys__NamedLink64));
3070
3071 __ecereInstance1->name = (char *)name, __ecereInstance1->data = value, __ecereInstance1;
3072 }));
3073 }
3074 }
3075
3076 void __ecereNameSpace__ecere__com__eClass_FindNextMember(struct __ecereNameSpace__ecere__com__Class * _class, struct __ecereNameSpace__ecere__com__Class ** curClass, struct __ecereNameSpace__ecere__com__DataMember ** curMember, struct __ecereNameSpace__ecere__com__DataMember ** subMemberStack, int * subMemberStackPos)
3077 {
3078 if(*curMember)
3079 {
3080 *curMember = (*curMember)->next;
3081 if(subMemberStackPos && *subMemberStackPos > 0 && subMemberStack[*subMemberStackPos - 1]->type == 1)
3082 {
3083 *curMember = subMemberStack[--(*subMemberStackPos)];
3084 *curMember = (*curMember)->next;
3085 }
3086 if(subMemberStackPos && *subMemberStackPos > 0)
3087 {
3088 while(*curMember && ((*curMember)->memberAccess == 2))
3089 *curMember = (*curMember)->next;
3090 }
3091 else
3092 while(*curMember && (*curMember)->name)
3093 {
3094 struct __ecereNameSpace__ecere__com__DataMember * dataMember = __ecereNameSpace__ecere__com__eClass_FindDataMember(_class, (*curMember)->name, (((void *)0)), (((void *)0)), (((void *)0)));
3095
3096 if(!dataMember)
3097 dataMember = (struct __ecereNameSpace__ecere__com__DataMember *)__ecereNameSpace__ecere__com__eClass_FindProperty(_class, (*curMember)->name, (((void *)0)));
3098 if(dataMember && dataMember->memberAccess != 2)
3099 {
3100 *curMember = dataMember;
3101 break;
3102 }
3103 else
3104 *curMember = (*curMember)->next;
3105 }
3106 if(subMemberStackPos)
3107 {
3108 while((*curMember) && !(*curMember)->isProperty && !(*curMember)->name && ((*curMember)->type == 2 || (*curMember)->type == 1))
3109 {
3110 subMemberStack[(*subMemberStackPos)++] = *curMember;
3111 *curMember = (*curMember)->members.first;
3112 while(*curMember && ((*curMember)->memberAccess == 2))
3113 *curMember = (*curMember)->next;
3114 }
3115 }
3116 }
3117 while(!*curMember)
3118 {
3119 if(!*curMember)
3120 {
3121 if(subMemberStackPos && *subMemberStackPos)
3122 {
3123 *curMember = subMemberStack[--(*subMemberStackPos)];
3124 *curMember = (*curMember)->next;
3125 }
3126 else
3127 {
3128 struct __ecereNameSpace__ecere__com__Class * lastCurClass = *curClass;
3129
3130 if(*curClass == _class)
3131 break;
3132 for(*curClass = _class; (*curClass)->base != lastCurClass && (*curClass)->base->type != 1000 && (*curClass)->inheritanceAccess != 2; *curClass = (*curClass)->base)
3133 ;
3134 *curMember = (*curClass)->membersAndProperties.first;
3135 }
3136 if(subMemberStackPos && *subMemberStackPos > 0)
3137 {
3138 while(*curMember && ((*curMember)->memberAccess == 2))
3139 *curMember = (*curMember)->next;
3140 }
3141 else
3142 while(*curMember && (*curMember)->name)
3143 {
3144 struct __ecereNameSpace__ecere__com__DataMember * dataMember = (((void *)0));
3145
3146 if(((*curMember)->memberAccess != 2))
3147 {
3148 dataMember = __ecereNameSpace__ecere__com__eClass_FindDataMember(_class, (*curMember)->name, (((void *)0)), (((void *)0)), (((void *)0)));
3149 if(!dataMember)
3150 dataMember = (struct __ecereNameSpace__ecere__com__DataMember *)__ecereNameSpace__ecere__com__eClass_FindProperty(_class, (*curMember)->name, (((void *)0)));
3151 }
3152 if(dataMember && dataMember->memberAccess != 2 && dataMember->id >= 0)
3153 {
3154 *curMember = dataMember;
3155 break;
3156 }
3157 else
3158 *curMember = (*curMember)->next;
3159 }
3160 if(subMemberStackPos)
3161 {
3162 while((*curMember) && !(*curMember)->isProperty && !(*curMember)->name && ((*curMember)->type == 2 || (*curMember)->type == 1))
3163 {
3164 subMemberStack[(*subMemberStackPos)++] = *curMember;
3165 *curMember = (*curMember)->members.first;
3166 while(*curMember && (*curMember)->memberAccess == 2)
3167 *curMember = (*curMember)->next;
3168 }
3169 }
3170 }
3171 }
3172 }
3173
3174 void __ecereNameSpace__ecere__com__eClass_Resize(struct __ecereNameSpace__ecere__com__Class * _class, int newSize)
3175 {
3176 struct __ecereNameSpace__ecere__sys__OldLink * deriv;
3177
3178 _class->structSize = newSize;
3179 for(deriv = _class->derivatives.first; deriv; deriv = deriv->next)
3180 __ecereNameSpace__ecere__com__FixOffsets(deriv->data);
3181 }
3182
3183 unsigned int __ecereMethod___ecereNameSpace__ecere__com__Class_OnGetDataFromString(struct __ecereNameSpace__ecere__com__Class * class, struct __ecereNameSpace__ecere__com__Class ** this, const char * string)
3184 {
3185 struct __ecereNameSpace__ecere__com__Class * theClass;
3186
3187 theClass = __ecereNameSpace__ecere__com__eSystem_FindClass(__thisModule, string);
3188 if(!theClass)
3189 theClass = __ecereNameSpace__ecere__com__eSystem_FindClass(((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->application, string);
3190 (*this) = (void *)theClass;
3191 return theClass != (((void *)0));
3192 }
3193
3194 static unsigned int __ecereNameSpace__ecere__com__Module_Constructor(struct __ecereNameSpace__ecere__com__Instance * module)
3195 {
3196 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->privateNameSpace.classes.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
3197 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->privateNameSpace.defines.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
3198 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->privateNameSpace.functions.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
3199 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->privateNameSpace.nameSpaces.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
3200 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->publicNameSpace.classes.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
3201 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->publicNameSpace.defines.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
3202 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->publicNameSpace.functions.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
3203 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->publicNameSpace.nameSpaces.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
3204 return 1;
3205 }
3206
3207 void __ecereMethod___ecereNameSpace__ecere__com__Class_OnSerialize(struct __ecereNameSpace__ecere__com__Class * class, struct __ecereNameSpace__ecere__com__Class * this, struct __ecereNameSpace__ecere__com__Instance * channel)
3208 {
3209 __ecereMethod___ecereNameSpace__ecere__com__IOChannel_Serialize(channel, __ecereClass_char__PTR_, this->fullName);
3210 }
3211
3212 void __ecereMethod___ecereNameSpace__ecere__com__Class_OnUnserialize(struct __ecereNameSpace__ecere__com__Class * class, struct __ecereNameSpace__ecere__com__Class ** this, struct __ecereNameSpace__ecere__com__Instance * channel)
3213 {
3214 struct __ecereNameSpace__ecere__com__Class * theClass;
3215 char * string;
3216
3217 __ecereMethod___ecereNameSpace__ecere__com__IOChannel_Unserialize(channel, __ecereClass_String, (void *)&string);
3218 theClass = __ecereNameSpace__ecere__com__eSystem_FindClass(__thisModule, string);
3219 if(!theClass)
3220 theClass = __ecereNameSpace__ecere__com__eSystem_FindClass(((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->application, string);
3221 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
3222 (*this) = (void *)theClass;
3223 }
3224
3225 static void __ecereNameSpace__ecere__com__Application_Destructor(struct __ecereNameSpace__ecere__com__Instance * app)
3226 {
3227 if(((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + sizeof(struct __ecereNameSpace__ecere__com__Module) + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->parsedCommand)
3228 {
3229 (__ecereNameSpace__ecere__com__eSystem_Delete((void *)((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + sizeof(struct __ecereNameSpace__ecere__com__Module) + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->argv), ((struct __ecereNameSpace__ecere__com__Application * )(((char * )app + sizeof(struct __ecereNameSpace__ecere__com__Module) + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->argv = 0);
3230 (__ecereNameSpace__ecere__com__eSystem_Delete(((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + sizeof(struct __ecereNameSpace__ecere__com__Module) + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->parsedCommand), ((struct __ecereNameSpace__ecere__com__Application * )(((char * )app + sizeof(struct __ecereNameSpace__ecere__com__Module) + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->parsedCommand = 0);
3231 }
3232 }
3233
3234 struct __ecereNameSpace__ecere__com__DefinedExpression * __ecereNameSpace__ecere__com__eSystem_RegisterDefine(const char * name, const char * value, struct __ecereNameSpace__ecere__com__Instance * module, int declMode)
3235 {
3236 struct __ecereNameSpace__ecere__com__NameSpace * nameSpace = (((void *)0));
3237 int start = 0, c;
3238
3239 nameSpace = (declMode == 1) ? &((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->publicNameSpace : &((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->privateNameSpace;
3240 if(declMode == 4)
3241 nameSpace = &((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->application + sizeof(struct __ecereNameSpace__ecere__com__Module) + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->systemNameSpace;
3242 if(declMode != 3)
3243 {
3244 for(c = 0; name[c]; c++)
3245 {
3246 if(name[c] == '.' || (name[c] == ':' && name[c + 1] == ':'))
3247 {
3248 struct __ecereNameSpace__ecere__com__NameSpace * newSpace;
3249 char * spaceName = __ecereNameSpace__ecere__com___malloc(c - start + 1);
3250
3251 strncpy(spaceName, name + start, c - start);
3252 spaceName[c - start] = '\0';
3253 newSpace = (struct __ecereNameSpace__ecere__com__NameSpace *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&(*nameSpace).nameSpaces, spaceName);
3254 if(!newSpace)
3255 {
3256 newSpace = __ecereNameSpace__ecere__com__eSystem_New0(sizeof(struct __ecereNameSpace__ecere__com__NameSpace) * (1));
3257 (*newSpace).classes.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
3258 (*newSpace).defines.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
3259 (*newSpace).functions.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
3260 (*newSpace).nameSpaces.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
3261 (*newSpace).name = spaceName;
3262 (*newSpace).parent = nameSpace;
3263 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&(*nameSpace).nameSpaces, (struct __ecereNameSpace__ecere__sys__BTNode *)newSpace);
3264 }
3265 else
3266 (__ecereNameSpace__ecere__com__eSystem_Delete(spaceName), spaceName = 0);
3267 nameSpace = newSpace;
3268 if(name[c] == ':')
3269 c++;
3270 start = c + 1;
3271 }
3272 }
3273 }
3274 else
3275 c = (int)strlen(name);
3276 if(c - start && !__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&(*nameSpace).defines, name + start))
3277 {
3278 struct __ecereNameSpace__ecere__com__DefinedExpression * def = (def = __ecereNameSpace__ecere__com__eSystem_New0(sizeof(struct __ecereNameSpace__ecere__com__DefinedExpression)), def->name = __ecereNameSpace__ecere__sys__CopyString(name), def->nameSpace = nameSpace, def->value = __ecereNameSpace__ecere__sys__CopyString(value), def);
3279
3280 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&(*nameSpace).defines, (struct __ecereNameSpace__ecere__sys__BTNode *)__extension__ ({
3281 struct __ecereNameSpace__ecere__com__BTNamedLink * __ecereInstance1 = __ecereNameSpace__ecere__com__eSystem_New0(sizeof(struct __ecereNameSpace__ecere__com__BTNamedLink));
3282
3283 __ecereInstance1->name = def->name + start, __ecereInstance1->data = def, __ecereInstance1;
3284 }));
3285 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->defines, def);
3286 return def;
3287 }
3288 return (((void *)0));
3289 }
3290
3291 void * __ecereNameSpace__ecere__com__eInstance_New(struct __ecereNameSpace__ecere__com__Class * _class)
3292 {
3293 struct __ecereNameSpace__ecere__com__Instance * instance = (((void *)0));
3294
3295 if(_class)
3296 {
3297 {
3298 int size = _class->structSize;
3299 int flags = ((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)_class->module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->application + sizeof(struct __ecereNameSpace__ecere__com__Module) + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->isGUIApp;
3300 unsigned int inCompiler = (flags & 8) ? 1 : 0;
3301 unsigned int force32Bits = (flags & 4) ? 1 : 0;
3302
3303 if(force32Bits && inCompiler)
3304 {
3305 if(!strcmp(_class->name, "Module"))
3306 size = 560;
3307 else if(_class->templateClass && !strcmp(_class->templateClass->name, "Map"))
3308 size = 40;
3309 else
3310 size *= 3;
3311 }
3312 instance = __ecereNameSpace__ecere__com___calloc(1, size);
3313 }
3314 if(_class->type == 0)
3315 {
3316 ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class = _class;
3317 ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_vTbl = _class->_vTbl;
3318 }
3319 if(!__ecereNameSpace__ecere__com__ConstructInstance(instance, _class, (((void *)0))))
3320 {
3321 __ecereNameSpace__ecere__com___free(instance);
3322 instance = (((void *)0));
3323 }
3324 }
3325 return instance;
3326 }
3327
3328 void __ecereNameSpace__ecere__com__eInstance_SetMethod(struct __ecereNameSpace__ecere__com__Instance * instance, const char * name, void * function)
3329 {
3330 if(instance && name)
3331 {
3332 struct __ecereNameSpace__ecere__com__Class * _class;
3333
3334 for(_class = ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class; _class; _class = _class->base)
3335 {
3336 struct __ecereNameSpace__ecere__com__Method * method = (struct __ecereNameSpace__ecere__com__Method *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&_class->methods, name);
3337
3338 if(method && method->type == 1)
3339 {
3340 if(((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_vTbl == ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class->_vTbl)
3341 {
3342 ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_vTbl = __ecereNameSpace__ecere__com___malloc(sizeof(void *) * ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class->vTblSize);
3343 memcpy(((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_vTbl, ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class->_vTbl, sizeof(int (*)()) * ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class->vTblSize);
3344 }
3345 ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_vTbl[method->vid] = function ? function : (void *)__ecereNameSpace__ecere__com__DefaultFunction;
3346 }
3347 }
3348 }
3349 }
3350
3351 unsigned int __ecereNameSpace__ecere__com__eInstance_IsDerived(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Class * from)
3352 {
3353 if(instance)
3354 {
3355 struct __ecereNameSpace__ecere__com__Class * _class = ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class;
3356
3357 for(; _class; _class = _class->base)
3358 {
3359 if(_class == from)
3360 return 1;
3361 }
3362 }
3363 return 0;
3364 }
3365
3366 void __ecereNameSpace__ecere__com__eInstance_IncRef(struct __ecereNameSpace__ecere__com__Instance * instance)
3367 {
3368 if(instance)
3369 ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_refCount++;
3370 }
3371
3372 void __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property)
3373 {
3374 if(instance && _property && _property->selfWatchable)
3375 {
3376 struct __ecereNameSpace__ecere__com__Class * _class;
3377
3378 for(_class = ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class; _class; _class = _class->base)
3379 {
3380 struct __ecereNameSpace__ecere__com__SelfWatcher * selfWatcher, * next;
3381
3382 for(selfWatcher = _class->selfWatchers.first; selfWatcher; selfWatcher = next)
3383 {
3384 next = selfWatcher->next;
3385 if(selfWatcher->_property == _property)
3386 selfWatcher->callback(instance);
3387 }
3388 }
3389 }
3390 }
3391
3392 void __ecereNameSpace__ecere__com__eInstance_FireWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property)
3393 {
3394 if(instance && _property && _property->isWatchable)
3395 {
3396 struct __ecereNameSpace__ecere__com__Instance * module = ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class ? ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class->module : (((void *)0));
3397 struct __ecereNameSpace__ecere__com__Instance * application = module ? ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->application : (((void *)0));
3398 int flags = application ? ((struct __ecereNameSpace__ecere__com__Application *)(((char *)application + sizeof(struct __ecereNameSpace__ecere__com__Module) + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->isGUIApp : 0;
3399 unsigned int inCompiler = (flags & 8) ? 1 : 0;
3400 unsigned int force32Bits = (flags & 4) ? 1 : 0;
3401
3402 if(!force32Bits || !inCompiler)
3403 {
3404 struct __ecereNameSpace__ecere__sys__OldList * watchers = (struct __ecereNameSpace__ecere__sys__OldList *)((unsigned char *)instance + _property->watcherOffset);
3405 struct __ecereNameSpace__ecere__com__Watcher * watcher, * next;
3406
3407 for(watcher = (*watchers).first; watcher; watcher = next)
3408 {
3409 next = watcher->next;
3410 watcher->callback(watcher->object, instance);
3411 }
3412 }
3413 }
3414 }
3415
3416 void __ecereNameSpace__ecere__com__eInstance_WatchDestruction(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Instance * object, void (* callback)(void *, void *))
3417 {
3418 struct __ecereNameSpace__ecere__sys__OldList * watchers = (struct __ecereNameSpace__ecere__sys__OldList *)((unsigned char *)instance + ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class->destructionWatchOffset);
3419
3420 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*watchers), __extension__ ({
3421 struct __ecereNameSpace__ecere__com__Watcher * __ecereInstance1 = __ecereNameSpace__ecere__com__eSystem_New0(sizeof(struct __ecereNameSpace__ecere__com__Watcher));
3422
3423 __ecereInstance1->callback = callback, __ecereInstance1->object = object, __ecereInstance1;
3424 }));
3425 }
3426
3427 void __ecereNameSpace__ecere__com__eInstance_StopWatching(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, struct __ecereNameSpace__ecere__com__Instance * object)
3428 {
3429 if(instance && (!_property || _property->isWatchable))
3430 {
3431 if(_property)
3432 {
3433 struct __ecereNameSpace__ecere__sys__OldList * watchers = (struct __ecereNameSpace__ecere__sys__OldList *)((unsigned char *)instance + _property->watcherOffset);
3434 struct __ecereNameSpace__ecere__com__Watcher * watcher;
3435
3436 for(watcher = (*watchers).first; watcher; watcher = watcher->next)
3437 if(watcher->object == object)
3438 {
3439 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete((&*watchers), watcher);
3440 break;
3441 }
3442 }
3443 else
3444 {
3445 struct __ecereNameSpace__ecere__com__Class * _class, * base;
3446
3447 for(_class = ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class; _class; _class = base)
3448 {
3449 if(_class->destructionWatchOffset)
3450 {
3451 struct __ecereNameSpace__ecere__sys__OldList * watchers = (struct __ecereNameSpace__ecere__sys__OldList *)((unsigned char *)instance + _class->destructionWatchOffset);
3452 struct __ecereNameSpace__ecere__com__Watcher * watcher;
3453
3454 for(watcher = (*watchers).first; watcher; watcher = watcher->next)
3455 {
3456 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete((&*watchers), watcher);
3457 break;
3458 }
3459 }
3460 for(_property = (struct __ecereNameSpace__ecere__com__Property *)_class->membersAndProperties.first; _property; _property = _property->next)
3461 {
3462 if(_property->isProperty && _property->isWatchable)
3463 {
3464 struct __ecereNameSpace__ecere__sys__OldList * watchers = (struct __ecereNameSpace__ecere__sys__OldList *)((unsigned char *)instance + _property->watcherOffset);
3465 struct __ecereNameSpace__ecere__com__Watcher * watcher;
3466
3467 for(watcher = (*watchers).first; watcher; watcher = watcher->next)
3468 if(watcher->object == object)
3469 {
3470 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete((&*watchers), watcher);
3471 break;
3472 }
3473 }
3474 }
3475 base = _class->base;
3476 if(base && (base->type == 1000 || base->isInstanceClass))
3477 base = (((void *)0));
3478 }
3479 }
3480 }
3481 }
3482
3483 struct __ecereNameSpace__ecere__com__Class * __ecereNameSpace__ecere__com__eInstance_GetDesigner(struct __ecereNameSpace__ecere__com__Instance * instance)
3484 {
3485 if(instance)
3486 return __ecereNameSpace__ecere__com__eClass_GetDesigner(((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class);
3487 return (((void *)0));
3488 }
3489
3490 void __ecereNameSpace__ecere__com__eProperty_SelfWatch(struct __ecereNameSpace__ecere__com__Class * _class, const char * name, void (* callback)(void *))
3491 {
3492 if(_class)
3493 {
3494 struct __ecereNameSpace__ecere__com__Property * _property = __ecereNameSpace__ecere__com__eClass_FindProperty(_class, name, _class->module);
3495
3496 if(!_property)
3497 _property = __ecereNameSpace__ecere__com__eClass_AddProperty(_class, name, (((void *)0)), (((void *)0)), (((void *)0)), 4);
3498 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&_class->selfWatchers, __extension__ ({
3499 struct __ecereNameSpace__ecere__com__SelfWatcher * __ecereInstance1 = __ecereNameSpace__ecere__com__eSystem_New0(sizeof(struct __ecereNameSpace__ecere__com__SelfWatcher));
3500
3501 __ecereInstance1->_property = _property, __ecereInstance1->callback = callback, __ecereInstance1;
3502 }));
3503 _property->selfWatchable = 1;
3504 }
3505 }
3506
3507 void __ecereProp___ecereNameSpace__ecere__com__DesignerBase_Set_classDesigner(struct __ecereNameSpace__ecere__com__Instance * this, struct __ecereNameSpace__ecere__com__Instance * value)
3508 {
3509 __attribute__((unused)) struct __ecereNameSpace__ecere__com__DesignerBase * __ecerePointer___ecereNameSpace__ecere__com__DesignerBase = (struct __ecereNameSpace__ecere__com__DesignerBase *)(this ? (((char *)this) + __ecereClass___ecereNameSpace__ecere__com__DesignerBase->offset) : 0);
3510
3511 __ecerePointer___ecereNameSpace__ecere__com__DesignerBase->classDesigner = value;
3512 __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(this, __ecereProp___ecereNameSpace__ecere__com__DesignerBase_classDesigner), __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(this, __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_classDesigner);
3513 }
3514
3515 void __ecereProp___ecereNameSpace__ecere__com__DesignerBase_Set_objectClass(struct __ecereNameSpace__ecere__com__Instance * this, const char *  value)
3516 {
3517 __attribute__((unused)) struct __ecereNameSpace__ecere__com__DesignerBase * __ecerePointer___ecereNameSpace__ecere__com__DesignerBase = (struct __ecereNameSpace__ecere__com__DesignerBase *)(this ? (((char *)this) + __ecereClass___ecereNameSpace__ecere__com__DesignerBase->offset) : 0);
3518
3519 __ecerePointer___ecereNameSpace__ecere__com__DesignerBase->objectClass = value;
3520 __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(this, __ecereProp___ecereNameSpace__ecere__com__DesignerBase_objectClass), __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(this, __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_objectClass);
3521 }
3522
3523 void __ecereProp___ecereNameSpace__ecere__com__DesignerBase_Set_isDragging(struct __ecereNameSpace__ecere__com__Instance * this, unsigned int value)
3524 {
3525 __attribute__((unused)) struct __ecereNameSpace__ecere__com__DesignerBase * __ecerePointer___ecereNameSpace__ecere__com__DesignerBase = (struct __ecereNameSpace__ecere__com__DesignerBase *)(this ? (((char *)this) + __ecereClass___ecereNameSpace__ecere__com__DesignerBase->offset) : 0);
3526
3527 __ecerePointer___ecereNameSpace__ecere__com__DesignerBase->isDragging = value;
3528 __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(this, __ecereProp___ecereNameSpace__ecere__com__DesignerBase_isDragging), __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(this, __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_isDragging);
3529 }
3530
3531 struct __ecereNameSpace__ecere__com__SubModule;
3532
3533 struct __ecereNameSpace__ecere__com__SubModule
3534 {
3535 struct __ecereNameSpace__ecere__com__SubModule * prev, * next;
3536 struct __ecereNameSpace__ecere__com__Instance * module;
3537 int importMode;
3538 } ecere_gcc_struct;
3539
3540 static struct __ecereNameSpace__ecere__com__BTNamedLink * __ecereNameSpace__ecere__com__SearchModule(struct __ecereNameSpace__ecere__com__Instance * module, const char * name, void * listOffset, unsigned int searchPrivate)
3541 {
3542 struct __ecereNameSpace__ecere__com__SubModule * subModule;
3543 struct __ecereNameSpace__ecere__com__BTNamedLink * link;
3544
3545 if(searchPrivate)
3546 {
3547 link = __ecereNameSpace__ecere__com__SearchNameSpace(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->privateNameSpace, name, listOffset);
3548 if(link)
3549 return link;
3550 }
3551 link = __ecereNameSpace__ecere__com__SearchNameSpace(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->publicNameSpace, name, listOffset);
3552 if(link)
3553 return link;
3554 for(subModule = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->modules.first; subModule; subModule = subModule->next)
3555 {
3556 if(searchPrivate || subModule->importMode == 1)
3557 {
3558 link = __ecereNameSpace__ecere__com__SearchModule(subModule->module, name, listOffset, 0);
3559 if(link)
3560 return link;
3561 }
3562 }
3563 return (((void *)0));
3564 }
3565
3566 struct __ecereNameSpace__ecere__com__DefinedExpression * __ecereNameSpace__ecere__com__eSystem_FindDefine(struct __ecereNameSpace__ecere__com__Instance * module, const char * name)
3567 {
3568 if(name && module)
3569 {
3570 struct __ecereNameSpace__ecere__com__BTNamedLink * link;
3571
3572 link = __ecereNameSpace__ecere__com__SearchNameSpace(&((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->application + sizeof(struct __ecereNameSpace__ecere__com__Module) + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->systemNameSpace, name, &(*((struct __ecereNameSpace__ecere__com__NameSpace *)0)).defines);
3573 if(link)
3574 return link->data;
3575 link = __ecereNameSpace__ecere__com__SearchModule(module, name, &(*((struct __ecereNameSpace__ecere__com__NameSpace *)0)).defines, 1);
3576 if(link)
3577 return link->data;
3578 }
3579 return (((void *)0));
3580 }
3581
3582 struct __ecereNameSpace__ecere__com__GlobalFunction * __ecereNameSpace__ecere__com__eSystem_FindFunction(struct __ecereNameSpace__ecere__com__Instance * module, const char * name)
3583 {
3584 if(name && module)
3585 {
3586 struct __ecereNameSpace__ecere__com__BTNamedLink * link;
3587
3588 link = __ecereNameSpace__ecere__com__SearchNameSpace(&((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->application + sizeof(struct __ecereNameSpace__ecere__com__Module) + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->systemNameSpace, name, &(*((struct __ecereNameSpace__ecere__com__NameSpace *)0)).functions);
3589 if(link)
3590 return link->data;
3591 link = __ecereNameSpace__ecere__com__SearchModule(module, name, &(*((struct __ecereNameSpace__ecere__com__NameSpace *)0)).functions, 1);
3592 if(link)
3593 return link->data;
3594 }
3595 return (((void *)0));
3596 }
3597
3598 static struct __ecereNameSpace__ecere__com__Instance *  __ecereNameSpace__ecere__com__Module_Load(struct __ecereNameSpace__ecere__com__Instance *  fromModule, const char *  name, int importAccess, unsigned int ensureCOM);
3599
3600 struct __ecereNameSpace__ecere__com__Instance * __ecereNameSpace__ecere__com__eModule_Load(struct __ecereNameSpace__ecere__com__Instance * fromModule, const char * name, int importAccess)
3601 {
3602 return __ecereNameSpace__ecere__com__Module_Load(fromModule, name, importAccess, 1);
3603 }
3604
3605 struct __ecereNameSpace__ecere__com__Instance * __ecereNameSpace__ecere__com__eModule_LoadStrict(struct __ecereNameSpace__ecere__com__Instance * fromModule, const char * name, int importAccess)
3606 {
3607 return __ecereNameSpace__ecere__com__Module_Load(fromModule, name, importAccess, 0);
3608 }
3609
3610 struct __ecereNameSpace__ecere__com__GlobalFunction;
3611
3612 struct __ecereNameSpace__ecere__com__GlobalFunction
3613 {
3614 struct __ecereNameSpace__ecere__com__GlobalFunction * prev, * next;
3615 const char * name;
3616 int (* function)();
3617 struct __ecereNameSpace__ecere__com__Instance * module;
3618 struct __ecereNameSpace__ecere__com__NameSpace * nameSpace;
3619 const char * dataTypeString;
3620 struct __ecereNameSpace__ecere__com__Instance * dataType;
3621 void * symbol;
3622 } ecere_gcc_struct;
3623
3624 void __ecereNameSpace__ecere__com__eInstance_Evolve(struct __ecereNameSpace__ecere__com__Instance ** instancePtr, struct __ecereNameSpace__ecere__com__Class * _class)
3625 {
3626 if(_class && instancePtr && *instancePtr)
3627 {
3628 unsigned int wasApp = 0, wasGuiApp = 0;
3629 struct __ecereNameSpace__ecere__com__Instance * instance = (struct __ecereNameSpace__ecere__com__Instance *)__ecereNameSpace__ecere__com__eSystem_Renew(*instancePtr, sizeof(unsigned char) * (_class->structSize));
3630 struct __ecereNameSpace__ecere__com__Class * fromClass = ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class;
3631
3632 *instancePtr = instance;
3633 memset(((unsigned char *)instance) + ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class->structSize, 0, _class->structSize - ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class->structSize);
3634 if((wasApp = !strcmp(((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class->name, "Application")) || (wasGuiApp = !strcmp(((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class->name, "GuiApplication")))
3635 {
3636 struct __ecereNameSpace__ecere__com__Instance * module;
3637 struct __ecereNameSpace__ecere__com__Instance * app = (struct __ecereNameSpace__ecere__com__Instance *)instance;
3638 struct __ecereNameSpace__ecere__com__BTNamedLink * link;
3639 struct __ecereNameSpace__ecere__com__Class * _class;
3640 struct __ecereNameSpace__ecere__com__NameSpace * nameSpace;
3641
3642 for(module = ((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + sizeof(struct __ecereNameSpace__ecere__com__Module) + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->allModules.first; module; module = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->next)
3643 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->application = app;
3644 for(link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)app + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->privateNameSpace.classes); link; link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereProp___ecereNameSpace__ecere__sys__BTNode_Get_next(((struct __ecereNameSpace__ecere__sys__BTNode *)link)))
3645 {
3646 struct __ecereNameSpace__ecere__sys__OldLink * t;
3647
3648 ((struct __ecereNameSpace__ecere__com__Class *)link->data)->nameSpace = &((struct __ecereNameSpace__ecere__com__Module *)(((char *)app + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->privateNameSpace;
3649 for(t = ((struct __ecereNameSpace__ecere__com__Class *)link->data)->templatized.first; t; t = t->next)
3650 {
3651 struct __ecereNameSpace__ecere__com__Class * template = t->data;
3652
3653 template->nameSpace = ((struct __ecereNameSpace__ecere__com__Class *)link->data)->nameSpace;
3654 }
3655 }
3656 for(link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)app + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->publicNameSpace.classes); link; link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereProp___ecereNameSpace__ecere__sys__BTNode_Get_next(((struct __ecereNameSpace__ecere__sys__BTNode *)link)))
3657 {
3658 struct __ecereNameSpace__ecere__sys__OldLink * t;
3659
3660 ((struct __ecereNameSpace__ecere__com__Class *)link->data)->nameSpace = &((struct __ecereNameSpace__ecere__com__Module *)(((char *)app + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->publicNameSpace;
3661 for(t = ((struct __ecereNameSpace__ecere__com__Class *)link->data)->templatized.first; t; t = t->next)
3662 {
3663 struct __ecereNameSpace__ecere__com__Class * template = t->data;
3664
3665 template->nameSpace = ((struct __ecereNameSpace__ecere__com__Class *)link->data)->nameSpace;
3666 }
3667 }
3668 for(link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)app + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->privateNameSpace.defines); link; link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereProp___ecereNameSpace__ecere__sys__BTNode_Get_next(((struct __ecereNameSpace__ecere__sys__BTNode *)link)))
3669 ((struct __ecereNameSpace__ecere__com__DefinedExpression *)link->data)->nameSpace = &((struct __ecereNameSpace__ecere__com__Module *)(((char *)app + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->privateNameSpace;
3670 for(link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)app + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->publicNameSpace.defines); link; link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereProp___ecereNameSpace__ecere__sys__BTNode_Get_next(((struct __ecereNameSpace__ecere__sys__BTNode *)link)))
3671 ((struct __ecereNameSpace__ecere__com__DefinedExpression *)link->data)->nameSpace = &((struct __ecereNameSpace__ecere__com__Module *)(((char *)app + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->publicNameSpace;
3672 for(link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)app + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->privateNameSpace.functions); link; link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereProp___ecereNameSpace__ecere__sys__BTNode_Get_next(((struct __ecereNameSpace__ecere__sys__BTNode *)link)))
3673 ((struct __ecereNameSpace__ecere__com__GlobalFunction *)link->data)->nameSpace = &((struct __ecereNameSpace__ecere__com__Module *)(((char *)app + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->privateNameSpace;
3674 for(link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)app + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->publicNameSpace.functions); link; link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereProp___ecereNameSpace__ecere__sys__BTNode_Get_next(((struct __ecereNameSpace__ecere__sys__BTNode *)link)))
3675 ((struct __ecereNameSpace__ecere__com__GlobalFunction *)link->data)->nameSpace = &((struct __ecereNameSpace__ecere__com__Module *)(((char *)app + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->publicNameSpace;
3676 for(nameSpace = (struct __ecereNameSpace__ecere__com__NameSpace *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)app + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->privateNameSpace.nameSpaces); nameSpace; nameSpace = (struct __ecereNameSpace__ecere__com__NameSpace *)__ecereProp___ecereNameSpace__ecere__sys__BTNode_Get_next(((struct __ecereNameSpace__ecere__sys__BTNode *)nameSpace)))
3677 (*nameSpace).parent = &((struct __ecereNameSpace__ecere__com__Module *)(((char *)app + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->privateNameSpace;
3678 for(nameSpace = (struct __ecereNameSpace__ecere__com__NameSpace *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)app + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->publicNameSpace.nameSpaces); nameSpace; nameSpace = (struct __ecereNameSpace__ecere__com__NameSpace *)__ecereProp___ecereNameSpace__ecere__sys__BTNode_Get_next(((struct __ecereNameSpace__ecere__sys__BTNode *)nameSpace)))
3679 (*nameSpace).parent = &((struct __ecereNameSpace__ecere__com__Module *)(((char *)app + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->publicNameSpace;
3680 for(link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + sizeof(struct __ecereNameSpace__ecere__com__Module) + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->systemNameSpace.classes); link; link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereProp___ecereNameSpace__ecere__sys__BTNode_Get_next(((struct __ecereNameSpace__ecere__sys__BTNode *)link)))
3681 {
3682 struct __ecereNameSpace__ecere__sys__OldLink * t;
3683
3684 ((struct __ecereNameSpace__ecere__com__Class *)link->data)->nameSpace = &((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + sizeof(struct __ecereNameSpace__ecere__com__Module) + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->systemNameSpace;
3685 for(t = ((struct __ecereNameSpace__ecere__com__Class *)link->data)->templatized.first; t; t = t->next)
3686 {
3687 struct __ecereNameSpace__ecere__com__Class * template = t->data;
3688
3689 template->nameSpace = ((struct __ecereNameSpace__ecere__com__Class *)link->data)->nameSpace;
3690 }
3691 }
3692 for(link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + sizeof(struct __ecereNameSpace__ecere__com__Module) + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->systemNameSpace.defines); link; link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereProp___ecereNameSpace__ecere__sys__BTNode_Get_next(((struct __ecereNameSpace__ecere__sys__BTNode *)link)))
3693 ((struct __ecereNameSpace__ecere__com__DefinedExpression *)link->data)->nameSpace = &((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + sizeof(struct __ecereNameSpace__ecere__com__Module) + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->systemNameSpace;
3694 for(link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + sizeof(struct __ecereNameSpace__ecere__com__Module) + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->systemNameSpace.functions); link; link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereProp___ecereNameSpace__ecere__sys__BTNode_Get_next(((struct __ecereNameSpace__ecere__sys__BTNode *)link)))
3695 ((struct __ecereNameSpace__ecere__com__GlobalFunction *)link->data)->nameSpace = &((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + sizeof(struct __ecereNameSpace__ecere__com__Module) + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->systemNameSpace;
3696 for(link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + sizeof(struct __ecereNameSpace__ecere__com__Module) + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->systemNameSpace.functions); link; link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereProp___ecereNameSpace__ecere__sys__BTNode_Get_next(((struct __ecereNameSpace__ecere__sys__BTNode *)link)))
3697 ((struct __ecereNameSpace__ecere__com__GlobalFunction *)link->data)->nameSpace = &((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + sizeof(struct __ecereNameSpace__ecere__com__Module) + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->systemNameSpace;
3698 for(nameSpace = (struct __ecereNameSpace__ecere__com__NameSpace *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + sizeof(struct __ecereNameSpace__ecere__com__Module) + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->systemNameSpace.nameSpaces); nameSpace; nameSpace = (struct __ecereNameSpace__ecere__com__NameSpace *)__ecereProp___ecereNameSpace__ecere__sys__BTNode_Get_next(((struct __ecereNameSpace__ecere__sys__BTNode *)nameSpace)))
3699 (*nameSpace).parent = &((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + sizeof(struct __ecereNameSpace__ecere__com__Module) + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->systemNameSpace;
3700 for(_class = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)app + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->classes.first; _class; _class = _class->next)
3701 {
3702 struct __ecereNameSpace__ecere__sys__OldLink * templateLink;
3703
3704 _class->module = (struct __ecereNameSpace__ecere__com__Instance *)app;
3705 for(templateLink = _class->templatized.first; templateLink; templateLink = templateLink->next)
3706 {
3707 struct __ecereNameSpace__ecere__com__Class * template = templateLink->data;
3708
3709 template->module = _class->module;
3710 }
3711 }
3712 for(module = ((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + sizeof(struct __ecereNameSpace__ecere__com__Module) + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->allModules.first; module; module = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->next)
3713 {
3714 for(_class = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->classes.first; _class; _class = _class->next)
3715 {
3716 struct __ecereNameSpace__ecere__sys__OldLink * templateLink;
3717
3718 _class->module = module;
3719 for(templateLink = _class->templatized.first; templateLink; templateLink = templateLink->next)
3720 {
3721 struct __ecereNameSpace__ecere__com__Class * template = templateLink->data;
3722
3723 template->module = _class->module;
3724 }
3725 }
3726 }
3727 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)app + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->application = app;
3728 }
3729 {
3730 struct __ecereNameSpace__ecere__com__Class * base;
3731
3732 for(base = ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class; base && base->type == 0 && base->count; base = base->base)
3733 (base->templateClass ? base->templateClass : base)->count--;
3734 }
3735 ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class = _class;
3736 ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_vTbl = _class->_vTbl;
3737 if(!__ecereNameSpace__ecere__com__ConstructInstance(instance, _class, fromClass))
3738 {
3739 __ecereNameSpace__ecere__com___free(instance);
3740 *instancePtr = (((void *)0));
3741 }
3742 }
3743 }
3744
3745 struct __ecereNameSpace__ecere__com__GlobalFunction * __ecereNameSpace__ecere__com__eSystem_RegisterFunction(const char * name, const char * type, void * func, struct __ecereNameSpace__ecere__com__Instance * module, int declMode)
3746 {
3747 struct __ecereNameSpace__ecere__com__NameSpace * nameSpace = (((void *)0));
3748 int start = 0, c;
3749
3750 nameSpace = (declMode == 1) ? &((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->publicNameSpace : &((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->privateNameSpace;
3751 if(declMode == 4)
3752 nameSpace = &((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->application + sizeof(struct __ecereNameSpace__ecere__com__Module) + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->systemNameSpace;
3753 if(declMode != 3)
3754 {
3755 for(c = 0; name[c]; c++)
3756 {
3757 if(name[c] == '.' || (name[c] == ':' && name[c + 1] == ':'))
3758 {
3759 struct __ecereNameSpace__ecere__com__NameSpace * newSpace;
3760 char * spaceName = __ecereNameSpace__ecere__com___malloc(c - start + 1);
3761
3762 strncpy(spaceName, name + start, c - start);
3763 spaceName[c - start] = '\0';
3764 newSpace = (struct __ecereNameSpace__ecere__com__NameSpace *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&(*nameSpace).nameSpaces, spaceName);
3765 if(!newSpace)
3766 {
3767 newSpace = __ecereNameSpace__ecere__com__eSystem_New0(sizeof(struct __ecereNameSpace__ecere__com__NameSpace) * (1));
3768 (*newSpace).classes.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
3769 (*newSpace).defines.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
3770 (*newSpace).functions.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
3771 (*newSpace).nameSpaces.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
3772 (*newSpace).name = spaceName;
3773 (*newSpace).parent = nameSpace;
3774 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&(*nameSpace).nameSpaces, (struct __ecereNameSpace__ecere__sys__BTNode *)newSpace);
3775 }
3776 else
3777 (__ecereNameSpace__ecere__com__eSystem_Delete(spaceName), spaceName = 0);
3778 nameSpace = newSpace;
3779 if(name[c] == ':')
3780 c++;
3781 start = c + 1;
3782 }
3783 }
3784 }
3785 else
3786 c = (int)strlen(name);
3787 if(c - start && !__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&(*nameSpace).functions, name + start))
3788 {
3789 struct __ecereNameSpace__ecere__com__GlobalFunction * function = (function = __ecereNameSpace__ecere__com__eSystem_New0(sizeof(struct __ecereNameSpace__ecere__com__GlobalFunction)), function->name = __ecereNameSpace__ecere__sys__CopyString(name), function->nameSpace = nameSpace, function->dataTypeString = __ecereNameSpace__ecere__sys__CopyString(type), function->function = func, function->module = module, function);
3790
3791 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&(*nameSpace).functions, (struct __ecereNameSpace__ecere__sys__BTNode *)__extension__ ({
3792 struct __ecereNameSpace__ecere__com__BTNamedLink * __ecereInstance1 = __ecereNameSpace__ecere__com__eSystem_New0(sizeof(struct __ecereNameSpace__ecere__com__BTNamedLink));
3793
3794 __ecereInstance1->name = function->name + start, __ecereInstance1->data = function, __ecereInstance1;
3795 }));
3796 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->functions, function);
3797 return function;
3798 }
3799 return (((void *)0));
3800 }
3801
3802 struct __ecereNameSpace__ecere__com__ClassTemplateParameter;
3803
3804 struct __ecereNameSpace__ecere__com__ClassTemplateParameter
3805 {
3806 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * prev, * next;
3807 const char * name;
3808 int type;
3809 union
3810 {
3811 const char * dataTypeString;
3812 int memberType;
3813 } ecere_gcc_struct __anon1;
3814 struct __ecereNameSpace__ecere__com__ClassTemplateArgument defaultArg;
3815 void * param;
3816 } ecere_gcc_struct;
3817
3818 static void __ecereNameSpace__ecere__com__FreeTemplateArg(struct __ecereNameSpace__ecere__com__Class * template, struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param, int id)
3819 {
3820 switch(param->type)
3821 {
3822 case 0:
3823 (__ecereNameSpace__ecere__com__eSystem_Delete((void *)template->templateArgs[id].__anon1.__anon1.dataTypeString), template->templateArgs[id].__anon1.__anon1.dataTypeString = 0);
3824 break;
3825 case 1:
3826 (__ecereNameSpace__ecere__com__eSystem_Delete((void *)template->templateArgs[id].__anon1.__anon2.memberString), template->templateArgs[id].__anon1.__anon2.memberString = 0);
3827 break;
3828 case 2:
3829 break;
3830 }
3831 }
3832
3833 static void __ecereNameSpace__ecere__com__FreeTemplateArgs(struct __ecereNameSpace__ecere__com__Class * template)
3834 {
3835 if(template->templateArgs)
3836 {
3837 struct __ecereNameSpace__ecere__com__Class * _class;
3838
3839 for(_class = template; _class; _class = _class->base)
3840 {
3841 struct __ecereNameSpace__ecere__com__Class * prevClass;
3842 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param;
3843 int id = 0;
3844
3845 if(_class->templateClass)
3846 _class = _class->templateClass;
3847 for(prevClass = _class->base; prevClass; prevClass = prevClass->base)
3848 {
3849 if(prevClass->templateClass)
3850 prevClass = prevClass->templateClass;
3851 id += prevClass->templateParams.count;
3852 }
3853 if(id < template->numParams)
3854 {
3855 for(param = _class->templateParams.first; param; param = param->next)
3856 {
3857 switch(param->type)
3858 {
3859 case 0:
3860 (__ecereNameSpace__ecere__com__eSystem_Delete((void *)template->templateArgs[id].__anon1.__anon1.dataTypeString), template->templateArgs[id].__anon1.__anon1.dataTypeString = 0);
3861 break;
3862 case 1:
3863 (__ecereNameSpace__ecere__com__eSystem_Delete((void *)template->templateArgs[id].__anon1.__anon2.memberString), template->templateArgs[id].__anon1.__anon2.memberString = 0);
3864 break;
3865 case 2:
3866 break;
3867 }
3868 id++;
3869 }
3870 }
3871 }
3872 }
3873 }
3874
3875 static void __ecereNameSpace__ecere__com__CopyTemplateArg(struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param, struct __ecereNameSpace__ecere__com__ClassTemplateArgument * arg)
3876 {
3877 switch(param->type)
3878 {
3879 case 0:
3880 arg->__anon1.__anon1.dataTypeString = __ecereNameSpace__ecere__sys__CopyString(arg->__anon1.__anon1.dataTypeString);
3881 break;
3882 case 2:
3883 break;
3884 case 1:
3885 arg->__anon1.__anon2.memberString = __ecereNameSpace__ecere__sys__CopyString(arg->__anon1.__anon2.memberString);
3886 break;
3887 }
3888 }
3889
3890 unsigned int __ecereNameSpace__ecere__com__eClass_IsDerived(struct __ecereNameSpace__ecere__com__Class * _class, struct __ecereNameSpace__ecere__com__Class * from)
3891 {
3892 if(!_class && !from)
3893 return 1;
3894 if(_class && from && (_class->templateClass || from->templateClass))
3895 {
3896 if(__ecereNameSpace__ecere__com__eClass_IsDerived(_class->templateClass ? _class->templateClass : _class, from->templateClass ? from->templateClass : from))
3897 {
3898 if(!from->templateClass)
3899 return 1;
3900 else if(!_class->templateClass && _class == from->templateClass)
3901 return 0;
3902 else
3903 {
3904 struct __ecereNameSpace__ecere__com__Class * sClass;
3905
3906 for(sClass = from; sClass; sClass = sClass->base)
3907 {
3908 if(sClass->templateParams.first)
3909 {
3910 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param;
3911 struct __ecereNameSpace__ecere__com__Class * nextClass;
3912 int p = 0;
3913
3914 for(nextClass = sClass->base; nextClass; nextClass = nextClass->base)
3915 p += nextClass->templateParams.count;
3916 for(param = sClass->templateParams.first; param; param = param->next, p++)
3917 {
3918 struct __ecereNameSpace__ecere__com__ClassTemplateArgument * arg = &_class->templateArgs[p];
3919 struct __ecereNameSpace__ecere__com__ClassTemplateArgument * fArg = &from->templateArgs[p];
3920
3921 if(param->type == 0)
3922 {
3923 if((*arg).__anon1.__anon1.dataTypeString != (*fArg).__anon1.__anon1.dataTypeString && (*arg).__anon1.__anon1.dataTypeString && (*fArg).__anon1.__anon1.dataTypeString && strcmp((*arg).__anon1.__anon1.dataTypeString, (*fArg).__anon1.__anon1.dataTypeString))
3924 break;
3925 }
3926 else if(param->type == 1)
3927 {
3928 if((*arg).__anon1.__anon2.__anon1.member != (*fArg).__anon1.__anon2.__anon1.member)
3929 break;
3930 }
3931 else if(param->type == 2)
3932 {
3933 if((*arg).__anon1.expression.__anon1.ui64 != (*fArg).__anon1.expression.__anon1.ui64)
3934 break;
3935 }
3936 }
3937 if(param)
3938 return 0;
3939 }
3940 }
3941 return 1;
3942 }
3943 }
3944 }
3945 else
3946 {
3947 for(; _class && from; _class = _class->base)
3948 {
3949 if(_class == from || _class->templateClass == from || ((_class->type == 1000 || (_class->type == 0 && _class->isInstanceClass)) && from->name && !strcmp(_class->name, from->name)))
3950 return 1;
3951 }
3952 }
3953 return 0;
3954 }
3955
3956 static void __ecereNameSpace__ecere__com__FreeTemplate(struct __ecereNameSpace__ecere__com__Class * template)
3957 {
3958 struct __ecereNameSpace__ecere__sys__OldLink * deriv;
3959
3960 if(template->nameSpace)
3961 {
3962 struct __ecereNameSpace__ecere__com__BTNamedLink * link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&(*template->nameSpace).classes, template->name);
3963
3964 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&(*template->nameSpace).classes, (struct __ecereNameSpace__ecere__sys__BTNode *)link);
3965 }
3966 __ecereNameSpace__ecere__com__FreeTemplateArgs(template);
3967 (__ecereNameSpace__ecere__com__eSystem_Delete((void *)template->fullName), template->fullName = 0);
3968 (__ecereNameSpace__ecere__com__eSystem_Delete((void *)template->name), template->name = 0);
3969 (__ecereNameSpace__ecere__com__eSystem_Delete((void *)template->templateArgs), template->templateArgs = 0);
3970 (__ecereNameSpace__ecere__com__eSystem_Delete((void *)template->dataTypeString), template->dataTypeString = 0);
3971 while((deriv = template->derivatives.first))
3972 {
3973 ((struct __ecereNameSpace__ecere__com__Class *)deriv->data)->base = (((void *)0));
3974 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&template->derivatives, deriv);
3975 }
3976 __ecereNameSpace__ecere__com___free(template);
3977 }
3978
3979 static void __ecereNameSpace__ecere__com__FreeTemplatesDerivatives(struct __ecereNameSpace__ecere__com__Class * base)
3980 {
3981 struct __ecereNameSpace__ecere__sys__OldLink * derivative, * templateLink;
3982
3983 for(derivative = base->derivatives.first; derivative; derivative = derivative->next)
3984 {
3985 struct __ecereNameSpace__ecere__com__Class * _class = derivative->data;
3986
3987 if(_class->templateArgs)
3988 {
3989 __ecereNameSpace__ecere__com__FreeTemplateArgs(_class);
3990 (__ecereNameSpace__ecere__com__eSystem_Delete(_class->templateArgs), _class->templateArgs = 0);
3991 }
3992 __ecereNameSpace__ecere__com__FreeTemplatesDerivatives(_class);
3993 }
3994 for(templateLink = base->templatized.first; templateLink; templateLink = templateLink->next)
3995 {
3996 struct __ecereNameSpace__ecere__com__Class * _class = templateLink->data;
3997
3998 if(_class->templateArgs)
3999 {
4000 __ecereNameSpace__ecere__com__FreeTemplateArgs(_class);
4001 (__ecereNameSpace__ecere__com__eSystem_Delete(_class->templateArgs), _class->templateArgs = 0);
4002 }
4003 __ecereNameSpace__ecere__com__FreeTemplatesDerivatives(_class);
4004 }
4005 }
4006
4007 static void __ecereNameSpace__ecere__com__ComputeClassParameters(struct __ecereNameSpace__ecere__com__Class * templatedClass, const char * templateParams, struct __ecereNameSpace__ecere__com__Instance * findModule)
4008 {
4009 char ch;
4010 const char * nextParamStart = templateParams ? (templateParams + 1) : (((void *)0));
4011 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * curParam = (((void *)0));
4012 struct __ecereNameSpace__ecere__com__Class * lastClass = (((void *)0)), * sClass;
4013 int curParamID = 0;
4014 int numParams = 0;
4015 struct __ecereNameSpace__ecere__com__Class * _class = templatedClass->templateClass ? templatedClass->templateClass : templatedClass;
4016
4017 for(sClass = _class; sClass; sClass = sClass->base)
4018 {
4019 if(sClass->templateClass)
4020 sClass = sClass->templateClass;
4021 numParams += sClass->templateParams.count;
4022 }
4023 if(templatedClass->templateArgs)
4024 __ecereNameSpace__ecere__com__FreeTemplateArgs(templatedClass);
4025 (__ecereNameSpace__ecere__com__eSystem_Delete(templatedClass->templateArgs), templatedClass->templateArgs = 0);
4026 templatedClass->templateArgs = __ecereNameSpace__ecere__com__eSystem_New0(sizeof(struct __ecereNameSpace__ecere__com__ClassTemplateArgument) * (numParams));
4027 templatedClass->numParams = numParams;
4028 if(_class != templatedClass)
4029 {
4030 }
4031 if(templatedClass->base && templatedClass->base->templateArgs && _class == templatedClass)
4032 {
4033 struct __ecereNameSpace__ecere__com__Class * sClass;
4034
4035 memcpy(templatedClass->templateArgs, templatedClass->base->templateArgs, sizeof(struct __ecereNameSpace__ecere__com__ClassTemplateArgument) * (numParams - templatedClass->templateParams.count));
4036 for(sClass = templatedClass->base; sClass; sClass = sClass->base)
4037 {
4038 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param;
4039 struct __ecereNameSpace__ecere__com__Class * prevClass;
4040 int id = 0;
4041
4042 for(prevClass = sClass->base; prevClass; prevClass = prevClass->base)
4043 {
4044 if(prevClass->templateClass)
4045 prevClass = prevClass->templateClass;
4046 id += prevClass->templateParams.count;
4047 }
4048 if(sClass->templateClass)
4049 sClass = sClass->templateClass;
4050 for(param = sClass->templateParams.first; param; param = param->next)
4051 __ecereNameSpace__ecere__com__CopyTemplateArg(param, &templatedClass->templateArgs[id++]);
4052 }
4053 }
4054 while(nextParamStart)
4055 {
4056 const char * paramStart = nextParamStart;
4057 const char * paramEnd;
4058 int level = 0;
4059
4060 while(*paramStart == ' ')
4061 paramStart++;
4062 paramEnd = paramStart;
4063 while((ch = *paramEnd, ch && (level > 0 || (ch != '>' && ch != ','))))
4064 {
4065 if(ch == '<')
4066 level++;
4067 if(ch == '>')
4068 level--;
4069 paramEnd++;
4070 }
4071 nextParamStart = (ch == ',') ? (paramEnd + 1) : (((void *)0));
4072 while(*paramEnd == ' ')
4073 paramEnd--;
4074 if(paramEnd > paramStart)
4075 {
4076 const char * ptr, * equal = (((void *)0));
4077
4078 for(ptr = paramStart; ptr <= paramEnd; ptr++)
4079 {
4080 if(*ptr == '=')
4081 {
4082 equal = ptr;
4083 break;
4084 }
4085 }
4086 if(equal)
4087 {
4088 const char * end = equal - 1;
4089 char ident[1024];
4090
4091 while(*end == ' ')
4092 end--;
4093 strncpy(ident, paramStart, end + 1 - paramStart);
4094 ident[end + 1 - paramStart] = 0;
4095 for(sClass = _class; sClass; sClass = sClass->base)
4096 {
4097 if(sClass->templateClass)
4098 sClass = sClass->templateClass;
4099 for(curParam = sClass->templateParams.first; curParam; curParam = curParam->next)
4100 {
4101 if(!strcmp(curParam->name, ident))
4102 break;
4103 }
4104 if(curParam)
4105 {
4106 struct __ecereNameSpace__ecere__com__Class * nextClass;
4107 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * prevParam;
4108
4109 curParamID = 0;
4110 for(prevParam = curParam->prev; prevParam; prevParam = prevParam->prev)
4111 curParamID++;
4112 for(nextClass = sClass->base; nextClass; nextClass = nextClass->base)
4113 {
4114 if(nextClass->templateClass)
4115 nextClass = nextClass->templateClass;
4116 curParamID += nextClass->templateParams.count;
4117 }
4118 break;
4119 }
4120 }
4121 lastClass = sClass;
4122 }
4123 else
4124 {
4125 if(curParam)
4126 {
4127 curParam = curParam->next;
4128 curParamID++;
4129 }
4130 if(!curParam)
4131 {
4132 for(sClass = lastClass ? lastClass->base : _class; sClass; sClass = sClass->base)
4133 {
4134 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param;
4135
4136 curParamID = 0;
4137 if(sClass->templateClass)
4138 sClass = sClass->templateClass;
4139 for(param = sClass->templateParams.first; param; param = param->next, curParamID++)
4140 {
4141 curParam = param;
4142 break;
4143 }
4144 if(curParam)
4145 {
4146 struct __ecereNameSpace__ecere__com__Class * nextClass;
4147
4148 for(nextClass = sClass->base; nextClass; nextClass = nextClass->base)
4149 {
4150 if(nextClass->templateClass)
4151 nextClass = nextClass->templateClass;
4152 curParamID += nextClass->templateParams.count;
4153 }
4154 lastClass = sClass;
4155 break;
4156 }
4157 }
4158 }
4159 }
4160 if(curParam)
4161 {
4162 struct __ecereNameSpace__ecere__com__ClassTemplateArgument argument =
4163 {
4164
4165 .__anon1 = {
4166
4167 .__anon1 = {
4168 .dataTypeString = 0
4169 }
4170 }
4171 };
4172 char value[1024];
4173
4174 if(equal)
4175 {
4176 equal++;
4177 while(*equal == ' ')
4178 equal++;
4179 memcpy(value, equal, paramEnd - equal);
4180 value[paramEnd - equal] = 0;
4181 }
4182 else
4183 {
4184 memcpy(value, paramStart, paramEnd - paramStart);
4185 value[paramEnd - paramStart] = 0;
4186 }
4187 __ecereNameSpace__ecere__sys__TrimRSpaces(value, value);
4188 switch(curParam->type)
4189 {
4190 case 0:
4191 argument.__anon1.__anon1.dataTypeString = __ecereNameSpace__ecere__sys__CopyString(value);
4192 argument.__anon1.__anon1.dataTypeClass = __ecereNameSpace__ecere__com__eSystem_FindClass(_class->module, value);
4193 if(!argument.__anon1.__anon1.dataTypeClass)
4194 argument.__anon1.__anon1.dataTypeClass = __ecereNameSpace__ecere__com__eSystem_FindClass(((struct __ecereNameSpace__ecere__com__Module *)(((char *)_class->module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->application, value);
4195 if(!argument.__anon1.__anon1.dataTypeClass)
4196 argument.__anon1.__anon1.dataTypeClass = __ecereNameSpace__ecere__com__eSystem_FindClass(findModule, value);
4197 break;
4198 case 2:
4199 {
4200 struct __ecereNameSpace__ecere__com__Class * expClass = __ecereNameSpace__ecere__com__eSystem_FindClass(_class->module, curParam->__anon1.dataTypeString);
4201
4202 if(!expClass)
4203 expClass = __ecereNameSpace__ecere__com__eSystem_FindClass(((struct __ecereNameSpace__ecere__com__Module *)(((char *)_class->module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->application, curParam->__anon1.dataTypeString);
4204 if(expClass)
4205 {
4206 ((unsigned int (*)(void *, void *, const char *))(void *)expClass->_vTbl[__ecereVMethodID_class_OnGetDataFromString])(expClass, &argument.__anon1.expression, value);
4207 }
4208 else if(value[0] == '\"')
4209 {
4210 char * endQuote = value + strlen(value) - 1;
4211
4212 if(*endQuote != '\"')
4213 endQuote++;
4214 *endQuote = '\0';
4215 argument.__anon1.expression.__anon1.p = __ecereNameSpace__ecere__sys__CopyString(value + 1);
4216 }
4217 else if(value[0] == '\'')
4218 {
4219 int nb;
4220 unsigned int ch = __ecereNameSpace__ecere__sys__UTF8GetChar(value + 1, &nb);
4221
4222 argument.__anon1.expression.__anon1.ui = ch;
4223 }
4224 else if(!strcmp(curParam->__anon1.dataTypeString, "uint"))
4225 {
4226 argument.__anon1.expression.__anon1.ui = (unsigned int)strtoul(value, (((void *)0)), 0);
4227 }
4228 else if(!strcmp(curParam->__anon1.dataTypeString, "char"))
4229 {
4230 argument.__anon1.expression.__anon1.c = (char)strtol(value, (((void *)0)), 0);
4231 }
4232 else if(!strcmp(curParam->__anon1.dataTypeString, "byte"))
4233 {
4234 argument.__anon1.expression.__anon1.uc = (unsigned char)strtoul(value, (((void *)0)), 0);
4235 }
4236 else if(!strcmp(curParam->__anon1.dataTypeString, "short"))
4237 {
4238 argument.__anon1.expression.__anon1.s = (short)strtol(value, (((void *)0)), 0);
4239 }
4240 else if(!strcmp(curParam->__anon1.dataTypeString, "uint16"))
4241 {
4242 argument.__anon1.expression.__anon1.us = (unsigned short)strtoul(value, (((void *)0)), 0);
4243 }
4244 else if(!strcmp(curParam->__anon1.dataTypeString, "int64"))
4245 {
4246 argument.__anon1.expression.__anon1.i64 = __ecereNameSpace__ecere__com___strtoi64(value, (((void *)0)), 0);
4247 }
4248 else if(!strcmp(curParam->__anon1.dataTypeString, "uint64"))
4249 {
4250 argument.__anon1.expression.__anon1.ui64 = __ecereNameSpace__ecere__com___strtoui64(value, (((void *)0)), 0);
4251 }
4252 else if(!strcmp(curParam->__anon1.dataTypeString, "float"))
4253 {
4254 argument.__anon1.expression.__anon1.f = (float)strtod(value, (((void *)0)));
4255 }
4256 else if(!strcmp(curParam->__anon1.dataTypeString, "double"))
4257 {
4258 argument.__anon1.expression.__anon1.d = strtod(value, (((void *)0)));
4259 }
4260 else
4261 {
4262 argument.__anon1.expression.__anon1.i = (int)strtol(value, (((void *)0)), 0);
4263 }
4264 break;
4265 }
4266 case 1:
4267 argument.__anon1.__anon2.memberString = __ecereNameSpace__ecere__sys__CopyString(value);
4268 break;
4269 }
4270 __ecereNameSpace__ecere__com__FreeTemplateArg(templatedClass, curParam, curParamID);
4271 templatedClass->templateArgs[curParamID] = argument;
4272 }
4273 }
4274 }
4275 if(templatedClass == _class)
4276 {
4277 struct __ecereNameSpace__ecere__com__Class * sClass = _class;
4278 int curParamID = 0;
4279 struct __ecereNameSpace__ecere__com__Class * nextClass;
4280 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param;
4281
4282 for(nextClass = sClass->base; nextClass; nextClass = nextClass->base)
4283 {
4284 if(nextClass->templateClass)
4285 nextClass = nextClass->templateClass;
4286 curParamID += nextClass->templateParams.count;
4287 }
4288 for(param = sClass->templateParams.first; param; param = param->next)
4289 {
4290 if(!templatedClass->templateArgs[curParamID].__anon1.__anon1.dataTypeString)
4291 {
4292 templatedClass->templateArgs[curParamID] = param->defaultArg;
4293 __ecereNameSpace__ecere__com__CopyTemplateArg(param, &templatedClass->templateArgs[curParamID]);
4294 if(param->type == 0 && param->defaultArg.__anon1.__anon1.dataTypeString)
4295 {
4296 templatedClass->templateArgs[curParamID].__anon1.__anon1.dataTypeClass = __ecereNameSpace__ecere__com__eSystem_FindClass(templatedClass->module, param->defaultArg.__anon1.__anon1.dataTypeString);
4297 if(!templatedClass->templateArgs[curParamID].__anon1.__anon1.dataTypeClass)
4298 templatedClass->templateArgs[curParamID].__anon1.__anon1.dataTypeClass = __ecereNameSpace__ecere__com__eSystem_FindClass(((struct __ecereNameSpace__ecere__com__Module *)(((char *)templatedClass->module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->application, param->defaultArg.__anon1.__anon1.dataTypeString);
4299 if(!templatedClass->templateArgs[curParamID].__anon1.__anon1.dataTypeClass)
4300 templatedClass->templateArgs[curParamID].__anon1.__anon1.dataTypeClass = __ecereNameSpace__ecere__com__eSystem_FindClass(findModule, param->defaultArg.__anon1.__anon1.dataTypeString);
4301 }
4302 }
4303 curParamID++;
4304 }
4305 }
4306 if(templatedClass->base && templatedClass->base->templateArgs && numParams - _class->templateParams.count)
4307 {
4308 int c = numParams - _class->templateParams.count - 1;
4309
4310 for(sClass = _class->base; sClass; sClass = sClass->base)
4311 {
4312 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param;
4313
4314 if(sClass->templateClass)
4315 sClass = sClass->templateClass;
4316 for(param = sClass->templateParams.last; param; param = param->prev)
4317 {
4318 struct __ecereNameSpace__ecere__com__ClassTemplateArgument * arg = &templatedClass->templateArgs[c];
4319 struct __ecereNameSpace__ecere__com__ClassTemplateArgument * baseArg = &templatedClass->base->templateArgs[c];
4320
4321 if(!(*arg).__anon1.__anon1.dataTypeString)
4322 {
4323 *arg = templatedClass->base->templateArgs[c];
4324 __ecereNameSpace__ecere__com__CopyTemplateArg(param, arg);
4325 if(param->type == 0)
4326 {
4327 if((*arg).__anon1.__anon1.dataTypeClass && strchr((*arg).__anon1.__anon1.dataTypeString, '<') && (*arg).__anon1.__anon1.dataTypeClass->templateArgs)
4328 {
4329 struct __ecereNameSpace__ecere__com__Class * expClass = (*arg).__anon1.__anon1.dataTypeClass;
4330 struct __ecereNameSpace__ecere__com__Class * cClass = (((void *)0));
4331 int paramCount = 0;
4332 int lastParam = -1;
4333 char templateString[1024];
4334
4335 sprintf(templateString, "%s<", expClass->templateClass->fullName);
4336 for(cClass = expClass; cClass; cClass = cClass->base)
4337 {
4338 int p = 0;
4339 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param;
4340
4341 for(param = cClass->templateParams.first; param; param = param->next)
4342 {
4343 int id = p;
4344 struct __ecereNameSpace__ecere__com__Class * sClass;
4345 struct __ecereNameSpace__ecere__com__ClassTemplateArgument arg;
4346
4347 for(sClass = expClass->base; sClass; sClass = sClass->base)
4348 id += sClass->templateParams.count;
4349 arg = expClass->templateArgs[id];
4350 {
4351 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * cParam;
4352 int p = numParams - _class->templateParams.count;
4353
4354 for(cParam = _class->templateParams.first; cParam; cParam = cParam->next, p++)
4355 {
4356 if(cParam->type == 0 && arg.__anon1.__anon1.dataTypeString && !strcmp(cParam->name, arg.__anon1.__anon1.dataTypeString))
4357 {
4358 arg.__anon1.__anon1.dataTypeString = templatedClass->templateArgs[p].__anon1.__anon1.dataTypeString;
4359 arg.__anon1.__anon1.dataTypeClass = templatedClass->templateArgs[p].__anon1.__anon1.dataTypeClass;
4360 break;
4361 }
4362 }
4363 }
4364 {
4365 char argument[256];
4366
4367 argument[0] = '\0';
4368 switch(param->type)
4369 {
4370 case 2:
4371 {
4372 break;
4373 }
4374 case 1:
4375 {
4376 strcat(argument, arg.__anon1.__anon2.__anon1.member->name);
4377 break;
4378 }
4379 case 0:
4380 {
4381 if(arg.__anon1.__anon1.dataTypeString)
4382 strcat(argument, arg.__anon1.__anon1.dataTypeString);
4383 break;
4384 }
4385 }
4386 if(argument[0])
4387 {
4388 if(paramCount)
4389 strcat(templateString, ", ");
4390 if(lastParam != p - 1)
4391 {
4392 strcat(templateString, param->name);
4393 strcat(templateString, " = ");
4394 }
4395 strcat(templateString, argument);
4396 paramCount++;
4397 lastParam = p;
4398 }
4399 }
4400 p++;
4401 }
4402 }
4403 {
4404 int len = (int)strlen(templateString);
4405
4406 if(templateString[len - 1] == '>')
4407 templateString[len++] = ' ';
4408 templateString[len++] = '>';
4409 templateString[len++] = '\0';
4410 }
4411 __ecereNameSpace__ecere__com__FreeTemplateArg(templatedClass, param, c);
4412 (*arg).__anon1.__anon1.dataTypeString = __ecereNameSpace__ecere__sys__CopyString(templateString);
4413 (*arg).__anon1.__anon1.dataTypeClass = __ecereNameSpace__ecere__com__eSystem_FindClass(templatedClass->module, templateString);
4414 if(!(*arg).__anon1.__anon1.dataTypeClass)
4415 (*arg).__anon1.__anon1.dataTypeClass = __ecereNameSpace__ecere__com__eSystem_FindClass(((struct __ecereNameSpace__ecere__com__Module *)(((char *)templatedClass->module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->application, templateString);
4416 }
4417 else
4418 {
4419 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * cParam;
4420 int p = numParams - _class->templateParams.count;
4421
4422 for(cParam = _class->templateParams.first; cParam; cParam = cParam->next, p++)
4423 {
4424 if(cParam->type == 0 && (*baseArg).__anon1.__anon1.dataTypeString && !strcmp(cParam->name, (*baseArg).__anon1.__anon1.dataTypeString))
4425 {
4426 __ecereNameSpace__ecere__com__FreeTemplateArg(templatedClass, param, c);
4427 (*arg).__anon1.__anon1.dataTypeString = templatedClass->templateArgs[p].__anon1.__anon1.dataTypeString;
4428 (*arg).__anon1.__anon1.dataTypeClass = templatedClass->templateArgs[p].__anon1.__anon1.dataTypeClass;
4429 __ecereNameSpace__ecere__com__CopyTemplateArg(cParam, arg);
4430 break;
4431 }
4432 }
4433 }
4434 }
4435 }
4436 c--;
4437 }
4438 }
4439 }
4440 {
4441 struct __ecereNameSpace__ecere__com__Class * sClass;
4442
4443 for(sClass = _class; sClass; sClass = sClass->base)
4444 {
4445 int curParamID = 0;
4446 struct __ecereNameSpace__ecere__com__Class * nextClass;
4447 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param;
4448
4449 if(sClass->templateClass)
4450 sClass = sClass->templateClass;
4451 for(nextClass = sClass->base; nextClass; nextClass = nextClass->base)
4452 {
4453 if(nextClass->templateClass)
4454 nextClass = nextClass->templateClass;
4455 curParamID += nextClass->templateParams.count;
4456 }
4457 for(param = sClass->templateParams.first; param; param = param->next)
4458 {
4459 if(!templatedClass->templateArgs[curParamID].__anon1.__anon1.dataTypeString)
4460 {
4461 templatedClass->templateArgs[curParamID] = param->defaultArg;
4462 __ecereNameSpace__ecere__com__CopyTemplateArg(param, &templatedClass->templateArgs[curParamID]);
4463 if(param->type == 0 && param->defaultArg.__anon1.__anon1.dataTypeString)
4464 {
4465 templatedClass->templateArgs[curParamID].__anon1.__anon1.dataTypeClass = __ecereNameSpace__ecere__com__eSystem_FindClass(templatedClass->module, param->defaultArg.__anon1.__anon1.dataTypeString);
4466 if(!templatedClass->templateArgs[curParamID].__anon1.__anon1.dataTypeClass)
4467 templatedClass->templateArgs[curParamID].__anon1.__anon1.dataTypeClass = __ecereNameSpace__ecere__com__eSystem_FindClass(((struct __ecereNameSpace__ecere__com__Module *)(((char *)templatedClass->module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->application, param->defaultArg.__anon1.__anon1.dataTypeString);
4468 if(!templatedClass->templateArgs[curParamID].__anon1.__anon1.dataTypeClass)
4469 templatedClass->templateArgs[curParamID].__anon1.__anon1.dataTypeClass = __ecereNameSpace__ecere__com__eSystem_FindClass(findModule, param->defaultArg.__anon1.__anon1.dataTypeString);
4470 }
4471 }
4472 curParamID++;
4473 }
4474 }
4475 }
4476 {
4477 int c = numParams - 1;
4478
4479 for(sClass = _class; sClass; sClass = sClass->base)
4480 {
4481 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param;
4482
4483 if(sClass->templateClass)
4484 sClass = sClass->templateClass;
4485 for(param = sClass->templateParams.last; param; param = param->prev)
4486 {
4487 if(param->type == 0)
4488 {
4489 struct __ecereNameSpace__ecere__com__ClassTemplateArgument * arg = &templatedClass->templateArgs[c];
4490 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * cParam;
4491 struct __ecereNameSpace__ecere__com__Class * dClass;
4492 int p = numParams - 1;
4493
4494 for(dClass = _class; dClass; dClass = dClass->base)
4495 {
4496 if(dClass->templateClass)
4497 dClass = dClass->templateClass;
4498 for(cParam = dClass->templateParams.last; cParam; cParam = cParam->prev, p--)
4499 {
4500 if(cParam->type == 0 && (*arg).__anon1.__anon1.dataTypeString && !strcmp(cParam->name, (*arg).__anon1.__anon1.dataTypeString))
4501 {
4502 if(templatedClass->templateArgs[p].__anon1.__anon1.dataTypeString && c != p)
4503 {
4504 __ecereNameSpace__ecere__com__FreeTemplateArg(templatedClass, param, c);
4505 (*arg).__anon1.__anon1.dataTypeString = templatedClass->templateArgs[p].__anon1.__anon1.dataTypeString;
4506 (*arg).__anon1.__anon1.dataTypeClass = templatedClass->templateArgs[p].__anon1.__anon1.dataTypeClass;
4507 __ecereNameSpace__ecere__com__CopyTemplateArg(cParam, arg);
4508 }
4509 }
4510 }
4511 }
4512 }
4513 c--;
4514 }
4515 }
4516 }
4517 {
4518 struct __ecereNameSpace__ecere__com__Class * tClass;
4519 int c = numParams - 1;
4520
4521 for(tClass = _class; tClass; tClass = tClass->base)
4522 {
4523 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param;
4524
4525 if(tClass->templateClass)
4526 tClass = tClass->templateClass;
4527 for(param = tClass->templateParams.last; param; param = param->prev)
4528 {
4529 struct __ecereNameSpace__ecere__com__ClassTemplateArgument * arg = &templatedClass->templateArgs[c];
4530
4531 if(param->type == 1 && (*arg).__anon1.__anon2.memberString)
4532 {
4533 struct __ecereNameSpace__ecere__com__Class * memberClass = templatedClass;
4534 const char * memberString = (*arg).__anon1.__anon2.memberString;
4535 const char * colon = strstr(memberString, "::");
4536 const char * memberName = memberString;
4537
4538 if(colon)
4539 memberName = colon + 2;
4540 if(!colon)
4541 {
4542 memberString = param->defaultArg.__anon1.__anon2.memberString;
4543 colon = memberString ? strstr(memberString, "::") : (((void *)0));
4544 }
4545 if(colon)
4546 {
4547 char className[1024];
4548 struct __ecereNameSpace__ecere__com__Class * sClass;
4549
4550 memcpy(className, memberString, colon - memberString);
4551 className[colon - memberString] = '\0';
4552 for(sClass = _class; sClass; sClass = sClass->base)
4553 {
4554 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * cParam;
4555 struct __ecereNameSpace__ecere__com__Class * nextClass;
4556 int id = 0;
4557
4558 if(sClass->templateClass)
4559 sClass = sClass->templateClass;
4560 for(nextClass = sClass->base; nextClass; nextClass = nextClass->base)
4561 {
4562 if(nextClass->templateClass)
4563 nextClass = nextClass->templateClass;
4564 id += nextClass->templateParams.count;
4565 }
4566 for(cParam = sClass->templateParams.first; cParam; cParam = cParam->next)
4567 {
4568 if(cParam->type == 0 && !strcmp(cParam->name, className) && templatedClass->templateArgs[id].__anon1.__anon1.dataTypeString)
4569 {
4570 strcpy(className, templatedClass->templateArgs[id].__anon1.__anon1.dataTypeString);
4571 }
4572 id++;
4573 }
4574 }
4575 memberClass = __ecereNameSpace__ecere__com__eSystem_FindClass(templatedClass->module, className);
4576 if(!memberClass)
4577 memberClass = __ecereNameSpace__ecere__com__eSystem_FindClass(findModule, className);
4578 if(!memberClass)
4579 memberClass = __ecereNameSpace__ecere__com__eSystem_FindClass(((struct __ecereNameSpace__ecere__com__Module *)(((char *)templatedClass->module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->application, className);
4580 }
4581 if(memberClass)
4582 {
4583 switch(param->__anon1.memberType)
4584 {
4585 case 0:
4586 (*arg).__anon1.__anon2.__anon1.member = __ecereNameSpace__ecere__com__eClass_FindDataMember(memberClass, memberName, memberClass->module, (((void *)0)), (((void *)0)));
4587 break;
4588 case 1:
4589 (*arg).__anon1.__anon2.__anon1.method = __ecereNameSpace__ecere__com__eClass_FindMethod(memberClass, memberName, memberClass->module);
4590 break;
4591 case 2:
4592 (*arg).__anon1.__anon2.__anon1.prop = __ecereNameSpace__ecere__com__eClass_FindProperty(memberClass, memberName, memberClass->module);
4593 break;
4594 }
4595 }
4596 }
4597 c--;
4598 }
4599 }
4600 }
4601 }
4602
4603 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)
4604 {
4605 if(_class && name)
4606 {
4607 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param;
4608
4609 for(param = _class->templateParams.first; param; param = param->next)
4610 {
4611 if(!strcmp(param->name, name))
4612 return param;
4613 }
4614 param = __extension__ ({
4615 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * __ecereInstance1 = __ecereNameSpace__ecere__com__eSystem_New0(sizeof(struct __ecereNameSpace__ecere__com__ClassTemplateParameter));
4616
4617 __ecereInstance1->name = __ecereNameSpace__ecere__sys__CopyString(name), __ecereInstance1->type = type, __ecereInstance1->__anon1.dataTypeString = (type == 1) ? info : __ecereNameSpace__ecere__sys__CopyString(info), __ecereInstance1;
4618 });
4619 if(defaultArg != (((void *)0)))
4620 {
4621 param->defaultArg = *defaultArg;
4622 __ecereNameSpace__ecere__com__CopyTemplateArg(param, &param->defaultArg);
4623 }
4624 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&_class->templateParams, param);
4625 return param;
4626 }
4627 return (((void *)0));
4628 }
4629
4630 static void __ecereNameSpace__ecere__com__FreeTemplates(struct __ecereNameSpace__ecere__com__Class * _class)
4631 {
4632 struct __ecereNameSpace__ecere__sys__OldLink * deriv, * template;
4633
4634 for(deriv = _class->derivatives.first; deriv; deriv = deriv->next)
4635 {
4636 __ecereNameSpace__ecere__com__FreeTemplates(deriv->data);
4637 }
4638 __ecereNameSpace__ecere__com__FreeTemplateArgs(_class);
4639 (__ecereNameSpace__ecere__com__eSystem_Delete(_class->templateArgs), _class->templateArgs = 0);
4640 (__ecereNameSpace__ecere__com__eSystem_Delete((void *)_class->dataTypeString), _class->dataTypeString = 0);
4641 while((template = _class->templatized.first))
4642 {
4643 __ecereNameSpace__ecere__com__FreeTemplates(template->data);
4644 __ecereNameSpace__ecere__com__FreeTemplate(template->data);
4645 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&_class->templatized, template);
4646 }
4647 }
4648
4649 static void __ecereNameSpace__ecere__com__FixDerivativesBase(struct __ecereNameSpace__ecere__com__Class * base, struct __ecereNameSpace__ecere__com__Class * mod)
4650 {
4651 struct __ecereNameSpace__ecere__sys__OldLink * derivative;
4652
4653 __ecereNameSpace__ecere__com__ComputeClassParameters(base, strchr(base->name, '<'), (((void *)0)));
4654 for(derivative = base->derivatives.first; derivative; derivative = derivative->next)
4655 {
4656 struct __ecereNameSpace__ecere__com__Class * _class = derivative->data;
4657 int type = _class->type;
4658 int oldType = type;
4659 int size = _class->structSize - _class->offset;
4660 int oldSizeClass = _class->sizeClass;
4661 int sizeClass = _class->sizeClass - _class->offsetClass;
4662 struct __ecereNameSpace__ecere__com__Class * enumBase = (((void *)0));
4663 const char * dataTypeString = (((void *)0));
4664 struct __ecereNameSpace__ecere__com__Class * baseClass;
4665 unsigned int offsetBefore = _class->offset;
4666 int offsetClass, totalSizeClass;
4667
4668 for(baseClass = base; baseClass->base; baseClass = baseClass->base)
4669 ;
4670 if(base && !base->internalDecl && (base->type == 5 || base->type == 1 || base->type == 0))
4671 {
4672 if(base->type == 1 && type == 0)
4673 type = 5;
4674 else
4675 type = base->type;
4676 }
4677 if(base && (_class->type == 0 || _class->type == 5 || _class->type == 1) && (base->type == 3 || base->type == 2 || base->type == 4))
4678 {
4679 type = base->type;
4680 }
4681 if(type == 4)
4682 {
4683 if(base->type != 4)
4684 {
4685 enumBase = base;
4686 base = __ecereNameSpace__ecere__com__eSystem_FindClass(_class->module, "enum");
4687 }
4688 }
4689 dataTypeString = enumBase ? enumBase->dataTypeString : base->dataTypeString;
4690 offsetClass = base ? (base->templateClass ? base->templateClass->sizeClass : base->sizeClass) : (type == 5 ? 0 : 0);
4691 totalSizeClass = offsetClass + sizeClass;
4692 if(type == 0 || type == 5)
4693 _class->offset = (base && (base->templateClass ? base->templateClass->structSize : base->structSize) && base->type != 1000) ? (base->templateClass ? base->templateClass->structSize : base->structSize) : ((type == 5) ? 0 : sizeof(struct __ecereNameSpace__ecere__com__Instance));
4694 else
4695 _class->offset = 0;
4696 if(type == 1)
4697 {
4698 _class->memberOffset = (base && (base->templateClass ? base->templateClass->structSize : base->structSize) && base->type != 1000) ? (base->templateClass ? base->templateClass->structSize : base->structSize) : 0;
4699 _class->typeSize = _class->structSize = _class->memberOffset + size;
4700 }
4701 else if(type == 2 || type == 4 || type == 3)
4702 {
4703 struct __ecereNameSpace__ecere__com__Class * dataTypeClass = __ecereNameSpace__ecere__com__eSystem_FindClass(_class->module, dataTypeString);
4704
4705 if(dataTypeClass)
4706 _class->typeSize = dataTypeClass->typeSize;
4707 _class->structSize = 0;
4708 }
4709 else if(type == 0 || type == 5)
4710 {
4711 _class->structSize = _class->offset + size;
4712 _class->typeSize = sizeof(void *);
4713 }
4714 if(_class->type != 1000)
4715 _class->type = type;
4716 (__ecereNameSpace__ecere__com__eSystem_Delete((void *)_class->dataTypeString), _class->dataTypeString = 0);
4717 _class->dataTypeString = __ecereNameSpace__ecere__sys__CopyString(dataTypeString);
4718 if(totalSizeClass != oldSizeClass)
4719 {
4720 _class->data = __ecereNameSpace__ecere__com__eSystem_Renew(_class->data, sizeof(unsigned char) * (totalSizeClass));
4721 memmove((unsigned char *)_class->data + mod->offsetClass, (unsigned char *)_class->data, totalSizeClass - mod->sizeClass);
4722 if(base->type != 1000 && base->type != 4)
4723 memcpy((unsigned char *)_class->data, (unsigned char *)base->data, totalSizeClass - _class->sizeClass);
4724 else
4725 memset((unsigned char *)_class->data, 0, totalSizeClass - _class->sizeClass);
4726 }
4727 _class->offsetClass = offsetClass;
4728 _class->sizeClass = totalSizeClass;
4729 {
4730 struct __ecereNameSpace__ecere__com__Method * method, * next;
4731 struct __ecereNameSpace__ecere__com__Class * b;
4732 unsigned int needUpdate = (mod != (base->templateClass ? base->templateClass : base) || _class->vTblSize != mod->vTblSize);
4733 int updateStart = -1, updateEnd = -1;
4734
4735 if(mod->base && mod->base->base && mod->base->vTblSize > baseClass->vTblSize && needUpdate)
4736 {
4737 _class->vTblSize += mod->base->vTblSize - baseClass->vTblSize;
4738 _class->_vTbl = __ecereNameSpace__ecere__com__eSystem_Renew(_class->_vTbl, sizeof(void *) * (_class->vTblSize));
4739 memmove(_class->_vTbl + mod->base->vTblSize, _class->_vTbl + baseClass->vTblSize, (_class->vTblSize - mod->vTblSize) * sizeof(void *));
4740 updateStart = baseClass->vTblSize;
4741 updateEnd = updateStart + mod->base->vTblSize - baseClass->vTblSize;
4742 for(method = (struct __ecereNameSpace__ecere__com__Method *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&_class->methods); method; method = next)
4743 {
4744 next = (struct __ecereNameSpace__ecere__com__Method *)__ecereProp___ecereNameSpace__ecere__sys__BTNode_Get_next(((struct __ecereNameSpace__ecere__sys__BTNode *)method));
4745 if(method->type == 1)
4746 method->vid += mod->base->vTblSize - baseClass->vTblSize;
4747 }
4748 }
4749 for(b = mod->base; b && b != (((void *)0)); b = b->base)
4750 {
4751 struct __ecereNameSpace__ecere__com__Method * vMethod;
4752
4753 for(vMethod = (struct __ecereNameSpace__ecere__com__Method *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&b->methods); vMethod; vMethod = (struct __ecereNameSpace__ecere__com__Method *)__ecereProp___ecereNameSpace__ecere__sys__BTNode_Get_next(((struct __ecereNameSpace__ecere__sys__BTNode *)vMethod)))
4754 {
4755 if(vMethod->type == 1)
4756 {
4757 method = (struct __ecereNameSpace__ecere__com__Method *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&_class->methods, vMethod->name);
4758 if(method)
4759 {
4760 if(method->function)
4761 _class->_vTbl[vMethod->vid] = method->function;
4762 if(!method->symbol)
4763 {
4764 (__ecereNameSpace__ecere__com__eSystem_Delete((void *)method->name), method->name = 0);
4765 (__ecereNameSpace__ecere__com__eSystem_Delete((void *)method->dataTypeString), method->dataTypeString = 0);
4766 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&_class->methods, (struct __ecereNameSpace__ecere__sys__BTNode *)method);
4767 }
4768 else
4769 {
4770 (__ecereNameSpace__ecere__com__eSystem_Delete((void *)method->dataTypeString), method->dataTypeString = 0);
4771 method->type = vMethod->type;
4772 method->dataTypeString = __ecereNameSpace__ecere__sys__CopyString(vMethod->dataTypeString);
4773 method->_class = vMethod->_class;
4774 }
4775 }
4776 else if((vMethod->vid >= updateStart && vMethod->vid < updateEnd) || _class->_vTbl[vMethod->vid] == b->_vTbl[vMethod->vid])
4777 _class->_vTbl[vMethod->vid] = _class->base->_vTbl[vMethod->vid];
4778 }
4779 }
4780 }
4781 }
4782 if(type == 0 || type == 5 || type == 1)
4783 {
4784 struct __ecereNameSpace__ecere__com__Property * prop;
4785 struct __ecereNameSpace__ecere__com__DataMember * member;
4786 struct __ecereNameSpace__ecere__com__Class * c;
4787
4788 for(c = mod->base; c; c = c->base)
4789 {
4790 struct __ecereNameSpace__ecere__com__Property * _property;
4791
4792 for(_property = c->membersAndProperties.first; _property; _property = _property->next)
4793 {
4794 if(_property->isProperty)
4795 {
4796 struct __ecereNameSpace__ecere__com__BTNamedLink * link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&_class->prop, _property->name);
4797
4798 if(link)
4799 {
4800 prop = link->data;
4801 if(!prop->Set && !prop->Get && prop->memberAccess == 4)
4802 {
4803 struct __ecereNameSpace__ecere__com__SelfWatcher * watcher;
4804
4805 for(watcher = _class->selfWatchers.first; watcher; watcher = watcher->next)
4806 {
4807 if(watcher->_property == prop)
4808 watcher->_property = _property;
4809 }
4810 _property->selfWatchable = 1;
4811 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&_class->prop, (struct __ecereNameSpace__ecere__sys__BTNode *)link);
4812 (__ecereNameSpace__ecere__com__eSystem_Delete((void *)prop->name), prop->name = 0);
4813 (__ecereNameSpace__ecere__com__eSystem_Delete((void *)prop->dataTypeString), prop->dataTypeString = 0);
4814 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&_class->membersAndProperties, prop);
4815 }
4816 }
4817 }
4818 }
4819 }
4820 {
4821 struct __ecereNameSpace__ecere__com__DataMember * next;
4822
4823 for(member = _class->membersAndProperties.first; member; member = next)
4824 {
4825 int offsetDiff = _class->offset - offsetBefore;
4826
4827 next = member->next;
4828 if(!member->isProperty)
4829 {
4830 if(oldType == 2 && type != 2)
4831 {
4832 struct __ecereNameSpace__ecere__com__DataMember * prev = member->prev;
4833
4834 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove(&_class->membersAndProperties, member);
4835 member = (struct __ecereNameSpace__ecere__com__DataMember *)__ecereNameSpace__ecere__com__eSystem_Renew0(member, sizeof(unsigned char) * (sizeof(struct __ecereNameSpace__ecere__com__DataMember)));
4836 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert(&_class->membersAndProperties, prev, member);
4837 }
4838 if(offsetDiff > 0)
4839 {
4840 member->offset += offsetDiff;
4841 member->memberOffset += offsetDiff;
4842 }
4843 }
4844 member->id += mod->base->memberID;
4845 }
4846 _class->memberID += mod->base->memberID;
4847 _class->startMemberID += mod->base->memberID;
4848 }
4849 }
4850 __ecereNameSpace__ecere__com__FixDerivativesBase(_class, mod);
4851 {
4852 struct __ecereNameSpace__ecere__com__Class * c;
4853
4854 for(c = mod->base; c; c = c->base)
4855 {
4856 struct __ecereNameSpace__ecere__com__ClassProperty * _property;
4857
4858 for(_property = (struct __ecereNameSpace__ecere__com__ClassProperty *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&c->classProperties); _property; _property = (struct __ecereNameSpace__ecere__com__ClassProperty *)__ecereProp___ecereNameSpace__ecere__sys__BTNode_Get_next(((struct __ecereNameSpace__ecere__sys__BTNode *)_property)))
4859 {
4860 __ecereNameSpace__ecere__com__SetDelayedCPValues(_class, _property);
4861 }
4862 }
4863 }
4864 }
4865 {
4866 struct __ecereNameSpace__ecere__sys__OldLink * templateLink;
4867
4868 for(templateLink = base->templatized.first; templateLink; templateLink = templateLink->next)
4869 {
4870 struct __ecereNameSpace__ecere__com__Class * template = templateLink->data;
4871
4872 template->base = base->base;
4873 template->_vTbl = base->_vTbl;
4874 template->data = base->data;
4875 template->offset = base->offset;
4876 template->offsetClass = base->offsetClass;
4877 template->sizeClass = base->sizeClass;
4878 template->structSize = base->structSize;
4879 template->vTblSize = base->vTblSize;
4880 __ecereNameSpace__ecere__com__FixDerivativesBase(template, mod);
4881 }
4882 }
4883 }
4884
4885 struct __ecereNameSpace__ecere__com__Class * __ecereNameSpace__ecere__com__eSystem_FindClass(struct __ecereNameSpace__ecere__com__Instance * module, const char * name)
4886 {
4887 if(name && module)
4888 {
4889 struct __ecereNameSpace__ecere__com__BTNamedLink * link;
4890
4891 if(!strncmp(name, "const ", 6))
4892 name += 6;
4893 link = __ecereNameSpace__ecere__com__SearchNameSpace(&((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->application + sizeof(struct __ecereNameSpace__ecere__com__Module) + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->systemNameSpace, name, &(*((struct __ecereNameSpace__ecere__com__NameSpace *)0)).classes);
4894 if(link)
4895 return link->data;
4896 link = __ecereNameSpace__ecere__com__SearchModule(module, name, &(*((struct __ecereNameSpace__ecere__com__NameSpace *)0)).classes, 1);
4897 if(link)
4898 return link->data;
4899 {
4900 char noTemplateName[1024];
4901 char * templateParams = strchr(name, '<');
4902
4903 if(templateParams)
4904 {
4905 strncpy(noTemplateName, name, templateParams - name);
4906 noTemplateName[templateParams - name] = '\0';
4907 }
4908 else
4909 strcpy(noTemplateName, name);
4910 link = __ecereNameSpace__ecere__com__SearchNameSpace(&((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->application + sizeof(struct __ecereNameSpace__ecere__com__Module) + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->systemNameSpace, noTemplateName, &(*((struct __ecereNameSpace__ecere__com__NameSpace *)0)).classes);
4911 if(!link)
4912 link = __ecereNameSpace__ecere__com__SearchModule(module, noTemplateName, &(*((struct __ecereNameSpace__ecere__com__NameSpace *)0)).classes, 1);
4913 if(link)
4914 {
4915 struct __ecereNameSpace__ecere__com__Class * _class = link->data;
4916 struct __ecereNameSpace__ecere__com__Class * templatedClass = (((void *)0));
4917 char className[1024];
4918
4919 strcpy(className, _class->fullName);
4920 strcat(className, templateParams);
4921 link = __ecereNameSpace__ecere__com__SearchNameSpace(&((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->application + sizeof(struct __ecereNameSpace__ecere__com__Module) + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->systemNameSpace, className, &(*((struct __ecereNameSpace__ecere__com__NameSpace *)0)).classes);
4922 if(link)
4923 return link->data;
4924 link = __ecereNameSpace__ecere__com__SearchModule(module, className, &(*((struct __ecereNameSpace__ecere__com__NameSpace *)0)).classes, 1);
4925 if(link)
4926 return link->data;
4927 if(_class && templateParams)
4928 {
4929 struct __ecereNameSpace__ecere__sys__OldList __simpleStruct1 =
4930 {
4931 0, 0, 0, 0, 0
4932 };
4933 struct __ecereNameSpace__ecere__sys__OldList __simpleStruct0 =
4934 {
4935 0, 0, 0, 0, 0
4936 };
4937
4938 templatedClass = __ecereNameSpace__ecere__com__eSystem_New0(sizeof(struct __ecereNameSpace__ecere__com__Class));
4939 *templatedClass = *_class;
4940 templatedClass->templateClass = _class;
4941 templatedClass->fullName = __ecereNameSpace__ecere__sys__CopyString(className);
4942 templatedClass->dataTypeString = __ecereNameSpace__ecere__sys__CopyString(_class->dataTypeString);
4943 templatedClass->name = __ecereNameSpace__ecere__sys__CopyString(templatedClass->fullName + strlen(_class->fullName) - strlen(_class->name));
4944 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&(*templatedClass->nameSpace).classes, (struct __ecereNameSpace__ecere__sys__BTNode *)__extension__ ({
4945 struct __ecereNameSpace__ecere__com__BTNamedLink * __ecereInstance1 = __ecereNameSpace__ecere__com__eSystem_New0(sizeof(struct __ecereNameSpace__ecere__com__BTNamedLink));
4946
4947 __ecereInstance1->name = (char *)templatedClass->name, __ecereInstance1->data = templatedClass, __ecereInstance1;
4948 }));
4949 templatedClass->templateArgs = (((void *)0));
4950 templatedClass->numParams = 0;
4951 templatedClass->derivatives = __simpleStruct0;
4952 templatedClass->templatized = __simpleStruct1;
4953 __ecereNameSpace__ecere__com__ComputeClassParameters(templatedClass, templateParams, module);
4954 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&_class->templatized, __extension__ ({
4955 struct __ecereNameSpace__ecere__sys__OldLink * __ecereInstance1 = __ecereNameSpace__ecere__com__eSystem_New0(sizeof(struct __ecereNameSpace__ecere__sys__OldLink));
4956
4957 __ecereInstance1->data = templatedClass, __ecereInstance1;
4958 }));
4959 }
4960 return templatedClass;
4961 }
4962 }
4963 }
4964 return (((void *)0));
4965 }
4966
4967 void __ecereNameSpace__ecere__com__eClass_Unregister(struct __ecereNameSpace__ecere__com__Class * _class)
4968 {
4969 struct __ecereNameSpace__ecere__com__BTNamedLink * namedLink;
4970 struct __ecereNameSpace__ecere__com__DataMember * member;
4971 struct __ecereNameSpace__ecere__com__Method * method;
4972 struct __ecereNameSpace__ecere__sys__OldLink * deriv, * template;
4973 struct __ecereNameSpace__ecere__com__ClassProperty * classProp;
4974 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param;
4975
4976 (__ecereNameSpace__ecere__com__eSystem_Delete(_class->_vTbl), _class->_vTbl = 0);
4977 __ecereNameSpace__ecere__com__FreeTemplates(_class);
4978 __ecereNameSpace__ecere__com__FreeTemplateArgs(_class);
4979 (__ecereNameSpace__ecere__com__eSystem_Delete(_class->templateArgs), _class->templateArgs = 0);
4980 while((template = _class->templatized.first))
4981 {
4982 __ecereNameSpace__ecere__com__FreeTemplate(template->data);
4983 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&_class->templatized, template);
4984 }
4985 while((member = _class->membersAndProperties.first))
4986 {
4987 if(!member->isProperty && (member->type == 1 || member->type == 2))
4988 __ecereNameSpace__ecere__com__DataMember_Free(member);
4989 (__ecereNameSpace__ecere__com__eSystem_Delete((void *)member->name), member->name = 0);
4990 (__ecereNameSpace__ecere__com__eSystem_Delete((void *)member->dataTypeString), member->dataTypeString = 0);
4991 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&_class->membersAndProperties, member);
4992 }
4993 while((member = _class->conversions.first))
4994 {
4995 (__ecereNameSpace__ecere__com__eSystem_Delete((void *)member->name), member->name = 0);
4996 (__ecereNameSpace__ecere__com__eSystem_Delete((void *)member->dataTypeString), member->dataTypeString = 0);
4997 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&_class->conversions, member);
4998 }
4999 while((namedLink = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&_class->prop)))
5000 {
5001 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&_class->prop, (struct __ecereNameSpace__ecere__sys__BTNode *)namedLink);
5002 }
5003 while((namedLink = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&_class->members)))
5004 {
5005 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&_class->members, (struct __ecereNameSpace__ecere__sys__BTNode *)namedLink);
5006 }
5007 while((classProp = (struct __ecereNameSpace__ecere__com__ClassProperty *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&_class->classProperties)))
5008 {
5009 (__ecereNameSpace__ecere__com__eSystem_Delete((void *)classProp->name), classProp->name = 0);
5010 (__ecereNameSpace__ecere__com__eSystem_Delete((void *)classProp->dataTypeString), classProp->dataTypeString = 0);
5011 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&_class->classProperties, (struct __ecereNameSpace__ecere__sys__BTNode *)classProp);
5012 }
5013 while((method = (struct __ecereNameSpace__ecere__com__Method *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&_class->methods)))
5014 {
5015 (__ecereNameSpace__ecere__com__eSystem_Delete((void *)method->name), method->name = 0);
5016 (__ecereNameSpace__ecere__com__eSystem_Delete((void *)method->dataTypeString), method->dataTypeString = 0);
5017 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&_class->methods, (struct __ecereNameSpace__ecere__sys__BTNode *)method);
5018 }
5019 if(_class->type == 4)
5020 {
5021 struct __ecereNameSpace__ecere__com__EnumClassData * data = (struct __ecereNameSpace__ecere__com__EnumClassData *)_class->data;
5022
5023 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Free(&data->values, (void *)__ecereNameSpace__ecere__com__FreeEnumValue);
5024 }
5025 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Free(&_class->delayedCPValues, (((void *)0)));
5026 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Free(&_class->selfWatchers, (((void *)0)));
5027 if(_class->base)
5028 {
5029 struct __ecereNameSpace__ecere__com__Class * base = _class->base;
5030
5031 for(deriv = base->derivatives.first; deriv; deriv = deriv->next)
5032 {
5033 if(deriv->data == _class)
5034 break;
5035 }
5036 if(deriv)
5037 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&base->derivatives, deriv);
5038 }
5039 while((deriv = _class->derivatives.first))
5040 {
5041 ((struct __ecereNameSpace__ecere__com__Class *)deriv->data)->base = (((void *)0));
5042 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&_class->derivatives, deriv);
5043 }
5044 if(_class->nameSpace)
5045 {
5046 struct __ecereNameSpace__ecere__com__BTNamedLink * link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&(*_class->nameSpace).classes, _class->name);
5047
5048 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&(*_class->nameSpace).classes, (struct __ecereNameSpace__ecere__sys__BTNode *)link);
5049 }
5050 (__ecereNameSpace__ecere__com__eSystem_Delete((void *)_class->name), _class->name = 0);
5051 (__ecereNameSpace__ecere__com__eSystem_Delete((void *)_class->fullName), _class->fullName = 0);
5052 (__ecereNameSpace__ecere__com__eSystem_Delete((void *)_class->dataTypeString), _class->dataTypeString = 0);
5053 (__ecereNameSpace__ecere__com__eSystem_Delete(_class->data), _class->data = 0);
5054 while((param = _class->templateParams.first))
5055 {
5056 switch(param->type)
5057 {
5058 case 0:
5059 (__ecereNameSpace__ecere__com__eSystem_Delete((void *)param->defaultArg.__anon1.__anon1.dataTypeString), param->defaultArg.__anon1.__anon1.dataTypeString = 0);
5060 break;
5061 case 1:
5062 (__ecereNameSpace__ecere__com__eSystem_Delete((void *)param->defaultArg.__anon1.__anon2.memberString), param->defaultArg.__anon1.__anon2.memberString = 0);
5063 break;
5064 case 2:
5065 break;
5066 }
5067 if(param->type != 1)
5068 (__ecereNameSpace__ecere__com__eSystem_Delete((void *)param->__anon1.dataTypeString), param->__anon1.dataTypeString = 0);
5069 (__ecereNameSpace__ecere__com__eSystem_Delete((void *)param->name), param->name = 0);
5070 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&_class->templateParams, param);
5071 }
5072 __ecereNameSpace__ecere__com___free(_class);
5073 }
5074
5075 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)
5076 {
5077 int start = 0, c;
5078 struct __ecereNameSpace__ecere__com__NameSpace * nameSpace = (((void *)0));
5079 unsigned int force64Bits = (((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->application + sizeof(struct __ecereNameSpace__ecere__com__Module) + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->isGUIApp & 2) ? 1 : 0;
5080 unsigned int force32Bits = (((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->application + sizeof(struct __ecereNameSpace__ecere__com__Module) + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->isGUIApp & 4) ? 1 : 0;
5081 unsigned int inCompiler = (((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->application + sizeof(struct __ecereNameSpace__ecere__com__Module) + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->isGUIApp & 8) ? 1 : 0;
5082 unsigned int crossBits = force32Bits || force64Bits;
5083 unsigned int fixed = 0;
5084
5085 if(inCompiler && crossBits)
5086 {
5087 struct __ecereNameSpace__ecere__com__Class * c = __ecereNameSpace__ecere__com__eSystem_FindClass(((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->application, name);
5088
5089 if(c && c->fixed)
5090 fixed = 1;
5091 else if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->name && !strcmp(((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->name, "ecereCOM"))
5092 fixed = 1;
5093 }
5094 {
5095 nameSpace = (declMode == 1) ? &((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->publicNameSpace : &((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->privateNameSpace;
5096 if(declMode == 4)
5097 nameSpace = &((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->application + sizeof(struct __ecereNameSpace__ecere__com__Module) + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->systemNameSpace;
5098 {
5099 for(c = 0; name[c]; c++)
5100 {
5101 if(name[c] == '.' || (name[c] == ':' && name[c + 1] == ':'))
5102 {
5103 struct __ecereNameSpace__ecere__com__NameSpace * newSpace;
5104 char * spaceName = __ecereNameSpace__ecere__com___malloc(c - start + 1);
5105
5106 strncpy(spaceName, name + start, c - start);
5107 spaceName[c - start] = '\0';
5108 newSpace = (struct __ecereNameSpace__ecere__com__NameSpace *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&(*nameSpace).nameSpaces, spaceName);
5109 if(!newSpace)
5110 {
5111 newSpace = __ecereNameSpace__ecere__com__eSystem_New0(sizeof(struct __ecereNameSpace__ecere__com__NameSpace) * (1));
5112 (*newSpace).classes.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
5113 (*newSpace).defines.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
5114 (*newSpace).functions.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
5115 (*newSpace).nameSpaces.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
5116 (*newSpace).name = spaceName;
5117 (*newSpace).parent = nameSpace;
5118 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&(*nameSpace).nameSpaces, (struct __ecereNameSpace__ecere__sys__BTNode *)newSpace);
5119 }
5120 else
5121 (__ecereNameSpace__ecere__com__eSystem_Delete(spaceName), spaceName = 0);
5122 nameSpace = newSpace;
5123 if(name[c] == ':')
5124 c++;
5125 start = c + 1;
5126 }
5127 }
5128 }
5129 }
5130 if(c - start)
5131 {
5132 int offsetClass;
5133 int totalSizeClass;
5134 struct __ecereNameSpace__ecere__com__BTNamedLink * classLink = (((void *)0));
5135 struct __ecereNameSpace__ecere__com__Class * _class = (((void *)0));
5136 const char * dataTypeString = (((void *)0));
5137 struct __ecereNameSpace__ecere__com__Class * enumBase = (((void *)0));
5138 struct __ecereNameSpace__ecere__com__Class * base = (baseName && baseName[0]) ? __ecereNameSpace__ecere__com__eSystem_FindClass(module, baseName) : (((void *)0));
5139 struct __ecereNameSpace__ecere__com__Class * prevBase = (((void *)0));
5140
5141 if(base && !base->internalDecl && (base->type == 5 || base->type == 1 || base->type == 0))
5142 {
5143 if(base->type == 1 && type == 0)
5144 type = 5;
5145 else
5146 type = base->type;
5147 }
5148 if(base && (type == 0 || type == 5 || type == 1) && (base->type == 3 || base->type == 2 || base->type == 4))
5149 {
5150 type = base->type;
5151 }
5152 if(!base || base->type == 1000 || base->isInstanceClass)
5153 {
5154 if(type == 4)
5155 {
5156 if(base || !baseName || !baseName[0] || !strcmp(baseName, "unsigned int") || !strcmp(baseName, "uint") || !strcmp(baseName, "unsigned int64") || !strcmp(baseName, "uint64") || !strcmp(baseName, "int64") || !strcmp(baseName, "unsigned short") || !strcmp(baseName, "short") || !strcmp(baseName, "unsigned char") || !strcmp(baseName, "byte") || !strcmp(baseName, "char") || !strcmp(baseName, "uint32") || !strcmp(baseName, "uint16"))
5157 {
5158 base = __ecereNameSpace__ecere__com__eSystem_FindClass(module, "enum");
5159 dataTypeString = (baseName && baseName[0]) ? baseName : "int";
5160 }
5161 else
5162 {
5163 base = __ecereNameSpace__ecere__com__eSystem_RegisterClass((int)0, baseName, (((void *)0)), 0, 0, (((void *)0)), (((void *)0)), module, declMode, 1);
5164 base->internalDecl = 1;
5165 enumBase = base;
5166 base = __ecereNameSpace__ecere__com__eSystem_FindClass(module, "enum");
5167 }
5168 }
5169 else if(type == 1 && (!baseName || !baseName[0]))
5170 {
5171 base = __ecereNameSpace__ecere__com__eSystem_FindClass(module, "struct");
5172 dataTypeString = name + start;
5173 }
5174 else
5175 {
5176 if(type == 0)
5177 dataTypeString = "struct __ecereNameSpace__ecere__com__Instance";
5178 else if(type == 5)
5179 dataTypeString = "void *";
5180 else if(type == 2)
5181 dataTypeString = (baseName && baseName[0]) ? baseName : "unsigned int";
5182 else if(type == 3)
5183 dataTypeString = (baseName && baseName[0]) ? baseName : "int";
5184 else if(type == 1)
5185 dataTypeString = name + start;
5186 if(base || (!baseName || !baseName[0]) || type == 2 || type == 3)
5187 {
5188 if(base || !baseName || !baseName[0] || !strcmp(baseName, "unsigned int") || !strcmp(baseName, "uint") || !strcmp(baseName, "unsigned int64") || !strcmp(baseName, "uint64") || !strcmp(baseName, "int64") || !strcmp(baseName, "unsigned short") || !strcmp(baseName, "short") || !strcmp(baseName, "unsigned char") || !strcmp(baseName, "byte") || !strcmp(baseName, "char") || !strcmp(baseName, "uint32") || !strcmp(baseName, "uint16"))
5189 {
5190 if(type == 0 && strcmp(name, "ecere::com::Instance") && strcmp(name, "enum") && strcmp(name, "struct"))
5191 base = __ecereNameSpace__ecere__com__eSystem_FindClass(module, "ecere::com::Instance");
5192 else
5193 base = __ecereNameSpace__ecere__com__eSystem_FindClass(module, "class");
5194 }
5195 }
5196 else
5197 {
5198 }
5199 }
5200 }
5201 else
5202 {
5203 if(type == 4)
5204 {
5205 if(base->type != 4)
5206 {
5207 enumBase = base;
5208 base = __ecereNameSpace__ecere__com__eSystem_FindClass(module, "enum");
5209 }
5210 }
5211 dataTypeString = enumBase ? enumBase->dataTypeString : base->dataTypeString;
5212 }
5213 offsetClass = base ? base->sizeClass : (type == 5 ? 0 : 0);
5214 totalSizeClass = offsetClass + sizeClass;
5215 _class = __ecereNameSpace__ecere__com__eSystem_FindClass(module, name);
5216 if(!_class)
5217 {
5218 const char * colons = __ecereNameSpace__ecere__sys__RSearchString(name, "::", strlen(name), 1, 0);
5219
5220 if(colons && colons)
5221 {
5222 _class = __ecereNameSpace__ecere__com__eSystem_FindClass(module, colons + 2);
5223 if(_class)
5224 {
5225 if(_class->internalDecl)
5226 {
5227 (__ecereNameSpace__ecere__com__eSystem_Delete((void *)_class->fullName), _class->fullName = 0);
5228 _class->fullName = __ecereNameSpace__ecere__sys__CopyString(name);
5229 }
5230 else
5231 _class = (((void *)0));
5232 }
5233 }
5234 }
5235 if(_class)
5236 {
5237 if(!_class->internalDecl)
5238 {
5239 if(declMode != 4)
5240 printf("error: Redefinition of class %s\n", name);
5241 else
5242 {
5243 _class->comRedefinition = 1;
5244 return _class;
5245 }
5246 return (((void *)0));
5247 }
5248 __ecereNameSpace__ecere__com__FreeTemplatesDerivatives(_class);
5249 classLink = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&(*_class->nameSpace).classes, name + start);
5250 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&(*_class->nameSpace).classes, (struct __ecereNameSpace__ecere__sys__BTNode *)classLink);
5251 {
5252 struct __ecereNameSpace__ecere__sys__OldLink * t;
5253
5254 for(t = _class->templatized.first; t; t = t->next)
5255 {
5256 struct __ecereNameSpace__ecere__com__Class * template = t->data;
5257
5258 classLink = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&(*_class->nameSpace).classes, template->name);
5259 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&(*_class->nameSpace).classes, (struct __ecereNameSpace__ecere__sys__BTNode *)classLink);
5260 }
5261 }
5262 {
5263 struct __ecereNameSpace__ecere__com__NameSpace * ns = _class->nameSpace;
5264
5265 while((*ns).parent && !__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&(*ns).classes) && !__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&(*ns).functions) && !__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&(*ns).defines) && !__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&(*ns).nameSpaces))
5266 {
5267 struct __ecereNameSpace__ecere__com__NameSpace * parent = (*ns).parent;
5268
5269 __ecereNameSpace__ecere__com__NameSpace_Free(ns);
5270 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&(*parent).nameSpaces, (struct __ecereNameSpace__ecere__sys__BTNode *)ns);
5271 ns = parent;
5272 }
5273 }
5274 }
5275 else
5276 {
5277 classLink = __ecereNameSpace__ecere__com__SearchNameSpace(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->application + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->privateNameSpace, name, &(*((struct __ecereNameSpace__ecere__com__NameSpace *)0)).classes);
5278 if(!classLink)
5279 classLink = __ecereNameSpace__ecere__com__SearchNameSpace(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->application + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->publicNameSpace, name, &(*((struct __ecereNameSpace__ecere__com__NameSpace *)0)).classes);
5280 if(!classLink)
5281 classLink = __ecereNameSpace__ecere__com__SearchNameSpace(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->application + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->privateNameSpace, name + start, &(*((struct __ecereNameSpace__ecere__com__NameSpace *)0)).classes);
5282 if(!classLink)
5283 classLink = __ecereNameSpace__ecere__com__SearchNameSpace(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->application + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->publicNameSpace, name + start, &(*((struct __ecereNameSpace__ecere__com__NameSpace *)0)).classes);
5284 if(classLink)
5285 _class = classLink->data;
5286 if(_class && _class->internalDecl)
5287 {
5288 __ecereNameSpace__ecere__com__FreeTemplatesDerivatives(_class);
5289 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&(*_class->nameSpace).classes, (struct __ecereNameSpace__ecere__sys__BTNode *)classLink);
5290 {
5291 struct __ecereNameSpace__ecere__sys__OldLink * t;
5292
5293 for(t = _class->templatized.first; t; t = t->next)
5294 {
5295 struct __ecereNameSpace__ecere__com__Class * template = t->data;
5296
5297 classLink = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&(*_class->nameSpace).classes, template->name);
5298 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&(*_class->nameSpace).classes, (struct __ecereNameSpace__ecere__sys__BTNode *)classLink);
5299 }
5300 }
5301 (__ecereNameSpace__ecere__com__eSystem_Delete((void *)_class->fullName), _class->fullName = 0);
5302 _class->fullName = __ecereNameSpace__ecere__sys__CopyString(name);
5303 }
5304 else
5305 {
5306 _class = __ecereNameSpace__ecere__com___calloc(1, sizeof(struct __ecereNameSpace__ecere__com__Class));
5307 _class->methods.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
5308 _class->members.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
5309 _class->prop.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
5310 _class->classProperties.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
5311 _class->name = __ecereNameSpace__ecere__sys__CopyString(name + start);
5312 _class->fullName = __ecereNameSpace__ecere__sys__CopyString(name);
5313 }
5314 }
5315 if(nameSpace)
5316 {
5317 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&(*nameSpace).classes, (struct __ecereNameSpace__ecere__sys__BTNode *)__extension__ ({
5318 struct __ecereNameSpace__ecere__com__BTNamedLink * __ecereInstance1 = __ecereNameSpace__ecere__com__eSystem_New0(sizeof(struct __ecereNameSpace__ecere__com__BTNamedLink));
5319
5320 __ecereInstance1->name = (char *)_class->name, __ecereInstance1->data = _class, __ecereInstance1;
5321 }));
5322 {
5323 struct __ecereNameSpace__ecere__sys__OldLink * t;
5324
5325 for(t = _class->templatized.first; t; t = t->next)
5326 {
5327 struct __ecereNameSpace__ecere__com__Class * template = t->data;
5328
5329 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&(*nameSpace).classes, (struct __ecereNameSpace__ecere__sys__BTNode *)__extension__ ({
5330 struct __ecereNameSpace__ecere__com__BTNamedLink * __ecereInstance1 = __ecereNameSpace__ecere__com__eSystem_New0(sizeof(struct __ecereNameSpace__ecere__com__BTNamedLink));
5331
5332 __ecereInstance1->name = (char *)template->name, __ecereInstance1->data = template, __ecereInstance1;
5333 }));
5334 }
5335 }
5336 }
5337 if(_class)
5338 {
5339 if(!base && baseName && strcmp(baseName, name))
5340 {
5341 if(strchr(baseName, '<'))
5342 {
5343 char templateClassName[1024];
5344 struct __ecereNameSpace__ecere__com__Class * templateBase;
5345
5346 strcpy(templateClassName, baseName);
5347 *strchr(templateClassName, '<') = '\0';
5348 templateBase = __ecereNameSpace__ecere__com__eSystem_FindClass(module, templateClassName);
5349 if(!templateBase)
5350 {
5351 templateBase = __ecereNameSpace__ecere__com__eSystem_RegisterClass((int)0, templateClassName, (((void *)0)), 0, 0, (((void *)0)), (((void *)0)), module, declMode, 1);
5352 templateBase->internalDecl = 1;
5353 }
5354 base = __ecereNameSpace__ecere__com__eSystem_FindClass(module, baseName);
5355 }
5356 else
5357 {
5358 base = __ecereNameSpace__ecere__com__eSystem_RegisterClass((int)0, baseName, (((void *)0)), 0, 0, (((void *)0)), (((void *)0)), module, declMode, 1);
5359 base->internalDecl = 1;
5360 }
5361 }
5362 else
5363 _class->internalDecl = 0;
5364 if(totalSizeClass)
5365 {
5366 _class->data = __ecereNameSpace__ecere__com__eSystem_Renew(_class->data, sizeof(unsigned char) * (totalSizeClass));
5367 if(base && base->type != 1000 && base->type != 4)
5368 memcpy(_class->data, base->data, offsetClass);
5369 else
5370 memset(_class->data, 0, offsetClass);
5371 memset((unsigned char *)_class->data + offsetClass, 0, sizeClass);
5372 }
5373 (__ecereNameSpace__ecere__com__eSystem_Delete((void *)_class->dataTypeString), _class->dataTypeString = 0);
5374 _class->dataTypeString = __ecereNameSpace__ecere__sys__CopyString(dataTypeString);
5375 _class->defaultAlignment = base ? base->defaultAlignment : 0;
5376 if(_class->module)
5377 {
5378 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)_class->module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->classes, _class);
5379 }
5380 if(_class->base)
5381 {
5382 struct __ecereNameSpace__ecere__com__Class * base = _class->base;
5383 struct __ecereNameSpace__ecere__sys__OldLink * deriv = __ecereMethod___ecereNameSpace__ecere__sys__OldList_FindLink(&base->derivatives, _class);
5384
5385 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&base->derivatives, deriv);
5386 }
5387 if(module)
5388 {
5389 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->classes, _class);
5390 }
5391 _class->nameSpace = nameSpace;
5392 {
5393 struct __ecereNameSpace__ecere__sys__OldLink * t;
5394
5395 for(t = _class->templatized.first; t; t = t->next)
5396 {
5397 struct __ecereNameSpace__ecere__com__Class * template = t->data;
5398
5399 template->nameSpace = nameSpace;
5400 }
5401 }
5402 _class->module = module;
5403 prevBase = _class->base;
5404 _class->base = base;
5405 if(base)
5406 {
5407 int numParams = 0;
5408 struct __ecereNameSpace__ecere__com__Class * sClass;
5409
5410 for(sClass = base; sClass; sClass = sClass->base)
5411 {
5412 if(sClass->templateClass)
5413 sClass = sClass->templateClass;
5414 numParams += sClass->templateParams.count;
5415 }
5416 if(numParams)
5417 {
5418 if(_class->templateArgs)
5419 {
5420 __ecereNameSpace__ecere__com__FreeTemplateArgs(_class);
5421 }
5422 (__ecereNameSpace__ecere__com__eSystem_Delete(_class->templateArgs), _class->templateArgs = 0);
5423 _class->templateArgs = __ecereNameSpace__ecere__com__eSystem_New0(sizeof(struct __ecereNameSpace__ecere__com__ClassTemplateArgument) * (numParams));
5424 _class->numParams = numParams;
5425 for(sClass = _class; sClass; sClass = sClass->base)
5426 {
5427 struct __ecereNameSpace__ecere__com__Class * prevClass;
5428 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param;
5429 int id = 0;
5430
5431 if(sClass->templateClass)
5432 sClass = sClass->templateClass;
5433 for(prevClass = sClass->base; prevClass; prevClass = prevClass->base)
5434 {
5435 if(prevClass->templateClass)
5436 prevClass = prevClass->templateClass;
5437 id += prevClass->templateParams.count;
5438 }
5439 if(base->templateArgs)
5440 {
5441 for(param = sClass->templateParams.first; param; param = param->next)
5442 {
5443 _class->templateArgs[id] = base->templateArgs[id];
5444 __ecereNameSpace__ecere__com__CopyTemplateArg(param, &_class->templateArgs[id]);
5445 id++;
5446 }
5447 }
5448 }
5449 }
5450 }
5451 _class->memberID = _class->startMemberID = (base && (type == 0 || type == 5 || type == 1)) ? base->memberID : 0;
5452 if(type == 0 || type == 5)
5453 _class->offset = (base && base->structSize && base->type != 1000) ? base->structSize : ((type == 5) ? 0 : ((force64Bits && inCompiler && fixed) ? 24 : (force32Bits && inCompiler && fixed) ? 12 : sizeof(struct __ecereNameSpace__ecere__com__Instance)));
5454 else
5455 _class->offset = 0;
5456 if(crossBits)
5457 {
5458 if(!strcmp(name, "GNOSISSystem") || !strcmp(name, "LineStyle") || !strcmp(name, "FillStyle") || !strcmp(name, "FontObject") || !strcmp(name, "SymbolStyle"))
5459 {
5460 _class->offset = force32Bits ? 24 : 12;
5461 }
5462 else if(strstr(name, "ecere::sys::EARHeader") || strstr(name, "AnchorValue") || !strcmp(name, "ecere::com::CustomAVLTree") || !strcmp(name, "ecere::com::Array") || !strcmp(name, "ecere::gui::Window") || !strcmp(name, "ecere::sys::Mutex"))
5463 ;
5464 else
5465 {
5466 if(!strcmp(name, "ecere::sys::FileListing"))
5467 {
5468 size = 3 * (force32Bits ? 4 : 8);
5469 _class->structAlignment = force32Bits ? 4 : 8;
5470 _class->pointerAlignment = 1;
5471 }
5472 else if(!strcmp(name, "ecere::com::Class"))
5473 size = 0;
5474 else if(!strcmp(name, "ecere::com::ClassProperty"))
5475 size = 0;
5476 else if(!strcmp(name, "ecere::com::NameSpace"))
5477 size = 0;
5478 else if(!strcmp(name, "ecere::sys::BufferedFile"))
5479 size = 0;
5480 else if(!strcmp(name, "ecere::sys::BTNode"))
5481 size = 0;
5482 else if(!strcmp(name, "ecere::sys::StringBTNode"))
5483 size = 0;
5484 else if(!strcmp(name, "ecere::sys::OldList"))
5485 size = 0;
5486 else if(!strcmp(name, "ecere::sys::Item"))
5487 size = 0;
5488 else if(!strcmp(name, "ecere::sys::NamedLink"))
5489 size = 0;
5490 else if(!strcmp(name, "ecere::sys::NamedLink64"))
5491 size = 0;
5492 else if(!strcmp(name, "ecere::sys::OldLink"))
5493 size = 0;
5494 else if(!strcmp(name, "ecere::sys::NamedItem"))
5495 size = 0;
5496 else if(!strcmp(name, "ecere::sys::NamedItem64"))
5497 size = 0;
5498 else if(!strcmp(name, "ecere::sys::BinaryTree"))
5499 size = 0;
5500 else if(module != ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->application && inCompiler)
5501 {
5502 if(fixed || type == 1)
5503 size = 0;
5504 }
5505 }
5506 }
5507 if(type == 1)
5508 {
5509 _class->memberOffset = (base && base->structSize && base->type != 1000) ? base->structSize : 0;
5510 _class->typeSize = _class->structSize = _class->memberOffset + size;
5511 }
5512 else if(type == 2 || type == 4 || type == 3)
5513 {
5514 struct __ecereNameSpace__ecere__com__Class * dataTypeClass = __ecereNameSpace__ecere__com__eSystem_FindClass(_class->module, dataTypeString);
5515
5516 if(dataTypeClass)
5517 _class->typeSize = dataTypeClass->typeSize;
5518 _class->structSize = 0;
5519 }
5520 else if(type == 0 || type == 5)
5521 {
5522 _class->structSize = _class->offset + size;
5523 _class->typeSize = sizeof(void *);
5524 }
5525 _class->offsetClass = offsetClass;
5526 _class->sizeClass = totalSizeClass;
5527 _class->Constructor = Constructor;
5528 _class->Destructor = Destructor;
5529 if(_class->type != 1000)
5530 _class->type = type;
5531 if(!size)
5532 _class->computeSize = 1;
5533 else
5534 _class->computeSize = 0;
5535 _class->inheritanceAccess = inheritanceAccess;
5536 if(type == 4)
5537 {
5538 if(enumBase)
5539 _class->base = base = enumBase;
5540 {
5541 struct __ecereNameSpace__ecere__com__EnumClassData * data = (struct __ecereNameSpace__ecere__com__EnumClassData *)_class->data;
5542
5543 if(base && base->type != 4)
5544 data->largest = -1;
5545 else
5546 data->largest = ((struct __ecereNameSpace__ecere__com__EnumClassData *)base->data)->largest;
5547 }
5548 }
5549 if(base)
5550 {
5551 int i;
5552 unsigned int oldSize = _class->vTblSize;
5553
5554 if(base->vTblSize && _class->vTblSize < base->vTblSize)
5555 {
5556 _class->vTblSize = base->vTblSize;
5557 _class->_vTbl = __ecereNameSpace__ecere__com___realloc(_class->_vTbl, sizeof(int (*)()) * _class->vTblSize);
5558 }
5559 if(!prevBase)
5560 {
5561 if(_class->type == 0 && strcmp(_class->name, "ecere::com::Instance") && strcmp(_class->name, "enum") && strcmp(_class->name, "struct"))
5562 prevBase = __ecereNameSpace__ecere__com__eSystem_FindClass(module, "ecere::com::Instance");
5563 else
5564 prevBase = __ecereNameSpace__ecere__com__eSystem_FindClass(module, "class");
5565 }
5566 for(i = 0; i < base->vTblSize; i++)
5567 {
5568 if(i >= oldSize || _class->_vTbl[i] == prevBase->_vTbl[i])
5569 _class->_vTbl[i] = base->_vTbl[i];
5570 }
5571 }
5572 if(_class->base)
5573 {
5574 struct __ecereNameSpace__ecere__sys__OldLink * link = (link = __ecereNameSpace__ecere__com__eSystem_New0(sizeof(struct __ecereNameSpace__ecere__sys__OldLink)), link->data = _class, link);
5575
5576 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&_class->base->derivatives, link);
5577 }
5578 __ecereNameSpace__ecere__com__FixDerivativesBase(_class, _class);
5579 return _class;
5580 }
5581 }
5582 return (((void *)0));
5583 }
5584
5585 void __ecereNameSpace__ecere__com__eProperty_Watchable(struct __ecereNameSpace__ecere__com__Property * _property)
5586 {
5587 if(!_property->isWatchable)
5588 {
5589 struct __ecereNameSpace__ecere__com__Class * _class = _property->_class;
5590
5591 if(!_class->computeSize)
5592 {
5593 _property->watcherOffset = _class->structSize;
5594 _class->structSize += sizeof(struct __ecereNameSpace__ecere__sys__OldList);
5595 __ecereNameSpace__ecere__com__FixDerivativesBase(_class, _class);
5596 }
5597 _property->isWatchable = 1;
5598 }
5599 }
5600
5601 void __ecereNameSpace__ecere__com__eClass_DestructionWatchable(struct __ecereNameSpace__ecere__com__Class * _class)
5602 {
5603 if(!_class->destructionWatchOffset)
5604 {
5605 _class->destructionWatchOffset = _class->structSize;
5606 _class->structSize += sizeof(struct __ecereNameSpace__ecere__sys__OldList);
5607 __ecereNameSpace__ecere__com__FixDerivativesBase(_class, _class);
5608 }
5609 }
5610
5611 void __ecereNameSpace__ecere__com__eClass_DoneAddingTemplateParameters(struct __ecereNameSpace__ecere__com__Class * base)
5612 {
5613 if(base)
5614 {
5615 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param;
5616
5617 {
5618 void * first = base->templateParams.first;
5619 int count = base->templateParams.count;
5620
5621 __ecereNameSpace__ecere__com__FreeTemplateArgs(base);
5622 (__ecereNameSpace__ecere__com__eSystem_Delete(base->templateArgs), base->templateArgs = 0);
5623 base->templateParams.first = (((void *)0));
5624 base->templateParams.count = 0;
5625 __ecereNameSpace__ecere__com__FreeTemplatesDerivatives(base);
5626 base->templateParams.first = first;
5627 base->templateParams.count = count;
5628 }
5629 for(param = base->templateParams.first; param; param = param->next)
5630 {
5631 if(param->type == 1 && param->defaultArg.__anon1.__anon2.memberString)
5632 {
5633 struct __ecereNameSpace__ecere__com__Class * memberClass = base;
5634 const char * colon = strstr(param->defaultArg.__anon1.__anon2.memberString, "::");
5635 const char * memberName;
5636
5637 if(colon)
5638 {
5639 char className[1024];
5640 struct __ecereNameSpace__ecere__com__Class * sClass;
5641
5642 memcpy(className, param->defaultArg.__anon1.__anon2.memberString, colon - param->defaultArg.__anon1.__anon2.memberString);
5643 className[colon - param->defaultArg.__anon1.__anon2.memberString] = '\0';
5644 memberName = colon + 2;
5645 for(sClass = base; sClass; sClass = sClass->base)
5646 {
5647 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * cParam;
5648 struct __ecereNameSpace__ecere__com__Class * nextClass;
5649 int id = 0;
5650
5651 for(nextClass = sClass->base; nextClass; nextClass = nextClass->base)
5652 id += nextClass->templateParams.count;
5653 if(sClass == base || base->templateArgs)
5654 {
5655 for(cParam = sClass->templateParams.first; cParam; cParam = cParam->next)
5656 {
5657 if(cParam->type == 0 && !strcmp(cParam->name, className))
5658 strcpy(className, (sClass == base) ? cParam->defaultArg.__anon1.__anon1.dataTypeString : base->templateArgs[id].__anon1.__anon1.dataTypeString);
5659 id++;
5660 }
5661 }
5662 }
5663 memberClass = __ecereNameSpace__ecere__com__eSystem_FindClass(base->module, className);
5664 if(!memberClass)
5665 memberClass = __ecereNameSpace__ecere__com__eSystem_FindClass(((struct __ecereNameSpace__ecere__com__Module *)(((char *)base->module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->application, className);
5666 }
5667 else
5668 memberName = param->defaultArg.__anon1.__anon2.memberString;
5669 if(memberClass)
5670 {
5671 switch(param->__anon1.memberType)
5672 {
5673 case 0:
5674 param->defaultArg.__anon1.__anon2.__anon1.member = __ecereNameSpace__ecere__com__eClass_FindDataMember(memberClass, memberName, memberClass->module, (((void *)0)), (((void *)0)));
5675 break;
5676 case 1:
5677 param->defaultArg.__anon1.__anon2.__anon1.method = __ecereNameSpace__ecere__com__eClass_FindMethod(memberClass, memberName, memberClass->module);
5678 break;
5679 case 2:
5680 param->defaultArg.__anon1.__anon2.__anon1.prop = __ecereNameSpace__ecere__com__eClass_FindProperty(memberClass, memberName, memberClass->module);
5681 break;
5682 }
5683 }
5684 }
5685 }
5686 __ecereNameSpace__ecere__com__FixDerivativesBase(base, base);
5687 }
5688 }
5689
5690 void __ecereNameSpace__ecere__com__eInstance_Delete(struct __ecereNameSpace__ecere__com__Instance * instance)
5691 {
5692 if(instance)
5693 {
5694 struct __ecereNameSpace__ecere__com__Class * _class, * base;
5695 unsigned int ownVtbl;
5696
5697 ownVtbl = ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_vTbl != ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class->_vTbl;
5698 for(_class = ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class; _class; _class = base)
5699 {
5700 if(_class->templateClass)
5701 _class = _class->templateClass;
5702 if(_class->destructionWatchOffset)
5703 {
5704 struct __ecereNameSpace__ecere__sys__OldList * watchers = (struct __ecereNameSpace__ecere__sys__OldList *)((unsigned char *)instance + _class->destructionWatchOffset);
5705 struct __ecereNameSpace__ecere__com__Watcher * watcher, * next;
5706
5707 for(watcher = (*watchers).first; watcher; watcher = next)
5708 {
5709 next = watcher->next;
5710 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove((&*watchers), watcher);
5711 watcher->callback(watcher->object, instance);
5712 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete((&*watchers), watcher);
5713 }
5714 }
5715 base = _class->base;
5716 if(base && (base->type == 1000 || base->isInstanceClass))
5717 base = (((void *)0));
5718 if(_class->Destructor)
5719 _class->Destructor(instance);
5720 }
5721 for(_class = ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class; _class; _class = base)
5722 {
5723 if(_class->templateClass)
5724 _class = _class->templateClass;
5725 base = _class->base;
5726 (_class->templateClass ? _class->templateClass : _class)->count--;
5727 if(_class->type == 0 && !_class->count && !_class->module)
5728 {
5729 __ecereNameSpace__ecere__com__eClass_Unregister(_class);
5730 }
5731 }
5732 if(ownVtbl)
5733 {
5734 (__ecereNameSpace__ecere__com__eSystem_Delete(((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_vTbl), ((struct __ecereNameSpace__ecere__com__Instance * )(char * )instance)->_vTbl = 0);
5735 }
5736 __ecereNameSpace__ecere__com___free(instance);
5737 }
5738 }
5739
5740 void __ecereNameSpace__ecere__com__eInstance_DecRef(struct __ecereNameSpace__ecere__com__Instance * instance)
5741 {
5742 if(instance)
5743 {
5744 ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_refCount--;
5745 if(((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_refCount <= 0)
5746 {
5747 __ecereNameSpace__ecere__com__eInstance_Delete(instance);
5748 }
5749 }
5750 }
5751
5752 static struct __ecereNameSpace__ecere__com__Instance * __ecereNameSpace__ecere__com__Module_Load(struct __ecereNameSpace__ecere__com__Instance * fromModule, const char * name, int importAccess, unsigned int ensureCOM)
5753 {
5754 unsigned int (ecere_stdcall * Load)(struct __ecereNameSpace__ecere__com__Instance * module) = (((void *)0));
5755 unsigned int (ecere_stdcall * Unload)(struct __ecereNameSpace__ecere__com__Instance * module) = (((void *)0));
5756 struct __ecereNameSpace__ecere__com__Instance * module;
5757
5758 for(module = ((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)fromModule + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->application + sizeof(struct __ecereNameSpace__ecere__com__Module) + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->allModules.first; module; module = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->next)
5759 {
5760 if(!strcmp(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->name, name))
5761 break;
5762 }
5763 if(ensureCOM && (!strcmp(name, "ecereCOM") || !strcmp(name, "ecere")))
5764 {
5765 for(module = ((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)fromModule + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->application + sizeof(struct __ecereNameSpace__ecere__com__Module) + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->allModules.first; module; module = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->next)
5766 {
5767 if(!strcmp(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->name, "ecere") || !strcmp(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->name, "ecereCOM"))
5768 break;
5769 }
5770 }
5771 if(!module)
5772 {
5773 void * library = (((void *)0));
5774
5775 if(ensureCOM && !strcmp(name, "ecereCOM"))
5776 {
5777 Load = (void *)(__ecereDll_Load_ecere);
5778 Unload = (void *)(__ecereDll_Unload_ecere);
5779 }
5780 else
5781 {
5782 char * libLocation = (((void *)0));
5783
5784 library = Instance_Module_Load(libLocation, name, (void *)(&Load), (void *)(&Unload));
5785 }
5786 if(Load)
5787 {
5788 module = (struct __ecereNameSpace__ecere__com__Instance *)__ecereNameSpace__ecere__com__eInstance_New(__ecereNameSpace__ecere__com__eSystem_FindClass(fromModule, "Module"));
5789 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->application = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)fromModule + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->application;
5790 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->library = library;
5791 {
5792 char moduleName[274];
5793 char ext[17];
5794
5795 __ecereNameSpace__ecere__sys__GetLastDirectory(name, moduleName);
5796 __ecereNameSpace__ecere__sys__GetExtension(moduleName, ext);
5797 __ecereNameSpace__ecere__sys__StripExtension(moduleName);
5798 if((!(strcasecmp)(ext, "dylib") || !(strcasecmp)(ext, "so")) && strstr(moduleName, "lib") == moduleName)
5799 {
5800 int len = (int)strlen(moduleName) - 3;
5801
5802 memmove(moduleName, moduleName + 3, len);
5803 moduleName[len] = 0;
5804 }
5805 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->name = __ecereNameSpace__ecere__sys__CopyString(moduleName);
5806 }
5807 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->Unload = Unload;
5808 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->origImportType = 0;
5809 if(!Load(module))
5810 {
5811 __ecereNameSpace__ecere__com__eInstance_Delete((struct __ecereNameSpace__ecere__com__Instance *)module);
5812 module = (((void *)0));
5813 }
5814 }
5815 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)fromModule + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->application + sizeof(struct __ecereNameSpace__ecere__com__Module) + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->allModules, module);
5816 }
5817 if(ensureCOM && !strcmp(name, "ecere") && module)
5818 {
5819 name = !strcmp(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->name, "ecereCOM") ? "ecere" : "ecereCOM";
5820 if((!Load && !strcmp(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->name, "ecereCOM")) || (Load && (!__thisModule || !((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->name || !strcmp(((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->name, "ecereCOM")) && Load != (void *)__ecereDll_Load_ecere))
5821 {
5822 struct __ecereNameSpace__ecere__com__Instance * module;
5823
5824 for(module = ((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)fromModule + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->application + sizeof(struct __ecereNameSpace__ecere__com__Module) + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->allModules.first; module; module = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->next)
5825 {
5826 if(!strcmp(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->name, name))
5827 break;
5828 }
5829 if(!module)
5830 {
5831 Load = (void *)(__ecereDll_Load_ecere);
5832 Unload = (void *)(__ecereDll_Unload_ecere);
5833 module = (struct __ecereNameSpace__ecere__com__Instance *)__ecereNameSpace__ecere__com__eInstance_New(__ecereNameSpace__ecere__com__eSystem_FindClass(fromModule, "Module"));
5834 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->application = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)fromModule + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->application;
5835 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->library = (((void *)0));
5836 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->name = __ecereNameSpace__ecere__sys__CopyString(name);
5837 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->Unload = Unload;
5838 if(!Load(module))
5839 {
5840 __ecereNameSpace__ecere__com__eInstance_Delete((struct __ecereNameSpace__ecere__com__Instance *)module);
5841 module = (((void *)0));
5842 }
5843 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)fromModule + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->application + sizeof(struct __ecereNameSpace__ecere__com__Module) + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->allModules, module);
5844 }
5845 if(module)
5846 {
5847 if(fromModule)
5848 {
5849 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)fromModule + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->modules, __extension__ ({
5850 struct __ecereNameSpace__ecere__com__SubModule * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass___ecereNameSpace__ecere__com__SubModule);
5851
5852 __ecereInstance1->module = module, __ecereInstance1->importMode = importAccess, __ecereInstance1;
5853 }));
5854 }
5855 module->_refCount++;
5856 }
5857 }
5858 }
5859 if(module)
5860 {
5861 if(fromModule)
5862 {
5863 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)fromModule + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->modules, __extension__ ({
5864 struct __ecereNameSpace__ecere__com__SubModule * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass___ecereNameSpace__ecere__com__SubModule);
5865
5866 __ecereInstance1->module = module, __ecereInstance1->importMode = importAccess, __ecereInstance1;
5867 }));
5868 }
5869 module->_refCount++;
5870 }
5871 return module;
5872 }
5873
5874 struct __ecereNameSpace__ecere__com__Instance * __ecereNameSpace__ecere__com__eModule_LoadStatic(struct __ecereNameSpace__ecere__com__Instance * fromModule, const char * name, int importAccess, unsigned int (* Load)(struct __ecereNameSpace__ecere__com__Instance * module), unsigned int (* Unload)(struct __ecereNameSpace__ecere__com__Instance * module))
5875 {
5876 struct __ecereNameSpace__ecere__com__Instance * module;
5877
5878 for(module = ((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)fromModule + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->application + sizeof(struct __ecereNameSpace__ecere__com__Module) + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->allModules.first; module; module = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->next)
5879 {
5880 if(!strcmp(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->name, name))
5881 break;
5882 }
5883 if(!module)
5884 {
5885 if(Load)
5886 {
5887 module = (struct __ecereNameSpace__ecere__com__Instance *)__ecereNameSpace__ecere__com__eInstance_New(__ecereNameSpace__ecere__com__eSystem_FindClass(fromModule, "Module"));
5888 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->application = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)fromModule + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->application;
5889 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->name = __ecereNameSpace__ecere__sys__CopyString(name);
5890 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->origImportType = 1;
5891 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->Unload = (void *)Unload;
5892 if(!Load(module))
5893 {
5894 __ecereNameSpace__ecere__com__eInstance_Delete((struct __ecereNameSpace__ecere__com__Instance *)module);
5895 module = (((void *)0));
5896 }
5897 }
5898 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)fromModule + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->application + sizeof(struct __ecereNameSpace__ecere__com__Module) + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->allModules, module);
5899 }
5900 if(module)
5901 {
5902 if(fromModule)
5903 {
5904 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)fromModule + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->modules, __extension__ ({
5905 struct __ecereNameSpace__ecere__com__SubModule * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass___ecereNameSpace__ecere__com__SubModule);
5906
5907 __ecereInstance1->module = module, __ecereInstance1->importMode = importAccess, __ecereInstance1;
5908 }));
5909 }
5910 module->_refCount++;
5911 }
5912 return module;
5913 }
5914
5915 void __ecereNameSpace__ecere__com__eModule_Unload(struct __ecereNameSpace__ecere__com__Instance * fromModule, struct __ecereNameSpace__ecere__com__Instance * module)
5916 {
5917 struct __ecereNameSpace__ecere__sys__OldLink * m;
5918
5919 for(m = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)fromModule + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->modules.first; m; m = m->next)
5920 {
5921 if(m->data == module)
5922 break;
5923 }
5924 if(m)
5925 {
5926 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)fromModule + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->modules, m);
5927 (__ecereNameSpace__ecere__com__eInstance_DecRef(module), module = 0);
5928 }
5929 }
5930
5931 static void __ecereNameSpace__ecere__com__Module_Destructor(struct __ecereNameSpace__ecere__com__Instance * module)
5932 {
5933 struct __ecereNameSpace__ecere__com__Class * _class;
5934 struct __ecereNameSpace__ecere__com__DefinedExpression * def;
5935 struct __ecereNameSpace__ecere__com__GlobalFunction * function;
5936 struct __ecereNameSpace__ecere__com__Instance * m;
5937 struct __ecereNameSpace__ecere__com__SubModule * handle;
5938
5939 for(m = ((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->application + sizeof(struct __ecereNameSpace__ecere__com__Module) + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->allModules.first; m; m = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)m + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->next)
5940 {
5941 struct __ecereNameSpace__ecere__com__SubModule * next;
5942
5943 for(handle = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)m + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->modules.first; handle; handle = next)
5944 {
5945 next = handle->next;
5946 if(handle->module == module)
5947 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)m + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->modules, handle);
5948 }
5949 }
5950 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->Unload)
5951 {
5952 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->origImportType == 1)
5953 {
5954 unsigned int (* Unload)(struct __ecereNameSpace__ecere__com__Instance * module) = (void *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->Unload;
5955
5956 Unload(module);
5957 }
5958 else
5959 {
5960 unsigned int (ecere_stdcall * Unload)(struct __ecereNameSpace__ecere__com__Instance * module) = (void *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->Unload;
5961
5962 Unload(module);
5963 }
5964 }
5965 {
5966 struct __ecereNameSpace__ecere__com__Instance * ourWorld = __ecereClass___ecereNameSpace__ecere__com__Class->module;
5967 void * ourHandle = (((void *)0));
5968
5969 while((handle = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->modules.last))
5970 {
5971 struct __ecereNameSpace__ecere__com__Instance * depModule = handle->module;
5972
5973 if(depModule == ourWorld)
5974 {
5975 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->modules, handle);
5976 ourHandle = handle;
5977 }
5978 else
5979 {
5980 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->modules, handle);
5981 (__ecereNameSpace__ecere__com__eInstance_DecRef(depModule), depModule = 0);
5982 }
5983 }
5984 if(ourHandle)
5985 {
5986 (__ecereNameSpace__ecere__com__eSystem_Delete(ourHandle), ourHandle = 0);
5987 (__ecereNameSpace__ecere__com__eInstance_DecRef(ourWorld), ourWorld = 0);
5988 }
5989 }
5990 for(; (_class = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->classes.first); )
5991 {
5992 if(_class->nameSpace)
5993 {
5994 struct __ecereNameSpace__ecere__com__BTNamedLink * classLink = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&(*_class->nameSpace).classes, _class->name);
5995
5996 if(classLink)
5997 {
5998 struct __ecereNameSpace__ecere__sys__OldLink * t;
5999
6000 for(t = _class->templatized.first; t; t = t->next)
6001 {
6002 struct __ecereNameSpace__ecere__com__Class * template = t->data;
6003 struct __ecereNameSpace__ecere__com__BTNamedLink * link;
6004
6005 link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&(*template->nameSpace).classes, template->name);
6006 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&(*template->nameSpace).classes, (struct __ecereNameSpace__ecere__sys__BTNode *)link);
6007 template->nameSpace = (((void *)0));
6008 }
6009 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&(*_class->nameSpace).classes, (struct __ecereNameSpace__ecere__sys__BTNode *)classLink);
6010 }
6011 _class->nameSpace = (((void *)0));
6012 }
6013 _class->module = (((void *)0));
6014 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->classes, _class);
6015 if(_class->count <= 0 || _class->type != 0 || _class->isInstanceClass)
6016 __ecereNameSpace__ecere__com__eClass_Unregister(_class);
6017 else
6018 {
6019 }
6020 }
6021 for(; (def = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->defines.first); )
6022 {
6023 if(def->nameSpace)
6024 {
6025 struct __ecereNameSpace__ecere__com__BTNamedLink * defLink;
6026
6027 for(defLink = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&(*def->nameSpace).defines); defLink; defLink = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereProp___ecereNameSpace__ecere__sys__BTNode_Get_next(((struct __ecereNameSpace__ecere__sys__BTNode *)defLink)))
6028 if(defLink->data == def)
6029 {
6030 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&(*def->nameSpace).defines, (struct __ecereNameSpace__ecere__sys__BTNode *)defLink);
6031 break;
6032 }
6033 }
6034 (__ecereNameSpace__ecere__com__eSystem_Delete((void *)def->name), def->name = 0);
6035 (__ecereNameSpace__ecere__com__eSystem_Delete((void *)def->value), def->value = 0);
6036 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->defines, def);
6037 }
6038 for(; (function = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->functions.first); )
6039 {
6040 if(function->nameSpace)
6041 {
6042 struct __ecereNameSpace__ecere__com__BTNamedLink * functionLink;
6043
6044 for(functionLink = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&(*function->nameSpace).functions); functionLink; functionLink = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereProp___ecereNameSpace__ecere__sys__BTNode_Get_next(((struct __ecereNameSpace__ecere__sys__BTNode *)functionLink)))
6045 if(functionLink->data == function)
6046 {
6047 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&(*function->nameSpace).functions, (struct __ecereNameSpace__ecere__sys__BTNode *)functionLink);
6048 break;
6049 }
6050 }
6051 (__ecereNameSpace__ecere__com__eSystem_Delete((void *)function->name), function->name = 0);
6052 (__ecereNameSpace__ecere__com__eSystem_Delete((void *)function->dataTypeString), function->dataTypeString = 0);
6053 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->functions, function);
6054 }
6055 (__ecereNameSpace__ecere__com__eSystem_Delete((void *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->name), ((struct __ecereNameSpace__ecere__com__Module * )(((char * )module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->name = 0);
6056 __ecereNameSpace__ecere__com__NameSpace_Free(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->privateNameSpace);
6057 __ecereNameSpace__ecere__com__NameSpace_Free(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->publicNameSpace);
6058 if(module != ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->application)
6059 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove(&((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->application + sizeof(struct __ecereNameSpace__ecere__com__Module) + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->allModules, module);
6060 else
6061 __ecereNameSpace__ecere__com__NameSpace_Free(&((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->application + sizeof(struct __ecereNameSpace__ecere__com__Module) + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->systemNameSpace);
6062 Instance_Module_Free(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->library);
6063 }
6064
6065 static void __ecereNameSpace__ecere__com__LoadCOM(struct __ecereNameSpace__ecere__com__Instance * module)
6066 {
6067 unsigned int force64Bits = (((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->application + sizeof(struct __ecereNameSpace__ecere__com__Module) + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->isGUIApp & 2) ? 1 : 0;
6068 unsigned int force32Bits = (((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->application + sizeof(struct __ecereNameSpace__ecere__com__Module) + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->isGUIApp & 4) ? 1 : 0;
6069 unsigned int inCompiler = (((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->application + sizeof(struct __ecereNameSpace__ecere__com__Module) + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->isGUIApp & 8) ? 1 : 0;
6070 int pointerSize = force64Bits ? 8 : force32Bits ? 4 : sizeof(void *);
6071 struct __ecereNameSpace__ecere__com__Class * applicationClass;
6072 struct __ecereNameSpace__ecere__com__Class * enumClass, * structClass, * boolClass;
6073 struct __ecereNameSpace__ecere__com__Class * moduleClass;
6074 struct __ecereNameSpace__ecere__com__Class * baseClass = __ecereNameSpace__ecere__com__eSystem_RegisterClass(0, "class", (((void *)0)), 0, 0, (((void *)0)), (((void *)0)), module, 4, 1);
6075
6076 baseClass->type = 1000;
6077 baseClass->memberOffset = 0;
6078 baseClass->offset = 0;
6079 baseClass->structSize = 0;
6080 baseClass->typeSize = 0;
6081 {
6082 struct __ecereNameSpace__ecere__com__Class * instanceClass = __ecereNameSpace__ecere__com__eSystem_RegisterClass(0, "ecere::com::Instance", (((void *)0)), 0, 0, (((void *)0)), (((void *)0)), module, 4, 1);
6083
6084 instanceClass->type = 0;
6085 instanceClass->isInstanceClass = 1;
6086 instanceClass->fixed = 1;
6087 instanceClass->memberOffset = 0;
6088 instanceClass->offset = 0;
6089 instanceClass->memberID = -3;
6090 instanceClass->startMemberID = -3;
6091 __ecereNameSpace__ecere__com__eClass_AddDataMember(instanceClass, "_vTbl", "void **", pointerSize, pointerSize, 1);
6092 __ecereNameSpace__ecere__com__eClass_AddDataMember(instanceClass, "_class", "ecere::com::Class", pointerSize, pointerSize, 1);
6093 __ecereNameSpace__ecere__com__eClass_AddDataMember(instanceClass, "_refCount", "int", sizeof(int), sizeof(int), 1);
6094 }
6095 __ecereNameSpace__ecere__com__InitializeDataTypes1(module);
6096 enumClass = __ecereNameSpace__ecere__com__eSystem_RegisterClass(0, "enum", (((void *)0)), 0, force64Bits ? 40 : sizeof(struct __ecereNameSpace__ecere__com__EnumClassData), (((void *)0)), (((void *)0)), module, 4, 1);
6097 __ecereNameSpace__ecere__com__eClass_AddClassProperty(enumClass, "enumSize", "int", (((void *)0)), __ecereNameSpace__ecere__com__GetEnumSize)->constant = 1;
6098 enumClass->type = 1000;
6099 (__ecereNameSpace__ecere__com__eSystem_Delete((void *)enumClass->dataTypeString), enumClass->dataTypeString = 0);
6100 enumClass->dataTypeString = __ecereNameSpace__ecere__sys__CopyString("int");
6101 structClass = __ecereNameSpace__ecere__com__eSystem_RegisterClass(0, "struct", (((void *)0)), 0, 0, (((void *)0)), (((void *)0)), module, 4, 1);
6102 structClass->type = 1000;
6103 structClass->memberOffset = 0;
6104 structClass->offset = 0;
6105 structClass->structSize = 0;
6106 structClass->typeSize = 0;
6107 __ecereNameSpace__ecere__com__InitializeDataTypes(module);
6108 boolClass = __ecereNameSpace__ecere__com__eSystem_RegisterClass(4, "bool", "uint", 0, 0, (((void *)0)), (((void *)0)), module, 4, 1);
6109 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(boolClass, "true", 0x1);
6110 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(boolClass, "false", 0x0);
6111 moduleClass = __ecereNameSpace__ecere__com__eSystem_RegisterClass(0, "ecere::com::Module", (((void *)0)), force64Bits ? 8 + 32 + 32 + 32 + 32 + 8 + 8 + 8 + 8 + 8 + 4 + 4 + (32 + 8 + 8 + 4 * 32) + (32 + 8 + 8 + 4 * 32) : sizeof(struct __ecereNameSpace__ecere__com__Module), 0, (void *)__ecereNameSpace__ecere__com__Module_Constructor, (void *)__ecereNameSpace__ecere__com__Module_Destructor, module, 4, 1);
6112 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(moduleClass, "OnLoad", "bool()", (((void *)0)), 1);
6113 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(moduleClass, "OnUnload", "void()", (((void *)0)), 1);
6114 __ecereNameSpace__ecere__com__eClass_AddMethod(moduleClass, "Load", "Module(const char * name, AccessMode importAccess)", __ecereNameSpace__ecere__com__eModule_Load, 1);
6115 __ecereNameSpace__ecere__com__eClass_AddMethod(moduleClass, "Unload", "void(Module module)", __ecereNameSpace__ecere__com__eModule_Unload, 1);
6116 __ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "application", "Application", pointerSize, pointerSize, 1);
6117 __ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "classes", "OldList", force64Bits ? 32 : force32Bits ? 20 : sizeof(struct __ecereNameSpace__ecere__sys__OldList), pointerSize, 1);
6118 __ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "defines", "OldList", force64Bits ? 32 : force32Bits ? 20 : sizeof(struct __ecereNameSpace__ecere__sys__OldList), pointerSize, 1);
6119 __ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "functions", "OldList", force64Bits ? 32 : force32Bits ? 20 : sizeof(struct __ecereNameSpace__ecere__sys__OldList), pointerSize, 1);
6120 __ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "modules", "OldList", force64Bits ? 32 : force32Bits ? 20 : sizeof(struct __ecereNameSpace__ecere__sys__OldList), pointerSize, 1);
6121 __ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "prev", "Module", pointerSize, pointerSize, 1);
6122 __ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "next", "Module", pointerSize, pointerSize, 1);
6123 __ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "name", "const char *", pointerSize, pointerSize, 1);
6124 __ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "library", "void *", pointerSize, pointerSize, 1);
6125 __ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "Unload", "void *", pointerSize, pointerSize, 1);
6126 __ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "importType", "ImportType", sizeof(int), 4, 1);
6127 __ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "origImportType", "ImportType", sizeof(int), 4, 1);
6128 __ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "privateNameSpace", "NameSpace", force64Bits ? (32 + 8 + 8 + 4 * 32) : force32Bits ? (16 + 4 + 4 + 4 * 16) : sizeof(struct __ecereNameSpace__ecere__com__NameSpace), pointerSize, 1);
6129 __ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "publicNameSpace", "NameSpace", force64Bits ? (32 + 8 + 8 + 4 * 32) : force32Bits ? (16 + 4 + 4 + 4 * 16) : sizeof(struct __ecereNameSpace__ecere__com__NameSpace), pointerSize, 1);
6130 moduleClass->fixed = 1;
6131 moduleClass->count++;
6132 if(inCompiler && force32Bits)
6133 moduleClass->structSize = 12 + 4 + 20 + 20 + 20 + 20 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + (16 + 4 + 4 + 4 * 16) + (16 + 4 + 4 + 4 * 16);
6134 applicationClass = __ecereNameSpace__ecere__com__eSystem_RegisterClass(0, "ecere::com::Application", "Module", force64Bits ? (8 + 8 + 4 + 4 + 32 + 8 + 176) : sizeof(struct __ecereNameSpace__ecere__com__Application), 0, (((void *)0)), (void *)__ecereNameSpace__ecere__com__Application_Destructor, module, 4, 1);
6135 if(inCompiler && force32Bits)
6136 {
6137 applicationClass->offset = 12 + 4 + 20 + 20 + 20 + 20 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + (16 + 4 + 4 + 4 * 16) + (16 + 4 + 4 + 4 * 16);
6138 applicationClass->structSize = applicationClass->offset + (4 + 4 + 4 + 4 + 20 + 4 + 88);
6139 }
6140 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(applicationClass, "Main", "void()", (((void *)0)), 1);
6141 __ecereNameSpace__ecere__com__eClass_AddDataMember(applicationClass, "argc", "int", sizeof(int), 4, 1);
6142 __ecereNameSpace__ecere__com__eClass_AddDataMember(applicationClass, "argv", "const char **", pointerSize, pointerSize, 1);
6143 __ecereNameSpace__ecere__com__eClass_AddDataMember(applicationClass, "exitCode", "int", sizeof(int), 4, 1);
6144 __ecereNameSpace__ecere__com__eClass_AddDataMember(applicationClass, "isGUIApp", "bool", sizeof(unsigned int), 4, 1);
6145 __ecereNameSpace__ecere__com__eClass_AddDataMember(applicationClass, "allModules", "OldList", force64Bits ? 32 : force32Bits ? 20 : sizeof(struct __ecereNameSpace__ecere__sys__OldList), pointerSize, 1);
6146 __ecereNameSpace__ecere__com__eClass_AddDataMember(applicationClass, "parsedCommand", "char *", pointerSize, pointerSize, 1);
6147 __ecereNameSpace__ecere__com__eClass_AddDataMember(applicationClass, "systemNameSpace", "NameSpace", force64Bits ? (32 + 8 + 8 + 4 * 32) : force32Bits ? (16 + 4 + 4 + 4 * 16) : sizeof(struct __ecereNameSpace__ecere__com__NameSpace), pointerSize, 1);
6148 applicationClass->fixed = 1;
6149 applicationClass->count++;
6150 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("sin", "double sin(Angle number)", sin, module, 4);
6151 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("sinh", "double sinh(Angle number)", sinh, module, 4);
6152 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("cosh", "double cosh(Angle number)", cosh, module, 4);
6153 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("tanh", "double tanh(Angle number)", tanh, module, 4);
6154 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("sqrt", "double sqrt(double number)", sqrt, module, 4);
6155 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("cos", "double cos(Angle number)", cos, module, 4);
6156 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("tan", "double tan(Angle number)", tan, module, 4);
6157 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("atan2", "Angle atan2(double y, double x)", atan2, module, 4);
6158 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("asin", "Angle asin(double number)", asin, module, 4);
6159 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("acos", "Angle acos(double number)", acos, module, 4);
6160 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("atan", "Angle atan(double number)", atan, module, 4);
6161 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("asinh", "Angle asinh(double number)", asinh, module, 4);
6162 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("acosh", "Angle acosh(double number)", acosh, module, 4);
6163 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("atanh", "Angle atanh(double number)", atanh, module, 4);
6164 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("pow", "double pow(double number, double number2)", pow, module, 4);
6165 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("fmod", "double fmod(double x, double y)", fmod, module, 4);
6166 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("fabs", "double fabs(double number)", fabs, module, 4);
6167 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("log", "double log(double number)", log, module, 4);
6168 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("log10", "double log10(double number)", log10, module, 4);
6169 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ceil", "double ceil(double number)", ceil, module, 4);
6170 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("floor", "double floor(double number)", floor, module, 4);
6171 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("exp", "double exp(double number)", exp, module, 4);
6172 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("qsort", "void qsort(void *, uintsize, uintsize, int (*)(void *, void *))", qsort, module, 4);
6173 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strtod", "double strtod(const char*, char**)", strtod, module, 4);
6174 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strtol", "int strtol(const char*, char**, int base)", strtol, module, 4);
6175 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strtoul", "unsigned long strtoul(const char * nptr, char ** endptr, int base)", strtoul, module, 4);
6176 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strtoll", "int64 strtoll(const char * nptr, char ** endptr, int base)", strtoll, module, 4);
6177 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strtoull", "uint64 strtoull(const char * nptr, char ** endptr, int base)", strtoull, module, 4);
6178 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("system", "int system(const char*)", system, module, 4);
6179 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("atoi", "int atoi(const char*)", atoi, module, 4);
6180 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("atof", "double atof(const char*)", atof, module, 4);
6181 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("tolower", "int tolower(int)", tolower, module, 4);
6182 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("toupper", "int toupper(int)", toupper, module, 4);
6183 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("isdigit", "bool isdigit(int)", isdigit, module, 4);
6184 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("memset", "void * memset(void * area, int value, uintsize count)", memset, module, 4);
6185 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("getenv", "char * getenv(const char * name)", getenv, module, 4);
6186 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("rename", "int rename(const char *oldpath, const char *newpath)", rename, module, 4);
6187 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strlen", "uintsize strlen(const char *)", strlen, module, 4);
6188 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strcat", "char * strcat(char *, const char *)", strcat, module, 4);
6189 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strncat", "char * strncat(char *, const char *, uintsize n)", strncat, module, 4);
6190 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strchr", "char * strchr(const char *, int)", strchr, module, 4);
6191 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strstr", "char * strstr(const char *, const char *)", strstr, module, 4);
6192 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strspn", "uintsize strspn(const char *, const char *)", strspn, module, 4);
6193 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strcspn", "uintsize strcspn(const char *, const char *)", strcspn, module, 4);
6194 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strpbrk", "char * strpbrk(const char *, const char *)", strpbrk, module, 4);
6195 __ecereNameSpace__ecere__com__eSystem_RegisterDefine("fstrcmp", "(__runtimePlatform == win32) ? strcmpi : strcmp", module, 4);
6196 __ecereNameSpace__ecere__com__eSystem_RegisterDefine("strcmpi", "strcasecmp", module, 4);
6197 __ecereNameSpace__ecere__com__eSystem_RegisterDefine("strnicmp", "strncasecmp", module, 4);
6198 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strcasecmp", "int strcasecmp(const char *, const char *)", strcasecmp, module, 4);
6199 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strncasecmp", "int strncasecmp(const char *, const char *, uintsize n)", strncasecmp, module, 4);
6200 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strcmp", "int strcmp(const char *, const char *)", strcmp, module, 4);
6201 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strncmp", "int strncmp(const char *, const char *, uintsize n)", strncmp, module, 4);
6202 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strlwr", "char * strlwr(char *)", strlwr, module, 4);
6203 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strupr", "char * strupr(char *)", strupr, module, 4);
6204 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strcpy", "char * strcpy(char *, const char *)", strcpy, module, 4);
6205 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strncpy", "char * strncpy(char *, const char *, uintsize n)", strncpy, module, 4);
6206 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("memcpy", "void * memcpy(void *, const void *, uintsize size)", memcpy, module, 4);
6207 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("memmove", "void * memmove(void *, const void *, uintsize size)", memmove, module, 4);
6208 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("memcmp", "int memcmp(const void *, const void *, uintsize size)", memcmp, module, 4);
6209 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("sprintf", "int sprintf(char *, const char *, ...)", sprintf, module, 4);
6210 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("snprintf", "int sprintf(char *, uintsize, const char *, ...)", snprintf, module, 4);
6211 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("printf", "int printf(const char *, ...)", printf, module, 4);
6212 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("vsprintf", "int vsprintf(char*, const char*, __builtin_va_list)", vsprintf, module, 4);
6213 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("vsnprintf", "int vsnprintf(char*, uintsize, const char*, __builtin_va_list)", vsnprintf, module, 4);
6214 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("puts", "int puts(const char *)", puts, module, 4);
6215 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("fputs", "int fputs(const char *, void * stream)", fputs, module, 4);
6216 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("isalnum", "int isalnum(int c)", isalnum, module, 4);
6217 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("isspace", "int isspace(int c)", isspace, module, 4);
6218 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("isalpha", "int isalpha(int c)", isalpha, module, 4);
6219 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("islower", "int islower(int c)", islower, module, 4);
6220 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("isupper", "int isupper(int c)", isupper, module, 4);
6221 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("isprint", "int isprint(int c)", isprint, module, 4);
6222 }
6223
6224 struct __ecereNameSpace__ecere__com__Instance * __ecereNameSpace__ecere__com____ecere_COM_Initialize(unsigned int guiApp, int argc, char * argv[])
6225 {
6226 struct __ecereNameSpace__ecere__com__Instance * app;
6227
6228 app = __ecereNameSpace__ecere__com___calloc(1, sizeof(struct __ecereNameSpace__ecere__com__Application) + sizeof(struct __ecereNameSpace__ecere__com__Module) + sizeof(struct __ecereNameSpace__ecere__com__Instance));
6229 __ecereNameSpace__ecere__com__Module_Constructor(app);
6230 ((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + sizeof(struct __ecereNameSpace__ecere__com__Module) + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->systemNameSpace.classes.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
6231 ((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + sizeof(struct __ecereNameSpace__ecere__com__Module) + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->systemNameSpace.defines.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
6232 ((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + sizeof(struct __ecereNameSpace__ecere__com__Module) + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->systemNameSpace.functions.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
6233 ((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + sizeof(struct __ecereNameSpace__ecere__com__Module) + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->systemNameSpace.nameSpaces.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
6234 Instance_COM_Initialize(argc, argv, &((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + sizeof(struct __ecereNameSpace__ecere__com__Module) + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->parsedCommand, &((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + sizeof(struct __ecereNameSpace__ecere__com__Module) + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->argc, &((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + sizeof(struct __ecereNameSpace__ecere__com__Module) + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->argv);
6235 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)app + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->application = app;
6236 ((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + sizeof(struct __ecereNameSpace__ecere__com__Module) + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->allModules.offset = sizeof(struct __ecereNameSpace__ecere__com__Instance) + (unsigned int)(uintptr_t)&(*((struct __ecereNameSpace__ecere__com__Module *)0)).prev;
6237 ((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + sizeof(struct __ecereNameSpace__ecere__com__Module) + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->isGUIApp = guiApp;
6238 __ecereNameSpace__ecere__com__LoadCOM(app);
6239 ((struct __ecereNameSpace__ecere__com__Instance *)(char *)app)->_class = __ecereNameSpace__ecere__com__eSystem_FindClass(app, "Application");
6240 return app;
6241 }
6242
6243 void __ecereRegisterModule_instance(struct __ecereNameSpace__ecere__com__Instance * module)
6244 {
6245 struct __ecereNameSpace__ecere__com__Class __attribute__((unused)) * class;
6246
6247 __ecereNameSpace__ecere__com__eSystem_RegisterDefine("ecere::com::null", "((void *)0)", module, 4);
6248 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(3, "ecere::com::Angle", "double", 0, 0, (void *)0, (void *)0, module, 4, 1);
6249 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)
6250 __ecereClass___ecereNameSpace__ecere__com__Angle = class;
6251 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(3, "unichar", "uint", 0, 0, (void *)0, (void *)0, module, 4, 1);
6252 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)
6253 __ecereClass_unichar = class;
6254 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "OnGetString", 0, __ecereMethod_unichar_OnGetString, 1);
6255 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "OnGetDataFromString", 0, __ecereMethod_unichar_OnGetDataFromString, 1);
6256 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::Property", 0, sizeof(struct __ecereNameSpace__ecere__com__Property), 0, (void *)0, (void *)0, module, 4, 1);
6257 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)
6258 __ecereClass___ecereNameSpace__ecere__com__Property = class;
6259 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "prev", "ecere::com::Property", sizeof(void *), 0xF000F000, 1);
6260 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "next", "ecere::com::Property", sizeof(void *), 0xF000F000, 1);
6261 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "name", "const char *", sizeof(void *), 0xF000F000, 1);
6262 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "isProperty", "bool", 4, 4, 1);
6263 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "memberAccess", "ecere::com::AccessMode", 4, 4, 1);
6264 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "id", "int", 4, 4, 1);
6265 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "_class", "ecere::com::Class", sizeof(void *), 0xF000F000, 1);
6266 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataTypeString", "const char *", sizeof(void *), 0xF000F000, 1);
6267 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataTypeClass", "ecere::com::Class", sizeof(void *), 0xF000F000, 1);
6268 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataType", "Type", sizeof(void *), 0xF000F000, 1);
6269 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "Set", "void (*)(void *, int)", sizeof(void *), 0xF000F000, 1);
6270 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "Get", "int (*)(void *)", sizeof(void *), 0xF000F000, 1);
6271 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "IsSet", "bool (*)(void *)", sizeof(void *), 0xF000F000, 1);
6272 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "data", "void *", sizeof(void *), 0xF000F000, 1);
6273 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "symbol", "void *", sizeof(void *), 0xF000F000, 1);
6274 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "vid", "int", 4, 4, 1);
6275 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "conversion", "bool", 4, 4, 1);
6276 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "watcherOffset", "uint", 4, 4, 1);
6277 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "category", "const char *", sizeof(void *), 0xF000F000, 1);
6278 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "compiled", "bool", 4, 4, 1);
6279 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "selfWatchable", "bool", 4, 4, 1);
6280 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "isWatchable", "bool", 4, 4, 1);
6281 if(class)
6282 class->fixed = (unsigned int)1;
6283 if(class)
6284 class->noExpansion = (unsigned int)1;
6285 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::MemoryGuard_PushLoc", "void ecere::com::MemoryGuard_PushLoc(const char * loc)", __ecereNameSpace__ecere__com__MemoryGuard_PushLoc, module, 4);
6286 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::MemoryGuard_PopLoc", "void ecere::com::MemoryGuard_PopLoc(void)", __ecereNameSpace__ecere__com__MemoryGuard_PopLoc, module, 4);
6287 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::BTNamedLink", 0, sizeof(struct __ecereNameSpace__ecere__com__BTNamedLink), 0, (void *)0, (void *)0, module, 4, 1);
6288 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)
6289 __ecereClass___ecereNameSpace__ecere__com__BTNamedLink = class;
6290 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "name", "const char *", sizeof(void *), 0xF000F000, 1);
6291 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "parent", "ecere::com::BTNamedLink", sizeof(void *), 0xF000F000, 1);
6292 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "left", "ecere::com::BTNamedLink", sizeof(void *), 0xF000F000, 1);
6293 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "right", "ecere::com::BTNamedLink", sizeof(void *), 0xF000F000, 1);
6294 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "depth", "int", 4, 4, 1);
6295 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "data", "void *", sizeof(void *), 0xF000F000, 1);
6296 if(class)
6297 class->fixed = (unsigned int)1;
6298 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::SelfWatcher", 0, sizeof(struct __ecereNameSpace__ecere__com__SelfWatcher), 0, (void *)0, (void *)0, module, 2, 1);
6299 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)
6300 __ecereClass___ecereNameSpace__ecere__com__SelfWatcher = class;
6301 if(class)
6302 class->fixed = (unsigned int)1;
6303 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(4, "ecere::com::AccessMode", 0, 0, 0, (void *)0, (void *)0, module, 4, 1);
6304 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)
6305 __ecereClass___ecereNameSpace__ecere__com__AccessMode = class;
6306 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "defaultAccess", 0);
6307 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "publicAccess", 1);
6308 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "privateAccess", 2);
6309 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "staticAccess", 3);
6310 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "baseSystemAccess", 4);
6311 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::SubModule", 0, sizeof(struct __ecereNameSpace__ecere__com__SubModule), 0, (void *)0, (void *)0, module, 4, 1);
6312 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)
6313 __ecereClass___ecereNameSpace__ecere__com__SubModule = class;
6314 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "prev", "ecere::com::SubModule", sizeof(void *), 0xF000F000, 1);
6315 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "next", "ecere::com::SubModule", sizeof(void *), 0xF000F000, 1);
6316 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "module", "ecere::com::Module", sizeof(void *), 0xF000F000, 1);
6317 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "importMode", "ecere::com::AccessMode", 4, 4, 1);
6318 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(4, "ecere::com::DataMemberType", 0, 0, 0, (void *)0, (void *)0, module, 4, 1);
6319 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)
6320 __ecereClass___ecereNameSpace__ecere__com__DataMemberType = class;
6321 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "normalMember", 0);
6322 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "unionMember", 1);
6323 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "structMember", 2);
6324 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(4, "ecere::com::ClassType", 0, 0, 0, (void *)0, (void *)0, module, 4, 1);
6325 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)
6326 __ecereClass___ecereNameSpace__ecere__com__ClassType = class;
6327 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "normalClass", 0);
6328 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "structClass", 1);
6329 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "bitClass", 2);
6330 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "unitClass", 3);
6331 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "enumClass", 4);
6332 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "noHeadClass", 5);
6333 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "unionClass", 6);
6334 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "systemClass", 1000);
6335 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::Class", 0, sizeof(struct __ecereNameSpace__ecere__com__Class), 0, (void *)0, (void *)0, module, 4, 1);
6336 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)
6337 __ecereClass___ecereNameSpace__ecere__com__Class = class;
6338 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "OnFree", 0, __ecereMethod___ecereNameSpace__ecere__com__Class_OnFree, 1);
6339 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "OnGetString", 0, __ecereMethod___ecereNameSpace__ecere__com__Class_OnGetString, 1);
6340 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "OnGetDataFromString", 0, __ecereMethod___ecereNameSpace__ecere__com__Class_OnGetDataFromString, 1);
6341 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "OnSerialize", 0, __ecereMethod___ecereNameSpace__ecere__com__Class_OnSerialize, 1);
6342 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "OnUnserialize", 0, __ecereMethod___ecereNameSpace__ecere__com__Class_OnUnserialize, 1);
6343 __ecereProp___ecereNameSpace__ecere__com__Class_char__PTR_ = __ecereNameSpace__ecere__com__eClass_AddProperty(class, 0, "const char *", __ecereProp___ecereNameSpace__ecere__com__Class_Set_char__PTR_, __ecereProp___ecereNameSpace__ecere__com__Class_Get_char__PTR_, 1);
6344 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "prev", "ecere::com::Class", sizeof(void *), 0xF000F000, 1);
6345 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "next", "ecere::com::Class", sizeof(void *), 0xF000F000, 1);
6346 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "name", "const char *", sizeof(void *), 0xF000F000, 1);
6347 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "offset", "int", 4, 4, 1);
6348 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "structSize", "int", 4, 4, 1);
6349 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "_vTbl", "void * *", sizeof(void *), 0xF000F000, 1);
6350 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "vTblSize", "int", 4, 4, 1);
6351 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "Constructor", "bool (*)(void *)", sizeof(void *), 0xF000F000, 1);
6352 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "Destructor", "void (*)(void *)", sizeof(void *), 0xF000F000, 1);
6353 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "offsetClass", "int", 4, 4, 1);
6354 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "sizeClass", "int", 4, 4, 1);
6355 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "base", "ecere::com::Class", sizeof(void *), 0xF000F000, 1);
6356 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "methods", "ecere::sys::BinaryTree", sizeof(struct __ecereNameSpace__ecere__sys__BinaryTree), 8, 1);
6357 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "members", "ecere::sys::BinaryTree", sizeof(struct __ecereNameSpace__ecere__sys__BinaryTree), 8, 1);
6358 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "prop", "ecere::sys::BinaryTree", sizeof(struct __ecereNameSpace__ecere__sys__BinaryTree), 8, 1);
6359 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "membersAndProperties", "ecere::sys::OldList", sizeof(struct __ecereNameSpace__ecere__sys__OldList), 8, 1);
6360 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "classProperties", "ecere::sys::BinaryTree", sizeof(struct __ecereNameSpace__ecere__sys__BinaryTree), 8, 1);
6361 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "derivatives", "ecere::sys::OldList", sizeof(struct __ecereNameSpace__ecere__sys__OldList), 8, 1);
6362 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "memberID", "int", 4, 4, 1);
6363 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "startMemberID", "int", 4, 4, 1);
6364 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "type", "ecere::com::ClassType", 4, 4, 1);
6365 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "module", "ecere::com::Module", sizeof(void *), 0xF000F000, 1);
6366 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "nameSpace", "ecere::com::NameSpace *", sizeof(void *), 0xF000F000, 1);
6367 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataTypeString", "const char *", sizeof(void *), 0xF000F000, 1);
6368 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataType", "Type", sizeof(void *), 0xF000F000, 1);
6369 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "typeSize", "int", 4, 4, 1);
6370 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "defaultAlignment", "int", 4, 4, 1);
6371 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "Initialize", "void (*)()", sizeof(void *), 0xF000F000, 1);
6372 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "memberOffset", "int", 4, 4, 1);
6373 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "selfWatchers", "ecere::sys::OldList", sizeof(struct __ecereNameSpace__ecere__sys__OldList), 8, 1);
6374 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "designerClass", "const char *", sizeof(void *), 0xF000F000, 1);
6375 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "noExpansion", "bool", 4, 4, 1);
6376 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "defaultProperty", "const char *", sizeof(void *), 0xF000F000, 1);
6377 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "comRedefinition", "bool", 4, 4, 1);
6378 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "count", "int", 4, 4, 1);
6379 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "isRemote", "int", 4, 4, 1);
6380 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "internalDecl", "bool", 4, 4, 1);
6381 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "data", "void *", sizeof(void *), 0xF000F000, 1);
6382 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "computeSize", "bool", 4, 4, 1);
6383 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "structAlignment", "short", 2, 2, 1);
6384 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "pointerAlignment", "short", 2, 2, 1);
6385 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "destructionWatchOffset", "int", 4, 4, 1);
6386 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "fixed", "bool", 4, 4, 1);
6387 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "delayedCPValues", "ecere::sys::OldList", sizeof(struct __ecereNameSpace__ecere__sys__OldList), 8, 1);
6388 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "inheritanceAccess", "ecere::com::AccessMode", 4, 4, 1);
6389 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "fullName", "const char *", sizeof(void *), 0xF000F000, 1);
6390 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "symbol", "void *", sizeof(void *), 0xF000F000, 1);
6391 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "conversions", "ecere::sys::OldList", sizeof(struct __ecereNameSpace__ecere__sys__OldList), 8, 1);
6392 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "templateParams", "ecere::sys::OldList", sizeof(struct __ecereNameSpace__ecere__sys__OldList), 8, 1);
6393 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "templateArgs", "ecere::com::ClassTemplateArgument *", sizeof(void *), 0xF000F000, 1);
6394 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "templateClass", "ecere::com::Class", sizeof(void *), 0xF000F000, 1);
6395 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "templatized", "ecere::sys::OldList", sizeof(struct __ecereNameSpace__ecere__sys__OldList), 8, 1);
6396 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "numParams", "int", 4, 4, 1);
6397 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "isInstanceClass", "bool", 4, 4, 1);
6398 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "byValueSystemClass", "bool", 4, 4, 1);
6399 if(class)
6400 class->fixed = (unsigned int)1;
6401 if(class)
6402 class->noExpansion = (unsigned int)1;
6403 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(4, "ecere::com::TemplateParameterType", 0, 0, 0, (void *)0, (void *)0, module, 4, 1);
6404 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)
6405 __ecereClass___ecereNameSpace__ecere__com__TemplateParameterType = class;
6406 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "type", 0);
6407 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "identifier", 1);
6408 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "expression", 2);
6409 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(4, "ecere::com::TemplateMemberType", 0, 0, 0, (void *)0, (void *)0, module, 4, 1);
6410 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)
6411 __ecereClass___ecereNameSpace__ecere__com__TemplateMemberType = class;
6412 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "dataMember", 0);
6413 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "method", 1);
6414 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "prop", 2);
6415 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(1, "ecere::com::ClassTemplateArgument", 0, sizeof(struct __ecereNameSpace__ecere__com__ClassTemplateArgument), 0, (void *)0, (void *)0, module, 4, 1);
6416 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)
6417 __ecereClass___ecereNameSpace__ecere__com__ClassTemplateArgument = class;
6418 {
6419 struct __ecereNameSpace__ecere__com__DataMember * dataMember0 = __ecereNameSpace__ecere__com__eMember_New(1, 1);
6420
6421 {
6422 struct __ecereNameSpace__ecere__com__DataMember * dataMember1 = __ecereNameSpace__ecere__com__eMember_New(2, 1);
6423
6424 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember1, "dataTypeString", "const char *", sizeof(void *), 0xF000F000, 1);
6425 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember1, "dataTypeClass", "ecere::com::Class", sizeof(void *), 0xF000F000, 1);
6426 __ecereNameSpace__ecere__com__eMember_AddMember(dataMember0, dataMember1);
6427 }
6428 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember0, "expression", "ecere::com::DataValue", sizeof(struct __ecereNameSpace__ecere__com__DataValue), 8, 1);
6429 {
6430 struct __ecereNameSpace__ecere__com__DataMember * dataMember1 = __ecereNameSpace__ecere__com__eMember_New(2, 1);
6431
6432 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember1, "memberString", "const char *", sizeof(void *), 0xF000F000, 1);
6433 {
6434 struct __ecereNameSpace__ecere__com__DataMember * dataMember2 = __ecereNameSpace__ecere__com__eMember_New(1, 1);
6435
6436 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember2, "member", "ecere::com::DataMember", sizeof(void *), 0xF000F000, 1);
6437 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember2, "prop", "ecere::com::Property", sizeof(void *), 0xF000F000, 1);
6438 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember2, "method", "ecere::com::Method", sizeof(void *), 0xF000F000, 1);
6439 __ecereNameSpace__ecere__com__eMember_AddMember(dataMember1, dataMember2);
6440 }
6441 __ecereNameSpace__ecere__com__eMember_AddMember(dataMember0, dataMember1);
6442 }
6443 __ecereNameSpace__ecere__com__eClass_AddMember(class, dataMember0);
6444 }
6445 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::ClassTemplateParameter", 0, sizeof(struct __ecereNameSpace__ecere__com__ClassTemplateParameter), 0, (void *)0, (void *)0, module, 4, 1);
6446 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)
6447 __ecereClass___ecereNameSpace__ecere__com__ClassTemplateParameter = class;
6448 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "prev", "ecere::com::ClassTemplateParameter", sizeof(void *), 0xF000F000, 1);
6449 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "next", "ecere::com::ClassTemplateParameter", sizeof(void *), 0xF000F000, 1);
6450 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "name", "const char *", sizeof(void *), 0xF000F000, 1);
6451 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "type", "ecere::com::TemplateParameterType", 4, 4, 1);
6452 {
6453 struct __ecereNameSpace__ecere__com__DataMember * dataMember0 = __ecereNameSpace__ecere__com__eMember_New(1, 1);
6454
6455 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember0, "dataTypeString", "const char *", sizeof(void *), 0xF000F000, 1);
6456 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember0, "memberType", "ecere::com::TemplateMemberType", 4, 4, 1);
6457 __ecereNameSpace__ecere__com__eClass_AddMember(class, dataMember0);
6458 }
6459 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "defaultArg", "ecere::com::ClassTemplateArgument", sizeof(struct __ecereNameSpace__ecere__com__ClassTemplateArgument), 8, 1);
6460 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "param", "void *", sizeof(void *), 0xF000F000, 1);
6461 if(class)
6462 class->fixed = (unsigned int)1;
6463 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(4, "ecere::com::MethodType", 0, 0, 0, (void *)0, (void *)0, module, 4, 1);
6464 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)
6465 __ecereClass___ecereNameSpace__ecere__com__MethodType = class;
6466 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "normalMethod", 0);
6467 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "virtualMethod", 1);
6468 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::Method", 0, sizeof(struct __ecereNameSpace__ecere__com__Method), 0, (void *)0, (void *)0, module, 4, 1);
6469 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)
6470 __ecereClass___ecereNameSpace__ecere__com__Method = class;
6471 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "name", "const char *", sizeof(void *), 0xF000F000, 1);
6472 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "parent", "ecere::com::Method", sizeof(void *), 0xF000F000, 1);
6473 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "left", "ecere::com::Method", sizeof(void *), 0xF000F000, 1);
6474 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "right", "ecere::com::Method", sizeof(void *), 0xF000F000, 1);
6475 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "depth", "int", 4, 4, 1);
6476 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "function", "int (*)()", sizeof(void *), 0xF000F000, 1);
6477 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "vid", "int", 4, 4, 1);
6478 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "type", "ecere::com::MethodType", 4, 4, 1);
6479 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "_class", "ecere::com::Class", sizeof(void *), 0xF000F000, 1);
6480 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "symbol", "void *", sizeof(void *), 0xF000F000, 1);
6481 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataTypeString", "const char *", sizeof(void *), 0xF000F000, 1);
6482 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataType", "Type", sizeof(void *), 0xF000F000, 1);
6483 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "memberAccess", "ecere::com::AccessMode", 4, 4, 1);
6484 if(class)
6485 class->fixed = (unsigned int)1;
6486 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(4, "ecere::com::ImportType", 0, 0, 0, (void *)0, (void *)0, module, 4, 1);
6487 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)
6488 __ecereClass___ecereNameSpace__ecere__com__ImportType = class;
6489 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "normalImport", 0);
6490 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "staticImport", 1);
6491 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "remoteImport", 2);
6492 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "preDeclImport", 3);
6493 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "comCheckImport", 4);
6494 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(1, "ecere::com::NameSpace", 0, sizeof(struct __ecereNameSpace__ecere__com__NameSpace), 0, (void *)0, (void *)0, module, 4, 1);
6495 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)
6496 __ecereClass___ecereNameSpace__ecere__com__NameSpace = class;
6497 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "name", "const char *", sizeof(void *), 0xF000F000, 1);
6498 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "btParent", "ecere::com::NameSpace *", sizeof(void *), 0xF000F000, 1);
6499 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "left", "ecere::com::NameSpace *", sizeof(void *), 0xF000F000, 1);
6500 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "right", "ecere::com::NameSpace *", sizeof(void *), 0xF000F000, 1);
6501 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "depth", "int", 4, 4, 1);
6502 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "parent", "ecere::com::NameSpace *", sizeof(void *), 0xF000F000, 1);
6503 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "nameSpaces", "ecere::sys::BinaryTree", sizeof(struct __ecereNameSpace__ecere__sys__BinaryTree), 8, 1);
6504 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "classes", "ecere::sys::BinaryTree", sizeof(struct __ecereNameSpace__ecere__sys__BinaryTree), 8, 1);
6505 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "defines", "ecere::sys::BinaryTree", sizeof(struct __ecereNameSpace__ecere__sys__BinaryTree), 8, 1);
6506 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "functions", "ecere::sys::BinaryTree", sizeof(struct __ecereNameSpace__ecere__sys__BinaryTree), 8, 1);
6507 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(1, "ecere::com::DataValue", 0, sizeof(struct __ecereNameSpace__ecere__com__DataValue), 0, (void *)0, (void *)0, module, 4, 1);
6508 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)
6509 __ecereClass___ecereNameSpace__ecere__com__DataValue = class;
6510 {
6511 struct __ecereNameSpace__ecere__com__DataMember * dataMember0 = __ecereNameSpace__ecere__com__eMember_New(1, 1);
6512
6513 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember0, "c", "char", 1, 1, 1);
6514 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember0, "uc", "byte", 1, 1, 1);
6515 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember0, "s", "short", 2, 2, 1);
6516 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember0, "us", "uint16", 2, 2, 1);
6517 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember0, "i", "int", 4, 4, 1);
6518 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember0, "ui", "uint", 4, 4, 1);
6519 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember0, "p", "void *", sizeof(void *), 0xF000F000, 1);
6520 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember0, "f", "float", 4, 4, 1);
6521 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember0, "d", "double", 8, 8, 1);
6522 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember0, "i64", "int64", 8, 8, 1);
6523 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember0, "ui64", "uint64", 8, 8, 1);
6524 __ecereNameSpace__ecere__com__eClass_AddMember(class, dataMember0);
6525 }
6526 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::DataMember", 0, sizeof(struct __ecereNameSpace__ecere__com__DataMember), 0, (void *)0, (void *)0, module, 4, 1);
6527 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)
6528 __ecereClass___ecereNameSpace__ecere__com__DataMember = class;
6529 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "prev", "ecere::com::DataMember", sizeof(void *), 0xF000F000, 1);
6530 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "next", "ecere::com::DataMember", sizeof(void *), 0xF000F000, 1);
6531 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "name", "const char *", sizeof(void *), 0xF000F000, 1);
6532 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "isProperty", "bool", 4, 4, 1);
6533 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "memberAccess", "ecere::com::AccessMode", 4, 4, 1);
6534 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "id", "int", 4, 4, 1);
6535 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "_class", "ecere::com::Class", sizeof(void *), 0xF000F000, 1);
6536 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataTypeString", "const char *", sizeof(void *), 0xF000F000, 1);
6537 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataTypeClass", "ecere::com::Class", sizeof(void *), 0xF000F000, 1);
6538 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataType", "Type", sizeof(void *), 0xF000F000, 1);
6539 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "type", "ecere::com::DataMemberType", 4, 4, 1);
6540 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "offset", "int", 4, 4, 1);
6541 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "memberID", "int", 4, 4, 1);
6542 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "members", "ecere::sys::OldList", sizeof(struct __ecereNameSpace__ecere__sys__OldList), 8, 1);
6543 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "membersAlpha", "ecere::sys::BinaryTree", sizeof(struct __ecereNameSpace__ecere__sys__BinaryTree), 8, 1);
6544 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "memberOffset", "int", 4, 4, 1);
6545 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "structAlignment", "short", 2, 2, 1);
6546 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "pointerAlignment", "short", 2, 2, 1);
6547 if(class)
6548 class->fixed = (unsigned int)1;
6549 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::BitMember", 0, sizeof(struct __ecereNameSpace__ecere__com__BitMember), 0, (void *)0, (void *)0, module, 4, 1);
6550 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)
6551 __ecereClass___ecereNameSpace__ecere__com__BitMember = class;
6552 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "prev", "ecere::com::BitMember", sizeof(void *), 0xF000F000, 1);
6553 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "next", "ecere::com::BitMember", sizeof(void *), 0xF000F000, 1);
6554 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "name", "const char *", sizeof(void *), 0xF000F000, 1);
6555 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "isProperty", "bool", 4, 4, 1);
6556 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "memberAccess", "ecere::com::AccessMode", 4, 4, 1);
6557 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "id", "int", 4, 4, 1);
6558 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "_class", "ecere::com::Class", sizeof(void *), 0xF000F000, 1);
6559 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataTypeString", "const char *", sizeof(void *), 0xF000F000, 1);
6560 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataTypeClass", "ecere::com::Class", sizeof(void *), 0xF000F000, 1);
6561 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataType", "Type", sizeof(void *), 0xF000F000, 1);
6562 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "type", "ecere::com::DataMemberType", 4, 4, 1);
6563 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "size", "int", 4, 4, 1);
6564 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "pos", "int", 4, 4, 1);
6565 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "mask", "uint64", 8, 8, 1);
6566 if(class)
6567 class->fixed = (unsigned int)1;
6568 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::ClassProperty", 0, sizeof(struct __ecereNameSpace__ecere__com__ClassProperty), 0, (void *)0, (void *)0, module, 4, 1);
6569 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)
6570 __ecereClass___ecereNameSpace__ecere__com__ClassProperty = class;
6571 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "name", "const char *", sizeof(void *), 0xF000F000, 1);
6572 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "parent", "ecere::com::ClassProperty", sizeof(void *), 0xF000F000, 1);
6573 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "left", "ecere::com::ClassProperty", sizeof(void *), 0xF000F000, 1);
6574 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "right", "ecere::com::ClassProperty", sizeof(void *), 0xF000F000, 1);
6575 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "depth", "int", 4, 4, 1);
6576 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "Set", "void (*)(ecere::com::Class, int64)", sizeof(void *), 0xF000F000, 1);
6577 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "Get", "int64 (*)(ecere::com::Class)", sizeof(void *), 0xF000F000, 1);
6578 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataTypeString", "const char *", sizeof(void *), 0xF000F000, 1);
6579 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataType", "Type", sizeof(void *), 0xF000F000, 1);
6580 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "constant", "bool", 4, 4, 1);
6581 if(class)
6582 class->fixed = (unsigned int)1;
6583 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::DefinedExpression", 0, sizeof(struct __ecereNameSpace__ecere__com__DefinedExpression), 0, (void *)0, (void *)0, module, 4, 1);
6584 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)
6585 __ecereClass___ecereNameSpace__ecere__com__DefinedExpression = class;
6586 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "prev", "ecere::com::DefinedExpression", sizeof(void *), 0xF000F000, 1);
6587 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "next", "ecere::com::DefinedExpression", sizeof(void *), 0xF000F000, 1);
6588 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "name", "const char *", sizeof(void *), 0xF000F000, 1);
6589 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "value", "const char *", sizeof(void *), 0xF000F000, 1);
6590 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "nameSpace", "ecere::com::NameSpace *", sizeof(void *), 0xF000F000, 1);
6591 if(class)
6592 class->fixed = (unsigned int)1;
6593 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::GlobalFunction", 0, sizeof(struct __ecereNameSpace__ecere__com__GlobalFunction), 0, (void *)0, (void *)0, module, 4, 1);
6594 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)
6595 __ecereClass___ecereNameSpace__ecere__com__GlobalFunction = class;
6596 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "prev", "ecere::com::GlobalFunction", sizeof(void *), 0xF000F000, 1);
6597 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "next", "ecere::com::GlobalFunction", sizeof(void *), 0xF000F000, 1);
6598 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "name", "const char *", sizeof(void *), 0xF000F000, 1);
6599 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "function", "int (*)()", sizeof(void *), 0xF000F000, 1);
6600 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "module", "ecere::com::Module", sizeof(void *), 0xF000F000, 1);
6601 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "nameSpace", "ecere::com::NameSpace *", sizeof(void *), 0xF000F000, 1);
6602 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataTypeString", "const char *", sizeof(void *), 0xF000F000, 1);
6603 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataType", "Type", sizeof(void *), 0xF000F000, 1);
6604 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "symbol", "void *", sizeof(void *), 0xF000F000, 1);
6605 if(class)
6606 class->fixed = (unsigned int)1;
6607 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::EnumClassData", 0, sizeof(struct __ecereNameSpace__ecere__com__EnumClassData), 0, (void *)0, (void *)0, module, 4, 1);
6608 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)
6609 __ecereClass___ecereNameSpace__ecere__com__EnumClassData = class;
6610 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "values", "ecere::sys::OldList", sizeof(struct __ecereNameSpace__ecere__sys__OldList), 8, 1);
6611 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "largest", "int64", 8, 8, 1);
6612 if(class)
6613 class->fixed = (unsigned int)1;
6614 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::Watcher", 0, sizeof(struct __ecereNameSpace__ecere__com__Watcher), 0, (void *)0, (void *)0, module, 2, 1);
6615 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)
6616 __ecereClass___ecereNameSpace__ecere__com__Watcher = class;
6617 if(class)
6618 class->fixed = (unsigned int)1;
6619 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::MemBlock", 0, sizeof(struct __ecereNameSpace__ecere__com__MemBlock), 0, (void *)0, (void *)0, module, 2, 1);
6620 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)
6621 __ecereClass___ecereNameSpace__ecere__com__MemBlock = class;
6622 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::MemPart", 0, sizeof(struct __ecereNameSpace__ecere__com__MemPart), 0, (void *)0, (void *)0, module, 2, 1);
6623 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)
6624 __ecereClass___ecereNameSpace__ecere__com__MemPart = class;
6625 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(1, "ecere::com::BlockPool", 0, sizeof(struct __ecereNameSpace__ecere__com__BlockPool), 0, (void *)0, (void *)0, module, 2, 1);
6626 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)
6627 __ecereClass___ecereNameSpace__ecere__com__BlockPool = class;
6628 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "Add", "ecere::com::MemBlock Add()", __ecereMethod___ecereNameSpace__ecere__com__BlockPool_Add, 1);
6629 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "Expand", "bool Expand(unsigned int numBlocks)", __ecereMethod___ecereNameSpace__ecere__com__BlockPool_Expand, 1);
6630 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "Remove", "void Remove(ecere::com::MemBlock block)", __ecereMethod___ecereNameSpace__ecere__com__BlockPool_Remove, 1);
6631 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "first", "ecere::com::MemBlock", sizeof(void *), 0xF000F000, 1);
6632 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "last", "ecere::com::MemBlock", sizeof(void *), 0xF000F000, 1);
6633 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "free", "ecere::com::MemBlock", sizeof(void *), 0xF000F000, 1);
6634 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "blockSize", "uint", 4, 4, 1);
6635 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "blockSpace", "uint", 4, 4, 1);
6636 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "numParts", "int", 4, 4, 1);
6637 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "numBlocks", "int", 4, 4, 1);
6638 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "totalSize", "uint", 4, 4, 1);
6639 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "usedSpace", "uint", 4, 4, 1);
6640 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::log2i", "uint ecere::com::log2i(uint number)", __ecereNameSpace__ecere__com__log2i, module, 4);
6641 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::pow2i", "uint ecere::com::pow2i(uint number)", __ecereNameSpace__ecere__com__pow2i, module, 4);
6642 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::memswap", "void ecere::com::memswap(byte * a, byte * b, uint size)", __ecereNameSpace__ecere__com__memswap, module, 4);
6643 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::CheckMemory", "void ecere::com::CheckMemory(void)", __ecereNameSpace__ecere__com__CheckMemory, module, 4);
6644 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eSystem_RegisterClass", "ecere::com::Class ecere::com::eSystem_RegisterClass(ecere::com::ClassType type, const char * name, const char * baseName, int size, int sizeClass, bool (* Constructor)(void *), void (* Destructor)(void *), ecere::com::Module module, ecere::com::AccessMode declMode, ecere::com::AccessMode inheritanceAccess)", __ecereNameSpace__ecere__com__eSystem_RegisterClass, module, 4);
6645 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eClass_Unregister", "void ecere::com::eClass_Unregister(ecere::com::Class _class)", __ecereNameSpace__ecere__com__eClass_Unregister, module, 4);
6646 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::_strtoi64", "int64 ecere::com::_strtoi64(const char * string, const char * * endString, int base)", __ecereNameSpace__ecere__com___strtoi64, module, 4);
6647 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::_strtoui64", "uint64 ecere::com::_strtoui64(const char * string, const char * * endString, int base)", __ecereNameSpace__ecere__com___strtoui64, module, 4);
6648 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eSystem_FindClass", "ecere::com::Class ecere::com::eSystem_FindClass(ecere::com::Module module, const char * name)", __ecereNameSpace__ecere__com__eSystem_FindClass, module, 4);
6649 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::DefaultFunction", "bool ecere::com::DefaultFunction(void)", __ecereNameSpace__ecere__com__DefaultFunction, module, 2);
6650 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eClass_IsDerived", "bool ecere::com::eClass_IsDerived(ecere::com::Class _class, ecere::com::Class from)", __ecereNameSpace__ecere__com__eClass_IsDerived, module, 4);
6651 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eClass_AddMethod", "ecere::com::Method ecere::com::eClass_AddMethod(ecere::com::Class _class, const char * name, const char * type, void * function, ecere::com::AccessMode declMode)", __ecereNameSpace__ecere__com__eClass_AddMethod, module, 4);
6652 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eClass_AddVirtualMethod", "ecere::com::Method ecere::com::eClass_AddVirtualMethod(ecere::com::Class _class, const char * name, const char * type, void * function, ecere::com::AccessMode declMode)", __ecereNameSpace__ecere__com__eClass_AddVirtualMethod, module, 4);
6653 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eClass_AddProperty", "ecere::com::Property ecere::com::eClass_AddProperty(ecere::com::Class _class, const char * name, const char * dataType, void * setStmt, void * getStmt, ecere::com::AccessMode declMode)", __ecereNameSpace__ecere__com__eClass_AddProperty, module, 4);
6654 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eClass_AddClassProperty", "ecere::com::ClassProperty ecere::com::eClass_AddClassProperty(ecere::com::Class _class, const char * name, const char * dataType, void * setStmt, void * getStmt)", __ecereNameSpace__ecere__com__eClass_AddClassProperty, module, 4);
6655 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eClass_FindClassProperty", "ecere::com::ClassProperty ecere::com::eClass_FindClassProperty(ecere::com::Class _class, const char * name)", __ecereNameSpace__ecere__com__eClass_FindClassProperty, module, 4);
6656 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eClass_GetProperty", "int64 ecere::com::eClass_GetProperty(ecere::com::Class _class, const char * name)", __ecereNameSpace__ecere__com__eClass_GetProperty, module, 4);
6657 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eClass_SetProperty", "void ecere::com::eClass_SetProperty(ecere::com::Class _class, const char * name, int64 value)", __ecereNameSpace__ecere__com__eClass_SetProperty, module, 4);
6658 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eClass_FindMethod", "ecere::com::Method ecere::com::eClass_FindMethod(ecere::com::Class _class, const char * name, ecere::com::Module module)", __ecereNameSpace__ecere__com__eClass_FindMethod, module, 4);
6659 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eInstance_New", "void * ecere::com::eInstance_New(ecere::com::Class _class)", __ecereNameSpace__ecere__com__eInstance_New, module, 4);
6660 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eInstance_Evolve", "void ecere::com::eInstance_Evolve(ecere::com::Instance * instancePtr, ecere::com::Class _class)", __ecereNameSpace__ecere__com__eInstance_Evolve, module, 4);
6661 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eInstance_Delete", "void ecere::com::eInstance_Delete(ecere::com::Instance instance)", __ecereNameSpace__ecere__com__eInstance_Delete, module, 4);
6662 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eClass_FindProperty", "ecere::com::Property ecere::com::eClass_FindProperty(ecere::com::Class _class, const char * name, ecere::com::Module module)", __ecereNameSpace__ecere__com__eClass_FindProperty, module, 4);
6663 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eClass_FindDataMember", "ecere::com::DataMember ecere::com::eClass_FindDataMember(ecere::com::Class _class, const char * name, ecere::com::Module module, ecere::com::DataMember * subMemberStack, int * subMemberStackPos)", __ecereNameSpace__ecere__com__eClass_FindDataMember, module, 4);
6664 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eClass_FindDataMemberAndOffset", "ecere::com::DataMember ecere::com::eClass_FindDataMemberAndOffset(ecere::com::Class _class, const char * name, uint * offset, ecere::com::Module module, ecere::com::DataMember * subMemberStack, int * subMemberStackPos)", __ecereNameSpace__ecere__com__eClass_FindDataMemberAndOffset, module, 4);
6665 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eClass_FindDataMemberAndId", "ecere::com::DataMember ecere::com::eClass_FindDataMemberAndId(ecere::com::Class _class, const char * name, int * id, ecere::com::Module module, ecere::com::DataMember * subMemberStack, int * subMemberStackPos)", __ecereNameSpace__ecere__com__eClass_FindDataMemberAndId, module, 4);
6666 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eClass_FindNextMember", "void ecere::com::eClass_FindNextMember(ecere::com::Class _class, ecere::com::Class * curClass, ecere::com::DataMember * curMember, ecere::com::DataMember * subMemberStack, int * subMemberStackPos)", __ecereNameSpace__ecere__com__eClass_FindNextMember, module, 4);
6667 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eInstance_SetMethod", "void ecere::com::eInstance_SetMethod(ecere::com::Instance instance, const char * name, void * function)", __ecereNameSpace__ecere__com__eInstance_SetMethod, module, 4);
6668 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eInstance_IsDerived", "bool ecere::com::eInstance_IsDerived(ecere::com::Instance instance, ecere::com::Class from)", __ecereNameSpace__ecere__com__eInstance_IsDerived, module, 4);
6669 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eInstance_IncRef", "void ecere::com::eInstance_IncRef(ecere::com::Instance instance)", __ecereNameSpace__ecere__com__eInstance_IncRef, module, 4);
6670 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eInstance_DecRef", "void ecere::com::eInstance_DecRef(ecere::com::Instance instance)", __ecereNameSpace__ecere__com__eInstance_DecRef, module, 4);
6671 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eClass_Resize", "void ecere::com::eClass_Resize(ecere::com::Class _class, int newSize)", __ecereNameSpace__ecere__com__eClass_Resize, module, 4);
6672 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eClass_AddDataMember", "ecere::com::DataMember ecere::com::eClass_AddDataMember(ecere::com::Class _class, const char * name, const char * type, uint size, uint alignment, ecere::com::AccessMode declMode)", __ecereNameSpace__ecere__com__eClass_AddDataMember, module, 4);
6673 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eMember_AddDataMember", "ecere::com::DataMember ecere::com::eMember_AddDataMember(ecere::com::DataMember member, const char * name, const char * type, uint size, uint alignment, ecere::com::AccessMode declMode)", __ecereNameSpace__ecere__com__eMember_AddDataMember, module, 4);
6674 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eMember_New", "ecere::com::DataMember ecere::com::eMember_New(ecere::com::DataMemberType type, ecere::com::AccessMode declMode)", __ecereNameSpace__ecere__com__eMember_New, module, 4);
6675 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eMember_AddMember", "bool ecere::com::eMember_AddMember(ecere::com::DataMember addTo, ecere::com::DataMember dataMember)", __ecereNameSpace__ecere__com__eMember_AddMember, module, 4);
6676 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eClass_AddMember", "bool ecere::com::eClass_AddMember(ecere::com::Class _class, ecere::com::DataMember dataMember)", __ecereNameSpace__ecere__com__eClass_AddMember, module, 4);
6677 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eClass_AddBitMember", "ecere::com::BitMember ecere::com::eClass_AddBitMember(ecere::com::Class _class, const char * name, const char * type, int bitSize, int bitPos, ecere::com::AccessMode declMode)", __ecereNameSpace__ecere__com__eClass_AddBitMember, module, 4);
6678 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eModule_Load", "ecere::com::Module ecere::com::eModule_Load(ecere::com::Module fromModule, const char * name, ecere::com::AccessMode importAccess)", __ecereNameSpace__ecere__com__eModule_Load, module, 4);
6679 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eModule_LoadStrict", "ecere::com::Module ecere::com::eModule_LoadStrict(ecere::com::Module fromModule, const char * name, ecere::com::AccessMode importAccess)", __ecereNameSpace__ecere__com__eModule_LoadStrict, module, 4);
6680 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eModule_LoadStatic", "ecere::com::Module ecere::com::eModule_LoadStatic(ecere::com::Module fromModule, const char * name, ecere::com::AccessMode importAccess, bool (* Load)(ecere::com::Module module), bool (* Unload)(ecere::com::Module module))", __ecereNameSpace__ecere__com__eModule_LoadStatic, module, 4);
6681 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eModule_Unload", "void ecere::com::eModule_Unload(ecere::com::Module fromModule, ecere::com::Module module)", __ecereNameSpace__ecere__com__eModule_Unload, module, 4);
6682 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eEnum_AddFixedValue", "void ecere::com::eEnum_AddFixedValue(ecere::com::Class _class, const char * string, int64 value)", __ecereNameSpace__ecere__com__eEnum_AddFixedValue, module, 4);
6683 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eEnum_AddValue", "int64 ecere::com::eEnum_AddValue(ecere::com::Class _class, const char * string)", __ecereNameSpace__ecere__com__eEnum_AddValue, module, 4);
6684 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eSystem_RegisterDefine", "ecere::com::DefinedExpression ecere::com::eSystem_RegisterDefine(const char * name, const char * value, ecere::com::Module module, ecere::com::AccessMode declMode)", __ecereNameSpace__ecere__com__eSystem_RegisterDefine, module, 4);
6685 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eSystem_RegisterFunction", "ecere::com::GlobalFunction ecere::com::eSystem_RegisterFunction(const char * name, const char * type, void * func, ecere::com::Module module, ecere::com::AccessMode declMode)", __ecereNameSpace__ecere__com__eSystem_RegisterFunction, module, 4);
6686 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eSystem_FindDefine", "ecere::com::DefinedExpression ecere::com::eSystem_FindDefine(ecere::com::Module module, const char * name)", __ecereNameSpace__ecere__com__eSystem_FindDefine, module, 4);
6687 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eSystem_FindFunction", "ecere::com::GlobalFunction ecere::com::eSystem_FindFunction(ecere::com::Module module, const char * name)", __ecereNameSpace__ecere__com__eSystem_FindFunction, module, 4);
6688 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eSystem_Renew", "void * ecere::com::eSystem_Renew(void * memory, uint size)", __ecereNameSpace__ecere__com__eSystem_Renew, module, 4);
6689 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eSystem_Renew0", "void * ecere::com::eSystem_Renew0(void * memory, uint size)", __ecereNameSpace__ecere__com__eSystem_Renew0, module, 4);
6690 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eSystem_New", "void * ecere::com::eSystem_New(uint size)", __ecereNameSpace__ecere__com__eSystem_New, module, 4);
6691 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eSystem_New0", "void * ecere::com::eSystem_New0(uint size)", __ecereNameSpace__ecere__com__eSystem_New0, module, 4);
6692 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eSystem_Delete", "void ecere::com::eSystem_Delete(void * memory)", __ecereNameSpace__ecere__com__eSystem_Delete, module, 4);
6693 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eInstance_FireSelfWatchers", "void ecere::com::eInstance_FireSelfWatchers(ecere::com::Instance instance, ecere::com::Property _property)", __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers, module, 4);
6694 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eInstance_FireWatchers", "void ecere::com::eInstance_FireWatchers(ecere::com::Instance instance, ecere::com::Property _property)", __ecereNameSpace__ecere__com__eInstance_FireWatchers, module, 4);
6695 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eProperty_Watchable", "void ecere::com::eProperty_Watchable(ecere::com::Property _property)", __ecereNameSpace__ecere__com__eProperty_Watchable, module, 4);
6696 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eClass_DestructionWatchable", "void ecere::com::eClass_DestructionWatchable(ecere::com::Class _class)", __ecereNameSpace__ecere__com__eClass_DestructionWatchable, module, 4);
6697 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eProperty_SelfWatch", "void ecere::com::eProperty_SelfWatch(ecere::com::Class _class, const char * name, void (* callback)(void *))", __ecereNameSpace__ecere__com__eProperty_SelfWatch, module, 4);
6698 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eInstance_Watch", "void ecere::com::eInstance_Watch(void * instance, ecere::com::Property _property, void * object, void (* callback)(void *, void *))", __ecereNameSpace__ecere__com__eInstance_Watch, module, 4);
6699 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eInstance_WatchDestruction", "void ecere::com::eInstance_WatchDestruction(ecere::com::Instance instance, ecere::com::Instance object, void (* callback)(void *, void *))", __ecereNameSpace__ecere__com__eInstance_WatchDestruction, module, 4);
6700 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eInstance_StopWatching", "void ecere::com::eInstance_StopWatching(ecere::com::Instance instance, ecere::com::Property _property, ecere::com::Instance object)", __ecereNameSpace__ecere__com__eInstance_StopWatching, module, 4);
6701 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eClass_GetDesigner", "subclass(ecere::com::ClassDesignerBase) ecere::com::eClass_GetDesigner(ecere::com::Class _class)", __ecereNameSpace__ecere__com__eClass_GetDesigner, module, 4);
6702 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eInstance_GetDesigner", "subclass(ecere::com::ClassDesignerBase) ecere::com::eInstance_GetDesigner(ecere::com::Instance instance)", __ecereNameSpace__ecere__com__eInstance_GetDesigner, module, 4);
6703 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::LocateModule", "bool ecere::com::LocateModule(const char * name, const char * fileName)", __ecereNameSpace__ecere__com__LocateModule, module, 4);
6704 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::__ecere_COM_Initialize", "ecere::com::Application ecere::com::__ecere_COM_Initialize(bool guiApp, int argc, char * argv[])", __ecereNameSpace__ecere__com____ecere_COM_Initialize, module, 4);
6705 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eClass_AddTemplateParameter", "ecere::com::ClassTemplateParameter ecere::com::eClass_AddTemplateParameter(ecere::com::Class _class, const char * name, ecere::com::TemplateParameterType type, const void * info, ecere::com::ClassTemplateArgument defaultArg)", __ecereNameSpace__ecere__com__eClass_AddTemplateParameter, module, 4);
6706 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eClass_DoneAddingTemplateParameters", "void ecere::com::eClass_DoneAddingTemplateParameters(ecere::com::Class base)", __ecereNameSpace__ecere__com__eClass_DoneAddingTemplateParameters, module, 4);
6707 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(4, "ecere::com::Platform", 0, 0, 0, (void *)0, (void *)0, module, 4, 1);
6708 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)
6709 __ecereClass___ecereNameSpace__ecere__com__Platform = class;
6710 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "OnGetString", 0, __ecereMethod___ecereNameSpace__ecere__com__Platform_OnGetString, 1);
6711 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "OnGetDataFromString", 0, __ecereMethod___ecereNameSpace__ecere__com__Platform_OnGetDataFromString, 1);
6712 __ecereProp___ecereNameSpace__ecere__com__Platform_char__PTR_ = __ecereNameSpace__ecere__com__eClass_AddProperty(class, 0, "const char *", __ecereProp___ecereNameSpace__ecere__com__Platform_Set_char__PTR_, __ecereProp___ecereNameSpace__ecere__com__Platform_Get_char__PTR_, 1);
6713 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "unknown", 0);
6714 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "win32", 1);
6715 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "tux", 2);
6716 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "apple", 3);
6717 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::GetRuntimePlatform", "ecere::com::Platform ecere::com::GetRuntimePlatform(void)", __ecereNameSpace__ecere__com__GetRuntimePlatform, module, 4);
6718 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::ObjectInfo", 0, sizeof(struct __ecereNameSpace__ecere__com__ObjectInfo), 0, (void *)0, (void *)0, module, 4, 1);
6719 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)
6720 __ecereClass___ecereNameSpace__ecere__com__ObjectInfo = class;
6721 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "prev", "ecere::com::ObjectInfo", sizeof(void *), 0xF000F000, 1);
6722 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "next", "ecere::com::ObjectInfo", sizeof(void *), 0xF000F000, 1);
6723 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "instance", "ecere::com::Instance", sizeof(void *), 0xF000F000, 1);
6724 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "name", "char *", sizeof(void *), 0xF000F000, 1);
6725 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "instCode", "Instantiation", sizeof(void *), 0xF000F000, 1);
6726 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "deleted", "bool", 4, 4, 1);
6727 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "oClass", "ecere::com::ObjectInfo", sizeof(void *), 0xF000F000, 1);
6728 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "instances", "ecere::sys::OldList", sizeof(struct __ecereNameSpace__ecere__sys__OldList), 8, 1);
6729 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "classDefinition", "ClassDefinition", sizeof(void *), 0xF000F000, 1);
6730 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "modified", "bool", 4, 4, 1);
6731 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "i18nStrings", "void *", sizeof(void *), 0xF000F000, 1);
6732 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(0, "ecere::com::DesignerBase", "ecere::gui::Window", sizeof(struct __ecereNameSpace__ecere__com__DesignerBase), 0, (void *)0, (void *)0, module, 4, 1);
6733 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)
6734 __ecereClass___ecereNameSpace__ecere__com__DesignerBase = class;
6735 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "FindObject", "bool FindObject(ecere::com::Instance * instance, const char * string)", 0, 1);
6736 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "RenameObject", "void RenameObject(ecere::com::ObjectInfo object, const char * name)", 0, 1);
6737 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "SelectObjectFromDesigner", "void SelectObjectFromDesigner(ecere::com::ObjectInfo object)", 0, 1);
6738 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "CodeAddObject", "void CodeAddObject(ecere::com::Instance instance, ecere::com::ObjectInfo * object)", 0, 1);
6739 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "SheetAddObject", "void SheetAddObject(ecere::com::ObjectInfo object)", 0, 1);
6740 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "AddToolBoxClass", "void AddToolBoxClass(ecere::com::Class _class)", 0, 1);
6741 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "AddDefaultMethod", "void AddDefaultMethod(ecere::com::Instance instance, ecere::com::Instance classInstance)", 0, 1);
6742 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "DeleteObject", "void DeleteObject(ecere::com::ObjectInfo object)", 0, 1);
6743 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "ObjectContainsCode", "bool ObjectContainsCode(ecere::com::ObjectInfo object)", 0, 1);
6744 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "ModifyCode", "void ModifyCode(void)", 0, 1);
6745 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "UpdateProperties", "void UpdateProperties(void)", 0, 1);
6746 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "classDesigner", "ecere::com::ClassDesignerBase", sizeof(void *), 0xF000F000, 1);
6747 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "objectClass", "const char *", sizeof(void *), 0xF000F000, 1);
6748 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "isDragging", "bool", 4, 4, 1);
6749 __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_classDesigner = __ecereNameSpace__ecere__com__eClass_AddProperty(class, "classDesigner", "ecere::com::ClassDesignerBase", __ecereProp___ecereNameSpace__ecere__com__DesignerBase_Set_classDesigner, __ecereProp___ecereNameSpace__ecere__com__DesignerBase_Get_classDesigner, 1);
6750 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)
6751 __ecereProp___ecereNameSpace__ecere__com__DesignerBase_classDesigner = __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_classDesigner, __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_classDesigner = (void *)0;
6752 __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_objectClass = __ecereNameSpace__ecere__com__eClass_AddProperty(class, "objectClass", "const char *", __ecereProp___ecereNameSpace__ecere__com__DesignerBase_Set_objectClass, __ecereProp___ecereNameSpace__ecere__com__DesignerBase_Get_objectClass, 1);
6753 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)
6754 __ecereProp___ecereNameSpace__ecere__com__DesignerBase_objectClass = __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_objectClass, __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_objectClass = (void *)0;
6755 __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_isDragging = __ecereNameSpace__ecere__com__eClass_AddProperty(class, "isDragging", "bool", __ecereProp___ecereNameSpace__ecere__com__DesignerBase_Set_isDragging, __ecereProp___ecereNameSpace__ecere__com__DesignerBase_Get_isDragging, 1);
6756 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)
6757 __ecereProp___ecereNameSpace__ecere__com__DesignerBase_isDragging = __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_isDragging, __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_isDragging = (void *)0;
6758 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(0, "ecere::com::ClassDesignerBase", "ecere::gui::Window", 0, 0, (void *)0, (void *)0, module, 4, 1);
6759 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)
6760 __ecereClass___ecereNameSpace__ecere__com__ClassDesignerBase = class;
6761 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "Reset", "void Reset(void)", 0, 1);
6762 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "AddObject", "void AddObject(void)", 0, 1);
6763 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "SelectObject", "void SelectObject(ecere::com::ObjectInfo object, ecere::com::Instance control)", 0, 1);
6764 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "ListToolBoxClasses", "void ListToolBoxClasses(ecere::com::DesignerBase designer)", 0, 1);
6765 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "PrepareTestObject", "void ::PrepareTestObject(ecere::com::DesignerBase designer, ecere::com::Instance test)", 0, 1);
6766 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "CreateObject", "void ::CreateObject(ecere::com::DesignerBase designer, ecere::com::Instance instance, ecere::com::ObjectInfo object, bool isClass, ecere::com::Instance _class)", 0, 1);
6767 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "PostCreateObject", "void ::PostCreateObject(ecere::com::Instance instance, ecere::com::ObjectInfo object, bool isClass, ecere::com::Instance _class)", 0, 1);
6768 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "DroppedObject", "void ::DroppedObject(ecere::com::Instance instance, ecere::com::ObjectInfo object, bool isClass, ecere::com::Instance _class)", 0, 1);
6769 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "DestroyObject", "void ::DestroyObject(ecere::com::Instance object)", 0, 1);
6770 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "FixProperty", "void ::FixProperty(ecere::com::Property prop, ecere::com::Instance object)", 0, 1);
6771 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "CreateNew", "void ::CreateNew(EditBox editBox, Size clientSize, const char * name, const char * inherit)", 0, 1);
6772 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::SetActiveDesigner", "void ecere::com::SetActiveDesigner(ecere::com::DesignerBase designer)", __ecereNameSpace__ecere__com__SetActiveDesigner, module, 4);
6773 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::GetActiveDesigner", "ecere::com::DesignerBase ecere::com::GetActiveDesigner(void)", __ecereNameSpace__ecere__com__GetActiveDesigner, module, 4);
6774 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eSystem_SetPoolingDisabled", "void ecere::com::eSystem_SetPoolingDisabled(bool disabled)", __ecereNameSpace__ecere__com__eSystem_SetPoolingDisabled, module, 4);
6775 __ecereNameSpace__ecere__com__eSystem_RegisterDefine("ecere::sys::LEAD_OFFSET", "0xD800 - (0x10000 >> 10)", module, 2);
6776 __ecereNameSpace__ecere__com__eSystem_RegisterDefine("ecere::sys::SURROGATE_OFFSET", "0x10000 - (0xD800 << 10) - 0xDC00", module, 2);
6777 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::UTF8Validate", "bool ecere::sys::UTF8Validate(const char * source)", __ecereNameSpace__ecere__sys__UTF8Validate, module, 4);
6778 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::ISO8859_1toUTF8", "int ecere::sys::ISO8859_1toUTF8(const char * source, char * dest, int max)", __ecereNameSpace__ecere__sys__ISO8859_1toUTF8, module, 4);
6779 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::UTF16toUTF8", "char * ecere::sys::UTF16toUTF8(const uint16 * source)", __ecereNameSpace__ecere__sys__UTF16toUTF8, module, 4);
6780 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::UTF16toUTF8Buffer", "int ecere::sys::UTF16toUTF8Buffer(const uint16 * source, char * dest, int max)", __ecereNameSpace__ecere__sys__UTF16toUTF8Buffer, module, 4);
6781 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::UTF8GetChar", "unichar ecere::sys::UTF8GetChar(const char * string, int * numBytes)", __ecereNameSpace__ecere__sys__UTF8GetChar, module, 4);
6782 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::UTF8toUTF16Buffer", "int ecere::sys::UTF8toUTF16Buffer(const char * source, uint16 * dest, int max)", __ecereNameSpace__ecere__sys__UTF8toUTF16Buffer, module, 4);
6783 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::UTF32toUTF8Len", "int ecere::sys::UTF32toUTF8Len(const unichar * source, int count, char * dest, int max)", __ecereNameSpace__ecere__sys__UTF32toUTF8Len, module, 4);
6784 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::UTF8toUTF16", "uint16 * ecere::sys::UTF8toUTF16(const char * source, int * wordCount)", __ecereNameSpace__ecere__sys__UTF8toUTF16, module, 4);
6785 }
6786