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