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