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