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