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