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