compiler/bootstrap: Reverted to using 'uintptr' for bootstrap; Hardcoding FileListing...
[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 uintptr_t 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(force64Bits)
1764 {
1765 if(!strcmp(name, "ecere::com::Class"))
1766 size = 0;
1767 else if(!strcmp(name, "ecere::com::ClassProperty"))
1768 size = 0;
1769 else if(!strcmp(name, "ecere::sys::BufferedFile"))
1770 size = 0;
1771 else if(!strcmp(name, "ecere::sys::BTNode"))
1772 size = 0;
1773 else if(!strcmp(name, "ecere::sys::StringBTNode"))
1774 size = 0;
1775 else if(!strcmp(name, "ecere::sys::OldList"))
1776 size = 0;
1777 else if(!strcmp(name, "ecere::sys::Item"))
1778 size = 0;
1779 else if(!strcmp(name, "ecere::sys::NamedLink"))
1780 size = 0;
1781 else if(!strcmp(name, "ecere::sys::OldLink"))
1782 size = 0;
1783 else if(!strcmp(name, "ecere::sys::NamedItem"))
1784 size = 0;
1785 else if(!strcmp(name, "ecere::sys::NamedItem64"))
1786 size = 0;
1787 else if(!strcmp(name, "ecere::sys::BinaryTree"))
1788 size = 0;
1789 else if(!strcmp(name, "ecere::sys::FileListing"))
1790 size = 3 * 8;
1791 }
1792 if(type == 1)
1793 {
1794 _class->memberOffset = (base && base->structSize && base->type != 1000) ? base->structSize : 0;
1795 _class->typeSize = _class->structSize = _class->memberOffset + size;
1796 }
1797 else if(type == 2 || type == 4 || type == 3)
1798 {
1799 struct __ecereNameSpace__ecere__com__Class * dataTypeClass = __ecereNameSpace__ecere__com__eSystem_FindClass(_class->module, dataTypeString);
1800
1801 if(dataTypeClass)
1802 _class->typeSize = dataTypeClass->typeSize;
1803 _class->structSize = 0;
1804 }
1805 else if(type == 0 || type == 5)
1806 {
1807 _class->structSize = _class->offset + size;
1808 _class->typeSize = sizeof(void *);
1809 }
1810 _class->offsetClass = offsetClass;
1811 _class->sizeClass = totalSizeClass;
1812 _class->Constructor = (void *)Constructor;
1813 _class->Destructor = Destructor;
1814 if(_class->type != 1000)
1815 _class->type = type;
1816 if(!size)
1817 _class->computeSize = 0x1;
1818 else
1819 _class->computeSize = 0x0;
1820 _class->inheritanceAccess = inheritanceAccess;
1821 if(type == 4)
1822 {
1823 if(enumBase)
1824 _class->base = base = enumBase;
1825 {
1826 struct __ecereNameSpace__ecere__com__EnumClassData * data = (struct __ecereNameSpace__ecere__com__EnumClassData *)_class->data;
1827
1828 if(base && base->type != 4)
1829 data->largest = -1;
1830 else
1831 data->largest = ((struct __ecereNameSpace__ecere__com__EnumClassData *)base->data)->largest;
1832 }
1833 }
1834 if(base && base->vTblSize)
1835 {
1836 _class->vTblSize = base->vTblSize;
1837 (__ecereNameSpace__ecere__com__eSystem_Delete(_class->_vTbl), _class->_vTbl = 0);
1838 _class->_vTbl = __ecereNameSpace__ecere__com___malloc(sizeof(int (*)()) * _class->vTblSize);
1839 memcpy(_class->_vTbl, base->_vTbl, sizeof(int (*)()) * _class->vTblSize);
1840 }
1841 if(_class->base)
1842 {
1843 struct __ecereNameSpace__ecere__sys__OldLink * link = (link = __ecereNameSpace__ecere__com__eSystem_New0(12), link->data = _class, link);
1844
1845 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&_class->base->derivatives, link);
1846 }
1847 __ecereNameSpace__ecere__com__FixDerivativesBase(_class, _class);
1848 return _class;
1849 }
1850 }
1851 return (((void *)0));
1852 }
1853
1854 static void __ecereNameSpace__ecere__com__DataMember_Free(struct __ecereNameSpace__ecere__com__DataMember * parentMember)
1855 {
1856 struct __ecereNameSpace__ecere__com__DataMember * member;
1857 struct __ecereNameSpace__ecere__com__BTNamedLink * namedLink;
1858
1859 (__ecereNameSpace__ecere__com__eSystem_Delete(parentMember->name), parentMember->name = 0);
1860 (__ecereNameSpace__ecere__com__eSystem_Delete(parentMember->dataTypeString), parentMember->dataTypeString = 0);
1861 while((member = parentMember->members.first))
1862 {
1863 __ecereNameSpace__ecere__com__DataMember_Free(member);
1864 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&parentMember->members, member);
1865 }
1866 while((namedLink = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&parentMember->membersAlpha)))
1867 {
1868 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&parentMember->membersAlpha, (struct __ecereNameSpace__ecere__sys__BTNode *)namedLink);
1869 }
1870 }
1871
1872 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__NamedLink;
1873
1874 struct __ecereNameSpace__ecere__sys__NamedLink
1875 {
1876 struct __ecereNameSpace__ecere__sys__NamedLink * prev;
1877 struct __ecereNameSpace__ecere__sys__NamedLink * next;
1878 char *  name;
1879 void *  data;
1880 } __attribute__ ((gcc_struct));
1881
1882 static void __ecereNameSpace__ecere__com__FreeEnumValue(struct __ecereNameSpace__ecere__sys__NamedLink * value)
1883 {
1884 (__ecereNameSpace__ecere__com__eSystem_Delete(value->name), value->name = 0);
1885 }
1886
1887 static void __ecereNameSpace__ecere__com__FreeTemplateArg(struct __ecereNameSpace__ecere__com__Class * template, struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param, int id)
1888 {
1889 switch(param->type)
1890 {
1891 case 0:
1892 (__ecereNameSpace__ecere__com__eSystem_Delete(template->templateArgs[id].dataTypeString), template->templateArgs[id].dataTypeString = 0);
1893 break;
1894 case 1:
1895 (__ecereNameSpace__ecere__com__eSystem_Delete(template->templateArgs[id].memberString), template->templateArgs[id].memberString = 0);
1896 break;
1897 case 2:
1898 break;
1899 }
1900 }
1901
1902 static void __ecereNameSpace__ecere__com__FreeTemplateArgs(struct __ecereNameSpace__ecere__com__Class * template)
1903 {
1904 if(template->templateArgs)
1905 {
1906 struct __ecereNameSpace__ecere__com__Class * _class;
1907
1908 for(_class = template; _class; _class = _class->base)
1909 {
1910 struct __ecereNameSpace__ecere__com__Class * prevClass;
1911 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param;
1912 int id = 0;
1913
1914 if(_class->templateClass)
1915 _class = _class->templateClass;
1916 for(prevClass = _class->base; prevClass; prevClass = prevClass->base)
1917 {
1918 if(prevClass->templateClass)
1919 prevClass = prevClass->templateClass;
1920 id += prevClass->templateParams.count;
1921 }
1922 if(id < template->numParams)
1923 {
1924 for(param = _class->templateParams.first; param; param = param->next)
1925 {
1926 switch(param->type)
1927 {
1928 case 0:
1929 (__ecereNameSpace__ecere__com__eSystem_Delete(template->templateArgs[id].dataTypeString), template->templateArgs[id].dataTypeString = 0);
1930 break;
1931 case 1:
1932 (__ecereNameSpace__ecere__com__eSystem_Delete(template->templateArgs[id].memberString), template->templateArgs[id].memberString = 0);
1933 break;
1934 case 2:
1935 break;
1936 }
1937 id++;
1938 }
1939 }
1940 }
1941 }
1942 }
1943
1944 static void __ecereNameSpace__ecere__com__FreeTemplate(struct __ecereNameSpace__ecere__com__Class * template)
1945 {
1946 struct __ecereNameSpace__ecere__sys__OldLink * deriv;
1947
1948 if(template->nameSpace)
1949 {
1950 struct __ecereNameSpace__ecere__com__BTNamedLink * link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&(*template->nameSpace).classes, template->name);
1951
1952 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&(*template->nameSpace).classes, (struct __ecereNameSpace__ecere__sys__BTNode *)link);
1953 }
1954 __ecereNameSpace__ecere__com__FreeTemplateArgs(template);
1955 (__ecereNameSpace__ecere__com__eSystem_Delete(template->fullName), template->fullName = 0);
1956 (__ecereNameSpace__ecere__com__eSystem_Delete(template->name), template->name = 0);
1957 (__ecereNameSpace__ecere__com__eSystem_Delete(template->templateArgs), template->templateArgs = 0);
1958 while((deriv = template->derivatives.first))
1959 {
1960 ((struct __ecereNameSpace__ecere__com__Class *)deriv->data)->base = (((void *)0));
1961 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&template->derivatives, deriv);
1962 }
1963 __ecereNameSpace__ecere__com___free(template);
1964 }
1965
1966 static void __ecereNameSpace__ecere__com__FreeTemplates(struct __ecereNameSpace__ecere__com__Class * _class)
1967 {
1968 struct __ecereNameSpace__ecere__sys__OldLink * deriv, * template;
1969
1970 for(deriv = _class->derivatives.first; deriv; deriv = deriv->next)
1971 {
1972 __ecereNameSpace__ecere__com__FreeTemplates(deriv->data);
1973 }
1974 __ecereNameSpace__ecere__com__FreeTemplateArgs(_class);
1975 (__ecereNameSpace__ecere__com__eSystem_Delete(_class->templateArgs), _class->templateArgs = 0);
1976 while((template = _class->templatized.first))
1977 {
1978 __ecereNameSpace__ecere__com__FreeTemplates(template->data);
1979 __ecereNameSpace__ecere__com__FreeTemplate(template->data);
1980 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&_class->templatized, template);
1981 }
1982 }
1983
1984 void __ecereMethod___ecereNameSpace__ecere__sys__OldList_Free(struct __ecereNameSpace__ecere__sys__OldList * this, void (*  freeFn)(void * ));
1985
1986 void __ecereNameSpace__ecere__com__eClass_Unregister(struct __ecereNameSpace__ecere__com__Class * _class)
1987 {
1988 struct __ecereNameSpace__ecere__com__BTNamedLink * namedLink;
1989 struct __ecereNameSpace__ecere__com__DataMember * member;
1990 struct __ecereNameSpace__ecere__com__Method * method;
1991 struct __ecereNameSpace__ecere__sys__OldLink * deriv, * template;
1992 struct __ecereNameSpace__ecere__com__ClassProperty * classProp;
1993 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param;
1994
1995 (__ecereNameSpace__ecere__com__eSystem_Delete(_class->_vTbl), _class->_vTbl = 0);
1996 __ecereNameSpace__ecere__com__FreeTemplates(_class);
1997 __ecereNameSpace__ecere__com__FreeTemplateArgs(_class);
1998 (__ecereNameSpace__ecere__com__eSystem_Delete(_class->templateArgs), _class->templateArgs = 0);
1999 while((template = _class->templatized.first))
2000 {
2001 __ecereNameSpace__ecere__com__FreeTemplate(template->data);
2002 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&_class->templatized, template);
2003 }
2004 while((member = _class->membersAndProperties.first))
2005 {
2006 if(!member->isProperty && (member->type == 1 || member->type == 2))
2007 __ecereNameSpace__ecere__com__DataMember_Free(member);
2008 (__ecereNameSpace__ecere__com__eSystem_Delete(member->name), member->name = 0);
2009 (__ecereNameSpace__ecere__com__eSystem_Delete(member->dataTypeString), member->dataTypeString = 0);
2010 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&_class->membersAndProperties, member);
2011 }
2012 while((member = _class->conversions.first))
2013 {
2014 (__ecereNameSpace__ecere__com__eSystem_Delete(member->name), member->name = 0);
2015 (__ecereNameSpace__ecere__com__eSystem_Delete(member->dataTypeString), member->dataTypeString = 0);
2016 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&_class->conversions, member);
2017 }
2018 while((namedLink = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&_class->prop)))
2019 {
2020 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&_class->prop, (struct __ecereNameSpace__ecere__sys__BTNode *)namedLink);
2021 }
2022 while((namedLink = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&_class->members)))
2023 {
2024 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&_class->members, (struct __ecereNameSpace__ecere__sys__BTNode *)namedLink);
2025 }
2026 while((classProp = (struct __ecereNameSpace__ecere__com__ClassProperty *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&_class->classProperties)))
2027 {
2028 (__ecereNameSpace__ecere__com__eSystem_Delete(classProp->name), classProp->name = 0);
2029 (__ecereNameSpace__ecere__com__eSystem_Delete(classProp->dataTypeString), classProp->dataTypeString = 0);
2030 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&_class->classProperties, (struct __ecereNameSpace__ecere__sys__BTNode *)classProp);
2031 }
2032 while((method = (struct __ecereNameSpace__ecere__com__Method *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&_class->methods)))
2033 {
2034 (__ecereNameSpace__ecere__com__eSystem_Delete(method->name), method->name = 0);
2035 (__ecereNameSpace__ecere__com__eSystem_Delete(method->dataTypeString), method->dataTypeString = 0);
2036 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&_class->methods, (struct __ecereNameSpace__ecere__sys__BTNode *)method);
2037 }
2038 if(_class->type == 4)
2039 {
2040 struct __ecereNameSpace__ecere__com__EnumClassData * data = (struct __ecereNameSpace__ecere__com__EnumClassData *)_class->data;
2041
2042 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Free(&data->values, (void *)__ecereNameSpace__ecere__com__FreeEnumValue);
2043 }
2044 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Free(&_class->delayedCPValues, (((void *)0)));
2045 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Free(&_class->selfWatchers, (((void *)0)));
2046 if(_class->base)
2047 {
2048 struct __ecereNameSpace__ecere__com__Class * base = _class->base;
2049
2050 for(deriv = base->derivatives.first; deriv; deriv = deriv->next)
2051 {
2052 if(deriv->data == _class)
2053 break;
2054 }
2055 if(deriv)
2056 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&base->derivatives, deriv);
2057 }
2058 while((deriv = _class->derivatives.first))
2059 {
2060 ((struct __ecereNameSpace__ecere__com__Class *)deriv->data)->base = (((void *)0));
2061 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&_class->derivatives, deriv);
2062 }
2063 if(_class->nameSpace)
2064 {
2065 struct __ecereNameSpace__ecere__com__BTNamedLink * link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&(*_class->nameSpace).classes, _class->name);
2066
2067 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&(*_class->nameSpace).classes, (struct __ecereNameSpace__ecere__sys__BTNode *)link);
2068 }
2069 (__ecereNameSpace__ecere__com__eSystem_Delete(_class->name), _class->name = 0);
2070 (__ecereNameSpace__ecere__com__eSystem_Delete(_class->fullName), _class->fullName = 0);
2071 (__ecereNameSpace__ecere__com__eSystem_Delete(_class->dataTypeString), _class->dataTypeString = 0);
2072 (__ecereNameSpace__ecere__com__eSystem_Delete(_class->data), _class->data = 0);
2073 while((param = _class->templateParams.first))
2074 {
2075 switch(param->type)
2076 {
2077 case 0:
2078 (__ecereNameSpace__ecere__com__eSystem_Delete(param->defaultArg.dataTypeString), param->defaultArg.dataTypeString = 0);
2079 break;
2080 case 1:
2081 (__ecereNameSpace__ecere__com__eSystem_Delete(param->defaultArg.memberString), param->defaultArg.memberString = 0);
2082 break;
2083 case 2:
2084 break;
2085 }
2086 if(param->type != 1)
2087 (__ecereNameSpace__ecere__com__eSystem_Delete(param->dataTypeString), param->dataTypeString = 0);
2088 (__ecereNameSpace__ecere__com__eSystem_Delete(param->name), param->name = 0);
2089 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&_class->templateParams, param);
2090 }
2091 __ecereNameSpace__ecere__com___free(_class);
2092 }
2093
2094 struct __ecereNameSpace__ecere__sys__BTNode * __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Find(struct __ecereNameSpace__ecere__sys__BinaryTree * this, uintptr_t key);
2095
2096 static struct __ecereNameSpace__ecere__com__BTNamedLink * __ecereNameSpace__ecere__com__ScanNameSpace(struct __ecereNameSpace__ecere__com__NameSpace * nameSpace, char * name, void * listOffset)
2097 {
2098 struct __ecereNameSpace__ecere__sys__BinaryTree * tree = (struct __ecereNameSpace__ecere__sys__BinaryTree *)((unsigned char *)nameSpace + (unsigned int)listOffset);
2099 struct __ecereNameSpace__ecere__com__BTNamedLink * link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Find((&*tree), (uintptr_t)name);
2100 struct __ecereNameSpace__ecere__com__NameSpace * child;
2101
2102 if(!link)
2103 {
2104 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)))
2105 {
2106 link = __ecereNameSpace__ecere__com__ScanNameSpace(child, name, listOffset);
2107 if(link)
2108 break;
2109 }
2110 }
2111 return link;
2112 }
2113
2114 static struct __ecereNameSpace__ecere__com__BTNamedLink * __ecereNameSpace__ecere__com__SearchNameSpace(struct __ecereNameSpace__ecere__com__NameSpace * nameSpace, char * name, void * listOffset)
2115 {
2116 int start = 0, c;
2117 char ch;
2118 int level = 0;
2119
2120 for(c = 0; (ch = name[c]); c++)
2121 {
2122 if(ch == '<')
2123 level++;
2124 if(ch == '>')
2125 level--;
2126 if(level == 0 && (ch == '.' || (ch == ':' && name[c + 1] == ':')))
2127 {
2128 struct __ecereNameSpace__ecere__com__NameSpace * newSpace;
2129 char * spaceName = __ecereNameSpace__ecere__com___malloc(c - start + 1);
2130
2131 memcpy(spaceName, name + start, c - start);
2132 spaceName[c - start] = '\0';
2133 newSpace = (struct __ecereNameSpace__ecere__com__NameSpace *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&nameSpace->nameSpaces, spaceName);
2134 __ecereNameSpace__ecere__com___free(spaceName);
2135 if(!newSpace)
2136 return (((void *)0));
2137 nameSpace = newSpace;
2138 if(level == 0 && ch == ':')
2139 c++;
2140 start = c + 1;
2141 }
2142 }
2143 if(c - start)
2144 {
2145 return __ecereNameSpace__ecere__com__ScanNameSpace(nameSpace, name + start, listOffset);
2146 }
2147 return (((void *)0));
2148 }
2149
2150 static struct __ecereNameSpace__ecere__com__BTNamedLink * __ecereNameSpace__ecere__com__SearchModule(struct __ecereNameSpace__ecere__com__Instance * module, char * name, void * listOffset, unsigned int searchPrivate)
2151 {
2152 struct __ecereNameSpace__ecere__com__SubModule * subModule;
2153 struct __ecereNameSpace__ecere__com__BTNamedLink * link;
2154
2155 if(searchPrivate)
2156 {
2157 link = __ecereNameSpace__ecere__com__SearchNameSpace(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->privateNameSpace, name, listOffset);
2158 if(link)
2159 return link;
2160 }
2161 link = __ecereNameSpace__ecere__com__SearchNameSpace(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->publicNameSpace, name, listOffset);
2162 if(link)
2163 return link;
2164 for(subModule = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->modules.first; subModule; subModule = subModule->next)
2165 {
2166 if(searchPrivate || subModule->importMode == 1)
2167 {
2168 link = __ecereNameSpace__ecere__com__SearchModule(subModule->module, name, listOffset, 0x0);
2169 if(link)
2170 return link;
2171 }
2172 }
2173 return (((void *)0));
2174 }
2175
2176 extern int isspace(int c);
2177
2178 long long __ecereNameSpace__ecere__com___strtoi64(char * string, char ** endString, int base)
2179 {
2180 long long value = 0;
2181 int sign = 1;
2182 int c;
2183 char ch;
2184
2185 for(c = 0; (ch = string[c]) && isspace(ch); c++)
2186 ;
2187 if(ch == '+')
2188 c++;
2189 else if(ch == '-')
2190 {
2191 sign = -1;
2192 c++;
2193 }
2194 ;
2195 if(!base)
2196 {
2197 if(ch == (char)0 && string[c + 1] == 'x')
2198 {
2199 base = 16;
2200 c += 2;
2201 }
2202 else if(ch == '0')
2203 {
2204 base = 8;
2205 c++;
2206 }
2207 else
2208 base = 10;
2209 }
2210 for(; (ch = string[c]); c++)
2211 {
2212 if(ch == '0')
2213 ch = (char)0;
2214 else if(ch >= '1' && ch <= '9')
2215 ch -= '1';
2216 else if(ch >= 'a' && ch <= 'z')
2217 ch -= 'a';
2218 else if(ch >= 'A' && ch <= 'Z')
2219 ch -= 'A';
2220 else
2221 {
2222 *endString = string + c;
2223 break;
2224 }
2225 if(ch < base)
2226 {
2227 value *= base;
2228 value += ch;
2229 }
2230 else
2231 {
2232 *endString = string + c;
2233 break;
2234 }
2235 }
2236 return sign * value;
2237 }
2238
2239 uint64 __ecereNameSpace__ecere__com___strtoui64(char * string, char ** endString, int base)
2240 {
2241 uint64 value = 0;
2242 int sign = 1;
2243 int c;
2244 char ch;
2245
2246 for(c = 0; (ch = string[c]) && isspace(ch); c++)
2247 ;
2248 if(ch == '+')
2249 c++;
2250 else if(ch == '-')
2251 {
2252 sign = -1;
2253 c++;
2254 }
2255 ;
2256 if(!base)
2257 {
2258 if(ch == (char)0 && string[c + 1] == 'x')
2259 {
2260 base = 16;
2261 c += 2;
2262 }
2263 else if(ch == '0')
2264 {
2265 base = 8;
2266 c++;
2267 }
2268 else
2269 base = 10;
2270 }
2271 for(; (ch = string[c]); c++)
2272 {
2273 if(ch == '0')
2274 ch = (char)0;
2275 else if(ch >= '1' && ch <= '9')
2276 ch -= '1';
2277 else if(ch >= 'a' && ch <= 'z')
2278 ch -= 'a';
2279 else if(ch >= 'A' && ch <= 'Z')
2280 ch -= 'A';
2281 else
2282 {
2283 *endString = string + c;
2284 break;
2285 }
2286 if(ch < base)
2287 {
2288 value *= base;
2289 value += ch;
2290 }
2291 else
2292 {
2293 *endString = string + c;
2294 break;
2295 }
2296 }
2297 return sign * value;
2298 }
2299
2300 extern char *  strcat(char * , const char * );
2301
2302 extern int strlen(const char * );
2303
2304 struct __ecereNameSpace__ecere__com__Class * __ecereNameSpace__ecere__com__eSystem_FindClass(struct __ecereNameSpace__ecere__com__Instance * module, char * name)
2305 {
2306 void * __ecereTemp1;
2307
2308 if(name && module)
2309 {
2310 struct __ecereNameSpace__ecere__com__BTNamedLink * link;
2311
2312 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);
2313 if(link)
2314 return link->data;
2315 link = __ecereNameSpace__ecere__com__SearchModule(module, name, &(*((struct __ecereNameSpace__ecere__com__NameSpace *)0)).classes, 0x1);
2316 if(link)
2317 return link->data;
2318 {
2319 char noTemplateName[1024];
2320 char * templateParams = strchr(name, '<');
2321
2322 if(templateParams)
2323 {
2324 strncpy(noTemplateName, name, templateParams - name);
2325 noTemplateName[templateParams - name] = '\0';
2326 }
2327 else
2328 strcpy(noTemplateName, name);
2329 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);
2330 if(!link)
2331 link = __ecereNameSpace__ecere__com__SearchModule(module, noTemplateName, &(*((struct __ecereNameSpace__ecere__com__NameSpace *)0)).classes, 0x1);
2332 if(link)
2333 {
2334 struct __ecereNameSpace__ecere__com__Class * _class = link->data;
2335 struct __ecereNameSpace__ecere__com__Class * templatedClass = (((void *)0));
2336 char className[1024];
2337
2338 strcpy(className, _class->fullName);
2339 strcat(className, templateParams);
2340 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);
2341 if(link)
2342 return link->data;
2343 link = __ecereNameSpace__ecere__com__SearchModule(module, className, &(*((struct __ecereNameSpace__ecere__com__NameSpace *)0)).classes, 0x1);
2344 if(link)
2345 return link->data;
2346 if(_class && templateParams)
2347 {
2348 struct __ecereNameSpace__ecere__sys__OldList __simpleStruct1 = 
2349 {
2350 0, 0, 0, 0, 0
2351 };
2352 struct __ecereNameSpace__ecere__sys__OldList __simpleStruct0 = 
2353 {
2354 0, 0, 0, 0, 0
2355 };
2356
2357 templatedClass = __ecereNameSpace__ecere__com__eSystem_New0(368);
2358 *templatedClass = *_class;
2359 templatedClass->templateClass = _class;
2360 templatedClass->fullName = __ecereNameSpace__ecere__sys__CopyString(className);
2361 templatedClass->name = __ecereNameSpace__ecere__sys__CopyString(templatedClass->fullName + strlen(_class->fullName) - strlen(_class->name));
2362 __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)));
2363 templatedClass->templateArgs = (((void *)0));
2364 templatedClass->numParams = 0;
2365 templatedClass->derivatives = __simpleStruct0;
2366 templatedClass->templatized = __simpleStruct1;
2367 __ecereNameSpace__ecere__com__ComputeClassParameters(templatedClass, templateParams, module);
2368 __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)));
2369 }
2370 return templatedClass;
2371 }
2372 }
2373 }
2374 return (((void *)0));
2375 }
2376
2377 static void __ecereNameSpace__ecere__com__CopyTemplateArg(struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param, struct __ecereNameSpace__ecere__com__ClassTemplateArgument * arg)
2378 {
2379 switch(param->type)
2380 {
2381 case 0:
2382 arg->dataTypeString = __ecereNameSpace__ecere__sys__CopyString(arg->dataTypeString);
2383 break;
2384 case 2:
2385 break;
2386 case 1:
2387 arg->memberString = __ecereNameSpace__ecere__sys__CopyString(arg->memberString);
2388 break;
2389 }
2390 }
2391
2392 extern char *  __ecereNameSpace__ecere__sys__TrimRSpaces(char *  string, char *  output);
2393
2394 extern unsigned long strtoul(const char *  nptr, char * *  endptr, int base);
2395
2396 extern double strtod(char * , char * * );
2397
2398 extern int sprintf(char * , char * , ...);
2399
2400 extern char *  strstr(char * , const char * );
2401
2402 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);
2403
2404 struct __ecereNameSpace__ecere__com__Method * __ecereNameSpace__ecere__com__eClass_FindMethod(struct __ecereNameSpace__ecere__com__Class * _class, char *  name, struct __ecereNameSpace__ecere__com__Instance * module);
2405
2406 struct __ecereNameSpace__ecere__com__Property * __ecereNameSpace__ecere__com__eClass_FindProperty(struct __ecereNameSpace__ecere__com__Class * _class, char *  name, struct __ecereNameSpace__ecere__com__Instance * module);
2407
2408 static void __ecereNameSpace__ecere__com__ComputeClassParameters(struct __ecereNameSpace__ecere__com__Class * templatedClass, char * templateParams, struct __ecereNameSpace__ecere__com__Instance * findModule)
2409 {
2410 char ch;
2411 char * nextParamStart = templateParams ? (templateParams + 1) : (((void *)0));
2412 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * curParam = (((void *)0));
2413 struct __ecereNameSpace__ecere__com__Class * lastClass = (((void *)0)), * sClass;
2414 int curParamID = 0;
2415 int numParams = 0;
2416 struct __ecereNameSpace__ecere__com__Class * _class = templatedClass->templateClass ? templatedClass->templateClass : templatedClass;
2417
2418 for(sClass = _class; sClass; sClass = sClass->base)
2419 {
2420 if(sClass->templateClass)
2421 sClass = sClass->templateClass;
2422 numParams += sClass->templateParams.count;
2423 }
2424 if(templatedClass->templateArgs)
2425 __ecereNameSpace__ecere__com__FreeTemplateArgs(templatedClass);
2426 (__ecereNameSpace__ecere__com__eSystem_Delete(templatedClass->templateArgs), templatedClass->templateArgs = 0);
2427 templatedClass->templateArgs = __ecereNameSpace__ecere__com__eSystem_New0(sizeof(struct __ecereNameSpace__ecere__com__ClassTemplateArgument) * (numParams));
2428 templatedClass->numParams = numParams;
2429 if(_class != templatedClass)
2430 {
2431 }
2432 if(templatedClass->base && templatedClass->base->templateArgs && _class == templatedClass)
2433 {
2434 struct __ecereNameSpace__ecere__com__Class * sClass;
2435
2436 memcpy(templatedClass->templateArgs, templatedClass->base->templateArgs, sizeof(struct __ecereNameSpace__ecere__com__ClassTemplateArgument) * (numParams - templatedClass->templateParams.count));
2437 for(sClass = templatedClass->base; sClass; sClass = sClass->base)
2438 {
2439 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param;
2440 struct __ecereNameSpace__ecere__com__Class * prevClass;
2441 int id = 0;
2442
2443 for(prevClass = sClass->base; prevClass; prevClass = prevClass->base)
2444 {
2445 if(prevClass->templateClass)
2446 prevClass = prevClass->templateClass;
2447 id += prevClass->templateParams.count;
2448 }
2449 if(sClass->templateClass)
2450 sClass = sClass->templateClass;
2451 for(param = sClass->templateParams.first; param; param = param->next)
2452 __ecereNameSpace__ecere__com__CopyTemplateArg(param, &templatedClass->templateArgs[id++]);
2453 }
2454 }
2455 while(nextParamStart)
2456 {
2457 char * paramStart = nextParamStart;
2458 char * paramEnd;
2459 int level = 0;
2460
2461 while(*paramStart == ' ')
2462 paramStart++;
2463 paramEnd = paramStart;
2464 while((ch = *paramEnd, ch && (level > 0 || (ch != '>' && ch != ','))))
2465 {
2466 if(ch == '<')
2467 level++;
2468 if(ch == '>')
2469 level--;
2470 paramEnd++;
2471 }
2472 nextParamStart = (ch == ',') ? (paramEnd + 1) : (((void *)0));
2473 while(*paramEnd == ' ')
2474 paramEnd--;
2475 if(paramEnd > paramStart)
2476 {
2477 char * ptr, * equal = (((void *)0));
2478
2479 for(ptr = paramStart; ptr <= paramEnd; ptr++)
2480 {
2481 if(*ptr == '=')
2482 {
2483 equal = ptr;
2484 break;
2485 }
2486 }
2487 if(equal)
2488 {
2489 char * end = equal - 1;
2490 char ident[1024];
2491
2492 while(*end == ' ')
2493 end--;
2494 strncpy(ident, paramStart, end + 1 - paramStart);
2495 ident[end + 1 - paramStart] = (char)0;
2496 for(sClass = _class; sClass; sClass = sClass->base)
2497 {
2498 if(sClass->templateClass)
2499 sClass = sClass->templateClass;
2500 for(curParam = sClass->templateParams.first; curParam; curParam = curParam->next)
2501 {
2502 if(!strcmp(curParam->name, ident))
2503 break;
2504 }
2505 if(curParam)
2506 {
2507 struct __ecereNameSpace__ecere__com__Class * nextClass;
2508 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * prevParam;
2509
2510 curParamID = 0;
2511 for(prevParam = curParam->prev; prevParam; prevParam = prevParam->prev)
2512 curParamID++;
2513 for(nextClass = sClass->base; nextClass; nextClass = nextClass->base)
2514 {
2515 if(nextClass->templateClass)
2516 nextClass = nextClass->templateClass;
2517 curParamID += nextClass->templateParams.count;
2518 }
2519 break;
2520 }
2521 }
2522 lastClass = sClass;
2523 }
2524 else
2525 {
2526 if(curParam)
2527 {
2528 curParam = curParam->next;
2529 curParamID++;
2530 }
2531 if(!curParam)
2532 {
2533 for(sClass = lastClass ? lastClass->base : _class; sClass; sClass = sClass->base)
2534 {
2535 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param;
2536
2537 curParamID = 0;
2538 if(sClass->templateClass)
2539 sClass = sClass->templateClass;
2540 for(param = sClass->templateParams.first; param; param = param->next, curParamID++)
2541 {
2542 curParam = param;
2543 break;
2544 }
2545 if(curParam)
2546 {
2547 struct __ecereNameSpace__ecere__com__Class * nextClass;
2548
2549 for(nextClass = sClass->base; nextClass; nextClass = nextClass->base)
2550 {
2551 if(nextClass->templateClass)
2552 nextClass = nextClass->templateClass;
2553 curParamID += nextClass->templateParams.count;
2554 }
2555 lastClass = sClass;
2556 break;
2557 }
2558 }
2559 }
2560 }
2561 if(curParam)
2562 {
2563 struct __ecereNameSpace__ecere__com__ClassTemplateArgument argument = 
2564 {
2565 0, 0, 0, 0, 0
2566 };
2567 char value[1024];
2568
2569 if(equal)
2570 {
2571 equal++;
2572 while(*equal == ' ')
2573 equal++;
2574 memcpy(value, equal, paramEnd - equal);
2575 value[paramEnd - equal] = (char)0;
2576 }
2577 else
2578 {
2579 memcpy(value, paramStart, paramEnd - paramStart);
2580 value[paramEnd - paramStart] = (char)0;
2581 }
2582 __ecereNameSpace__ecere__sys__TrimRSpaces(value, value);
2583 switch(curParam->type)
2584 {
2585 case 0:
2586 argument.dataTypeString = __ecereNameSpace__ecere__sys__CopyString(value);
2587 argument.dataTypeClass = __ecereNameSpace__ecere__com__eSystem_FindClass(_class->module, value);
2588 if(!argument.dataTypeClass)
2589 argument.dataTypeClass = __ecereNameSpace__ecere__com__eSystem_FindClass(((struct __ecereNameSpace__ecere__com__Module *)(((char *)_class->module + 12)))->application, value);
2590 if(!argument.dataTypeClass)
2591 argument.dataTypeClass = __ecereNameSpace__ecere__com__eSystem_FindClass(findModule, value);
2592 break;
2593 case 2:
2594 {
2595 struct __ecereNameSpace__ecere__com__Class * expClass = __ecereNameSpace__ecere__com__eSystem_FindClass(_class->module, curParam->dataTypeString);
2596
2597 if(!expClass)
2598 expClass = __ecereNameSpace__ecere__com__eSystem_FindClass(((struct __ecereNameSpace__ecere__com__Module *)(((char *)_class->module + 12)))->application, curParam->dataTypeString);
2599 if(expClass)
2600 {
2601 expClass->_vTbl[__ecereVMethodID_class_OnGetDataFromString](expClass, &argument.expression, value);
2602 }
2603 else if(value[0] == '\"')
2604 {
2605 char * endQuote = value + strlen(value) - 1;
2606
2607 if(*endQuote != '\"')
2608 endQuote++;
2609 *endQuote = '\0';
2610 argument.expression.p = __ecereNameSpace__ecere__sys__CopyString(value + 1);
2611 }
2612 else if(value[0] == '\'')
2613 {
2614 int nb;
2615 unsigned int ch = __ecereNameSpace__ecere__sys__UTF8GetChar(value + 1, &nb);
2616
2617 argument.expression.ui = ch;
2618 }
2619 else if(!strcmp(curParam->dataTypeString, "uint"))
2620 {
2621 argument.expression.ui = strtoul(value, (((void *)0)), 0);
2622 }
2623 else if(!strcmp(curParam->dataTypeString, "char"))
2624 {
2625 argument.expression.c = (char)strtol(value, (((void *)0)), 0);
2626 }
2627 else if(!strcmp(curParam->dataTypeString, "byte"))
2628 {
2629 argument.expression.uc = (unsigned char)strtoul(value, (((void *)0)), 0);
2630 }
2631 else if(!strcmp(curParam->dataTypeString, "short"))
2632 {
2633 argument.expression.s = (short)strtol(value, (((void *)0)), 0);
2634 }
2635 else if(!strcmp(curParam->dataTypeString, "uint16"))
2636 {
2637 argument.expression.us = (unsigned short)strtoul(value, (((void *)0)), 0);
2638 }
2639 else if(!strcmp(curParam->dataTypeString, "int64"))
2640 {
2641 argument.expression.i64 = __ecereNameSpace__ecere__com___strtoi64(value, (((void *)0)), 0);
2642 }
2643 else if(!strcmp(curParam->dataTypeString, "uint64"))
2644 {
2645 argument.expression.ui64 = __ecereNameSpace__ecere__com___strtoui64(value, (((void *)0)), 0);
2646 }
2647 else if(!strcmp(curParam->dataTypeString, "float"))
2648 {
2649 argument.expression.f = (float)strtod(value, (((void *)0)));
2650 }
2651 else if(!strcmp(curParam->dataTypeString, "double"))
2652 {
2653 argument.expression.d = strtod(value, (((void *)0)));
2654 }
2655 else
2656 {
2657 argument.expression.i = strtol(value, (((void *)0)), 0);
2658 }
2659 break;
2660 }
2661 case 1:
2662 argument.memberString = __ecereNameSpace__ecere__sys__CopyString(value);
2663 break;
2664 }
2665 __ecereNameSpace__ecere__com__FreeTemplateArg(templatedClass, curParam, curParamID);
2666 templatedClass->templateArgs[curParamID] = argument;
2667 }
2668 }
2669 }
2670 if(templatedClass == _class)
2671 {
2672 struct __ecereNameSpace__ecere__com__Class * sClass = _class;
2673 int curParamID = 0;
2674 struct __ecereNameSpace__ecere__com__Class * nextClass;
2675 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param;
2676
2677 for(nextClass = sClass->base; nextClass; nextClass = nextClass->base)
2678 {
2679 if(nextClass->templateClass)
2680 nextClass = nextClass->templateClass;
2681 curParamID += nextClass->templateParams.count;
2682 }
2683 for(param = sClass->templateParams.first; param; param = param->next)
2684 {
2685 if(!templatedClass->templateArgs[curParamID].dataTypeString)
2686 {
2687 templatedClass->templateArgs[curParamID] = param->defaultArg;
2688 __ecereNameSpace__ecere__com__CopyTemplateArg(param, &templatedClass->templateArgs[curParamID]);
2689 if(param->type == 0 && param->defaultArg.dataTypeString)
2690 {
2691 templatedClass->templateArgs[curParamID].dataTypeClass = __ecereNameSpace__ecere__com__eSystem_FindClass(templatedClass->module, param->defaultArg.dataTypeString);
2692 if(!templatedClass->templateArgs[curParamID].dataTypeClass)
2693 templatedClass->templateArgs[curParamID].dataTypeClass = __ecereNameSpace__ecere__com__eSystem_FindClass(((struct __ecereNameSpace__ecere__com__Module *)(((char *)templatedClass->module + 12)))->application, param->defaultArg.dataTypeString);
2694 if(!templatedClass->templateArgs[curParamID].dataTypeClass)
2695 templatedClass->templateArgs[curParamID].dataTypeClass = __ecereNameSpace__ecere__com__eSystem_FindClass(findModule, param->defaultArg.dataTypeString);
2696 }
2697 }
2698 curParamID++;
2699 }
2700 }
2701 if(templatedClass->base && templatedClass->base->templateArgs && numParams - _class->templateParams.count)
2702 {
2703 int c = numParams - _class->templateParams.count - 1;
2704
2705 for(sClass = _class->base; sClass; sClass = sClass->base)
2706 {
2707 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param;
2708
2709 if(sClass->templateClass)
2710 sClass = sClass->templateClass;
2711 for(param = sClass->templateParams.last; param; param = param->prev)
2712 {
2713 struct __ecereNameSpace__ecere__com__ClassTemplateArgument * arg = &templatedClass->templateArgs[c];
2714 struct __ecereNameSpace__ecere__com__ClassTemplateArgument * baseArg = &templatedClass->base->templateArgs[c];
2715
2716 if(!(*arg).dataTypeString)
2717 {
2718 *arg = templatedClass->base->templateArgs[c];
2719 __ecereNameSpace__ecere__com__CopyTemplateArg(param, arg);
2720 if(param->type == 0)
2721 {
2722 if((*arg).dataTypeClass && strchr((*arg).dataTypeString, '<') && (*arg).dataTypeClass->templateArgs)
2723 {
2724 struct __ecereNameSpace__ecere__com__Class * expClass = (*arg).dataTypeClass;
2725 struct __ecereNameSpace__ecere__com__Class * cClass = (((void *)0));
2726 int paramCount = 0;
2727 int lastParam = -1;
2728 char templateString[1024];
2729
2730 sprintf(templateString, "%s<", expClass->templateClass->fullName);
2731 for(cClass = expClass; cClass; cClass = cClass->base)
2732 {
2733 int p = 0;
2734 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param;
2735
2736 for(param = cClass->templateParams.first; param; param = param->next)
2737 {
2738 int id = p;
2739 struct __ecereNameSpace__ecere__com__Class * sClass;
2740 struct __ecereNameSpace__ecere__com__ClassTemplateArgument arg;
2741
2742 for(sClass = expClass->base; sClass; sClass = sClass->base)
2743 id += sClass->templateParams.count;
2744 arg = expClass->templateArgs[id];
2745 {
2746 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * cParam;
2747 int p = numParams - _class->templateParams.count;
2748
2749 for(cParam = _class->templateParams.first; cParam; cParam = cParam->next, p++)
2750 {
2751 if(cParam->type == 0 && arg.dataTypeString && !strcmp(cParam->name, arg.dataTypeString))
2752 {
2753 arg.dataTypeString = templatedClass->templateArgs[p].dataTypeString;
2754 arg.dataTypeClass = templatedClass->templateArgs[p].dataTypeClass;
2755 break;
2756 }
2757 }
2758 }
2759 {
2760 char argument[256];
2761
2762 argument[0] = '\0';
2763 switch(param->type)
2764 {
2765 case 2:
2766 {
2767 break;
2768 }
2769 case 1:
2770 {
2771 strcat(argument, arg.member->name);
2772 break;
2773 }
2774 case 0:
2775 {
2776 if(arg.dataTypeString)
2777 strcat(argument, arg.dataTypeString);
2778 break;
2779 }
2780 }
2781 if(argument[0])
2782 {
2783 if(paramCount)
2784 strcat(templateString, ", ");
2785 if(lastParam != p - 1)
2786 {
2787 strcat(templateString, param->name);
2788 strcat(templateString, " = ");
2789 }
2790 strcat(templateString, argument);
2791 paramCount++;
2792 lastParam = p;
2793 }
2794 }
2795 p++;
2796 }
2797 }
2798 {
2799 int len = strlen(templateString);
2800
2801 if(templateString[len - 1] == '>')
2802 templateString[len++] = ' ';
2803 templateString[len++] = '>';
2804 templateString[len++] = '\0';
2805 }
2806 __ecereNameSpace__ecere__com__FreeTemplateArg(templatedClass, param, c);
2807 (*arg).dataTypeString = __ecereNameSpace__ecere__sys__CopyString(templateString);
2808 (*arg).dataTypeClass = __ecereNameSpace__ecere__com__eSystem_FindClass(templatedClass->module, templateString);
2809 if(!(*arg).dataTypeClass)
2810 (*arg).dataTypeClass = __ecereNameSpace__ecere__com__eSystem_FindClass(((struct __ecereNameSpace__ecere__com__Module *)(((char *)templatedClass->module + 12)))->application, templateString);
2811 }
2812 else
2813 {
2814 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * cParam;
2815 int p = numParams - _class->templateParams.count;
2816
2817 for(cParam = _class->templateParams.first; cParam; cParam = cParam->next, p++)
2818 {
2819 if(cParam->type == 0 && (*baseArg).dataTypeString && !strcmp(cParam->name, (*baseArg).dataTypeString))
2820 {
2821 __ecereNameSpace__ecere__com__FreeTemplateArg(templatedClass, param, c);
2822 (*arg).dataTypeString = templatedClass->templateArgs[p].dataTypeString;
2823 (*arg).dataTypeClass = templatedClass->templateArgs[p].dataTypeClass;
2824 __ecereNameSpace__ecere__com__CopyTemplateArg(cParam, arg);
2825 break;
2826 }
2827 }
2828 }
2829 }
2830 }
2831 c--;
2832 }
2833 }
2834 }
2835 {
2836 struct __ecereNameSpace__ecere__com__Class * sClass;
2837
2838 for(sClass = _class; sClass; sClass = sClass->base)
2839 {
2840 int curParamID = 0;
2841 struct __ecereNameSpace__ecere__com__Class * nextClass;
2842 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param;
2843
2844 if(sClass->templateClass)
2845 sClass = sClass->templateClass;
2846 for(nextClass = sClass->base; nextClass; nextClass = nextClass->base)
2847 {
2848 if(nextClass->templateClass)
2849 nextClass = nextClass->templateClass;
2850 curParamID += nextClass->templateParams.count;
2851 }
2852 for(param = sClass->templateParams.first; param; param = param->next)
2853 {
2854 if(!templatedClass->templateArgs[curParamID].dataTypeString)
2855 {
2856 templatedClass->templateArgs[curParamID] = param->defaultArg;
2857 __ecereNameSpace__ecere__com__CopyTemplateArg(param, &templatedClass->templateArgs[curParamID]);
2858 if(param->type == 0 && param->defaultArg.dataTypeString)
2859 {
2860 templatedClass->templateArgs[curParamID].dataTypeClass = __ecereNameSpace__ecere__com__eSystem_FindClass(templatedClass->module, param->defaultArg.dataTypeString);
2861 if(!templatedClass->templateArgs[curParamID].dataTypeClass)
2862 templatedClass->templateArgs[curParamID].dataTypeClass = __ecereNameSpace__ecere__com__eSystem_FindClass(((struct __ecereNameSpace__ecere__com__Module *)(((char *)templatedClass->module + 12)))->application, param->defaultArg.dataTypeString);
2863 if(!templatedClass->templateArgs[curParamID].dataTypeClass)
2864 templatedClass->templateArgs[curParamID].dataTypeClass = __ecereNameSpace__ecere__com__eSystem_FindClass(findModule, param->defaultArg.dataTypeString);
2865 }
2866 }
2867 curParamID++;
2868 }
2869 }
2870 }
2871 {
2872 int c = numParams - 1;
2873
2874 for(sClass = _class; sClass; sClass = sClass->base)
2875 {
2876 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param;
2877
2878 if(sClass->templateClass)
2879 sClass = sClass->templateClass;
2880 for(param = sClass->templateParams.last; param; param = param->prev)
2881 {
2882 if(param->type == 0)
2883 {
2884 struct __ecereNameSpace__ecere__com__ClassTemplateArgument * arg = &templatedClass->templateArgs[c];
2885 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * cParam;
2886 struct __ecereNameSpace__ecere__com__Class * dClass;
2887 int p = numParams - 1;
2888
2889 for(dClass = _class; dClass; dClass = dClass->base)
2890 {
2891 if(dClass->templateClass)
2892 dClass = dClass->templateClass;
2893 for(cParam = dClass->templateParams.last; cParam; cParam = cParam->prev, p--)
2894 {
2895 if(cParam->type == 0 && (*arg).dataTypeString && !strcmp(cParam->name, (*arg).dataTypeString))
2896 {
2897 if(templatedClass->templateArgs[p].dataTypeString && c != p)
2898 {
2899 __ecereNameSpace__ecere__com__FreeTemplateArg(templatedClass, param, c);
2900 (*arg).dataTypeString = templatedClass->templateArgs[p].dataTypeString;
2901 (*arg).dataTypeClass = templatedClass->templateArgs[p].dataTypeClass;
2902 __ecereNameSpace__ecere__com__CopyTemplateArg(cParam, arg);
2903 }
2904 }
2905 }
2906 }
2907 }
2908 c--;
2909 }
2910 }
2911 }
2912 {
2913 struct __ecereNameSpace__ecere__com__Class * tClass;
2914 int c = numParams - 1;
2915
2916 for(tClass = _class; tClass; tClass = tClass->base)
2917 {
2918 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param;
2919
2920 if(tClass->templateClass)
2921 tClass = tClass->templateClass;
2922 for(param = tClass->templateParams.last; param; param = param->prev)
2923 {
2924 struct __ecereNameSpace__ecere__com__ClassTemplateArgument * arg = &templatedClass->templateArgs[c];
2925
2926 if(param->type == 1 && (*arg).memberString)
2927 {
2928 struct __ecereNameSpace__ecere__com__Class * memberClass = templatedClass;
2929 char * memberString = (*arg).memberString;
2930 char * colon = strstr(memberString, "::");
2931 char * memberName = memberString;
2932
2933 if(colon)
2934 memberName = colon + 2;
2935 if(!colon)
2936 {
2937 memberString = param->defaultArg.memberString;
2938 colon = memberString ? strstr(memberString, "::") : (((void *)0));
2939 }
2940 if(colon)
2941 {
2942 char className[1024];
2943 struct __ecereNameSpace__ecere__com__Class * sClass;
2944
2945 memcpy(className, memberString, colon - memberString);
2946 className[colon - memberString] = '\0';
2947 for(sClass = _class; sClass; sClass = sClass->base)
2948 {
2949 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * cParam;
2950 struct __ecereNameSpace__ecere__com__Class * nextClass;
2951 int id = 0;
2952
2953 if(sClass->templateClass)
2954 sClass = sClass->templateClass;
2955 for(nextClass = sClass->base; nextClass; nextClass = nextClass->base)
2956 {
2957 if(nextClass->templateClass)
2958 nextClass = nextClass->templateClass;
2959 id += nextClass->templateParams.count;
2960 }
2961 for(cParam = sClass->templateParams.first; cParam; cParam = cParam->next)
2962 {
2963 if(cParam->type == 0 && !strcmp(cParam->name, className) && templatedClass->templateArgs[id].dataTypeString)
2964 {
2965 strcpy(className, templatedClass->templateArgs[id].dataTypeString);
2966 }
2967 id++;
2968 }
2969 }
2970 memberClass = __ecereNameSpace__ecere__com__eSystem_FindClass(templatedClass->module, className);
2971 if(!memberClass)
2972 memberClass = __ecereNameSpace__ecere__com__eSystem_FindClass(findModule, className);
2973 if(!memberClass)
2974 memberClass = __ecereNameSpace__ecere__com__eSystem_FindClass(((struct __ecereNameSpace__ecere__com__Module *)(((char *)templatedClass->module + 12)))->application, className);
2975 }
2976 if(memberClass)
2977 {
2978 switch(param->memberType)
2979 {
2980 case 0:
2981 (*arg).member = __ecereNameSpace__ecere__com__eClass_FindDataMember(memberClass, memberName, memberClass->module, (((void *)0)), (((void *)0)));
2982 break;
2983 case 1:
2984 (*arg).method = __ecereNameSpace__ecere__com__eClass_FindMethod(memberClass, memberName, memberClass->module);
2985 break;
2986 case 2:
2987 (*arg).prop = __ecereNameSpace__ecere__com__eClass_FindProperty(memberClass, memberName, memberClass->module);
2988 break;
2989 }
2990 }
2991 }
2992 c--;
2993 }
2994 }
2995 }
2996 }
2997
2998 unsigned int __ecereNameSpace__ecere__com__DefaultFunction()
2999 {
3000 return 0x1;
3001 }
3002
3003 unsigned int __ecereNameSpace__ecere__com__eClass_IsDerived(struct __ecereNameSpace__ecere__com__Class * _class, struct __ecereNameSpace__ecere__com__Class * from)
3004 {
3005 if(!_class && !from)
3006 return 0x1;
3007 if(_class && from && (_class->templateClass || from->templateClass))
3008 {
3009 if(__ecereNameSpace__ecere__com__eClass_IsDerived(_class->templateClass ? _class->templateClass : _class, from->templateClass ? from->templateClass : from))
3010 {
3011 if(!from->templateClass)
3012 return 0x1;
3013 else if(!_class->templateClass && _class == from->templateClass)
3014 return 0x0;
3015 else
3016 {
3017 struct __ecereNameSpace__ecere__com__Class * sClass;
3018
3019 for(sClass = from; sClass; sClass = sClass->base)
3020 {
3021 if(sClass->templateParams.first)
3022 {
3023 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param;
3024 struct __ecereNameSpace__ecere__com__Class * nextClass;
3025 int p = 0;
3026
3027 for(nextClass = sClass->base; nextClass; nextClass = nextClass->base)
3028 p += nextClass->templateParams.count;
3029 for(param = sClass->templateParams.first; param; param = param->next, p++)
3030 {
3031 struct __ecereNameSpace__ecere__com__ClassTemplateArgument * arg = &_class->templateArgs[p];
3032 struct __ecereNameSpace__ecere__com__ClassTemplateArgument * fArg = &from->templateArgs[p];
3033
3034 if(param->type == 0)
3035 {
3036 if((*arg).dataTypeString != (*fArg).dataTypeString && (*arg).dataTypeString && (*fArg).dataTypeString && strcmp((*arg).dataTypeString, (*fArg).dataTypeString))
3037 break;
3038 }
3039 else if(param->type == 1)
3040 {
3041 if((*arg).member != (*fArg).member)
3042 break;
3043 }
3044 else if(param->type == 2)
3045 {
3046 if((*arg).expression.ui64 != (*fArg).expression.ui64)
3047 break;
3048 }
3049 }
3050 if(param)
3051 return 0x0;
3052 }
3053 }
3054 return 0x1;
3055 }
3056 }
3057 }
3058 else
3059 {
3060 for(; _class && from; _class = _class->base)
3061 {
3062 if(_class == from || _class->templateClass == from || (_class->type == 1000 && from->name && !strcmp(_class->name, from->name)))
3063 return 0x1;
3064 }
3065 }
3066 return 0x0;
3067 }
3068
3069 static void __ecereNameSpace__ecere__com__FixDerivativeVirtualMethod(struct __ecereNameSpace__ecere__com__Class * base, char * name, int vid, void * origFunction, char * type)
3070 {
3071 struct __ecereNameSpace__ecere__sys__OldLink * derivative;
3072
3073 for(derivative = base->derivatives.first; derivative; derivative = derivative->next)
3074 {
3075 struct __ecereNameSpace__ecere__com__Class * _class = derivative->data;
3076 struct __ecereNameSpace__ecere__com__Method * method, * next;
3077 void * function = origFunction;
3078
3079 _class->vTblSize++;
3080 _class->_vTbl = __ecereNameSpace__ecere__com__eSystem_Renew(_class->_vTbl, sizeof(void *) * (_class->vTblSize));
3081 memmove(_class->_vTbl + vid + 1, _class->_vTbl + vid, (_class->vTblSize - vid - 1) * sizeof(void *));
3082 method = (struct __ecereNameSpace__ecere__com__Method *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&_class->methods, name);
3083 if(method)
3084 {
3085 if(method->function)
3086 function = method->function;
3087 if(!method->symbol)
3088 {
3089 (__ecereNameSpace__ecere__com__eSystem_Delete(method->name), method->name = 0);
3090 (__ecereNameSpace__ecere__com__eSystem_Delete(method->dataTypeString), method->dataTypeString = 0);
3091 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&_class->methods, (struct __ecereNameSpace__ecere__sys__BTNode *)method);
3092 }
3093 else
3094 {
3095 (__ecereNameSpace__ecere__com__eSystem_Delete(method->dataTypeString), method->dataTypeString = 0);
3096 method->type = 1;
3097 method->dataTypeString = __ecereNameSpace__ecere__sys__CopyString(type);
3098 method->_class = base;
3099 }
3100 }
3101 for(method = (struct __ecereNameSpace__ecere__com__Method *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&_class->methods); method; method = next)
3102 {
3103 next = (struct __ecereNameSpace__ecere__com__Method *)__ecereProp___ecereNameSpace__ecere__sys__BTNode_Get_next(((struct __ecereNameSpace__ecere__sys__BTNode *)method));
3104 if(method->type == 1)
3105 method->vid++;
3106 }
3107 _class->_vTbl[vid] = function;
3108 {
3109 struct __ecereNameSpace__ecere__sys__OldLink * templateLink;
3110
3111 for(templateLink = _class->templatized.first; templateLink; templateLink = templateLink->next)
3112 {
3113 struct __ecereNameSpace__ecere__com__Class * template = templateLink->data;
3114
3115 template->_vTbl = _class->_vTbl;
3116 }
3117 }
3118 if(_class->derivatives.first || _class->templatized.first)
3119 __ecereNameSpace__ecere__com__FixDerivativeVirtualMethod(_class, name, vid, function, type);
3120 }
3121 {
3122 struct __ecereNameSpace__ecere__sys__OldLink * templateLink;
3123
3124 for(templateLink = base->templatized.first; templateLink; templateLink = templateLink->next)
3125 {
3126 struct __ecereNameSpace__ecere__com__Class * template = templateLink->data;
3127
3128 template->_vTbl = base->_vTbl;
3129 __ecereNameSpace__ecere__com__FixDerivativeVirtualMethod(template, name, vid, origFunction, type);
3130 }
3131 }
3132 }
3133
3134 struct __ecereNameSpace__ecere__com__Method * __ecereNameSpace__ecere__com__eClass_AddMethod(struct __ecereNameSpace__ecere__com__Class * _class, char * name, char * type, void * function, int declMode)
3135 {
3136 if(_class && name)
3137 {
3138 struct __ecereNameSpace__ecere__com__Class * base;
3139
3140 for(base = _class; base; base = base->base)
3141 {
3142 struct __ecereNameSpace__ecere__com__Method * method = (struct __ecereNameSpace__ecere__com__Method *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&base->methods, name);
3143
3144 if(method)
3145 {
3146 if(method->type == 1)
3147 {
3148 struct __ecereNameSpace__ecere__sys__OldLink * deriv;
3149 void * oldFunction = _class->_vTbl[method->vid];
3150
3151 if(method->vid > _class->vTblSize)
3152 printf("error");
3153 else
3154 _class->_vTbl[method->vid] = function ? function : __ecereNameSpace__ecere__com__DefaultFunction;
3155 for(deriv = _class->derivatives.first; deriv; deriv = deriv->next)
3156 {
3157 struct __ecereNameSpace__ecere__com__Class * derivClass = deriv->data;
3158
3159 if(derivClass->_vTbl[method->vid] == oldFunction)
3160 __ecereNameSpace__ecere__com__eClass_AddMethod(derivClass, name, type, function, declMode);
3161 }
3162 {
3163 struct __ecereNameSpace__ecere__sys__OldLink * templateLink;
3164
3165 for(templateLink = _class->templatized.first; templateLink; templateLink = templateLink->next)
3166 {
3167 struct __ecereNameSpace__ecere__com__Class * template = templateLink->data;
3168
3169 for(deriv = template->derivatives.first; deriv; deriv = deriv->next)
3170 {
3171 struct __ecereNameSpace__ecere__com__Class * derivClass = deriv->data;
3172
3173 if(derivClass->_vTbl[method->vid] == oldFunction)
3174 __ecereNameSpace__ecere__com__eClass_AddMethod(derivClass, name, type, function, declMode);
3175 }
3176 }
3177 }
3178 }
3179 else
3180 {
3181 if(base == _class)
3182 {
3183 break;
3184 }
3185 base = (((void *)0));
3186 break;
3187 }
3188 return method;
3189 }
3190 }
3191 if(!base)
3192 {
3193 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);
3194
3195 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&_class->methods, (struct __ecereNameSpace__ecere__sys__BTNode *)method);
3196 return method;
3197 }
3198 }
3199 return (((void *)0));
3200 }
3201
3202 struct __ecereNameSpace__ecere__com__Method * __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(struct __ecereNameSpace__ecere__com__Class * _class, char * name, char * type, void * function, int declMode)
3203 {
3204 if(_class && name)
3205 {
3206 struct __ecereNameSpace__ecere__com__Class * base;
3207
3208 for(base = _class; base; base = base->base)
3209 {
3210 struct __ecereNameSpace__ecere__com__Method * method = (struct __ecereNameSpace__ecere__com__Method *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&base->methods, name);
3211
3212 if(method)
3213 {
3214 if(method->type == 1)
3215 _class->_vTbl[method->vid] = function ? function : __ecereNameSpace__ecere__com__DefaultFunction;
3216 else
3217 base = (((void *)0));
3218 return method;
3219 }
3220 }
3221 if(!base)
3222 {
3223 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);
3224
3225 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&_class->methods, (struct __ecereNameSpace__ecere__sys__BTNode *)method);
3226 _class->_vTbl = __ecereNameSpace__ecere__com__eSystem_Renew(_class->_vTbl, sizeof(void *) * (_class->vTblSize));
3227 _class->_vTbl[method->vid] = function ? function : __ecereNameSpace__ecere__com__DefaultFunction;
3228 if(_class->derivatives.first || _class->templatized.first)
3229 __ecereNameSpace__ecere__com__FixDerivativeVirtualMethod(_class, name, method->vid, function ? function : (void *)__ecereNameSpace__ecere__com__DefaultFunction, type);
3230 return method;
3231 }
3232 }
3233 return (((void *)0));
3234 }
3235
3236 static void __ecereNameSpace__ecere__com__FixDerivativeProperty(struct __ecereNameSpace__ecere__com__Class * base, struct __ecereNameSpace__ecere__com__Property * _property)
3237 {
3238 struct __ecereNameSpace__ecere__sys__OldLink * derivative;
3239
3240 for(derivative = base->derivatives.first; derivative; derivative = derivative->next)
3241 {
3242 struct __ecereNameSpace__ecere__com__Class * _class = derivative->data;
3243 struct __ecereNameSpace__ecere__com__Property * prop;
3244 struct __ecereNameSpace__ecere__com__BTNamedLink * link;
3245
3246 link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&_class->prop, _property->name);
3247 if(link)
3248 {
3249 prop = link->data;
3250 if(!prop->Set && !prop->Get && prop->memberAccess == 4)
3251 {
3252 struct __ecereNameSpace__ecere__com__SelfWatcher * watcher;
3253
3254 for(watcher = _class->selfWatchers.first; watcher; watcher = watcher->next)
3255 {
3256 if(watcher->_property == prop)
3257 watcher->_property = _property;
3258 }
3259 _property->selfWatchable = 0x1;
3260 (__ecereNameSpace__ecere__com__eSystem_Delete(prop->name), prop->name = 0);
3261 (__ecereNameSpace__ecere__com__eSystem_Delete(prop->dataTypeString), prop->dataTypeString = 0);
3262 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&_class->membersAndProperties, prop);
3263 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&_class->prop, (struct __ecereNameSpace__ecere__sys__BTNode *)link);
3264 }
3265 }
3266 for(prop = _class->membersAndProperties.first; prop; prop = prop->next)
3267 prop->id++;
3268 _class->memberID++;
3269 _class->startMemberID++;
3270 __ecereNameSpace__ecere__com__FixDerivativeProperty(_class, _property);
3271 }
3272 }
3273
3274 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)
3275 {
3276 void * __ecereTemp1;
3277 struct __ecereNameSpace__ecere__com__Property * _property = (((void *)0));
3278
3279 if(_class)
3280 {
3281 if(!__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&_class->prop, (name ? name : dataType)))
3282 {
3283 _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));
3284 if(name)
3285 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&_class->membersAndProperties, _property);
3286 else
3287 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&_class->conversions, _property);
3288 __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)));
3289 if(!_property->conversion)
3290 {
3291 __ecereNameSpace__ecere__com__FixDerivativeProperty(_class, _property);
3292 }
3293 }
3294 }
3295 return _property;
3296 }
3297
3298 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__NamedLink64;
3299
3300 struct __ecereNameSpace__ecere__sys__NamedLink64
3301 {
3302 struct __ecereNameSpace__ecere__sys__NamedLink64 * prev;
3303 struct __ecereNameSpace__ecere__sys__NamedLink64 * next;
3304 char *  name;
3305 long long data;
3306 } __attribute__ ((gcc_struct));
3307
3308 static void __ecereNameSpace__ecere__com__SetDelayedCPValues(struct __ecereNameSpace__ecere__com__Class * _class, struct __ecereNameSpace__ecere__com__ClassProperty * _property)
3309 {
3310 struct __ecereNameSpace__ecere__sys__OldLink * deriv;
3311 struct __ecereNameSpace__ecere__sys__NamedLink64 * value, * next;
3312
3313 for(value = _class->delayedCPValues.first; value; value = next)
3314 {
3315 next = value->next;
3316 if(!strcmp(value->name, _property->name))
3317 {
3318 _property->Set(_class, value->data);
3319 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&_class->delayedCPValues, value);
3320 }
3321 }
3322 for(deriv = _class->derivatives.first; deriv; deriv = deriv->next)
3323 {
3324 __ecereNameSpace__ecere__com__SetDelayedCPValues(deriv->data, _property);
3325 }
3326 }
3327
3328 struct __ecereNameSpace__ecere__com__ClassProperty * __ecereNameSpace__ecere__com__eClass_AddClassProperty(struct __ecereNameSpace__ecere__com__Class * _class, char * name, char * dataType, void * setStmt, void * getStmt)
3329 {
3330 if(name && !__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&_class->classProperties, name))
3331 {
3332 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);
3333
3334 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&_class->classProperties, (struct __ecereNameSpace__ecere__sys__BTNode *)_property);
3335 __ecereNameSpace__ecere__com__SetDelayedCPValues(_class, _property);
3336 return _property;
3337 }
3338 return (((void *)0));
3339 }
3340
3341 struct __ecereNameSpace__ecere__com__ClassProperty * __ecereNameSpace__ecere__com__eClass_FindClassProperty(struct __ecereNameSpace__ecere__com__Class * _class, char * name)
3342 {
3343 struct __ecereNameSpace__ecere__com__ClassProperty * _property = (((void *)0));
3344
3345 if(name && _class)
3346 {
3347 struct __ecereNameSpace__ecere__com__Class * origClass = _class;
3348
3349 for(; _class; _class = _class->base)
3350 {
3351 _property = (struct __ecereNameSpace__ecere__com__ClassProperty *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&_class->classProperties, name);
3352 if(_property)
3353 break;
3354 }
3355 if(!_property && origClass->type == 4)
3356 {
3357 struct __ecereNameSpace__ecere__com__Class * enumClass = __ecereNameSpace__ecere__com__eSystem_FindClass(origClass->module, "enum");
3358
3359 _property = __ecereNameSpace__ecere__com__eClass_FindClassProperty(enumClass, name);
3360 }
3361 }
3362 return _property;
3363 }
3364
3365 long long __ecereNameSpace__ecere__com__eClass_GetProperty(struct __ecereNameSpace__ecere__com__Class * _class, char * name)
3366 {
3367 struct __ecereNameSpace__ecere__com__ClassProperty * _property = __ecereNameSpace__ecere__com__eClass_FindClassProperty(_class, name);
3368
3369 if(_property && _property->Get && _property->Get != (void *)1)
3370 {
3371 long long result = _property->Get(_class);
3372
3373 return result;
3374 }
3375 return 0;
3376 }
3377
3378 void __ecereNameSpace__ecere__com__eClass_SetProperty(struct __ecereNameSpace__ecere__com__Class * _class, char * name, long long value)
3379 {
3380 void * __ecereTemp1;
3381 struct __ecereNameSpace__ecere__com__ClassProperty * _property = __ecereNameSpace__ecere__com__eClass_FindClassProperty(_class, name);
3382
3383 if(_property)
3384 {
3385 if(_property->Set)
3386 ((void (*)(void *, long long))_property->Set)(_class, value);
3387 }
3388 else
3389 {
3390 __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)));
3391 }
3392 }
3393
3394 struct __ecereNameSpace__ecere__com__Method * __ecereNameSpace__ecere__com__eClass_FindMethod(struct __ecereNameSpace__ecere__com__Class * _class, char * name, struct __ecereNameSpace__ecere__com__Instance * module)
3395 {
3396 if(_class && name)
3397 {
3398 for(; _class; _class = _class->base)
3399 {
3400 struct __ecereNameSpace__ecere__com__Method * method;
3401
3402 if(_class->templateClass)
3403 _class = _class->templateClass;
3404 method = (struct __ecereNameSpace__ecere__com__Method *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&_class->methods, name);
3405 if(method && (method->memberAccess == 1 || _class->module == module || !method->dataTypeString))
3406 {
3407 if(!method->dataTypeString)
3408 {
3409 if(_class->module != module)
3410 {
3411 if(method->memberAccess == 1)
3412 module = _class->module;
3413 else
3414 {
3415 return (((void *)0));
3416 }
3417 }
3418 }
3419 else
3420 {
3421 return method;
3422 }
3423 }
3424 if(_class->inheritanceAccess == 2 && _class->module != module)
3425 break;
3426 }
3427 }
3428 return (((void *)0));
3429 }
3430
3431 static unsigned int __ecereNameSpace__ecere__com__ConstructInstance(void * instance, struct __ecereNameSpace__ecere__com__Class * _class, struct __ecereNameSpace__ecere__com__Class * from)
3432 {
3433 if(_class->templateClass)
3434 _class = _class->templateClass;
3435 if(_class->base && from != _class->base)
3436 {
3437 if(!__ecereNameSpace__ecere__com__ConstructInstance(instance, _class->base, from))
3438 return 0x0;
3439 }
3440 if(_class->Initialize)
3441 {
3442 void (* Initialize)(struct __ecereNameSpace__ecere__com__Instance * module) = (void *)_class->Initialize;
3443
3444 _class->Initialize = (((void *)0));
3445 Initialize(_class->module);
3446 }
3447 if(_class->Constructor)
3448 {
3449 if(!_class->Constructor(instance))
3450 {
3451 for(; _class; _class = _class->base)
3452 {
3453 if(_class->templateClass)
3454 _class = _class->templateClass;
3455 if(_class->Destructor)
3456 _class->Destructor(instance);
3457 }
3458 return 0x0;
3459 }
3460 }
3461 (_class->templateClass ? _class->templateClass : _class)->count++;
3462 return 0x1;
3463 }
3464
3465 void * __ecereNameSpace__ecere__com__eInstance_New(struct __ecereNameSpace__ecere__com__Class * _class)
3466 {
3467 struct __ecereNameSpace__ecere__com__Instance * instance = (((void *)0));
3468
3469 if(_class)
3470 {
3471 instance = __ecereNameSpace__ecere__com___calloc(1, _class->structSize);
3472 if(_class->type == 0)
3473 {
3474 ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class = _class;
3475 ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_vTbl = _class->_vTbl;
3476 }
3477 if(!__ecereNameSpace__ecere__com__ConstructInstance(instance, _class, (((void *)0))))
3478 {
3479 __ecereNameSpace__ecere__com___free(instance);
3480 instance = (((void *)0));
3481 }
3482 }
3483 return instance;
3484 }
3485
3486 void __ecereNameSpace__ecere__com__eInstance_Evolve(struct __ecereNameSpace__ecere__com__Instance ** instancePtr, struct __ecereNameSpace__ecere__com__Class * _class)
3487 {
3488 if(_class && instancePtr && *instancePtr)
3489 {
3490 unsigned int wasApp = 0x0, wasGuiApp = 0x0;
3491 struct __ecereNameSpace__ecere__com__Instance * instance = (struct __ecereNameSpace__ecere__com__Instance *)__ecereNameSpace__ecere__com__eSystem_Renew(*instancePtr, sizeof(unsigned char) * (_class->structSize));
3492 struct __ecereNameSpace__ecere__com__Class * fromClass = ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class;
3493
3494 *instancePtr = instance;
3495 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);
3496 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")))
3497 {
3498 struct __ecereNameSpace__ecere__com__Instance * module;
3499 struct __ecereNameSpace__ecere__com__Instance * app = (struct __ecereNameSpace__ecere__com__Instance *)instance;
3500 struct __ecereNameSpace__ecere__com__BTNamedLink * link;
3501 struct __ecereNameSpace__ecere__com__Class * _class;
3502 struct __ecereNameSpace__ecere__com__NameSpace * nameSpace;
3503
3504 for(module = ((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 300)))->allModules.first; module; module = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->next)
3505 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application = app;
3506 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)))
3507 {
3508 struct __ecereNameSpace__ecere__sys__OldLink * t;
3509
3510 ((struct __ecereNameSpace__ecere__com__Class *)link->data)->nameSpace = &((struct __ecereNameSpace__ecere__com__Module *)(((char *)app + 12)))->privateNameSpace;
3511 for(t = ((struct __ecereNameSpace__ecere__com__Class *)link->data)->templatized.first; t; t = t->next)
3512 {
3513 struct __ecereNameSpace__ecere__com__Class * template = t->data;
3514
3515 template->nameSpace = ((struct __ecereNameSpace__ecere__com__Class *)link->data)->nameSpace;
3516 }
3517 }
3518 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)))
3519 {
3520 struct __ecereNameSpace__ecere__sys__OldLink * t;
3521
3522 ((struct __ecereNameSpace__ecere__com__Class *)link->data)->nameSpace = &((struct __ecereNameSpace__ecere__com__Module *)(((char *)app + 12)))->publicNameSpace;
3523 for(t = ((struct __ecereNameSpace__ecere__com__Class *)link->data)->templatized.first; t; t = t->next)
3524 {
3525 struct __ecereNameSpace__ecere__com__Class * template = t->data;
3526
3527 template->nameSpace = ((struct __ecereNameSpace__ecere__com__Class *)link->data)->nameSpace;
3528 }
3529 }
3530 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)))
3531 ((struct __ecereNameSpace__ecere__com__DefinedExpression *)link->data)->nameSpace = &((struct __ecereNameSpace__ecere__com__Module *)(((char *)app + 12)))->privateNameSpace;
3532 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)))
3533 ((struct __ecereNameSpace__ecere__com__DefinedExpression *)link->data)->nameSpace = &((struct __ecereNameSpace__ecere__com__Module *)(((char *)app + 12)))->publicNameSpace;
3534 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)))
3535 ((struct __ecereNameSpace__ecere__com__GlobalFunction *)link->data)->nameSpace = &((struct __ecereNameSpace__ecere__com__Module *)(((char *)app + 12)))->privateNameSpace;
3536 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)))
3537 ((struct __ecereNameSpace__ecere__com__GlobalFunction *)link->data)->nameSpace = &((struct __ecereNameSpace__ecere__com__Module *)(((char *)app + 12)))->publicNameSpace;
3538 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)))
3539 (*nameSpace).parent = &((struct __ecereNameSpace__ecere__com__Module *)(((char *)app + 12)))->privateNameSpace;
3540 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)))
3541 (*nameSpace).parent = &((struct __ecereNameSpace__ecere__com__Module *)(((char *)app + 12)))->publicNameSpace;
3542 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)))
3543 {
3544 struct __ecereNameSpace__ecere__sys__OldLink * t;
3545
3546 ((struct __ecereNameSpace__ecere__com__Class *)link->data)->nameSpace = &((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 300)))->systemNameSpace;
3547 for(t = ((struct __ecereNameSpace__ecere__com__Class *)link->data)->templatized.first; t; t = t->next)
3548 {
3549 struct __ecereNameSpace__ecere__com__Class * template = t->data;
3550
3551 template->nameSpace = ((struct __ecereNameSpace__ecere__com__Class *)link->data)->nameSpace;
3552 }
3553 }
3554 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)))
3555 ((struct __ecereNameSpace__ecere__com__DefinedExpression *)link->data)->nameSpace = &((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 300)))->systemNameSpace;
3556 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)))
3557 ((struct __ecereNameSpace__ecere__com__GlobalFunction *)link->data)->nameSpace = &((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 300)))->systemNameSpace;
3558 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)))
3559 ((struct __ecereNameSpace__ecere__com__GlobalFunction *)link->data)->nameSpace = &((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 300)))->systemNameSpace;
3560 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)))
3561 (*nameSpace).parent = &((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 300)))->systemNameSpace;
3562 for(_class = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)app + 12)))->classes.first; _class; _class = _class->next)
3563 {
3564 struct __ecereNameSpace__ecere__sys__OldLink * templateLink;
3565
3566 _class->module = (struct __ecereNameSpace__ecere__com__Instance *)app;
3567 for(templateLink = _class->templatized.first; templateLink; templateLink = templateLink->next)
3568 {
3569 struct __ecereNameSpace__ecere__com__Class * template = templateLink->data;
3570
3571 template->module = _class->module;
3572 }
3573 }
3574 for(module = ((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 300)))->allModules.first; module; module = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->next)
3575 {
3576 for(_class = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->classes.first; _class; _class = _class->next)
3577 {
3578 struct __ecereNameSpace__ecere__sys__OldLink * templateLink;
3579
3580 _class->module = module;
3581 for(templateLink = _class->templatized.first; templateLink; templateLink = templateLink->next)
3582 {
3583 struct __ecereNameSpace__ecere__com__Class * template = templateLink->data;
3584
3585 template->module = _class->module;
3586 }
3587 }
3588 }
3589 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)app + 12)))->application = app;
3590 }
3591 {
3592 struct __ecereNameSpace__ecere__com__Class * base;
3593
3594 for(base = ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class; base && base->type == 0 && base->count; base = base->base)
3595 (base->templateClass ? base->templateClass : base)->count--;
3596 }
3597 ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class = _class;
3598 ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_vTbl = _class->_vTbl;
3599 if(!__ecereNameSpace__ecere__com__ConstructInstance(instance, _class, fromClass))
3600 {
3601 __ecereNameSpace__ecere__com___free(instance);
3602 *instancePtr = (((void *)0));
3603 }
3604 }
3605 }
3606
3607 void __ecereNameSpace__ecere__com__eInstance_Delete(struct __ecereNameSpace__ecere__com__Instance * instance)
3608 {
3609 if(instance)
3610 {
3611 struct __ecereNameSpace__ecere__com__Class * _class, * base;
3612 unsigned int ownVtbl;
3613
3614 ownVtbl = ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_vTbl != ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class->_vTbl;
3615 for(_class = ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class; _class; _class = base)
3616 {
3617 if(_class->templateClass)
3618 _class = _class->templateClass;
3619 if(_class->destructionWatchOffset)
3620 {
3621 struct __ecereNameSpace__ecere__sys__OldList * watchers = (struct __ecereNameSpace__ecere__sys__OldList *)((unsigned char *)instance + _class->destructionWatchOffset);
3622 struct __ecereNameSpace__ecere__com__Watcher * watcher, * next;
3623
3624 for(watcher = (*watchers).first; watcher; watcher = next)
3625 {
3626 next = watcher->next;
3627 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove((&*watchers), watcher);
3628 watcher->callback(watcher->object, instance);
3629 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete((&*watchers), watcher);
3630 }
3631 }
3632 base = _class->base;
3633 if(base && base->type == 1000)
3634 base = (((void *)0));
3635 if(_class->Destructor)
3636 _class->Destructor(instance);
3637 }
3638 for(_class = ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class; _class; _class = base)
3639 {
3640 if(_class->templateClass)
3641 _class = _class->templateClass;
3642 base = _class->base;
3643 (_class->templateClass ? _class->templateClass : _class)->count--;
3644 if(_class->type == 0 && !_class->count && !_class->module)
3645 {
3646 __ecereNameSpace__ecere__com__eClass_Unregister(_class);
3647 }
3648 }
3649 if(ownVtbl)
3650 {
3651 (__ecereNameSpace__ecere__com__eSystem_Delete(((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_vTbl), ((struct __ecereNameSpace__ecere__com__Instance * )(char * )instance)->_vTbl = 0);
3652 }
3653 __ecereNameSpace__ecere__com___free(instance);
3654 }
3655 }
3656
3657 struct __ecereNameSpace__ecere__com__Property * __ecereNameSpace__ecere__com__eClass_FindProperty(struct __ecereNameSpace__ecere__com__Class * _class, char * name, struct __ecereNameSpace__ecere__com__Instance * module)
3658 {
3659 if(_class && name)
3660 {
3661 for(; _class; _class = _class->base)
3662 {
3663 struct __ecereNameSpace__ecere__com__BTNamedLink * link;
3664
3665 if(_class->templateClass)
3666 _class = _class->templateClass;
3667 link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&_class->prop, name);
3668 if(link)
3669 {
3670 struct __ecereNameSpace__ecere__com__Property * _property = (struct __ecereNameSpace__ecere__com__Property *)link->data;
3671
3672 if(_property->memberAccess == 1 || _class->module == module || !_property->dataTypeString)
3673 {
3674 if(!_property->dataTypeString)
3675 {
3676 if(_class->module != module)
3677 {
3678 if(_property->memberAccess == 1)
3679 module = _class->module;
3680 else
3681 {
3682 return (((void *)0));
3683 }
3684 }
3685 }
3686 else
3687 {
3688 return _property;
3689 }
3690 }
3691 }
3692 if(_class->inheritanceAccess == 2 && _class->module != module)
3693 break;
3694 }
3695 }
3696 return (((void *)0));
3697 }
3698
3699 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)
3700 {
3701 struct __ecereNameSpace__ecere__com__BTNamedLink * link;
3702 struct __ecereNameSpace__ecere__com__DataMember * dataMember;
3703
3704 link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(alist, name);
3705 if(link)
3706 {
3707 dataMember = link->data;
3708 if(dataMember->type == 0 && (dataMember->memberAccess == 1 || searchPrivate || !dataMember->dataTypeString))
3709 {
3710 if(offset)
3711 *offset += dataMember->offset;
3712 if(id)
3713 *id = dataMember->id;
3714 return dataMember;
3715 }
3716 return (((void *)0));
3717 }
3718 for(dataMember = list->first; dataMember; dataMember = dataMember->next)
3719 {
3720 if(!dataMember->isProperty && (dataMember->memberAccess == 1 || searchPrivate) && !dataMember->name && (dataMember->type == 1 || dataMember->type == 2))
3721 {
3722 struct __ecereNameSpace__ecere__com__DataMember * childMember;
3723
3724 if(subMemberStackPos)
3725 subMemberStack[(*subMemberStackPos)++] = dataMember;
3726 childMember = __ecereNameSpace__ecere__com__FindDataMember(&dataMember->members, &dataMember->membersAlpha, name, offset, id, searchPrivate, subMemberStack, subMemberStackPos);
3727 if(childMember)
3728 {
3729 if(offset)
3730 *offset += dataMember->offset;
3731 if(id)
3732 *id += dataMember->id;
3733 return childMember;
3734 }
3735 if(subMemberStackPos)
3736 (*subMemberStackPos)--;
3737 }
3738 }
3739 return (((void *)0));
3740 }
3741
3742 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)
3743 {
3744 struct __ecereNameSpace__ecere__com__DataMember * dataMember = (((void *)0));
3745
3746 if(subMemberStackPos)
3747 *subMemberStackPos = 0;
3748 if(_class && name)
3749 {
3750 for(; _class; _class = _class->base)
3751 {
3752 if(_class->templateClass)
3753 _class = _class->templateClass;
3754 dataMember = __ecereNameSpace__ecere__com__FindDataMember(&_class->membersAndProperties, &_class->members, name, (((void *)0)), (((void *)0)), _class->module == module, subMemberStack, subMemberStackPos);
3755 if(dataMember)
3756 {
3757 if(!dataMember->dataTypeString)
3758 {
3759 if(_class->module != module)
3760 {
3761 if(dataMember->memberAccess == 1)
3762 module = _class->module;
3763 else
3764 {
3765 return (((void *)0));
3766 }
3767 }
3768 dataMember = (((void *)0));
3769 }
3770 else
3771 {
3772 dataMember->_class = _class->templateClass ? _class->templateClass : _class;
3773 return dataMember;
3774 }
3775 }
3776 if(_class->inheritanceAccess == 2 && _class->module != module)
3777 break;
3778 }
3779 }
3780 return dataMember;
3781 }
3782
3783 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)
3784 {
3785 struct __ecereNameSpace__ecere__com__DataMember * dataMember = (((void *)0));
3786
3787 if(subMemberStackPos)
3788 *subMemberStackPos = 0;
3789 if(offset)
3790 *offset = 0;
3791 if(_class)
3792 {
3793 for(; _class; _class = _class->base)
3794 {
3795 if(_class->templateClass)
3796 _class = _class->templateClass;
3797 dataMember = __ecereNameSpace__ecere__com__FindDataMember(&_class->membersAndProperties, &_class->members, name, offset, (((void *)0)), _class->module == module, subMemberStack, subMemberStackPos);
3798 if(dataMember)
3799 {
3800 if(!dataMember->dataTypeString)
3801 {
3802 if(_class->module != module)
3803 {
3804 if(dataMember->memberAccess == 1)
3805 module = _class->module;
3806 else
3807 {
3808 return (((void *)0));
3809 }
3810 }
3811 dataMember = (((void *)0));
3812 }
3813 else
3814 {
3815 dataMember->_class = _class;
3816 return dataMember;
3817 }
3818 }
3819 if(_class->inheritanceAccess == 2 && _class->module != module)
3820 break;
3821 }
3822 }
3823 return dataMember;
3824 }
3825
3826 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)
3827 {
3828 struct __ecereNameSpace__ecere__com__DataMember * dataMember = (((void *)0));
3829
3830 if(subMemberStackPos)
3831 *subMemberStackPos = 0;
3832 if(_class)
3833 {
3834 for(; _class; _class = _class->base)
3835 {
3836 if(_class->templateClass)
3837 _class = _class->templateClass;
3838 dataMember = __ecereNameSpace__ecere__com__FindDataMember(&_class->membersAndProperties, &_class->members, name, (((void *)0)), id, _class->module == module, subMemberStack, subMemberStackPos);
3839 if(dataMember)
3840 {
3841 if(!dataMember->dataTypeString)
3842 {
3843 if(_class->module != module)
3844 {
3845 if(dataMember->memberAccess == 1)
3846 module = _class->module;
3847 else
3848 {
3849 return (((void *)0));
3850 }
3851 }
3852 dataMember = (((void *)0));
3853 }
3854 else
3855 {
3856 dataMember->_class = _class;
3857 return dataMember;
3858 }
3859 }
3860 if(_class->inheritanceAccess == 2 && _class->module != module)
3861 break;
3862 }
3863 }
3864 return dataMember;
3865 }
3866
3867 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)
3868 {
3869 if(*curMember)
3870 {
3871 *curMember = (*curMember)->next;
3872 if(subMemberStackPos && *subMemberStackPos > 0 && subMemberStack[*subMemberStackPos - 1]->type == 1)
3873 {
3874 *curMember = subMemberStack[--(*subMemberStackPos)];
3875 *curMember = (*curMember)->next;
3876 }
3877 if(subMemberStackPos && *subMemberStackPos > 0)
3878 {
3879 while(*curMember && ((*curMember)->memberAccess == 2))
3880 *curMember = (*curMember)->next;
3881 }
3882 else
3883 while(*curMember && (*curMember)->name)
3884 {
3885 struct __ecereNameSpace__ecere__com__DataMember * dataMember = __ecereNameSpace__ecere__com__eClass_FindDataMember(_class, (*curMember)->name, (((void *)0)), (((void *)0)), (((void *)0)));
3886
3887 if(!dataMember)
3888 dataMember = (struct __ecereNameSpace__ecere__com__DataMember *)__ecereNameSpace__ecere__com__eClass_FindProperty(_class, (*curMember)->name, (((void *)0)));
3889 if(dataMember && dataMember->memberAccess != 2)
3890 {
3891 *curMember = dataMember;
3892 break;
3893 }
3894 else
3895 *curMember = (*curMember)->next;
3896 }
3897 if(subMemberStackPos)
3898 {
3899 while((*curMember) && !(*curMember)->isProperty && !(*curMember)->name && ((*curMember)->type == 2 || (*curMember)->type == 1))
3900 {
3901 subMemberStack[(*subMemberStackPos)++] = *curMember;
3902 *curMember = (*curMember)->members.first;
3903 while(*curMember && ((*curMember)->memberAccess == 2))
3904 *curMember = (*curMember)->next;
3905 }
3906 }
3907 }
3908 while(!*curMember)
3909 {
3910 if(!*curMember)
3911 {
3912 if(subMemberStackPos && *subMemberStackPos)
3913 {
3914 *curMember = subMemberStack[--(*subMemberStackPos)];
3915 *curMember = (*curMember)->next;
3916 }
3917 else
3918 {
3919 struct __ecereNameSpace__ecere__com__Class * lastCurClass = *curClass;
3920
3921 if(*curClass == _class)
3922 break;
3923 for(*curClass = _class; (*curClass)->base != lastCurClass && (*curClass)->base->type != 1000 && (*curClass)->inheritanceAccess != 2; *curClass = (*curClass)->base)
3924 ;
3925 *curMember = (*curClass)->membersAndProperties.first;
3926 }
3927 if(subMemberStackPos && *subMemberStackPos > 0)
3928 {
3929 while(*curMember && ((*curMember)->memberAccess == 2))
3930 *curMember = (*curMember)->next;
3931 }
3932 else
3933 while(*curMember && (*curMember)->name)
3934 {
3935 struct __ecereNameSpace__ecere__com__DataMember * dataMember = __ecereNameSpace__ecere__com__eClass_FindDataMember(_class, (*curMember)->name, (((void *)0)), (((void *)0)), (((void *)0)));
3936
3937 if(!dataMember)
3938 dataMember = (struct __ecereNameSpace__ecere__com__DataMember *)__ecereNameSpace__ecere__com__eClass_FindProperty(_class, (*curMember)->name, (((void *)0)));
3939 if(dataMember && dataMember->memberAccess != 2)
3940 {
3941 *curMember = dataMember;
3942 break;
3943 }
3944 else
3945 *curMember = (*curMember)->next;
3946 }
3947 if(subMemberStackPos)
3948 {
3949 while((*curMember) && !(*curMember)->isProperty && !(*curMember)->name && ((*curMember)->type == 2 || (*curMember)->type == 1))
3950 {
3951 subMemberStack[(*subMemberStackPos)++] = *curMember;
3952 *curMember = (*curMember)->members.first;
3953 while(*curMember && (*curMember)->memberAccess == 2)
3954 *curMember = (*curMember)->next;
3955 }
3956 }
3957 }
3958 }
3959 }
3960
3961 void __ecereNameSpace__ecere__com__eInstance_SetMethod(struct __ecereNameSpace__ecere__com__Instance * instance, char * name, void * function)
3962 {
3963 if(instance && name)
3964 {
3965 struct __ecereNameSpace__ecere__com__Class * _class;
3966
3967 for(_class = ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class; _class; _class = _class->base)
3968 {
3969 struct __ecereNameSpace__ecere__com__Method * method = (struct __ecereNameSpace__ecere__com__Method *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&_class->methods, name);
3970
3971 if(method && method->type == 1)
3972 {
3973 if(((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_vTbl == ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class->_vTbl)
3974 {
3975 ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_vTbl = __ecereNameSpace__ecere__com___malloc(sizeof(void *) * ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class->vTblSize);
3976 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);
3977 }
3978 ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_vTbl[method->vid] = function ? function : __ecereNameSpace__ecere__com__DefaultFunction;
3979 }
3980 }
3981 }
3982 }
3983
3984 unsigned int __ecereNameSpace__ecere__com__eInstance_IsDerived(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Class * from)
3985 {
3986 if(instance)
3987 {
3988 struct __ecereNameSpace__ecere__com__Class * _class = ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class;
3989
3990 for(; _class; _class = _class->base)
3991 {
3992 if(_class == from)
3993 return 0x1;
3994 }
3995 }
3996 return 0x0;
3997 }
3998
3999 void __ecereNameSpace__ecere__com__eInstance_IncRef(struct __ecereNameSpace__ecere__com__Instance * instance)
4000 {
4001 if(instance)
4002 ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_refCount++;
4003 }
4004
4005 void __ecereNameSpace__ecere__com__eInstance_DecRef(struct __ecereNameSpace__ecere__com__Instance * instance)
4006 {
4007 if(instance)
4008 {
4009 ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_refCount--;
4010 if(((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_refCount <= 0)
4011 {
4012 __ecereNameSpace__ecere__com__eInstance_Delete(instance);
4013 }
4014 }
4015 }
4016
4017 static void __ecereNameSpace__ecere__com__FixOffsets(struct __ecereNameSpace__ecere__com__Class * _class)
4018 {
4019 struct __ecereNameSpace__ecere__sys__OldLink * deriv;
4020
4021 _class->structSize += _class->base->structSize - _class->offset;
4022 _class->offset = _class->base->structSize;
4023 for(deriv = _class->derivatives.first; deriv; deriv = deriv->next)
4024 __ecereNameSpace__ecere__com__FixOffsets(deriv->data);
4025 }
4026
4027 void __ecereNameSpace__ecere__com__eClass_Resize(struct __ecereNameSpace__ecere__com__Class * _class, int newSize)
4028 {
4029 struct __ecereNameSpace__ecere__sys__OldLink * deriv;
4030
4031 _class->structSize = newSize;
4032 for(deriv = _class->derivatives.first; deriv; deriv = deriv->next)
4033 __ecereNameSpace__ecere__com__FixOffsets(deriv->data);
4034 }
4035
4036 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)
4037 {
4038 void * __ecereTemp1;
4039
4040 if(_class && name)
4041 {
4042 if(!__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&_class->members, name))
4043 {
4044 struct __ecereNameSpace__ecere__com__DataMember * dataMember;
4045
4046 if(alignment)
4047 {
4048 int __simpleStruct0;
4049
4050 _class->structAlignment = (__simpleStruct0 = _class->structAlignment, (__simpleStruct0 > alignment) ? __simpleStruct0 : alignment);
4051 if(_class->memberOffset % alignment)
4052 _class->memberOffset += alignment - (_class->memberOffset % alignment);
4053 }
4054 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));
4055 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&_class->membersAndProperties, dataMember);
4056 _class->memberOffset += size;
4057 __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)));
4058 return dataMember;
4059 }
4060 }
4061 return (((void *)0));
4062 }
4063
4064 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)
4065 {
4066 void * __ecereTemp1;
4067
4068 if(name && !__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&member->membersAlpha, name))
4069 {
4070 struct __ecereNameSpace__ecere__com__DataMember * dataMember;
4071
4072 if(alignment)
4073 {
4074 int __simpleStruct0;
4075
4076 member->structAlignment = (__simpleStruct0 = member->structAlignment, (__simpleStruct0 > alignment) ? __simpleStruct0 : alignment);
4077 if(member->memberOffset % alignment)
4078 member->memberOffset += alignment - (member->memberOffset % alignment);
4079 }
4080 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));
4081 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&member->members, dataMember);
4082 if(member->type == 1)
4083 {
4084 if(size > member->memberOffset)
4085 member->memberOffset = size;
4086 }
4087 else
4088 member->memberOffset += size;
4089 __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)));
4090 return dataMember;
4091 }
4092 return (((void *)0));
4093 }
4094
4095 struct __ecereNameSpace__ecere__com__DataMember * __ecereNameSpace__ecere__com__eMember_New(int type, int declMode)
4096 {
4097 void * __ecereTemp1;
4098
4099 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));
4100 }
4101
4102 static void __ecereNameSpace__ecere__com__SetMemberClass(struct __ecereNameSpace__ecere__com__DataMember * member, struct __ecereNameSpace__ecere__com__Class * _class)
4103 {
4104 struct __ecereNameSpace__ecere__com__DataMember * dataMember;
4105
4106 member->_class = _class;
4107 for(dataMember = member->members.first; dataMember; dataMember = dataMember->next)
4108 __ecereNameSpace__ecere__com__SetMemberClass(dataMember, _class);
4109 }
4110
4111 unsigned int __ecereNameSpace__ecere__com__eMember_AddMember(struct __ecereNameSpace__ecere__com__DataMember * addTo, struct __ecereNameSpace__ecere__com__DataMember * dataMember)
4112 {
4113 void * __ecereTemp1;
4114 int __simpleStruct0, __simpleStruct1;
4115
4116 if(dataMember->name && __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&addTo->membersAlpha, dataMember->name))
4117 return 0x0;
4118 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&addTo->members, dataMember);
4119 if(dataMember->name)
4120 __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)));
4121 dataMember->_class = addTo->_class;
4122 dataMember->id = addTo->memberID;
4123 if(dataMember->type == 1)
4124 addTo->memberID += 1;
4125 else
4126 addTo->memberID += dataMember->memberID;
4127 addTo->structAlignment = (__simpleStruct0 = addTo->structAlignment, __simpleStruct1 = dataMember->structAlignment, (__simpleStruct0 > __simpleStruct1) ? __simpleStruct0 : __simpleStruct1);
4128 dataMember->offset = (addTo->type == 1) ? 0 : addTo->memberOffset;
4129 if(addTo->type == 1)
4130 {
4131 if(dataMember->memberOffset > addTo->memberOffset)
4132 addTo->memberOffset = dataMember->memberOffset;
4133 }
4134 else
4135 addTo->memberOffset += dataMember->memberOffset;
4136 return 0x1;
4137 }
4138
4139 unsigned int __ecereNameSpace__ecere__com__eClass_AddMember(struct __ecereNameSpace__ecere__com__Class * _class, struct __ecereNameSpace__ecere__com__DataMember * dataMember)
4140 {
4141 void * __ecereTemp1;
4142 int __simpleStruct0, __simpleStruct1;
4143
4144 if(!_class || _class->comRedefinition || (dataMember->name && __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&_class->members, dataMember->name)))
4145 return 0x0;
4146 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&_class->membersAndProperties, dataMember);
4147 if(dataMember->name)
4148 __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)));
4149 __ecereNameSpace__ecere__com__SetMemberClass(dataMember, _class);
4150 dataMember->id = _class->memberID;
4151 _class->structAlignment = (__simpleStruct0 = _class->structAlignment, __simpleStruct1 = dataMember->structAlignment, (__simpleStruct0 > __simpleStruct1) ? __simpleStruct0 : __simpleStruct1);
4152 if(dataMember->type == 1)
4153 _class->memberID += 1;
4154 else
4155 _class->memberID += dataMember->memberID;
4156 dataMember->offset = _class->memberOffset;
4157 _class->memberOffset += dataMember->memberOffset;
4158 return 0x1;
4159 }
4160
4161 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)
4162 {
4163 void * __ecereTemp1;
4164
4165 if(_class && name && !__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&_class->members, name))
4166 {
4167 uint64 mask = 0;
4168 int c;
4169 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);
4170
4171 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&_class->membersAndProperties, bitMember);
4172 if(bitSize)
4173 {
4174 bitMember->pos = (bitPos == -1) ? _class->memberOffset : bitPos;
4175 bitMember->size = bitSize;
4176 _class->memberOffset = bitMember->pos + bitMember->size;
4177 for(c = 0; c < bitSize; c++)
4178 {
4179 if(c)
4180 mask <<= 1;
4181 mask |= 1;
4182 }
4183 bitMember->mask = mask << bitMember->pos;
4184 }
4185 __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)));
4186 return bitMember;
4187 }
4188 return (((void *)0));
4189 }
4190
4191 static struct __ecereNameSpace__ecere__com__Instance * __ecereNameSpace__ecere__com__Module_Load(struct __ecereNameSpace__ecere__com__Instance * fromModule, char * name, int importAccess, unsigned int ensureCOM)
4192 {
4193 void * __ecereTemp1;
4194 unsigned int (stdcall * Load)(struct __ecereNameSpace__ecere__com__Instance * module) = (((void *)0));
4195 unsigned int (stdcall * Unload)(struct __ecereNameSpace__ecere__com__Instance * module) = (((void *)0));
4196 struct __ecereNameSpace__ecere__com__Instance * module;
4197
4198 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)
4199 {
4200 if(!strcmp(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->name, name))
4201 break;
4202 }
4203 if(ensureCOM && (!strcmp(name, "ecereCOM") || !strcmp(name, "ecere")))
4204 {
4205 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)
4206 {
4207 if(!strcmp(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->name, "ecere") || !strcmp(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->name, "ecereCOM"))
4208 break;
4209 }
4210 }
4211 if(!module)
4212 {
4213 void * library = (((void *)0));
4214
4215 if(ensureCOM && !strcmp(name, "ecereCOM"))
4216 {
4217 Load = __ecereDll_Load_ecere;
4218 Unload = __ecereDll_Unload_ecere;
4219 }
4220 else
4221 {
4222 library = Instance_Module_Load(name, &Load, &Unload);
4223 }
4224 if(Load)
4225 {
4226 module = (struct __ecereNameSpace__ecere__com__Instance *)__ecereNameSpace__ecere__com__eInstance_New(__ecereNameSpace__ecere__com__eSystem_FindClass(fromModule, "Module"));
4227 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)fromModule + 12)))->application;
4228 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->library = library;
4229 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->name = __ecereNameSpace__ecere__sys__CopyString(name);
4230 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->Unload = Unload;
4231 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->origImportType = 0;
4232 if(!Load(module))
4233 {
4234 __ecereNameSpace__ecere__com__eInstance_Delete((struct __ecereNameSpace__ecere__com__Instance *)module);
4235 module = (((void *)0));
4236 }
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(ensureCOM && !strcmp(name, "ecere") && module)
4241 {
4242 name = !strcmp(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->name, "ecereCOM") ? "ecere" : "ecereCOM";
4243 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))
4244 {
4245 struct __ecereNameSpace__ecere__com__Instance * module;
4246
4247 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)
4248 {
4249 if(!strcmp(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->name, name))
4250 break;
4251 }
4252 if(!module)
4253 {
4254 Load = __ecereDll_Load_ecere;
4255 Unload = __ecereDll_Unload_ecere;
4256 module = (struct __ecereNameSpace__ecere__com__Instance *)__ecereNameSpace__ecere__com__eInstance_New(__ecereNameSpace__ecere__com__eSystem_FindClass(fromModule, "Module"));
4257 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)fromModule + 12)))->application;
4258 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->library = (((void *)0));
4259 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->name = __ecereNameSpace__ecere__sys__CopyString(name);
4260 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->Unload = Unload;
4261 if(!Load(module))
4262 {
4263 __ecereNameSpace__ecere__com__eInstance_Delete((struct __ecereNameSpace__ecere__com__Instance *)module);
4264 module = (((void *)0));
4265 }
4266 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)fromModule + 12)))->application + 300)))->allModules, module);
4267 }
4268 if(module)
4269 {
4270 if(fromModule)
4271 {
4272 __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)));
4273 }
4274 module->_refCount++;
4275 }
4276 }
4277 }
4278 if(module)
4279 {
4280 if(fromModule)
4281 {
4282 __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)));
4283 }
4284 module->_refCount++;
4285 }
4286 return module;
4287 }
4288
4289 struct __ecereNameSpace__ecere__com__Instance * __ecereNameSpace__ecere__com__eModule_Load(struct __ecereNameSpace__ecere__com__Instance * fromModule, char * name, int importAccess)
4290 {
4291 return __ecereNameSpace__ecere__com__Module_Load(fromModule, name, importAccess, 0x1);
4292 }
4293
4294 struct __ecereNameSpace__ecere__com__Instance * __ecereNameSpace__ecere__com__eModule_LoadStrict(struct __ecereNameSpace__ecere__com__Instance * fromModule, char * name, int importAccess)
4295 {
4296 return __ecereNameSpace__ecere__com__Module_Load(fromModule, name, importAccess, 0x0);
4297 }
4298
4299 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))
4300 {
4301 void * __ecereTemp1;
4302 struct __ecereNameSpace__ecere__com__Instance * module;
4303
4304 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)
4305 {
4306 if(!strcmp(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->name, name))
4307 break;
4308 }
4309 if(!module)
4310 {
4311 if(Load)
4312 {
4313 module = (struct __ecereNameSpace__ecere__com__Instance *)__ecereNameSpace__ecere__com__eInstance_New(__ecereNameSpace__ecere__com__eSystem_FindClass(fromModule, "Module"));
4314 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)fromModule + 12)))->application;
4315 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->name = __ecereNameSpace__ecere__sys__CopyString(name);
4316 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->origImportType = 1;
4317 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->Unload = (void *)Unload;
4318 if(!Load(module))
4319 {
4320 __ecereNameSpace__ecere__com__eInstance_Delete((struct __ecereNameSpace__ecere__com__Instance *)module);
4321 module = (((void *)0));
4322 }
4323 }
4324 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)fromModule + 12)))->application + 300)))->allModules, module);
4325 }
4326 if(module)
4327 {
4328 if(fromModule)
4329 {
4330 __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)));
4331 }
4332 module->_refCount++;
4333 }
4334 return module;
4335 }
4336
4337 void __ecereNameSpace__ecere__com__eModule_Unload(struct __ecereNameSpace__ecere__com__Instance * fromModule, struct __ecereNameSpace__ecere__com__Instance * module)
4338 {
4339 struct __ecereNameSpace__ecere__sys__OldLink * m;
4340
4341 for(m = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)fromModule + 12)))->modules.first; m; m = m->next)
4342 {
4343 if(m->data == module)
4344 break;
4345 }
4346 if(m)
4347 {
4348 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)fromModule + 12)))->modules, m);
4349 (__ecereNameSpace__ecere__com__eInstance_DecRef(module), module = 0);
4350 }
4351 }
4352
4353 void __ecereNameSpace__ecere__com__eEnum_AddFixedValue(struct __ecereNameSpace__ecere__com__Class * _class, char * string, int value)
4354 {
4355 void * __ecereTemp1;
4356
4357 if(_class && _class->type == 4)
4358 {
4359 struct __ecereNameSpace__ecere__com__EnumClassData * data = (struct __ecereNameSpace__ecere__com__EnumClassData *)_class->data;
4360 struct __ecereNameSpace__ecere__sys__NamedLink * item;
4361
4362 for(item = data->values.first; item; item = item->next)
4363 if(!strcmp(item->name, string))
4364 break;
4365 if(!item)
4366 {
4367 __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)));
4368 if(value > data->largest)
4369 data->largest = value;
4370 }
4371 }
4372 }
4373
4374 int __ecereNameSpace__ecere__com__eEnum_AddValue(struct __ecereNameSpace__ecere__com__Class * _class, char * string)
4375 {
4376 void * __ecereTemp1;
4377
4378 if(_class && _class->type == 4)
4379 {
4380 struct __ecereNameSpace__ecere__com__EnumClassData * data = (struct __ecereNameSpace__ecere__com__EnumClassData *)_class->data;
4381 int value = data->largest + 1;
4382 struct __ecereNameSpace__ecere__sys__NamedLink * item;
4383
4384 for(item = data->values.first; item; item = item->next)
4385 if(!strcmp(item->name, string))
4386 break;
4387 if(!item)
4388 {
4389 __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)));
4390 if(value > data->largest)
4391 data->largest = value;
4392 return value;
4393 }
4394 }
4395 return -1;
4396 }
4397
4398 static void __ecereNameSpace__ecere__com__NameSpace_Free(struct __ecereNameSpace__ecere__com__NameSpace * parentNameSpace)
4399 {
4400 struct __ecereNameSpace__ecere__com__NameSpace * nameSpace;
4401
4402 (__ecereNameSpace__ecere__com__eSystem_Delete(parentNameSpace->name), parentNameSpace->name = 0);
4403 while((nameSpace = (struct __ecereNameSpace__ecere__com__NameSpace *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&parentNameSpace->nameSpaces)))
4404 {
4405 __ecereNameSpace__ecere__com__NameSpace_Free(nameSpace);
4406 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&parentNameSpace->nameSpaces, (struct __ecereNameSpace__ecere__sys__BTNode *)nameSpace);
4407 }
4408 }
4409
4410 static void __ecereNameSpace__ecere__com__Application_Destructor(struct __ecereNameSpace__ecere__com__Instance * app)
4411 {
4412 if(((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 300)))->parsedCommand)
4413 {
4414 (__ecereNameSpace__ecere__com__eSystem_Delete(((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 300)))->argv), ((struct __ecereNameSpace__ecere__com__Application * )(((char * )app + 300)))->argv = 0);
4415 (__ecereNameSpace__ecere__com__eSystem_Delete(((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 300)))->parsedCommand), ((struct __ecereNameSpace__ecere__com__Application * )(((char * )app + 300)))->parsedCommand = 0);
4416 }
4417 }
4418
4419 static unsigned int __ecereNameSpace__ecere__com__Module_Constructor(struct __ecereNameSpace__ecere__com__Instance * module)
4420 {
4421 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->privateNameSpace.classes.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
4422 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->privateNameSpace.defines.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
4423 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->privateNameSpace.functions.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
4424 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->privateNameSpace.nameSpaces.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
4425 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->publicNameSpace.classes.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
4426 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->publicNameSpace.defines.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
4427 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->publicNameSpace.functions.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
4428 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->publicNameSpace.nameSpaces.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
4429 return 0x1;
4430 }
4431
4432 static void __ecereNameSpace__ecere__com__Module_Destructor(struct __ecereNameSpace__ecere__com__Instance * module)
4433 {
4434 struct __ecereNameSpace__ecere__com__Class * _class;
4435 struct __ecereNameSpace__ecere__com__DefinedExpression * def;
4436 struct __ecereNameSpace__ecere__com__GlobalFunction * function;
4437 struct __ecereNameSpace__ecere__com__Instance * m;
4438 struct __ecereNameSpace__ecere__com__SubModule * handle;
4439
4440 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)
4441 {
4442 struct __ecereNameSpace__ecere__com__SubModule * next;
4443
4444 for(handle = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)m + 12)))->modules.first; handle; handle = next)
4445 {
4446 next = handle->next;
4447 if(handle->module == module)
4448 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)m + 12)))->modules, handle);
4449 }
4450 }
4451 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->Unload)
4452 {
4453 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->origImportType == 1)
4454 {
4455 unsigned int (* Unload)(struct __ecereNameSpace__ecere__com__Instance * module) = (void *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->Unload;
4456
4457 Unload(module);
4458 }
4459 else
4460 {
4461 unsigned int (stdcall * Unload)(struct __ecereNameSpace__ecere__com__Instance * module) = (void *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->Unload;
4462
4463 Unload(module);
4464 }
4465 }
4466 {
4467 struct __ecereNameSpace__ecere__com__Instance * ourWorld = __ecereClass___ecereNameSpace__ecere__com__Class->module;
4468 void * ourHandle = (((void *)0));
4469
4470 while((handle = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->modules.last))
4471 {
4472 struct __ecereNameSpace__ecere__com__Instance * depModule = handle->module;
4473
4474 if(depModule == ourWorld)
4475 {
4476 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->modules, handle);
4477 ourHandle = handle;
4478 }
4479 else
4480 {
4481 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->modules, handle);
4482 (__ecereNameSpace__ecere__com__eInstance_DecRef(depModule), depModule = 0);
4483 }
4484 }
4485 if(ourHandle)
4486 {
4487 (__ecereNameSpace__ecere__com__eSystem_Delete(ourHandle), ourHandle = 0);
4488 (__ecereNameSpace__ecere__com__eInstance_DecRef(ourWorld), ourWorld = 0);
4489 }
4490 }
4491 for(; (_class = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->classes.first); )
4492 {
4493 if(_class->nameSpace)
4494 {
4495 struct __ecereNameSpace__ecere__com__BTNamedLink * classLink = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&(*_class->nameSpace).classes, _class->name);
4496 struct __ecereNameSpace__ecere__sys__OldLink * t;
4497
4498 for(t = _class->templatized.first; t; t = t->next)
4499 {
4500 struct __ecereNameSpace__ecere__com__Class * template = t->data;
4501 struct __ecereNameSpace__ecere__com__BTNamedLink * link;
4502
4503 link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&(*template->nameSpace).classes, template->name);
4504 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&(*template->nameSpace).classes, (struct __ecereNameSpace__ecere__sys__BTNode *)link);
4505 template->nameSpace = (((void *)0));
4506 }
4507 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&(*_class->nameSpace).classes, (struct __ecereNameSpace__ecere__sys__BTNode *)classLink);
4508 _class->nameSpace = (((void *)0));
4509 }
4510 _class->module = (((void *)0));
4511 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->classes, _class);
4512 if(!_class->count || _class->type != 0)
4513 __ecereNameSpace__ecere__com__eClass_Unregister(_class);
4514 else
4515 {
4516 }
4517 }
4518 for(; (def = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->defines.first); )
4519 {
4520 if(def->nameSpace)
4521 {
4522 struct __ecereNameSpace__ecere__com__BTNamedLink * defLink;
4523
4524 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)))
4525 if(defLink->data == def)
4526 {
4527 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&(*def->nameSpace).defines, (struct __ecereNameSpace__ecere__sys__BTNode *)defLink);
4528 break;
4529 }
4530 }
4531 (__ecereNameSpace__ecere__com__eSystem_Delete(def->name), def->name = 0);
4532 (__ecereNameSpace__ecere__com__eSystem_Delete(def->value), def->value = 0);
4533 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->defines, def);
4534 }
4535 for(; (function = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->functions.first); )
4536 {
4537 if(function->nameSpace)
4538 {
4539 struct __ecereNameSpace__ecere__com__BTNamedLink * functionLink;
4540
4541 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)))
4542 if(functionLink->data == function)
4543 {
4544 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&(*function->nameSpace).functions, (struct __ecereNameSpace__ecere__sys__BTNode *)functionLink);
4545 break;
4546 }
4547 }
4548 (__ecereNameSpace__ecere__com__eSystem_Delete(function->name), function->name = 0);
4549 (__ecereNameSpace__ecere__com__eSystem_Delete(function->dataTypeString), function->dataTypeString = 0);
4550 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->functions, function);
4551 }
4552 (__ecereNameSpace__ecere__com__eSystem_Delete(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->name), ((struct __ecereNameSpace__ecere__com__Module * )(((char * )module + 12)))->name = 0);
4553 __ecereNameSpace__ecere__com__NameSpace_Free(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->privateNameSpace);
4554 __ecereNameSpace__ecere__com__NameSpace_Free(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->publicNameSpace);
4555 if(module != ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application)
4556 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove(&((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application + 300)))->allModules, module);
4557 else
4558 __ecereNameSpace__ecere__com__NameSpace_Free(&((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application + 300)))->systemNameSpace);
4559 Instance_Module_Free(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->library);
4560 }
4561
4562 static int __ecereNameSpace__ecere__com__GetEnumSize(struct __ecereNameSpace__ecere__com__Class * _class)
4563 {
4564 struct __ecereNameSpace__ecere__com__EnumClassData * data = (struct __ecereNameSpace__ecere__com__EnumClassData *)_class->data;
4565
4566 return data->largest + 1;
4567 }
4568
4569 char * strlwr(char * string)
4570 {
4571 int c;
4572
4573 for(c = 0; string[c]; c++)
4574 if(string[c] >= 'A' && string[c] <= 'Z')
4575 string[c] += 'a' - 'A';
4576 return string;
4577 }
4578
4579 char * strupr(char * string)
4580 {
4581 int c;
4582
4583 for(c = 0; string[c]; c++)
4584 if(string[c] >= 'a' && string[c] <= 'z')
4585 string[c] -= 'a' - 'A';
4586 return string;
4587 }
4588
4589 struct __ecereNameSpace__ecere__com__DefinedExpression * __ecereNameSpace__ecere__com__eSystem_RegisterDefine(char * name, char * value, struct __ecereNameSpace__ecere__com__Instance * module, int declMode)
4590 {
4591 void * __ecereTemp1;
4592 struct __ecereNameSpace__ecere__com__NameSpace * nameSpace = (((void *)0));
4593 int start = 0, c;
4594
4595 nameSpace = (declMode == 1) ? &((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->publicNameSpace : &((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->privateNameSpace;
4596 if(declMode == 4)
4597 nameSpace = &((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application + 300)))->systemNameSpace;
4598 if(declMode != 3)
4599 {
4600 for(c = 0; name[c]; c++)
4601 {
4602 if(name[c] == '.' || (name[c] == ':' && name[c + 1] == ':'))
4603 {
4604 struct __ecereNameSpace__ecere__com__NameSpace * newSpace;
4605 char * spaceName = __ecereNameSpace__ecere__com___malloc(c - start + 1);
4606
4607 strncpy(spaceName, name + start, c - start);
4608 spaceName[c - start] = '\0';
4609 newSpace = (struct __ecereNameSpace__ecere__com__NameSpace *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&(*nameSpace).nameSpaces, spaceName);
4610 if(!newSpace)
4611 {
4612 newSpace = __ecereNameSpace__ecere__com__eSystem_New0(sizeof(struct __ecereNameSpace__ecere__com__NameSpace) * (1));
4613 (*newSpace).classes.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
4614 (*newSpace).defines.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
4615 (*newSpace).functions.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
4616 (*newSpace).nameSpaces.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
4617 (*newSpace).name = spaceName;
4618 (*newSpace).parent = nameSpace;
4619 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&(*nameSpace).nameSpaces, (struct __ecereNameSpace__ecere__sys__BTNode *)newSpace);
4620 }
4621 else
4622 (__ecereNameSpace__ecere__com__eSystem_Delete(spaceName), spaceName = 0);
4623 nameSpace = newSpace;
4624 if(name[c] == ':')
4625 c++;
4626 start = c + 1;
4627 }
4628 }
4629 }
4630 else
4631 c = strlen(name);
4632 if(c - start && !__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&(*nameSpace).defines, name + start))
4633 {
4634 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);
4635
4636 __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)));
4637 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->defines, def);
4638 return def;
4639 }
4640 return (((void *)0));
4641 }
4642
4643 struct __ecereNameSpace__ecere__com__GlobalFunction * __ecereNameSpace__ecere__com__eSystem_RegisterFunction(char * name, char * type, void * func, struct __ecereNameSpace__ecere__com__Instance * module, int declMode)
4644 {
4645 void * __ecereTemp1;
4646 struct __ecereNameSpace__ecere__com__NameSpace * nameSpace = (((void *)0));
4647 int start = 0, c;
4648
4649 nameSpace = (declMode == 1) ? &((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->publicNameSpace : &((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->privateNameSpace;
4650 if(declMode == 4)
4651 nameSpace = &((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application + 300)))->systemNameSpace;
4652 if(declMode != 3)
4653 {
4654 for(c = 0; name[c]; c++)
4655 {
4656 if(name[c] == '.' || (name[c] == ':' && name[c + 1] == ':'))
4657 {
4658 struct __ecereNameSpace__ecere__com__NameSpace * newSpace;
4659 char * spaceName = __ecereNameSpace__ecere__com___malloc(c - start + 1);
4660
4661 strncpy(spaceName, name + start, c - start);
4662 spaceName[c - start] = '\0';
4663 newSpace = (struct __ecereNameSpace__ecere__com__NameSpace *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&(*nameSpace).nameSpaces, spaceName);
4664 if(!newSpace)
4665 {
4666 newSpace = __ecereNameSpace__ecere__com__eSystem_New0(sizeof(struct __ecereNameSpace__ecere__com__NameSpace) * (1));
4667 (*newSpace).classes.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
4668 (*newSpace).defines.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
4669 (*newSpace).functions.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
4670 (*newSpace).nameSpaces.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
4671 (*newSpace).name = spaceName;
4672 (*newSpace).parent = nameSpace;
4673 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&(*nameSpace).nameSpaces, (struct __ecereNameSpace__ecere__sys__BTNode *)newSpace);
4674 }
4675 else
4676 (__ecereNameSpace__ecere__com__eSystem_Delete(spaceName), spaceName = 0);
4677 nameSpace = newSpace;
4678 if(name[c] == ':')
4679 c++;
4680 start = c + 1;
4681 }
4682 }
4683 }
4684 else
4685 c = strlen(name);
4686 if(c - start && !__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&(*nameSpace).functions, name + start))
4687 {
4688 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);
4689
4690 __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)));
4691 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->functions, function);
4692 return function;
4693 }
4694 return (((void *)0));
4695 }
4696
4697 struct __ecereNameSpace__ecere__com__DefinedExpression * __ecereNameSpace__ecere__com__eSystem_FindDefine(struct __ecereNameSpace__ecere__com__Instance * module, char * name)
4698 {
4699 if(name && module)
4700 {
4701 struct __ecereNameSpace__ecere__com__BTNamedLink * link;
4702
4703 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);
4704 if(link)
4705 return link->data;
4706 link = __ecereNameSpace__ecere__com__SearchModule(module, name, &(*((struct __ecereNameSpace__ecere__com__NameSpace *)0)).defines, 0x1);
4707 if(link)
4708 return link->data;
4709 }
4710 return (((void *)0));
4711 }
4712
4713 struct __ecereNameSpace__ecere__com__GlobalFunction * __ecereNameSpace__ecere__com__eSystem_FindFunction(struct __ecereNameSpace__ecere__com__Instance * module, char * name)
4714 {
4715 if(name && module)
4716 {
4717 struct __ecereNameSpace__ecere__com__BTNamedLink * link;
4718
4719 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);
4720 if(link)
4721 return link->data;
4722 link = __ecereNameSpace__ecere__com__SearchModule(module, name, &(*((struct __ecereNameSpace__ecere__com__NameSpace *)0)).functions, 0x1);
4723 if(link)
4724 return link->data;
4725 }
4726 return (((void *)0));
4727 }
4728
4729 void * __ecereNameSpace__ecere__com__eSystem_Renew(void * memory, unsigned int size)
4730 {
4731 return __ecereNameSpace__ecere__com___realloc(memory, size);
4732 }
4733
4734 void * __ecereNameSpace__ecere__com__eSystem_Renew0(void * memory, unsigned int size)
4735 {
4736 return __ecereNameSpace__ecere__com___crealloc(memory, size);
4737 }
4738
4739 void * __ecereNameSpace__ecere__com__eSystem_New(unsigned int size)
4740 {
4741 return __ecereNameSpace__ecere__com___malloc(size);
4742 }
4743
4744 void * __ecereNameSpace__ecere__com__eSystem_New0(unsigned int size)
4745 {
4746 return __ecereNameSpace__ecere__com___calloc(1, size);
4747 }
4748
4749 void __ecereNameSpace__ecere__com__eSystem_Delete(void * memory)
4750 {
4751 if(memory)
4752 __ecereNameSpace__ecere__com___free(memory);
4753 }
4754
4755 void __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property)
4756 {
4757 if(instance && _property && _property->selfWatchable)
4758 {
4759 struct __ecereNameSpace__ecere__com__Class * _class;
4760
4761 for(_class = ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class; _class; _class = _class->base)
4762 {
4763 struct __ecereNameSpace__ecere__com__SelfWatcher * selfWatcher, * next;
4764
4765 for(selfWatcher = _class->selfWatchers.first; selfWatcher; selfWatcher = next)
4766 {
4767 next = selfWatcher->next;
4768 if(selfWatcher->_property == _property)
4769 selfWatcher->callback(instance);
4770 }
4771 }
4772 }
4773 }
4774
4775 void __ecereNameSpace__ecere__com__eInstance_FireWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property)
4776 {
4777 if(instance && _property && _property->isWatchable)
4778 {
4779 struct __ecereNameSpace__ecere__sys__OldList * watchers = (struct __ecereNameSpace__ecere__sys__OldList *)((unsigned char *)instance + _property->watcherOffset);
4780 struct __ecereNameSpace__ecere__com__Watcher * watcher, * next;
4781
4782 for(watcher = (*watchers).first; watcher; watcher = next)
4783 {
4784 next = watcher->next;
4785 watcher->callback(watcher->object, instance);
4786 }
4787 }
4788 }
4789
4790 void __ecereNameSpace__ecere__com__eProperty_Watchable(struct __ecereNameSpace__ecere__com__Property * _property)
4791 {
4792 if(!_property->isWatchable)
4793 {
4794 struct __ecereNameSpace__ecere__com__Class * _class = _property->_class;
4795
4796 if(!_class->computeSize)
4797 {
4798 _property->watcherOffset = _class->structSize;
4799 _class->structSize += sizeof(struct __ecereNameSpace__ecere__sys__OldList);
4800 __ecereNameSpace__ecere__com__FixDerivativesBase(_class, _class);
4801 }
4802 _property->isWatchable = 0x1;
4803 }
4804 }
4805
4806 void __ecereNameSpace__ecere__com__eClass_DestructionWatchable(struct __ecereNameSpace__ecere__com__Class * _class)
4807 {
4808 if(!_class->destructionWatchOffset)
4809 {
4810 _class->destructionWatchOffset = _class->structSize;
4811 _class->structSize += sizeof(struct __ecereNameSpace__ecere__sys__OldList);
4812 __ecereNameSpace__ecere__com__FixDerivativesBase(_class, _class);
4813 }
4814 }
4815
4816 void __ecereNameSpace__ecere__com__eProperty_SelfWatch(struct __ecereNameSpace__ecere__com__Class * _class, char * name, void (* callback)(void *))
4817 {
4818 void * __ecereTemp1;
4819
4820 if(_class)
4821 {
4822 struct __ecereNameSpace__ecere__com__Property * _property = __ecereNameSpace__ecere__com__eClass_FindProperty(_class, name, _class->module);
4823
4824 if(!_property)
4825 _property = __ecereNameSpace__ecere__com__eClass_AddProperty(_class, name, (((void *)0)), (((void *)0)), (((void *)0)), 4);
4826 __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)));
4827 _property->selfWatchable = 0x1;
4828 }
4829 }
4830
4831 void __ecereNameSpace__ecere__com__eInstance_Watch(void * instance, struct __ecereNameSpace__ecere__com__Property * _property, void * object, void (* callback)(void *, void *))
4832 {
4833 void * __ecereTemp1;
4834
4835 if(_property->isWatchable)
4836 {
4837 struct __ecereNameSpace__ecere__sys__OldList * watchers = (struct __ecereNameSpace__ecere__sys__OldList *)((unsigned char *)instance + _property->watcherOffset);
4838
4839 __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)));
4840 }
4841 }
4842
4843 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 *))
4844 {
4845 void * __ecereTemp1;
4846 struct __ecereNameSpace__ecere__sys__OldList * watchers = (struct __ecereNameSpace__ecere__sys__OldList *)((unsigned char *)instance + ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class->destructionWatchOffset);
4847
4848 __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)));
4849 }
4850
4851 void __ecereNameSpace__ecere__com__eInstance_StopWatching(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, struct __ecereNameSpace__ecere__com__Instance * object)
4852 {
4853 if(instance && (!_property || _property->isWatchable))
4854 {
4855 if(_property)
4856 {
4857 struct __ecereNameSpace__ecere__sys__OldList * watchers = (struct __ecereNameSpace__ecere__sys__OldList *)((unsigned char *)instance + _property->watcherOffset);
4858 struct __ecereNameSpace__ecere__com__Watcher * watcher;
4859
4860 for(watcher = (*watchers).first; watcher; watcher = watcher->next)
4861 if(watcher->object == object)
4862 {
4863 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete((&*watchers), watcher);
4864 break;
4865 }
4866 }
4867 else
4868 {
4869 struct __ecereNameSpace__ecere__com__Class * _class, * base;
4870
4871 for(_class = ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class; _class; _class = base)
4872 {
4873 if(_class->destructionWatchOffset)
4874 {
4875 struct __ecereNameSpace__ecere__sys__OldList * watchers = (struct __ecereNameSpace__ecere__sys__OldList *)((unsigned char *)instance + _class->destructionWatchOffset);
4876 struct __ecereNameSpace__ecere__com__Watcher * watcher;
4877
4878 for(watcher = (*watchers).first; watcher; watcher = watcher->next)
4879 {
4880 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete((&*watchers), watcher);
4881 break;
4882 }
4883 }
4884 for(_property = (struct __ecereNameSpace__ecere__com__Property *)_class->membersAndProperties.first; _property; _property = _property->next)
4885 {
4886 if(_property->isProperty && _property->isWatchable)
4887 {
4888 struct __ecereNameSpace__ecere__sys__OldList * watchers = (struct __ecereNameSpace__ecere__sys__OldList *)((unsigned char *)instance + _property->watcherOffset);
4889 struct __ecereNameSpace__ecere__com__Watcher * watcher;
4890
4891 for(watcher = (*watchers).first; watcher; watcher = watcher->next)
4892 if(watcher->object == object)
4893 {
4894 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete((&*watchers), watcher);
4895 break;
4896 }
4897 }
4898 }
4899 base = _class->base;
4900 if(base && base->type == 1000)
4901 base = (((void *)0));
4902 }
4903 }
4904 }
4905 }
4906
4907 struct __ecereNameSpace__ecere__com__Class * __ecereNameSpace__ecere__com__eClass_GetDesigner(struct __ecereNameSpace__ecere__com__Class * _class)
4908 {
4909 for(; _class; _class = _class->base)
4910 {
4911 if(_class->designerClass)
4912 return (struct __ecereNameSpace__ecere__com__Class *)__ecereNameSpace__ecere__com__eSystem_FindClass(_class->module, _class->designerClass);
4913 }
4914 return (((void *)0));
4915 }
4916
4917 struct __ecereNameSpace__ecere__com__Class * __ecereNameSpace__ecere__com__eInstance_GetDesigner(struct __ecereNameSpace__ecere__com__Instance * instance)
4918 {
4919 if(instance)
4920 return __ecereNameSpace__ecere__com__eClass_GetDesigner(((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class);
4921 return (((void *)0));
4922 }
4923
4924 unsigned int __ecereNameSpace__ecere__com__LocateModule(char * name, char * fileName)
4925 {
4926 return Instance_LocateModule(name, fileName);
4927 }
4928
4929 extern void __ecereNameSpace__ecere__com__InitializeDataTypes1(struct __ecereNameSpace__ecere__com__Instance * module);
4930
4931 extern void __ecereNameSpace__ecere__com__InitializeDataTypes(struct __ecereNameSpace__ecere__com__Instance * module);
4932
4933 extern double sin(struct __ecereNameSpace__ecere__com__Instance * number);
4934
4935 extern double sinh(struct __ecereNameSpace__ecere__com__Instance * number);
4936
4937 extern double cosh(struct __ecereNameSpace__ecere__com__Instance * number);
4938
4939 extern double tanh(struct __ecereNameSpace__ecere__com__Instance * number);
4940
4941 extern double sqrt(double number);
4942
4943 extern double cos(struct __ecereNameSpace__ecere__com__Instance * number);
4944
4945 extern double tan(struct __ecereNameSpace__ecere__com__Instance * number);
4946
4947 extern struct __ecereNameSpace__ecere__com__Instance * atan2(double y, double x);
4948
4949 extern struct __ecereNameSpace__ecere__com__Instance * asin(double number);
4950
4951 extern struct __ecereNameSpace__ecere__com__Instance * acos(double number);
4952
4953 extern struct __ecereNameSpace__ecere__com__Instance * atan(double number);
4954
4955 extern double pow(double number, double number2);
4956
4957 extern double fmod(double x, double y);
4958
4959 extern double fabs(double number);
4960
4961 extern double log(double number);
4962
4963 extern double log10(double number);
4964
4965 extern double ceil(double number);
4966
4967 extern double floor(double number);
4968
4969 extern double exp(double number);
4970
4971 extern void qsort(void * , unsigned int, unsigned int, int (* )(void * , void * ));
4972
4973 extern int system(const char * );
4974
4975 extern int atoi(const char * );
4976
4977 extern float atof(const char * );
4978
4979 extern int tolower(int);
4980
4981 extern int toupper(int);
4982
4983 extern unsigned int isdigit(int);
4984
4985 extern char *  getenv(const char *  name);
4986
4987 extern int rename(const char *  oldpath, const char *  newpath);
4988
4989 extern char *  strncat(char * , const char * , int n);
4990
4991 extern int strcasecmp(const char * , const char * );
4992
4993 extern int strncasecmp(const char * , const char * , int n);
4994
4995 extern int strncmp(const char * , const char * , int n);
4996
4997 extern int vsprintf(char * , const char * , __builtin_va_list);
4998
4999 extern int puts(char * );
5000
5001 extern int fputs(char * , void *  stream);
5002
5003 extern int isalnum(int c);
5004
5005 extern int isalpha(int c);
5006
5007 extern int islower(int c);
5008
5009 extern int isupper(int c);
5010
5011 extern int isprint(int c);
5012
5013 static void __ecereNameSpace__ecere__com__LoadCOM(struct __ecereNameSpace__ecere__com__Instance * module)
5014 {
5015 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;
5016 int pointerSize = force64Bits ? 8 : sizeof(void *);
5017 struct __ecereNameSpace__ecere__com__Class * applicationClass;
5018 struct __ecereNameSpace__ecere__com__Class * enumClass, * structClass, * boolClass;
5019 struct __ecereNameSpace__ecere__com__Class * moduleClass;
5020 struct __ecereNameSpace__ecere__com__Class * baseClass = __ecereNameSpace__ecere__com__eSystem_RegisterClass(0, "class", (((void *)0)), 0, 0, (((void *)0)), (((void *)0)), module, 4, 1);
5021
5022 baseClass->type = 1000;
5023 baseClass->memberOffset = 0;
5024 baseClass->offset = 0;
5025 baseClass->structSize = 0;
5026 baseClass->typeSize = 0;
5027 {
5028 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);
5029
5030 instanceClass->type = 1000;
5031 instanceClass->fixed = 0x1;
5032 instanceClass->memberOffset = 0;
5033 instanceClass->offset = 0;
5034 instanceClass->memberID = -3;
5035 instanceClass->startMemberID = -3;
5036 __ecereNameSpace__ecere__com__eClass_AddDataMember(instanceClass, "_vTbl", "int (**)()", pointerSize, pointerSize, 1);
5037 __ecereNameSpace__ecere__com__eClass_AddDataMember(instanceClass, "_class", "ecere::com::Class", pointerSize, pointerSize, 1);
5038 __ecereNameSpace__ecere__com__eClass_AddDataMember(instanceClass, "_refCount", "int", sizeof(int), sizeof(int), 1);
5039 }
5040 __ecereNameSpace__ecere__com__InitializeDataTypes1(module);
5041 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);
5042 __ecereNameSpace__ecere__com__eClass_AddClassProperty(enumClass, "enumSize", "int", (((void *)0)), __ecereNameSpace__ecere__com__GetEnumSize)->constant = 0x1;
5043 enumClass->type = 1000;
5044 (__ecereNameSpace__ecere__com__eSystem_Delete(enumClass->dataTypeString), enumClass->dataTypeString = 0);
5045 enumClass->dataTypeString = __ecereNameSpace__ecere__sys__CopyString("int");
5046 structClass = __ecereNameSpace__ecere__com__eSystem_RegisterClass(0, "struct", (((void *)0)), 0, 0, (((void *)0)), (((void *)0)), module, 4, 1);
5047 structClass->type = 1000;
5048 structClass->memberOffset = 0;
5049 structClass->offset = 0;
5050 structClass->structSize = 0;
5051 structClass->typeSize = 0;
5052 __ecereNameSpace__ecere__com__InitializeDataTypes(module);
5053 boolClass = __ecereNameSpace__ecere__com__eSystem_RegisterClass(4, "bool", "uint", 0, 0, (((void *)0)), (((void *)0)), module, 4, 1);
5054 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(boolClass, "true", (unsigned int)0x1);
5055 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(boolClass, "false", (unsigned int)0x0);
5056 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);
5057 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(moduleClass, "OnLoad", "bool()", (((void *)0)), 1);
5058 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(moduleClass, "OnUnload", "void()", (((void *)0)), 1);
5059 __ecereNameSpace__ecere__com__eClass_AddMethod(moduleClass, "Load", "Module(char * name, AccessMode importAccess)", __ecereNameSpace__ecere__com__eModule_Load, 1);
5060 __ecereNameSpace__ecere__com__eClass_AddMethod(moduleClass, "Unload", "void(Module module)", __ecereNameSpace__ecere__com__eModule_Unload, 1);
5061 __ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "application", "Application", pointerSize, pointerSize, 1);
5062 __ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "classes", "OldList", force64Bits ? 32 : sizeof(struct __ecereNameSpace__ecere__sys__OldList), pointerSize, 1);
5063 __ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "defines", "OldList", force64Bits ? 32 : sizeof(struct __ecereNameSpace__ecere__sys__OldList), pointerSize, 1);
5064 __ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "functions", "OldList", force64Bits ? 32 : sizeof(struct __ecereNameSpace__ecere__sys__OldList), pointerSize, 1);
5065 __ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "modules", "OldList", force64Bits ? 32 : sizeof(struct __ecereNameSpace__ecere__sys__OldList), pointerSize, 1);
5066 __ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "prev", "Module", pointerSize, pointerSize, 1);
5067 __ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "next", "Module", pointerSize, pointerSize, 1);
5068 __ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "name", "char *", pointerSize, pointerSize, 1);
5069 __ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "library", "void *", pointerSize, pointerSize, 1);
5070 __ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "Unload", "void *", pointerSize, pointerSize, 1);
5071 __ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "importType", "ImportType", sizeof(int), 4, 1);
5072 __ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "origImportType", "ImportType", sizeof(int), 4, 1);
5073 __ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "privateNameSpace", "NameSpace", force64Bits ? (32 + 8 + 8 + 4 * 32) : sizeof(struct __ecereNameSpace__ecere__com__NameSpace), pointerSize, 1);
5074 __ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "publicNameSpace", "NameSpace", force64Bits ? (32 + 8 + 8 + 4 * 32) : sizeof(struct __ecereNameSpace__ecere__com__NameSpace), pointerSize, 1);
5075 moduleClass->fixed = 0x1;
5076 moduleClass->count++;
5077 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);
5078 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(applicationClass, "Main", "void()", (((void *)0)), 1);
5079 __ecereNameSpace__ecere__com__eClass_AddDataMember(applicationClass, "argc", "int", sizeof(int), 4, 1);
5080 __ecereNameSpace__ecere__com__eClass_AddDataMember(applicationClass, "argv", "char **", pointerSize, pointerSize, 1);
5081 __ecereNameSpace__ecere__com__eClass_AddDataMember(applicationClass, "exitCode", "int", sizeof(int), 4, 1);
5082 __ecereNameSpace__ecere__com__eClass_AddDataMember(applicationClass, "isGUIApp", "bool", sizeof(unsigned int), 4, 1);
5083 __ecereNameSpace__ecere__com__eClass_AddDataMember(applicationClass, "allModules", "OldList", force64Bits ? 32 : sizeof(struct __ecereNameSpace__ecere__sys__OldList), pointerSize, 1);
5084 __ecereNameSpace__ecere__com__eClass_AddDataMember(applicationClass, "parsedCommand", "char *", pointerSize, pointerSize, 1);
5085 __ecereNameSpace__ecere__com__eClass_AddDataMember(applicationClass, "systemNameSpace", "NameSpace", force64Bits ? (32 + 8 + 8 + 4 * 32) : sizeof(struct __ecereNameSpace__ecere__com__NameSpace), pointerSize, 1);
5086 applicationClass->fixed = 0x1;
5087 applicationClass->count++;
5088 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("sin", "double sin(Angle number)", sin, module, 4);
5089 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("sinh", "double sinh(Angle number)", sinh, module, 4);
5090 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("cosh", "double cosh(Angle number)", cosh, module, 4);
5091 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("tanh", "double tanh(Angle number)", tanh, module, 4);
5092 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("sqrt", "double sqrt(double number)", sqrt, module, 4);
5093 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("cos", "double cos(Angle number)", cos, module, 4);
5094 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("tan", "double tan(Angle number)", tan, module, 4);
5095 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("atan2", "Angle atan2(double y, double x)", atan2, module, 4);
5096 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("asin", "Angle asin(double number)", asin, module, 4);
5097 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("acos", "Angle acos(double number)", acos, module, 4);
5098 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("atan", "Angle atan(double number)", atan, module, 4);
5099 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("pow", "double pow(double number, double number2)", pow, module, 4);
5100 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("fmod", "double fmod(double x, double y)", fmod, module, 4);
5101 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("fabs", "double fabs(double number)", fabs, module, 4);
5102 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("log", "double log(double number)", log, module, 4);
5103 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("log10", "double log10(double number)", log10, module, 4);
5104 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ceil", "double ceil(double number)", ceil, module, 4);
5105 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("floor", "double floor(double number)", floor, module, 4);
5106 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("exp", "double exp(double number)", exp, module, 4);
5107 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("qsort", "void qsort(void *, uint, uint, int (*)(void *, void *))", qsort, module, 4);
5108 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strtod", "double strtod(char*, char**)", strtod, module, 4);
5109 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strtol", "int strtol(char*, char**, int base)", strtol, module, 4);
5110 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("system", "int system(const char*)", system, module, 4);
5111 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("atoi", "int atoi(const char*)", atoi, module, 4);
5112 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("atof", "float atof(const char*)", atof, module, 4);
5113 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("tolower", "int tolower(int)", tolower, module, 4);
5114 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("toupper", "int toupper(int)", toupper, module, 4);
5115 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("isdigit", "bool isdigit(int)", isdigit, module, 4);
5116 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("memset", "void memset(void * area, byte value, uint count)", memset, module, 4);
5117 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("getenv", "char * getenv(const char * name)", getenv, module, 4);
5118 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("rename", "int rename(const char *oldpath, const char *newpath)", rename, module, 4);
5119 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strlen", "int strlen(const char *)", strlen, module, 4);
5120 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strcat", "char * strcat(char *, const char *)", strcat, module, 4);
5121 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strncat", "char * strncat(char *, const char *, int n)", strncat, module, 4);
5122 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strchr", "char * strchr(char *, int)", strchr, module, 4);
5123 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strstr", "char * strstr(char *, const char *)", strstr, module, 4);
5124 __ecereNameSpace__ecere__com__eSystem_RegisterDefine("fstrcmp", "(GetRuntimePlatform() == win32) ? strcmpi : strcmp", module, 4);
5125 __ecereNameSpace__ecere__com__eSystem_RegisterDefine("strcmpi", "strcasecmp", module, 4);
5126 __ecereNameSpace__ecere__com__eSystem_RegisterDefine("strnicmp", "strncasecmp", module, 4);
5127 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strcasecmp", "int strcasecmp(const char *, const char *)", strcasecmp, module, 4);
5128 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strncasecmp", "int strncasecmp(const char *, const char *, int n)", strncasecmp, module, 4);
5129 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strcmp", "int strcmp(const char *, const char *)", strcmp, module, 4);
5130 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strncmp", "int strncmp(const char *, const char *, int n)", strncmp, module, 4);
5131 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strlwr", "char * strlwr(char *)", strlwr, module, 4);
5132 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strupr", "char * strupr(char *)", strupr, module, 4);
5133 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strcpy", "char * strcpy(char *, const char *)", strcpy, module, 4);
5134 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strncpy", "char * strncpy(char *, const char *, int n)", strncpy, module, 4);
5135 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("memcpy", "void * memcpy(void *, const void *, uint size)", memcpy, module, 4);
5136 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("memmove", "void * memmove(void *, const void *, uint size)", memmove, module, 4);
5137 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("sprintf", "int sprintf(char *, char *, ...)", sprintf, module, 4);
5138 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("snprintf", "int sprintf(char *, int, char *, ...)", snprintf, module, 4);
5139 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("printf", "int printf(char *, ...)", printf, module, 4);
5140 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("vsprintf", "int vsprintf(char*, const char*, __builtin_va_list)", vsprintf, module, 4);
5141 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("vsnprintf", "int vsnprintf(char*, int, const char*, __builtin_va_list)", vsnprintf, module, 4);
5142 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("puts", "int puts(char *)", puts, module, 4);
5143 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("fputs", "int fputs(char *, void * stream)", fputs, module, 4);
5144 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("isalnum", "int isalnum(int c)", isalnum, module, 4);
5145 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("isspace", "int isspace(int c)", isspace, module, 4);
5146 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("isalpha", "int isalpha(int c)", isalpha, module, 4);
5147 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("islower", "int islower(int c)", islower, module, 4);
5148 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("isupper", "int isupper(int c)", isupper, module, 4);
5149 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("isprint", "int isprint(int c)", isprint, module, 4);
5150 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strtoul", "unsigned long strtoul(const char * nptr, char ** endptr, int base)", strtoul, module, 4);
5151 }
5152
5153 struct __ecereNameSpace__ecere__com__Instance * __ecereNameSpace__ecere__com____ecere_COM_Initialize(unsigned int guiApp, int argc, char * argv[])
5154 {
5155 struct __ecereNameSpace__ecere__com__Instance * app;
5156
5157 app = __ecereNameSpace__ecere__com___calloc(1, 428);
5158 __ecereNameSpace__ecere__com__Module_Constructor(app);
5159 ((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 300)))->systemNameSpace.classes.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
5160 ((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 300)))->systemNameSpace.defines.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
5161 ((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 300)))->systemNameSpace.functions.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
5162 ((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 300)))->systemNameSpace.nameSpaces.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
5163 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);
5164 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)app + 12)))->application = app;
5165 ((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 300)))->allModules.offset = 12 + (unsigned int)&(*((struct __ecereNameSpace__ecere__com__Module *)0)).prev;
5166 ((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 300)))->isGUIApp = guiApp;
5167 __ecereNameSpace__ecere__com__LoadCOM(app);
5168 ((struct __ecereNameSpace__ecere__com__Instance *)(char *)app)->_class = __ecereNameSpace__ecere__com__eSystem_FindClass(app, "Application");
5169 return app;
5170 }
5171
5172 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)
5173 {
5174 void * __ecereTemp1;
5175
5176 if(_class && name)
5177 {
5178 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param;
5179
5180 for(param = _class->templateParams.first; param; param = param->next)
5181 {
5182 if(!strcmp(param->name, name))
5183 return param;
5184 }
5185 param = (__ecereTemp1 = __ecereNameSpace__ecere__com__eSystem_New0(40), ((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));
5186 if(defaultArg != (((void *)0)))
5187 {
5188 param->defaultArg = *defaultArg;
5189 __ecereNameSpace__ecere__com__CopyTemplateArg(param, &param->defaultArg);
5190 }
5191 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&_class->templateParams, param);
5192 return param;
5193 }
5194 return (((void *)0));
5195 }
5196
5197 void __ecereNameSpace__ecere__com__eClass_DoneAddingTemplateParameters(struct __ecereNameSpace__ecere__com__Class * base)
5198 {
5199 if(base)
5200 {
5201 struct __ecereNameSpace__ecere__sys__OldLink * derivative;
5202 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param;
5203
5204 {
5205 void * first = base->templateParams.first;
5206 int count = base->templateParams.count;
5207
5208 base->templateParams.first = (((void *)0));
5209 base->templateParams.count = 0;
5210 __ecereNameSpace__ecere__com__FreeTemplateArgs(base);
5211 (__ecereNameSpace__ecere__com__eSystem_Delete(base->templateArgs), base->templateArgs = 0);
5212 __ecereNameSpace__ecere__com__FreeTemplatesDerivatives(base);
5213 base->templateParams.first = first;
5214 base->templateParams.count = count;
5215 }
5216 for(param = base->templateParams.first; param; param = param->next)
5217 {
5218 if(param->type == 1 && param->defaultArg.memberString)
5219 {
5220 struct __ecereNameSpace__ecere__com__Class * memberClass = base;
5221 char * colon = strstr(param->defaultArg.memberString, "::");
5222 char * memberName;
5223
5224 if(colon)
5225 {
5226 char className[1024];
5227 struct __ecereNameSpace__ecere__com__Class * sClass;
5228
5229 memcpy(className, param->defaultArg.memberString, colon - param->defaultArg.memberString);
5230 className[colon - param->defaultArg.memberString] = '\0';
5231 memberName = colon + 2;
5232 for(sClass = base; sClass; sClass = sClass->base)
5233 {
5234 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * cParam;
5235 struct __ecereNameSpace__ecere__com__Class * nextClass;
5236 int id = 0;
5237
5238 for(nextClass = sClass->base; nextClass; nextClass = nextClass->base)
5239 id += nextClass->templateParams.count;
5240 if(sClass == base || base->templateArgs)
5241 {
5242 for(cParam = sClass->templateParams.first; cParam; cParam = cParam->next)
5243 {
5244 if(cParam->type == 0 && !strcmp(cParam->name, className))
5245 strcpy(className, (sClass == base) ? cParam->defaultArg.dataTypeString : base->templateArgs[id].dataTypeString);
5246 id++;
5247 }
5248 }
5249 }
5250 memberClass = __ecereNameSpace__ecere__com__eSystem_FindClass(base->module, className);
5251 if(!memberClass)
5252 memberClass = __ecereNameSpace__ecere__com__eSystem_FindClass(((struct __ecereNameSpace__ecere__com__Module *)(((char *)base->module + 12)))->application, className);
5253 }
5254 else
5255 memberName = param->defaultArg.memberString;
5256 if(memberClass)
5257 {
5258 switch(param->memberType)
5259 {
5260 case 0:
5261 param->defaultArg.member = __ecereNameSpace__ecere__com__eClass_FindDataMember(memberClass, memberName, memberClass->module, (((void *)0)), (((void *)0)));
5262 break;
5263 case 1:
5264 param->defaultArg.method = __ecereNameSpace__ecere__com__eClass_FindMethod(memberClass, memberName, memberClass->module);
5265 break;
5266 case 2:
5267 param->defaultArg.prop = __ecereNameSpace__ecere__com__eClass_FindProperty(memberClass, memberName, memberClass->module);
5268 break;
5269 }
5270 }
5271 }
5272 }
5273 __ecereNameSpace__ecere__com__FixDerivativesBase(base, base);
5274 }
5275 }
5276
5277 static void __ecereNameSpace__ecere__com__FreeTemplatesDerivatives(struct __ecereNameSpace__ecere__com__Class * base)
5278 {
5279 struct __ecereNameSpace__ecere__sys__OldLink * derivative, * templateLink;
5280
5281 for(derivative = base->derivatives.first; derivative; derivative = derivative->next)
5282 {
5283 struct __ecereNameSpace__ecere__com__Class * _class = derivative->data;
5284
5285 if(_class->templateArgs)
5286 {
5287 __ecereNameSpace__ecere__com__FreeTemplateArgs(_class);
5288 (__ecereNameSpace__ecere__com__eSystem_Delete(_class->templateArgs), _class->templateArgs = 0);
5289 }
5290 __ecereNameSpace__ecere__com__FreeTemplatesDerivatives(_class);
5291 }
5292 for(templateLink = base->templatized.first; templateLink; templateLink = templateLink->next)
5293 {
5294 struct __ecereNameSpace__ecere__com__Class * _class = templateLink->data;
5295
5296 if(_class->templateArgs)
5297 {
5298 __ecereNameSpace__ecere__com__FreeTemplateArgs(_class);
5299 (__ecereNameSpace__ecere__com__eSystem_Delete(_class->templateArgs), _class->templateArgs = 0);
5300 }
5301 __ecereNameSpace__ecere__com__FreeTemplatesDerivatives(_class);
5302 }
5303 }
5304
5305 static const char * __ecereNameSpace__ecere__com__platformNames[4] = 
5306 {
5307 "", "win32", "linux", "apple"
5308 };
5309
5310 static const int __ecereNameSpace__ecere__com__firstPlatform = 1;
5311
5312 static struct __ecereNameSpace__ecere__com__Property * __ecereProp___ecereNameSpace__ecere__com__Platform_char__PTR_, * __ecerePropM___ecereNameSpace__ecere__com__Platform_char__PTR_;
5313
5314 static const int __ecereNameSpace__ecere__com__lastPlatform = 3;
5315
5316 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Platform;
5317
5318 int __ecereVMethodID_class_OnGetString;
5319
5320 char *  __ecereProp___ecereNameSpace__ecere__com__Platform_Get_char__PTR_(int this)
5321 {
5322 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)));
5323 }
5324
5325 int __ecereProp___ecereNameSpace__ecere__com__Platform_Set_char__PTR_(char *  value)
5326 {
5327 if(value)
5328 {
5329 int c;
5330
5331 for(c = __ecereNameSpace__ecere__com__firstPlatform; c <= __ecereNameSpace__ecere__com__lastPlatform; c++)
5332 if(!strcasecmp(value, __ecereNameSpace__ecere__com__platformNames[c]))
5333 return c;
5334 }
5335 return 0;
5336 }
5337
5338 char * __ecereMethod___ecereNameSpace__ecere__com__Platform_OnGetString(struct __ecereNameSpace__ecere__com__Class * class, int * this, char * tempString, void * fieldData, unsigned int * needClass)
5339 {
5340 if((*(this)) >= __ecereNameSpace__ecere__com__firstPlatform && (*(this)) <= __ecereNameSpace__ecere__com__lastPlatform)
5341 {
5342 if(tempString)
5343 strcpy(tempString, __ecereNameSpace__ecere__com__platformNames[*(int *)this]);
5344 return __ecereNameSpace__ecere__com__platformNames[*(int *)this];
5345 }
5346 if(tempString && tempString[0])
5347 tempString[0] = '\0';
5348 return (((void *)0));
5349 }
5350
5351 unsigned int __ecereMethod___ecereNameSpace__ecere__com__Platform_OnGetDataFromString(struct __ecereNameSpace__ecere__com__Class * class, int * this, char * string)
5352 {
5353 (*(this)) = __ecereProp___ecereNameSpace__ecere__com__Platform_Set_char__PTR_(string);
5354 return (unsigned int)*(int *)this;
5355 }
5356
5357 extern int runtimePlatform;
5358
5359 int __ecereNameSpace__ecere__com__GetRuntimePlatform()
5360 {
5361 return runtimePlatform;
5362 }
5363
5364 struct __ecereNameSpace__ecere__com__ObjectInfo
5365 {
5366 struct __ecereNameSpace__ecere__com__ObjectInfo * prev, * next;
5367 struct __ecereNameSpace__ecere__com__Instance * instance;
5368 char * name;
5369 struct __ecereNameSpace__ecere__com__Instance * instCode;
5370 unsigned int deleted;
5371 struct __ecereNameSpace__ecere__com__ObjectInfo * oClass;
5372 struct __ecereNameSpace__ecere__sys__OldList instances;
5373 struct __ecereNameSpace__ecere__com__Instance * classDefinition;
5374 unsigned int modified;
5375 } __attribute__ ((gcc_struct));
5376
5377 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__ObjectInfo;
5378
5379 static struct __ecereNameSpace__ecere__com__Property * __ecereProp___ecereNameSpace__ecere__com__DesignerBase_classDesigner, * __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_classDesigner;
5380
5381 static struct __ecereNameSpace__ecere__com__Property * __ecereProp___ecereNameSpace__ecere__com__DesignerBase_objectClass, * __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_objectClass;
5382
5383 static struct __ecereNameSpace__ecere__com__Property * __ecereProp___ecereNameSpace__ecere__com__DesignerBase_isDragging, * __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_isDragging;
5384
5385 struct __ecereNameSpace__ecere__com__DesignerBase
5386 {
5387 struct __ecereNameSpace__ecere__com__Instance * classDesigner;
5388 char * objectClass;
5389 unsigned int isDragging;
5390 } __attribute__ ((gcc_struct));
5391
5392 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__DesignerBase;
5393
5394 struct __ecereNameSpace__ecere__com__Instance * __ecereProp___ecereNameSpace__ecere__com__DesignerBase_Get_classDesigner(struct __ecereNameSpace__ecere__com__Instance * this)
5395 {
5396 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);
5397
5398 return __ecerePointer___ecereNameSpace__ecere__com__DesignerBase->classDesigner;
5399 }
5400
5401 void __ecereProp___ecereNameSpace__ecere__com__DesignerBase_Set_classDesigner(struct __ecereNameSpace__ecere__com__Instance * this, struct __ecereNameSpace__ecere__com__Instance * value)
5402 {
5403 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);
5404
5405 __ecerePointer___ecereNameSpace__ecere__com__DesignerBase->classDesigner = value;
5406 __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(this, __ecereProp___ecereNameSpace__ecere__com__DesignerBase_classDesigner), __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(this, __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_classDesigner);
5407 }
5408
5409 char *  __ecereProp___ecereNameSpace__ecere__com__DesignerBase_Get_objectClass(struct __ecereNameSpace__ecere__com__Instance * this)
5410 {
5411 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);
5412
5413 return __ecerePointer___ecereNameSpace__ecere__com__DesignerBase->objectClass;
5414 }
5415
5416 void __ecereProp___ecereNameSpace__ecere__com__DesignerBase_Set_objectClass(struct __ecereNameSpace__ecere__com__Instance * this, char *  value)
5417 {
5418 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);
5419
5420 __ecerePointer___ecereNameSpace__ecere__com__DesignerBase->objectClass = value;
5421 __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(this, __ecereProp___ecereNameSpace__ecere__com__DesignerBase_objectClass), __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(this, __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_objectClass);
5422 }
5423
5424 unsigned int __ecereProp___ecereNameSpace__ecere__com__DesignerBase_Get_isDragging(struct __ecereNameSpace__ecere__com__Instance * this)
5425 {
5426 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);
5427
5428 return __ecerePointer___ecereNameSpace__ecere__com__DesignerBase->isDragging;
5429 }
5430
5431 void __ecereProp___ecereNameSpace__ecere__com__DesignerBase_Set_isDragging(struct __ecereNameSpace__ecere__com__Instance * this, unsigned int value)
5432 {
5433 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);
5434
5435 __ecerePointer___ecereNameSpace__ecere__com__DesignerBase->isDragging = value;
5436 __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(this, __ecereProp___ecereNameSpace__ecere__com__DesignerBase_isDragging), __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(this, __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_isDragging);
5437 }
5438
5439 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__ClassDesignerBase;
5440
5441 struct __ecereNameSpace__ecere__com__Instance * __ecereNameSpace__ecere__com__activeDesigner;
5442
5443 void __ecereNameSpace__ecere__com__SetActiveDesigner(struct __ecereNameSpace__ecere__com__Instance * designer)
5444 {
5445 __ecereNameSpace__ecere__com__activeDesigner = designer;
5446 }
5447
5448 struct __ecereNameSpace__ecere__com__Instance * __ecereNameSpace__ecere__com__GetActiveDesigner()
5449 {
5450 return __ecereNameSpace__ecere__com__activeDesigner;
5451 }
5452
5453
5454
5455 unsigned int __ecereNameSpace__ecere__sys__UTF8Validate(char * source)
5456 {
5457 if(source)
5458 {
5459 int c;
5460
5461 for(c = 0; source[c]; )
5462 {
5463 unsigned char ch = source[c];
5464 unsigned int codePoint = 0;
5465 int numBytes = 1;
5466 int i;
5467 unsigned char mask = (unsigned char)0x7F;
5468
5469 if(ch & (unsigned char)0x80)
5470 {
5471 if(ch & (unsigned char)0x40)
5472 {
5473 mask >>= 2;
5474 numBytes++;
5475 if(ch & (unsigned char)0x20)
5476 {
5477 numBytes++;
5478 mask >>= 1;
5479 if(ch & (unsigned char)0x10)
5480 {
5481 if(ch & (unsigned char)0x08)
5482 return 0x0;
5483 numBytes++;
5484 mask >>= 1;
5485 }
5486 }
5487 }
5488 else
5489 return 0x0;
5490 }
5491 for(i = 0; i < numBytes && (ch = source[c]); i++, c++)
5492 {
5493 codePoint <<= 6;
5494 codePoint |= ch & mask;
5495 mask = (unsigned char)0x3F;
5496 if(i > 1)
5497 {
5498 if(!(ch & (unsigned char)0x80) || (ch & (unsigned char)0x40))
5499 return 0x0;
5500 }
5501 }
5502 if(i < numBytes)
5503 return 0x0;
5504 if(codePoint > 0x10FFFF || (codePoint >= 0xD800 && codePoint <= 0xDFFF) || (codePoint < 0x80 && numBytes > 1) || (codePoint < 0x800 && numBytes > 2) || (codePoint < 0x10000 && numBytes > 3))
5505 return 0x0;
5506 }
5507 }
5508 return 0x1;
5509 }
5510
5511 int __ecereNameSpace__ecere__sys__ISO8859_1toUTF8(char * source, char * dest, int max)
5512 {
5513 int c;
5514 int d = 0;
5515
5516 for(c = 0; source[c]; c++)
5517 {
5518 unsigned int ch = ((unsigned char *)source)[c];
5519
5520 if(ch < 0x80)
5521 {
5522 if(d + 1 >= max)
5523 break;
5524 dest[d++] = (char)ch;
5525 }
5526 else if(ch < 0x800)
5527 {
5528 if(d + 2 >= max)
5529 break;
5530 dest[d++] = (unsigned char)0xC0 | (unsigned char)((ch & 0x7C0) >> 6);
5531 dest[d++] = (unsigned char)0x80 | (unsigned char)(ch & 0x03F);
5532 }
5533 else if(ch < 0x10000)
5534 {
5535 if(d + 3 >= max)
5536 break;
5537 dest[d++] = (unsigned char)0xE0 | (unsigned char)((ch & 0xF000) >> 12);
5538 dest[d++] = (unsigned char)0x80 | (unsigned char)((ch & 0xFC0) >> 6);
5539 dest[d++] = (unsigned char)0x80 | (unsigned char)(ch & 0x03F);
5540 }
5541 else
5542 {
5543 if(d + 4 >= max)
5544 break;
5545 dest[d++] = (unsigned char)0xF0 | (unsigned char)((ch & 0x1C0000) >> 18);
5546 dest[d++] = (unsigned char)0x80 | (unsigned char)((ch & 0x3F000) >> 12);
5547 dest[d++] = (unsigned char)0x80 | (unsigned char)((ch & 0xFC0) >> 6);
5548 dest[d++] = (unsigned char)0x80 | (unsigned char)(ch & 0x03F);
5549 }
5550 }
5551 dest[d] = (char)0;
5552 return d;
5553 }
5554
5555 char * __ecereNameSpace__ecere__sys__UTF16toUTF8(unsigned short * source)
5556 {
5557 int c;
5558 int d = 0;
5559 int len;
5560 char * dest;
5561 unsigned short u16;
5562 unsigned int invert = 0x0;
5563
5564 for(len = 0; source[len]; len++)
5565 ;
5566 dest = __ecereNameSpace__ecere__com__eSystem_New(sizeof(char) * (len * 3 + 1));
5567 for(c = 0; (u16 = source[c]); c++)
5568 {
5569 unsigned int ch;
5570
5571 if(!c && (u16 == (unsigned short)0xFFFE || u16 == (unsigned short)0xFEFF))
5572 {
5573 if(u16 == (unsigned short)0xFFFE)
5574 invert = 0x1;
5575 continue;
5576 }
5577 if(invert)
5578 {
5579 u16 = ((u16 & (unsigned short)0xFF00) >> (unsigned short)8) | ((u16 & (unsigned short)0x00FF) << (unsigned short)8);
5580 }
5581 if(u16 < (unsigned short)0xD800 || u16 > (unsigned short)0xDBFF)
5582 ch = u16;
5583 else
5584 ch = (u16 << 10) + source[c++] + (0x10000 - (0xD800 << 10) - 0xDC00);
5585 if(ch < 0x80)
5586 {
5587 dest[d++] = (char)ch;
5588 }
5589 else if(ch < 0x800)
5590 {
5591 dest[d++] = (unsigned char)0xC0 | (unsigned char)((ch & 0x7C0) >> 6);
5592 dest[d++] = (unsigned char)0x80 | (unsigned char)(ch & 0x03F);
5593 }
5594 else if(ch < 0x10000)
5595 {
5596 dest[d++] = (unsigned char)0xE0 | (unsigned char)((ch & 0xF000) >> 12);
5597 dest[d++] = (unsigned char)0x80 | (unsigned char)((ch & 0xFC0) >> 6);
5598 dest[d++] = (unsigned char)0x80 | (unsigned char)(ch & 0x03F);
5599 }
5600 else
5601 {
5602 dest[d++] = (unsigned char)0xF0 | (unsigned char)((ch & 0x1C0000) >> 18);
5603 dest[d++] = (unsigned char)0x80 | (unsigned char)((ch & 0x3F000) >> 12);
5604 dest[d++] = (unsigned char)0x80 | (unsigned char)((ch & 0xFC0) >> 6);
5605 dest[d++] = (unsigned char)0x80 | (unsigned char)(ch & 0x03F);
5606 }
5607 }
5608 dest[d] = (char)0;
5609 dest = __ecereNameSpace__ecere__com__eSystem_Renew(dest, sizeof(char) * (d + 1));
5610 return dest;
5611 }
5612
5613 int __ecereNameSpace__ecere__sys__UTF16toUTF8Buffer(unsigned short * source, unsigned char * dest, int max)
5614 {
5615 int c;
5616 int d = 0;
5617 unsigned short u16;
5618
5619 for(c = 0; (u16 = source[c]); c++)
5620 {
5621 unsigned int ch;
5622
5623 if(u16 < (unsigned short)0xD800 || u16 > (unsigned short)0xDBFF)
5624 ch = u16;
5625 else
5626 ch = (u16 << 10) + source[c++] + (0x10000 - (0xD800 << 10) - 0xDC00);
5627 if(ch < 0x80)
5628 {
5629 if(d + 1 >= max)
5630 break;
5631 dest[d++] = (char)ch;
5632 }
5633 else if(ch < 0x800)
5634 {
5635 if(d + 2 >= max)
5636 break;
5637 dest[d++] = (unsigned char)0xC0 | (unsigned char)((ch & 0x7C0) >> 6);
5638 dest[d++] = (unsigned char)0x80 | (unsigned char)(ch & 0x03F);
5639 }
5640 else if(ch < 0x10000)
5641 {
5642 if(d + 3 >= max)
5643 break;
5644 dest[d++] = (unsigned char)0xE0 | (unsigned char)((ch & 0xF000) >> 12);
5645 dest[d++] = (unsigned char)0x80 | (unsigned char)((ch & 0xFC0) >> 6);
5646 dest[d++] = (unsigned char)0x80 | (unsigned char)(ch & 0x03F);
5647 }
5648 else
5649 {
5650 if(d + 4 >= max)
5651 break;
5652 dest[d++] = (unsigned char)0xF0 | (unsigned char)((ch & 0x1C0000) >> 18);
5653 dest[d++] = (unsigned char)0x80 | (unsigned char)((ch & 0x3F000) >> 12);
5654 dest[d++] = (unsigned char)0x80 | (unsigned char)((ch & 0xFC0) >> 6);
5655 dest[d++] = (unsigned char)0x80 | (unsigned char)(ch & 0x03F);
5656 }
5657 }
5658 dest[d] = (unsigned char)0;
5659 return d;
5660 }
5661
5662 unsigned int __ecereNameSpace__ecere__sys__UTF8GetChar(char * string, int * numBytes)
5663 {
5664 unsigned int ch;
5665 unsigned char b = ((unsigned char *)string)[0];
5666 int i;
5667 unsigned char mask = (unsigned char)0x7F;
5668 int nb = 1;
5669
5670 ch = 0;
5671 if(b & (unsigned char)0x80)
5672 {
5673 if(b & (unsigned char)0x40)
5674 {
5675 mask >>= 2;
5676 nb++;
5677 if(b & (unsigned char)0x20)
5678 {
5679 nb++;
5680 mask >>= 1;
5681 if(b & (unsigned char)0x10)
5682 {
5683 if(b & (unsigned char)0x08)
5684 {
5685 nb = 0;
5686 }
5687 nb++;
5688 mask >>= 1;
5689 }
5690 }
5691 }
5692 else
5693 nb = 0;
5694 }
5695 for(i = 0; i < nb; i++)
5696 {
5697 ch <<= 6;
5698 ch |= (b = ((unsigned char *)string)[i]) & mask;
5699 mask = (unsigned char)0x3F;
5700 if(i > 1 && (!(b & (unsigned char)0x80) || (b & (unsigned char)0x40)))
5701 {
5702 nb = 0;
5703 ch = 0;
5704 }
5705 }
5706 if(i < nb || ch > 0x10FFFF || (ch >= 0xD800 && ch <= 0xDFFF) || (ch < 0x80 && nb > 1) || (ch < 0x800 && nb > 2) || (ch < 0x10000 && nb > 3))
5707 {
5708 ch = 0;
5709 nb = 0;
5710 }
5711 if(numBytes)
5712 *numBytes = nb;
5713 return ch;
5714 }
5715
5716 int __ecereNameSpace__ecere__sys__UTF8toUTF16Buffer(char * source, unsigned short * dest, int max)
5717 {
5718 if(source)
5719 {
5720 int c;
5721 int d = 0;
5722
5723 for(c = 0; source[c]; )
5724 {
5725 unsigned char ch = source[c];
5726 unsigned int codePoint = 0;
5727 int numBytes = 1;
5728 int i;
5729 unsigned char mask = (unsigned char)0x7F;
5730
5731 if(ch & (unsigned char)0x80 && ch & (unsigned char)0x40)
5732 {
5733 mask >>= 2;
5734 numBytes++;
5735 if(ch & (unsigned char)0x20)
5736 {
5737 numBytes++;
5738 mask >>= 1;
5739 if(ch & (unsigned char)0x10)
5740 {
5741 numBytes++;
5742 mask >>= 1;
5743 }
5744 }
5745 }
5746 for(i = 0; i < numBytes; i++)
5747 {
5748 codePoint <<= 6;
5749 codePoint |= source[c++] & mask;
5750 mask = (unsigned char)0x3F;
5751 }
5752 if(codePoint > 0xFFFF)
5753 {
5754 unsigned short lead = (unsigned short)((0xD800 - (0x10000 >> 10)) + (codePoint >> 10));
5755 unsigned short trail = (unsigned short)0xDC00 + (unsigned short)(codePoint & 0x3FF);
5756
5757 if(d >= max - 1)
5758 break;
5759 dest[d++] = lead;
5760 dest[d++] = trail;
5761 }
5762 else
5763 {
5764 if(d >= max)
5765 break;
5766 dest[d++] = (unsigned short)codePoint;
5767 }
5768 }
5769 dest[d] = (unsigned short)0;
5770 return d;
5771 }
5772 return 0;
5773 }
5774
5775 int __ecereNameSpace__ecere__sys__UTF32toUTF8Len(unsigned int * source, int count, unsigned char * dest, int max)
5776 {
5777 int c;
5778 int d = 0;
5779 unsigned int ch;
5780
5781 for(c = 0; c < count && (ch = source[c]); c++)
5782 {
5783 if(ch < 0x80)
5784 {
5785 if(d + 1 >= max)
5786 break;
5787 dest[d++] = (char)ch;
5788 }
5789 else if(ch < 0x800)
5790 {
5791 if(d + 2 >= max)
5792 break;
5793 dest[d++] = (unsigned char)0xC0 | (unsigned char)((ch & 0x7C0) >> 6);
5794 dest[d++] = (unsigned char)0x80 | (unsigned char)(ch & 0x03F);
5795 }
5796 else if(ch < 0x10000)
5797 {
5798 if(d + 3 >= max)
5799 break;
5800 dest[d++] = (unsigned char)0xE0 | (unsigned char)((ch & 0xF000) >> 12);
5801 dest[d++] = (unsigned char)0x80 | (unsigned char)((ch & 0xFC0) >> 6);
5802 dest[d++] = (unsigned char)0x80 | (unsigned char)(ch & 0x03F);
5803 }
5804 else
5805 {
5806 if(d + 4 >= max)
5807 break;
5808 dest[d++] = (unsigned char)0xF0 | (unsigned char)((ch & 0x1C0000) >> 18);
5809 dest[d++] = (unsigned char)0x80 | (unsigned char)((ch & 0x3F000) >> 12);
5810 dest[d++] = (unsigned char)0x80 | (unsigned char)((ch & 0xFC0) >> 6);
5811 dest[d++] = (unsigned char)0x80 | (unsigned char)(ch & 0x03F);
5812 }
5813 }
5814 dest[d] = (unsigned char)0;
5815 return d;
5816 }
5817
5818 unsigned short * __ecereNameSpace__ecere__sys__UTF8toUTF16(char * source, int * wordCount)
5819 {
5820 if(source)
5821 {
5822 int len = strlen(source);
5823 unsigned short * dest = __ecereNameSpace__ecere__com__eSystem_New(sizeof(unsigned short) * (len + 1));
5824 int c;
5825 int d = 0;
5826
5827 for(c = 0; source[c]; )
5828 {
5829 unsigned char ch = source[c];
5830 unsigned int codePoint = 0;
5831 int numBytes = 1;
5832 int i;
5833 unsigned char mask = (unsigned char)0x7F;
5834
5835 if(ch & (unsigned char)0x80 && ch & (unsigned char)0x40)
5836 {
5837 mask >>= 2;
5838 numBytes++;
5839 if(ch & (unsigned char)0x20)
5840 {
5841 numBytes++;
5842 mask >>= 1;
5843 if(ch & (unsigned char)0x10)
5844 {
5845 numBytes++;
5846 mask >>= 1;
5847 }
5848 }
5849 }
5850 for(i = 0; i < numBytes; i++)
5851 {
5852 codePoint <<= 6;
5853 codePoint |= source[c++] & mask;
5854 mask = (unsigned char)0x3F;
5855 }
5856 if(codePoint > 0xFFFF)
5857 {
5858 unsigned short lead = (unsigned short)((0xD800 - (0x10000 >> 10)) + (codePoint >> 10));
5859 unsigned short trail = (unsigned short)0xDC00 + (unsigned short)(codePoint & 0x3FF);
5860
5861 dest[d++] = lead;
5862 dest[d++] = trail;
5863 }
5864 else
5865 {
5866 dest[d++] = (unsigned short)codePoint;
5867 }
5868 }
5869 dest[d] = (unsigned short)0;
5870 if(wordCount)
5871 *wordCount = d;
5872 return dest;
5873 }
5874 return (((void *)0));
5875 }
5876
5877 int __ecereVMethodID___ecereNameSpace__ecere__com__DesignerBase_FindObject;
5878
5879 int __ecereVMethodID___ecereNameSpace__ecere__com__DesignerBase_RenameObject;
5880
5881 int __ecereVMethodID___ecereNameSpace__ecere__com__DesignerBase_SelectObjectFromDesigner;
5882
5883 int __ecereVMethodID___ecereNameSpace__ecere__com__DesignerBase_CodeAddObject;
5884
5885 int __ecereVMethodID___ecereNameSpace__ecere__com__DesignerBase_SheetAddObject;
5886
5887 int __ecereVMethodID___ecereNameSpace__ecere__com__DesignerBase_AddToolBoxClass;
5888
5889 int __ecereVMethodID___ecereNameSpace__ecere__com__DesignerBase_AddDefaultMethod;
5890
5891 int __ecereVMethodID___ecereNameSpace__ecere__com__DesignerBase_DeleteObject;
5892
5893 int __ecereVMethodID___ecereNameSpace__ecere__com__DesignerBase_ObjectContainsCode;
5894
5895 int __ecereVMethodID___ecereNameSpace__ecere__com__DesignerBase_ModifyCode;
5896
5897 int __ecereVMethodID___ecereNameSpace__ecere__com__DesignerBase_UpdateProperties;
5898
5899 int __ecereVMethodID___ecereNameSpace__ecere__com__ClassDesignerBase_Reset;
5900
5901 int __ecereVMethodID___ecereNameSpace__ecere__com__ClassDesignerBase_AddObject;
5902
5903 int __ecereVMethodID___ecereNameSpace__ecere__com__ClassDesignerBase_SelectObject;
5904
5905 int __ecereVMethodID___ecereNameSpace__ecere__com__ClassDesignerBase_ListToolBoxClasses;
5906
5907 int __ecereVMethodID___ecereNameSpace__ecere__com__ClassDesignerBase_PrepareTestObject;
5908
5909 int __ecereVMethodID___ecereNameSpace__ecere__com__ClassDesignerBase_CreateObject;
5910
5911 int __ecereVMethodID___ecereNameSpace__ecere__com__ClassDesignerBase_PostCreateObject;
5912
5913 int __ecereVMethodID___ecereNameSpace__ecere__com__ClassDesignerBase_DroppedObject;
5914
5915 int __ecereVMethodID___ecereNameSpace__ecere__com__ClassDesignerBase_DestroyObject;
5916
5917 int __ecereVMethodID___ecereNameSpace__ecere__com__ClassDesignerBase_FixProperty;
5918
5919 int __ecereVMethodID___ecereNameSpace__ecere__com__ClassDesignerBase_CreateNew;
5920
5921 void __ecereRegisterModule_instance(struct __ecereNameSpace__ecere__com__Instance * module)
5922 {
5923 struct __ecereNameSpace__ecere__com__Class * class;
5924
5925 __ecereNameSpace__ecere__com__eSystem_RegisterDefine("ecere::com::null", "((void *)0)", module, 4);
5926 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(3, "ecere::com::unichar", "uint", 0, 0, 0, 0, module, 4, 1);
5927 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
5928 __ecereClass___ecereNameSpace__ecere__com__unichar = class;
5929 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "OnGetString", 0, __ecereMethod___ecereNameSpace__ecere__com__unichar_OnGetString, 1);
5930 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "OnGetDataFromString", 0, __ecereMethod___ecereNameSpace__ecere__com__unichar_OnGetDataFromString, 1);
5931 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::Property", 0, sizeof(struct __ecereNameSpace__ecere__com__Property), 0, 0, 0, module, 4, 1);
5932 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
5933 __ecereClass___ecereNameSpace__ecere__com__Property = class;
5934 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "prev", "ecere::com::Property", 4, 4, 1);
5935 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "next", "ecere::com::Property", 4, 4, 1);
5936 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "name", "char *", 4, 4, 1);
5937 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "isProperty", "bool", 4, 4, 1);
5938 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "memberAccess", "ecere::com::AccessMode", 4, 4, 1);
5939 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "id", "int", 4, 4, 1);
5940 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "_class", "ecere::com::Class", 4, 4, 1);
5941 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataTypeString", "char *", 4, 4, 1);
5942 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataTypeClass", "ecere::com::Class", 4, 4, 1);
5943 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataType", "Type", 4, 4, 1);
5944 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "Set", "void( *)()", 4, 4, 1);
5945 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "Get", "int( *)()", 4, 4, 1);
5946 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "IsSet", "bool( *)()", 4, 4, 1);
5947 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "data", "void *", 4, 4, 1);
5948 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "symbol", "void *", 4, 4, 1);
5949 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "vid", "int", 4, 4, 1);
5950 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "conversion", "bool", 4, 4, 1);
5951 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "watcherOffset", "uint", 4, 4, 1);
5952 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "category", "char *", 4, 4, 1);
5953 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "compiled", "bool", 4, 4, 1);
5954 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "selfWatchable", "bool", 4, 4, 1);
5955 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "isWatchable", "bool", 4, 4, 1);
5956 if(class)
5957 class->fixed = (unsigned int)1;
5958 if(class)
5959 class->noExpansion = (unsigned int)1;
5960 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::MemoryGuard_PushLoc", "void ecere::com::MemoryGuard_PushLoc(char * loc)", __ecereNameSpace__ecere__com__MemoryGuard_PushLoc, module, 4);
5961 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::MemoryGuard_PopLoc", "void ecere::com::MemoryGuard_PopLoc(void)", __ecereNameSpace__ecere__com__MemoryGuard_PopLoc, module, 4);
5962 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::BTNamedLink", 0, sizeof(struct __ecereNameSpace__ecere__com__BTNamedLink), 0, 0, 0, module, 4, 1);
5963 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
5964 __ecereClass___ecereNameSpace__ecere__com__BTNamedLink = class;
5965 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "name", "char *", 4, 4, 1);
5966 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "parent", "ecere::com::BTNamedLink", 4, 4, 1);
5967 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "left", "ecere::com::BTNamedLink", 4, 4, 1);
5968 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "right", "ecere::com::BTNamedLink", 4, 4, 1);
5969 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "depth", "int", 4, 4, 1);
5970 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "data", "void *", 4, 4, 1);
5971 if(class)
5972 class->fixed = (unsigned int)1;
5973 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::SelfWatcher", 0, sizeof(struct __ecereNameSpace__ecere__com__SelfWatcher), 0, 0, 0, module, 2, 1);
5974 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
5975 __ecereClass___ecereNameSpace__ecere__com__SelfWatcher = class;
5976 if(class)
5977 class->fixed = (unsigned int)1;
5978 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(4, "ecere::com::AccessMode", 0, 0, 0, 0, 0, module, 4, 1);
5979 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
5980 __ecereClass___ecereNameSpace__ecere__com__AccessMode = class;
5981 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "defaultAccess", 0);
5982 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "publicAccess", 1);
5983 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "privateAccess", 2);
5984 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "staticAccess", 3);
5985 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "baseSystemAccess", 4);
5986 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::SubModule", 0, sizeof(struct __ecereNameSpace__ecere__com__SubModule), 0, 0, 0, module, 4, 1);
5987 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
5988 __ecereClass___ecereNameSpace__ecere__com__SubModule = class;
5989 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "prev", "ecere::com::SubModule", 4, 4, 1);
5990 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "next", "ecere::com::SubModule", 4, 4, 1);
5991 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "module", "ecere::com::Module", 4, 4, 1);
5992 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "importMode", "ecere::com::AccessMode", 4, 4, 1);
5993 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(4, "ecere::com::DataMemberType", 0, 0, 0, 0, 0, module, 4, 1);
5994 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
5995 __ecereClass___ecereNameSpace__ecere__com__DataMemberType = class;
5996 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "normalMember", 0);
5997 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "unionMember", 1);
5998 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "structMember", 2);
5999 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(4, "ecere::com::ClassType", 0, 0, 0, 0, 0, module, 4, 1);
6000 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6001 __ecereClass___ecereNameSpace__ecere__com__ClassType = class;
6002 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "normalClass", 0);
6003 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "structClass", 1);
6004 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "bitClass", 2);
6005 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "unitClass", 3);
6006 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "enumClass", 4);
6007 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "noHeadClass", 5);
6008 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "unionClass", 6);
6009 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "systemClass", 1000);
6010 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::Class", 0, sizeof(struct __ecereNameSpace__ecere__com__Class), 0, 0, 0, module, 4, 1);
6011 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6012 __ecereClass___ecereNameSpace__ecere__com__Class = class;
6013 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "OnFree", 0, __ecereMethod___ecereNameSpace__ecere__com__Class_OnFree, 1);
6014 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "OnGetString", 0, __ecereMethod___ecereNameSpace__ecere__com__Class_OnGetString, 1);
6015 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "OnGetDataFromString", 0, __ecereMethod___ecereNameSpace__ecere__com__Class_OnGetDataFromString, 1);
6016 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "OnSerialize", 0, __ecereMethod___ecereNameSpace__ecere__com__Class_OnSerialize, 1);
6017 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "OnUnserialize", 0, __ecereMethod___ecereNameSpace__ecere__com__Class_OnUnserialize, 1);
6018 __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);
6019 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "prev", "ecere::com::Class", 4, 4, 1);
6020 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "next", "ecere::com::Class", 4, 4, 1);
6021 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "name", "char *", 4, 4, 1);
6022 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "offset", "int", 4, 4, 1);
6023 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "structSize", "int", 4, 4, 1);
6024 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "_vTbl", "int( * *)()", 4, 4, 1);
6025 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "vTblSize", "int", 4, 4, 1);
6026 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "Constructor", "int( *)(ecere::com::Instance)", 4, 4, 1);
6027 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "Destructor", "void( *)(ecere::com::Instance)", 4, 4, 1);
6028 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "offsetClass", "int", 4, 4, 1);
6029 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "sizeClass", "int", 4, 4, 1);
6030 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "base", "ecere::com::Class", 4, 4, 1);
6031 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "methods", "ecere::sys::BinaryTree", 16, 4, 1);
6032 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "members", "ecere::sys::BinaryTree", 16, 4, 1);
6033 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "prop", "ecere::sys::BinaryTree", 16, 4, 1);
6034 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "membersAndProperties", "ecere::sys::OldList", 20, 4, 1);
6035 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "classProperties", "ecere::sys::BinaryTree", 16, 4, 1);
6036 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "derivatives", "ecere::sys::OldList", 20, 4, 1);
6037 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "memberID", "int", 4, 4, 1);
6038 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "startMemberID", "int", 4, 4, 1);
6039 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "type", "ecere::com::ClassType", 4, 4, 1);
6040 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "module", "ecere::com::Module", 4, 4, 1);
6041 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "nameSpace", "ecere::com::NameSpace *", 4, 4, 1);
6042 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataTypeString", "char *", 4, 4, 1);
6043 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataType", "Type", 4, 4, 1);
6044 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "typeSize", "int", 4, 4, 1);
6045 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "defaultAlignment", "int", 4, 4, 1);
6046 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "Initialize", "void( *)()", 4, 4, 1);
6047 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "memberOffset", "int", 4, 4, 1);
6048 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "selfWatchers", "ecere::sys::OldList", 20, 4, 1);
6049 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "designerClass", "char *", 4, 4, 1);
6050 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "noExpansion", "bool", 4, 4, 1);
6051 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "defaultProperty", "char *", 4, 4, 1);
6052 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "comRedefinition", "bool", 4, 4, 1);
6053 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "count", "int", 4, 4, 1);
6054 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "isRemote", "bool", 4, 4, 1);
6055 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "internalDecl", "bool", 4, 4, 1);
6056 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "data", "void *", 4, 4, 1);
6057 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "computeSize", "bool", 4, 4, 1);
6058 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "structAlignment", "int", 4, 4, 1);
6059 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "destructionWatchOffset", "int", 4, 4, 1);
6060 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "fixed", "bool", 4, 4, 1);
6061 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "delayedCPValues", "ecere::sys::OldList", 20, 4, 1);
6062 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "inheritanceAccess", "ecere::com::AccessMode", 4, 4, 1);
6063 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "fullName", "char *", 4, 4, 1);
6064 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "symbol", "void *", 4, 4, 1);
6065 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "conversions", "ecere::sys::OldList", 20, 4, 1);
6066 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "templateParams", "ecere::sys::OldList", 20, 4, 1);
6067 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "templateArgs", "ecere::com::ClassTemplateArgument *", 4, 4, 1);
6068 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "templateClass", "ecere::com::Class", 4, 4, 1);
6069 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "templatized", "ecere::sys::OldList", 20, 4, 1);
6070 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "numParams", "int", 4, 4, 1);
6071 if(class)
6072 class->fixed = (unsigned int)1;
6073 if(class)
6074 class->noExpansion = (unsigned int)1;
6075 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(4, "ecere::com::TemplateParameterType", 0, 0, 0, 0, 0, module, 4, 1);
6076 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6077 __ecereClass___ecereNameSpace__ecere__com__TemplateParameterType = class;
6078 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "type", 0);
6079 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "identifier", 1);
6080 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "expression", 2);
6081 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(4, "ecere::com::TemplateMemberType", 0, 0, 0, 0, 0, module, 4, 1);
6082 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6083 __ecereClass___ecereNameSpace__ecere__com__TemplateMemberType = class;
6084 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "dataMember", 0);
6085 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "method", 1);
6086 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "prop", 2);
6087 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(1, "ecere::com::ClassTemplateArgument", 0, sizeof(struct __ecereNameSpace__ecere__com__ClassTemplateArgument), 0, 0, 0, module, 4, 1);
6088 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6089 __ecereClass___ecereNameSpace__ecere__com__ClassTemplateArgument = class;
6090 {
6091 struct __ecereNameSpace__ecere__com__DataMember * dataMember0 = __ecereNameSpace__ecere__com__eMember_New(1, 1);
6092
6093 {
6094 struct __ecereNameSpace__ecere__com__DataMember * dataMember1 = __ecereNameSpace__ecere__com__eMember_New(2, 1);
6095
6096 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember1, "dataTypeString", "char *", 4, 4, 1);
6097 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember1, "dataTypeClass", "ecere::com::Class", 4, 4, 1);
6098 __ecereNameSpace__ecere__com__eMember_AddMember(dataMember0, dataMember1);
6099 }
6100 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember0, "expression", "ecere::com::DataValue", 8, 8, 1);
6101 {
6102 struct __ecereNameSpace__ecere__com__DataMember * dataMember1 = __ecereNameSpace__ecere__com__eMember_New(2, 1);
6103
6104 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember1, "memberString", "char *", 4, 4, 1);
6105 {
6106 struct __ecereNameSpace__ecere__com__DataMember * dataMember2 = __ecereNameSpace__ecere__com__eMember_New(1, 1);
6107
6108 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember2, "member", "ecere::com::DataMember", 4, 4, 1);
6109 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember2, "prop", "ecere::com::Property", 4, 4, 1);
6110 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember2, "method", "ecere::com::Method", 4, 4, 1);
6111 __ecereNameSpace__ecere__com__eMember_AddMember(dataMember1, dataMember2);
6112 }
6113 __ecereNameSpace__ecere__com__eMember_AddMember(dataMember0, dataMember1);
6114 }
6115 __ecereNameSpace__ecere__com__eClass_AddMember(class, dataMember0);
6116 }
6117 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::ClassTemplateParameter", 0, sizeof(struct __ecereNameSpace__ecere__com__ClassTemplateParameter), 0, 0, 0, module, 4, 1);
6118 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6119 __ecereClass___ecereNameSpace__ecere__com__ClassTemplateParameter = class;
6120 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "prev", "ecere::com::ClassTemplateParameter", 4, 4, 1);
6121 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "next", "ecere::com::ClassTemplateParameter", 4, 4, 1);
6122 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "name", "char *", 4, 4, 1);
6123 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "type", "ecere::com::TemplateParameterType", 4, 4, 1);
6124 {
6125 struct __ecereNameSpace__ecere__com__DataMember * dataMember0 = __ecereNameSpace__ecere__com__eMember_New(1, 1);
6126
6127 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember0, "dataTypeString", "char *", 4, 4, 1);
6128 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember0, "memberType", "ecere::com::TemplateMemberType", 4, 4, 1);
6129 __ecereNameSpace__ecere__com__eClass_AddMember(class, dataMember0);
6130 }
6131 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "defaultArg", "ecere::com::ClassTemplateArgument", 8, 8, 1);
6132 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "param", "void *", 4, 4, 1);
6133 if(class)
6134 class->fixed = (unsigned int)1;
6135 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(4, "ecere::com::MethodType", 0, 0, 0, 0, 0, module, 4, 1);
6136 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6137 __ecereClass___ecereNameSpace__ecere__com__MethodType = class;
6138 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "normalMethod", 0);
6139 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "virtualMethod", 1);
6140 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::Method", 0, sizeof(struct __ecereNameSpace__ecere__com__Method), 0, 0, 0, module, 4, 1);
6141 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6142 __ecereClass___ecereNameSpace__ecere__com__Method = class;
6143 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "name", "char *", 4, 4, 1);
6144 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "parent", "ecere::com::Method", 4, 4, 1);
6145 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "left", "ecere::com::Method", 4, 4, 1);
6146 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "right", "ecere::com::Method", 4, 4, 1);
6147 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "depth", "int", 4, 4, 1);
6148 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "function", "int( *)()", 4, 4, 1);
6149 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "vid", "int", 4, 4, 1);
6150 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "type", "ecere::com::MethodType", 4, 4, 1);
6151 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "_class", "ecere::com::Class", 4, 4, 1);
6152 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "symbol", "void *", 4, 4, 1);
6153 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataTypeString", "char *", 4, 4, 1);
6154 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataType", "Type", 4, 4, 1);
6155 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "memberAccess", "ecere::com::AccessMode", 4, 4, 1);
6156 if(class)
6157 class->fixed = (unsigned int)1;
6158 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(4, "ecere::com::ImportType", 0, 0, 0, 0, 0, module, 4, 1);
6159 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6160 __ecereClass___ecereNameSpace__ecere__com__ImportType = class;
6161 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "normalImport", 0);
6162 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "staticImport", 1);
6163 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "remoteImport", 2);
6164 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "preDeclImport", 3);
6165 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "comCheckImport", 4);
6166 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(1, "ecere::com::NameSpace", 0, sizeof(struct __ecereNameSpace__ecere__com__NameSpace), 0, 0, 0, module, 4, 1);
6167 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6168 __ecereClass___ecereNameSpace__ecere__com__NameSpace = class;
6169 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "name", "char *", 4, 4, 1);
6170 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "btParent", "ecere::com::NameSpace *", 4, 4, 1);
6171 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "left", "ecere::com::NameSpace *", 4, 4, 1);
6172 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "right", "ecere::com::NameSpace *", 4, 4, 1);
6173 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "depth", "int", 4, 4, 1);
6174 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "parent", "ecere::com::NameSpace *", 4, 4, 1);
6175 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "nameSpaces", "ecere::sys::BinaryTree", 16, 4, 1);
6176 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "classes", "ecere::sys::BinaryTree", 16, 4, 1);
6177 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "defines", "ecere::sys::BinaryTree", 16, 4, 1);
6178 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "functions", "ecere::sys::BinaryTree", 16, 4, 1);
6179 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(1, "ecere::com::DataValue", 0, sizeof(struct __ecereNameSpace__ecere__com__DataValue), 0, 0, 0, module, 4, 1);
6180 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6181 __ecereClass___ecereNameSpace__ecere__com__DataValue = class;
6182 {
6183 struct __ecereNameSpace__ecere__com__DataMember * dataMember0 = __ecereNameSpace__ecere__com__eMember_New(1, 1);
6184
6185 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember0, "c", "char", 1, 1, 1);
6186 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember0, "uc", "byte", 1, 1, 1);
6187 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember0, "s", "short", 2, 2, 1);
6188 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember0, "us", "uint16", 2, 2, 1);
6189 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember0, "i", "int", 4, 4, 1);
6190 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember0, "ui", "uint", 4, 4, 1);
6191 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember0, "p", "void *", 4, 4, 1);
6192 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember0, "f", "float", 4, 4, 1);
6193 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember0, "d", "double", 8, 8, 1);
6194 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember0, "i64", "int64", 8, 8, 1);
6195 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember0, "ui64", "uint64", 8, 8, 1);
6196 __ecereNameSpace__ecere__com__eClass_AddMember(class, dataMember0);
6197 }
6198 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::DataMember", 0, sizeof(struct __ecereNameSpace__ecere__com__DataMember), 0, 0, 0, module, 4, 1);
6199 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6200 __ecereClass___ecereNameSpace__ecere__com__DataMember = class;
6201 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "prev", "ecere::com::DataMember", 4, 4, 1);
6202 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "next", "ecere::com::DataMember", 4, 4, 1);
6203 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "name", "char *", 4, 4, 1);
6204 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "isProperty", "bool", 4, 4, 1);
6205 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "memberAccess", "ecere::com::AccessMode", 4, 4, 1);
6206 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "id", "int", 4, 4, 1);
6207 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "_class", "ecere::com::Class", 4, 4, 1);
6208 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataTypeString", "char *", 4, 4, 1);
6209 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataTypeClass", "ecere::com::Class", 4, 4, 1);
6210 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataType", "Type", 4, 4, 1);
6211 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "type", "ecere::com::DataMemberType", 4, 4, 1);
6212 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "offset", "int", 4, 4, 1);
6213 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "memberID", "int", 4, 4, 1);
6214 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "members", "ecere::sys::OldList", 20, 4, 1);
6215 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "membersAlpha", "ecere::sys::BinaryTree", 16, 4, 1);
6216 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "memberOffset", "int", 4, 4, 1);
6217 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "structAlignment", "int", 4, 4, 1);
6218 if(class)
6219 class->fixed = (unsigned int)1;
6220 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::BitMember", 0, sizeof(struct __ecereNameSpace__ecere__com__BitMember), 0, 0, 0, module, 4, 1);
6221 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6222 __ecereClass___ecereNameSpace__ecere__com__BitMember = class;
6223 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "prev", "ecere::com::BitMember", 4, 4, 1);
6224 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "next", "ecere::com::BitMember", 4, 4, 1);
6225 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "name", "char *", 4, 4, 1);
6226 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "isProperty", "bool", 4, 4, 1);
6227 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "memberAccess", "ecere::com::AccessMode", 4, 4, 1);
6228 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "id", "int", 4, 4, 1);
6229 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "_class", "ecere::com::Class", 4, 4, 1);
6230 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataTypeString", "char *", 4, 4, 1);
6231 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataTypeClass", "ecere::com::Class", 4, 4, 1);
6232 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataType", "Type", 4, 4, 1);
6233 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "type", "ecere::com::DataMemberType", 4, 4, 1);
6234 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "size", "int", 4, 4, 1);
6235 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "pos", "int", 4, 4, 1);
6236 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "mask", "uint64", 8, 8, 1);
6237 if(class)
6238 class->fixed = (unsigned int)1;
6239 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::ClassProperty", 0, sizeof(struct __ecereNameSpace__ecere__com__ClassProperty), 0, 0, 0, module, 4, 1);
6240 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6241 __ecereClass___ecereNameSpace__ecere__com__ClassProperty = class;
6242 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "name", "char *", 4, 4, 1);
6243 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "parent", "ecere::com::ClassProperty", 4, 4, 1);
6244 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "left", "ecere::com::ClassProperty", 4, 4, 1);
6245 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "right", "ecere::com::ClassProperty", 4, 4, 1);
6246 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "depth", "int", 4, 4, 1);
6247 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "Set", "void( *)(ecere::com::Class, int64)", 4, 4, 1);
6248 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "Get", "int64( *)(ecere::com::Class)", 4, 4, 1);
6249 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataTypeString", "char *", 4, 4, 1);
6250 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataType", "Type", 4, 4, 1);
6251 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "constant", "bool", 4, 4, 1);
6252 if(class)
6253 class->fixed = (unsigned int)1;
6254 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::DefinedExpression", 0, sizeof(struct __ecereNameSpace__ecere__com__DefinedExpression), 0, 0, 0, module, 4, 1);
6255 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6256 __ecereClass___ecereNameSpace__ecere__com__DefinedExpression = class;
6257 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "prev", "ecere::com::DefinedExpression", 4, 4, 1);
6258 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "next", "ecere::com::DefinedExpression", 4, 4, 1);
6259 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "name", "char *", 4, 4, 1);
6260 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "value", "char *", 4, 4, 1);
6261 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "nameSpace", "ecere::com::NameSpace *", 4, 4, 1);
6262 if(class)
6263 class->fixed = (unsigned int)1;
6264 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::GlobalFunction", 0, sizeof(struct __ecereNameSpace__ecere__com__GlobalFunction), 0, 0, 0, module, 4, 1);
6265 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6266 __ecereClass___ecereNameSpace__ecere__com__GlobalFunction = class;
6267 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "prev", "ecere::com::GlobalFunction", 4, 4, 1);
6268 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "next", "ecere::com::GlobalFunction", 4, 4, 1);
6269 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "name", "char *", 4, 4, 1);
6270 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "function", "int( *)()", 4, 4, 1);
6271 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "module", "ecere::com::Module", 4, 4, 1);
6272 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "nameSpace", "ecere::com::NameSpace *", 4, 4, 1);
6273 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataTypeString", "char *", 4, 4, 1);
6274 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataType", "Type", 4, 4, 1);
6275 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "symbol", "void *", 4, 4, 1);
6276 if(class)
6277 class->fixed = (unsigned int)1;
6278 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::EnumClassData", 0, sizeof(struct __ecereNameSpace__ecere__com__EnumClassData), 0, 0, 0, module, 4, 1);
6279 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6280 __ecereClass___ecereNameSpace__ecere__com__EnumClassData = class;
6281 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "values", "ecere::sys::OldList", 20, 4, 1);
6282 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "largest", "int", 4, 4, 1);
6283 if(class)
6284 class->fixed = (unsigned int)1;
6285 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::Watcher", 0, sizeof(struct __ecereNameSpace__ecere__com__Watcher), 0, 0, 0, module, 2, 1);
6286 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6287 __ecereClass___ecereNameSpace__ecere__com__Watcher = class;
6288 if(class)
6289 class->fixed = (unsigned int)1;
6290 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::MemBlock", 0, sizeof(struct __ecereNameSpace__ecere__com__MemBlock), 0, 0, 0, module, 2, 1);
6291 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6292 __ecereClass___ecereNameSpace__ecere__com__MemBlock = class;
6293 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::MemPart", 0, sizeof(struct __ecereNameSpace__ecere__com__MemPart), 0, 0, 0, module, 2, 1);
6294 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6295 __ecereClass___ecereNameSpace__ecere__com__MemPart = class;
6296 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(1, "ecere::com::BlockPool", 0, sizeof(struct __ecereNameSpace__ecere__com__BlockPool), 0, 0, 0, module, 2, 1);
6297 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6298 __ecereClass___ecereNameSpace__ecere__com__BlockPool = class;
6299 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "Add", "ecere::com::MemBlock Add()", __ecereMethod___ecereNameSpace__ecere__com__BlockPool_Add, 1);
6300 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "Expand", "bool Expand(unsigned int numBlocks)", __ecereMethod___ecereNameSpace__ecere__com__BlockPool_Expand, 1);
6301 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "Remove", "void Remove(ecere::com::MemBlock block)", __ecereMethod___ecereNameSpace__ecere__com__BlockPool_Remove, 1);
6302 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "first", "ecere::com::MemBlock", 4, 4, 1);
6303 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "last", "ecere::com::MemBlock", 4, 4, 1);
6304 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "free", "ecere::com::MemBlock", 4, 4, 1);
6305 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "blockSize", "uint", 4, 4, 1);
6306 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "blockSpace", "uint", 4, 4, 1);
6307 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "numParts", "int", 4, 4, 1);
6308 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "numBlocks", "int", 4, 4, 1);
6309 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "totalSize", "uint", 4, 4, 1);
6310 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "usedSpace", "uint", 4, 4, 1);
6311 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::log2i", "uint ecere::com::log2i(uint number)", __ecereNameSpace__ecere__com__log2i, module, 4);
6312 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::pow2i", "uint ecere::com::pow2i(uint number)", __ecereNameSpace__ecere__com__pow2i, module, 4);
6313 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::memswap", "void ecere::com::memswap(byte * a, byte * b, uint size)", __ecereNameSpace__ecere__com__memswap, module, 4);
6314 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::CheckMemory", "void ecere::com::CheckMemory(void)", __ecereNameSpace__ecere__com__CheckMemory, module, 4);
6315 __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);
6316 __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);
6317 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::_strtoi64", "int64 ecere::com::_strtoi64(char * string, char * * endString, int base)", __ecereNameSpace__ecere__com___strtoi64, module, 4);
6318 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::_strtoui64", "uint64 ecere::com::_strtoui64(char * string, char * * endString, int base)", __ecereNameSpace__ecere__com___strtoui64, module, 4);
6319 __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);
6320 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::DefaultFunction", "bool ecere::com::DefaultFunction(void)", __ecereNameSpace__ecere__com__DefaultFunction, module, 2);
6321 __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);
6322 __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);
6323 __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);
6324 __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);
6325 __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);
6326 __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);
6327 __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);
6328 __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);
6329 __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);
6330 __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);
6331 __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);
6332 __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);
6333 __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);
6334 __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);
6335 __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);
6336 __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);
6337 __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);
6338 __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);
6339 __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);
6340 __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);
6341 __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);
6342 __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);
6343 __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);
6344 __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);
6345 __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);
6346 __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);
6347 __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);
6348 __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);
6349 __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);
6350 __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);
6351 __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);
6352 __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);
6353 __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);
6354 __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);
6355 __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);
6356 __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);
6357 __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);
6358 __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);
6359 __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);
6360 __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);
6361 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eSystem_New", "void * ecere::com::eSystem_New(uint size)", __ecereNameSpace__ecere__com__eSystem_New, module, 4);
6362 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eSystem_New0", "void * ecere::com::eSystem_New0(uint size)", __ecereNameSpace__ecere__com__eSystem_New0, module, 4);
6363 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eSystem_Delete", "void ecere::com::eSystem_Delete(void * memory)", __ecereNameSpace__ecere__com__eSystem_Delete, module, 4);
6364 __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);
6365 __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);
6366 __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);
6367 __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);
6368 __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);
6369 __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);
6370 __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);
6371 __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);
6372 __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);
6373 __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);
6374 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::LocateModule", "bool ecere::com::LocateModule(char * name, char * fileName)", __ecereNameSpace__ecere__com__LocateModule, module, 4);
6375 __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);
6376 __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);
6377 __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);
6378 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(4, "ecere::com::Platform", 0, 0, 0, 0, 0, module, 4, 1);
6379 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6380 __ecereClass___ecereNameSpace__ecere__com__Platform = class;
6381 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "OnGetString", 0, __ecereMethod___ecereNameSpace__ecere__com__Platform_OnGetString, 1);
6382 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "OnGetDataFromString", 0, __ecereMethod___ecereNameSpace__ecere__com__Platform_OnGetDataFromString, 1);
6383 __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);
6384 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "unknown", 0);
6385 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "win32", 1);
6386 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "tux", 2);
6387 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "apple", 3);
6388 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::GetRuntimePlatform", "ecere::com::Platform ecere::com::GetRuntimePlatform(void)", __ecereNameSpace__ecere__com__GetRuntimePlatform, module, 4);
6389 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::ObjectInfo", 0, sizeof(struct __ecereNameSpace__ecere__com__ObjectInfo), 0, 0, 0, module, 4, 1);
6390 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6391 __ecereClass___ecereNameSpace__ecere__com__ObjectInfo = class;
6392 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "prev", "ecere::com::ObjectInfo", 4, 4, 1);
6393 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "next", "ecere::com::ObjectInfo", 4, 4, 1);
6394 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "instance", "ecere::com::Instance", 4, 4, 1);
6395 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "name", "char *", 4, 4, 1);
6396 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "instCode", "Instantiation", 4, 4, 1);
6397 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "deleted", "bool", 4, 4, 1);
6398 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "oClass", "ecere::com::ObjectInfo", 4, 4, 1);
6399 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "instances", "ecere::sys::OldList", 20, 4, 1);
6400 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "classDefinition", "ClassDefinition", 4, 4, 1);
6401 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "modified", "bool", 4, 4, 1);
6402 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);
6403 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6404 __ecereClass___ecereNameSpace__ecere__com__DesignerBase = class;
6405 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "FindObject", "bool FindObject(ecere::com::Instance * instance, char * string)", 0, 1);
6406 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "RenameObject", "void RenameObject(ecere::com::ObjectInfo object, char * name)", 0, 1);
6407 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "SelectObjectFromDesigner", "void SelectObjectFromDesigner(ecere::com::ObjectInfo object)", 0, 1);
6408 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "CodeAddObject", "void CodeAddObject(ecere::com::Instance instance, ecere::com::ObjectInfo * object)", 0, 1);
6409 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "SheetAddObject", "void SheetAddObject(ecere::com::ObjectInfo object)", 0, 1);
6410 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "AddToolBoxClass", "void AddToolBoxClass(ecere::com::Class _class)", 0, 1);
6411 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "AddDefaultMethod", "void AddDefaultMethod(ecere::com::Instance instance, ecere::com::Instance classInstance)", 0, 1);
6412 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "DeleteObject", "void DeleteObject(ecere::com::ObjectInfo object)", 0, 1);
6413 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "ObjectContainsCode", "bool ObjectContainsCode(ecere::com::ObjectInfo object)", 0, 1);
6414 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "ModifyCode", "void ModifyCode(void)", 0, 1);
6415 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "UpdateProperties", "void UpdateProperties(void)", 0, 1);
6416 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "classDesigner", "ecere::com::ClassDesignerBase", 4, 4, 1);
6417 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "objectClass", "char *", 4, 4, 1);
6418 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "isDragging", "bool", 4, 4, 1);
6419 __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);
6420 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application)
6421 __ecereProp___ecereNameSpace__ecere__com__DesignerBase_classDesigner = __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_classDesigner, __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_classDesigner = (void *)0;
6422 __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);
6423 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application)
6424 __ecereProp___ecereNameSpace__ecere__com__DesignerBase_objectClass = __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_objectClass, __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_objectClass = (void *)0;
6425 __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);
6426 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application)
6427 __ecereProp___ecereNameSpace__ecere__com__DesignerBase_isDragging = __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_isDragging, __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_isDragging = (void *)0;
6428 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(0, "ecere::com::ClassDesignerBase", "ecere::gui::Window", 0, 0, 0, 0, module, 4, 1);
6429 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6430 __ecereClass___ecereNameSpace__ecere__com__ClassDesignerBase = class;
6431 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "Reset", "void Reset(void)", 0, 1);
6432 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "AddObject", "void AddObject(void)", 0, 1);
6433 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "SelectObject", "void SelectObject(ecere::com::ObjectInfo object, ecere::com::Instance control)", 0, 1);
6434 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "ListToolBoxClasses", "void ListToolBoxClasses(ecere::com::DesignerBase designer)", 0, 1);
6435 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "PrepareTestObject", "void ::PrepareTestObject(ecere::com::DesignerBase designer, ecere::com::Instance test)", 0, 1);
6436 __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);
6437 __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);
6438 __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);
6439 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "DestroyObject", "void ::DestroyObject(ecere::com::Instance object)", 0, 1);
6440 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "FixProperty", "void ::FixProperty(ecere::com::Property prop, ecere::com::Instance object)", 0, 1);
6441 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "CreateNew", "void ::CreateNew(EditBox editBox, Size clientSize, char * name, char * inherit)", 0, 1);
6442 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::SetActiveDesigner", "void ecere::com::SetActiveDesigner(ecere::com::DesignerBase designer)", __ecereNameSpace__ecere__com__SetActiveDesigner, module, 4);
6443 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::GetActiveDesigner", "ecere::com::DesignerBase ecere::com::GetActiveDesigner(void)", __ecereNameSpace__ecere__com__GetActiveDesigner, module, 4);
6444 __ecereNameSpace__ecere__com__eSystem_RegisterDefine("ecere::sys::LEAD_OFFSET", "0xD800 - (0x10000 >> 10)", module, 2);
6445 __ecereNameSpace__ecere__com__eSystem_RegisterDefine("ecere::sys::SURROGATE_OFFSET", "0x10000 - (0xD800 << 10) - 0xDC00", module, 2);
6446 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::UTF8Validate", "bool ecere::sys::UTF8Validate(char * source)", __ecereNameSpace__ecere__sys__UTF8Validate, module, 4);
6447 __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);
6448 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::UTF16toUTF8", "char * ecere::sys::UTF16toUTF8(uint16 * source)", __ecereNameSpace__ecere__sys__UTF16toUTF8, module, 4);
6449 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::UTF16toUTF8Buffer", "int ecere::sys::UTF16toUTF8Buffer(uint16 * source, byte * dest, int max)", __ecereNameSpace__ecere__sys__UTF16toUTF8Buffer, module, 4);
6450 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::UTF8GetChar", "ecere::com::unichar ecere::sys::UTF8GetChar(char * string, int * numBytes)", __ecereNameSpace__ecere__sys__UTF8GetChar, module, 4);
6451 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::UTF8toUTF16Buffer", "int ecere::sys::UTF8toUTF16Buffer(char * source, uint16 * dest, int max)", __ecereNameSpace__ecere__sys__UTF8toUTF16Buffer, module, 4);
6452 __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);
6453 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::UTF8toUTF16", "uint16 * ecere::sys::UTF8toUTF16(char * source, int * wordCount)", __ecereNameSpace__ecere__sys__UTF8toUTF16, module, 4);
6454 }
6455
6456 void __ecereUnregisterModule_instance(struct __ecereNameSpace__ecere__com__Instance * module)
6457 {
6458
6459 __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_classDesigner = (void *)0;
6460 __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_objectClass = (void *)0;
6461 __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_isDragging = (void *)0;
6462 }
6463