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