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