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