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