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