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