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