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