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