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