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