2 typedef long long int64;
3 typedef unsigned long long uint64;
5 #define stdcall __attribute__((__stdcall__))
9 #elif defined(__TINYC__)
11 #define __builtin_va_list va_list
12 #define __builtin_va_start va_start
13 #define __builtin_va_end va_end
15 #define strcasecmp stricmp
16 #define strncasecmp strnicmp
17 #define __declspec(x) __attribute__((x))
18 #define stdcall __attribute__((__stdcall__))
22 typedef long long int64;
23 typedef unsigned long long uint64;
25 typedef __int64 int64;
26 typedef unsigned __int64 uint64;
29 #define __ENDIAN_PAD(x) (8 - (x))
31 #define __ENDIAN_PAD(x) 0
34 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__BTNode;
36 struct __ecereNameSpace__ecere__sys__BTNode;
38 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__BinaryTree;
40 struct __ecereNameSpace__ecere__sys__BinaryTree
42 struct __ecereNameSpace__ecere__sys__BTNode * root;
44 int (* CompareKey)(struct __ecereNameSpace__ecere__sys__BinaryTree * tree, uintptr_t a, uintptr_t b);
45 void (* FreeKey)(void * key);
46 } __attribute__ ((gcc_struct));
48 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__OldList;
50 struct __ecereNameSpace__ecere__sys__OldList
57 } __attribute__ ((gcc_struct));
59 struct __ecereNameSpace__ecere__com__Class
61 struct __ecereNameSpace__ecere__com__Class * prev, * next;
63 int offset, structSize;
66 int (* Constructor)(struct __ecereNameSpace__ecere__com__Instance *);
67 void (* Destructor)(struct __ecereNameSpace__ecere__com__Instance *);
68 int offsetClass, sizeClass;
69 struct __ecereNameSpace__ecere__com__Class * base;
70 struct __ecereNameSpace__ecere__sys__BinaryTree methods;
71 struct __ecereNameSpace__ecere__sys__BinaryTree members;
72 struct __ecereNameSpace__ecere__sys__BinaryTree prop;
73 struct __ecereNameSpace__ecere__sys__OldList membersAndProperties;
74 struct __ecereNameSpace__ecere__sys__BinaryTree classProperties;
75 struct __ecereNameSpace__ecere__sys__OldList derivatives;
76 int memberID, startMemberID;
78 struct __ecereNameSpace__ecere__com__Instance * module;
79 struct __ecereNameSpace__ecere__com__NameSpace * nameSpace;
80 char * dataTypeString;
81 struct __ecereNameSpace__ecere__com__Instance * dataType;
84 void (* Initialize)();
86 struct __ecereNameSpace__ecere__sys__OldList selfWatchers;
88 unsigned int noExpansion;
89 char * defaultProperty;
90 unsigned int comRedefinition;
92 unsigned int isRemote;
93 unsigned int internalDecl;
95 unsigned int computeSize;
97 int destructionWatchOffset;
99 struct __ecereNameSpace__ecere__sys__OldList delayedCPValues;
100 int inheritanceAccess;
103 struct __ecereNameSpace__ecere__sys__OldList conversions;
104 struct __ecereNameSpace__ecere__sys__OldList templateParams;
105 struct __ecereNameSpace__ecere__com__ClassTemplateArgument * templateArgs;
106 struct __ecereNameSpace__ecere__com__Class * templateClass;
107 struct __ecereNameSpace__ecere__sys__OldList templatized;
109 } __attribute__ ((gcc_struct));
111 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Class;
113 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Instance;
115 struct __ecereNameSpace__ecere__com__Instance
118 struct __ecereNameSpace__ecere__com__Class * _class;
120 } __attribute__ ((gcc_struct));
122 struct __ecereNameSpace__ecere__com__Property
124 struct __ecereNameSpace__ecere__com__Property * prev, * next;
126 unsigned int isProperty;
129 struct __ecereNameSpace__ecere__com__Class * _class;
130 char * dataTypeString;
131 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
132 struct __ecereNameSpace__ecere__com__Instance * dataType;
135 unsigned int (* IsSet)();
139 unsigned int conversion;
140 unsigned int watcherOffset;
142 unsigned int compiled;
143 unsigned int selfWatchable, isWatchable;
144 } __attribute__ ((gcc_struct));
146 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Property;
148 struct __ecereNameSpace__ecere__com__DataMember
150 struct __ecereNameSpace__ecere__com__DataMember * prev, * next;
152 unsigned int isProperty;
155 struct __ecereNameSpace__ecere__com__Class * _class;
156 char * dataTypeString;
157 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
158 struct __ecereNameSpace__ecere__com__Instance * dataType;
162 struct __ecereNameSpace__ecere__sys__OldList members;
163 struct __ecereNameSpace__ecere__sys__BinaryTree membersAlpha;
166 } __attribute__ ((gcc_struct));
168 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__DataMember;
170 struct __ecereNameSpace__ecere__com__Method
173 struct __ecereNameSpace__ecere__com__Method * parent, * left, * right;
178 struct __ecereNameSpace__ecere__com__Class * _class;
180 char * dataTypeString;
181 struct __ecereNameSpace__ecere__com__Instance * dataType;
183 } __attribute__ ((gcc_struct));
185 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Method;
187 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__SerialBuffer;
189 struct __ecereNameSpace__ecere__com__SerialBuffer
191 unsigned char * _buffer;
195 } __attribute__ ((gcc_struct));
197 struct __ecereNameSpace__ecere__com__DataValue
212 } __attribute__ ((gcc_struct));
213 } __attribute__ ((gcc_struct));
215 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__DataValue;
217 struct __ecereNameSpace__ecere__com__ClassTemplateArgument
223 char * dataTypeString;
224 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
225 } __attribute__ ((gcc_struct));
226 struct __ecereNameSpace__ecere__com__DataValue expression;
232 struct __ecereNameSpace__ecere__com__DataMember * member;
233 struct __ecereNameSpace__ecere__com__Property * prop;
234 struct __ecereNameSpace__ecere__com__Method * method;
235 } __attribute__ ((gcc_struct));
236 } __attribute__ ((gcc_struct));
237 } __attribute__ ((gcc_struct));
238 } __attribute__ ((gcc_struct));
240 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__ClassTemplateArgument;
242 typedef unsigned int size_t;
244 void exit(int status);
246 void * calloc(size_t nmemb, size_t size);
248 void free(void * ptr);
250 void * malloc(size_t size);
252 void * realloc(void * ptr, size_t size);
254 long int strtol(const char * nptr, char ** endptr, int base);
256 long long int strtoll(const char * nptr, char ** endptr, int base);
258 unsigned long long int strtoull(const char * nptr, char ** endptr, int base);
260 typedef __builtin_va_list __gnuc_va_list;
262 typedef __gnuc_va_list va_list;
266 FILE * bsl_stdin(void);
268 FILE * bsl_stdout(void);
270 FILE * bsl_stderr(void);
272 char * fgets(char * s, int size, FILE * stream);
274 FILE * fopen(const char * path, const char * mode);
276 int fclose(FILE * fp);
278 int fflush(FILE * stream);
280 int fgetc(FILE * stream);
282 int fprintf(FILE * stream, const char * format, ...);
284 int fputc(int c, FILE * stream);
286 size_t fread(void * ptr, size_t size, size_t nmemb, FILE * stream);
288 size_t fwrite(const void * ptr, size_t size, size_t nmemb, FILE * stream);
290 int vsnprintf(char *, size_t, const char *, ...);
292 int snprintf(char * str, size_t, const char * format, ...);
294 int fseek(FILE * stream, long offset, int whence);
296 long ftell(FILE * stream);
298 int feof(FILE * stream);
300 int ferror(FILE * stream);
302 int fileno(FILE * stream);
305 struct __ecereNameSpace__ecere__com__Class * __ecereNameSpace__ecere__com__eSystem_FindClass(struct __ecereNameSpace__ecere__com__Instance * module, char * name);
307 void * __ecereNameSpace__ecere__com__eSystem_Renew(void * memory, unsigned int size);
309 void * __ecereNameSpace__ecere__com__eSystem_Renew0(void * memory, unsigned int size);
311 void * __ecereNameSpace__ecere__com__eSystem_New(unsigned int size);
313 void * __ecereNameSpace__ecere__com__eSystem_New0(unsigned int size);
315 void __ecereNameSpace__ecere__com__eSystem_Delete(void * memory);
317 void * __ecereNameSpace__ecere__com__eInstance_New(struct __ecereNameSpace__ecere__com__Class * _class);
319 extern int __ecereVMethodID_class_OnGetDataFromString;
321 unsigned int Instance_LocateModule(char * name, char * fileName);
323 void Instance_COM_Initialize(int argc, char ** argv, char ** parsedCommand, int * argcPtr, char *** argvPtr);
325 void * Instance_Module_Load(char * name, void ** Load, void ** Unload);
327 void Instance_Module_Free(void * library);
329 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__unichar;
331 int __ecereNameSpace__ecere__sys__UTF32toUTF8Len(unsigned int * source, int count, unsigned char * dest, int max);
333 char * __ecereMethod___ecereNameSpace__ecere__com__unichar_OnGetString(struct __ecereNameSpace__ecere__com__Class * class, unsigned int * this, char * tempString, void * fieldData, unsigned int * needClass)
335 __ecereNameSpace__ecere__sys__UTF32toUTF8Len(&(*(this)), 1, tempString, 5);
339 unsigned int __ecereNameSpace__ecere__sys__UTF8GetChar(char * string, int * numBytes);
341 unsigned int __ecereMethod___ecereNameSpace__ecere__com__unichar_OnGetDataFromString(struct __ecereNameSpace__ecere__com__Class * class, unsigned int * this, char * string)
345 (*(this)) = __ecereNameSpace__ecere__sys__UTF8GetChar(string, &nb);
349 void __ecereNameSpace__ecere__com__eInstance_FireWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property);
351 void __ecereNameSpace__ecere__com__MemoryGuard_PushLoc(char * loc)
355 void __ecereNameSpace__ecere__com__MemoryGuard_PopLoc()
359 extern unsigned int __ecereDll_Load_ecere(struct __ecereNameSpace__ecere__com__Instance * module);
361 extern unsigned int __ecereDll_Unload_ecere(struct __ecereNameSpace__ecere__com__Instance * module);
363 struct __ecereNameSpace__ecere__com__BTNamedLink
366 struct __ecereNameSpace__ecere__com__BTNamedLink * parent, * left, * right;
369 } __attribute__ ((gcc_struct));
371 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__BTNamedLink;
373 struct __ecereNameSpace__ecere__com__SelfWatcher
375 struct __ecereNameSpace__ecere__com__SelfWatcher * prev, * next;
376 void (* callback)(struct __ecereNameSpace__ecere__com__Instance *);
377 struct __ecereNameSpace__ecere__com__Property * _property;
378 } __attribute__ ((gcc_struct));
380 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__SelfWatcher;
382 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__AccessMode;
384 struct __ecereNameSpace__ecere__com__SubModule
386 struct __ecereNameSpace__ecere__com__SubModule * prev, * next;
387 struct __ecereNameSpace__ecere__com__Instance * module;
389 } __attribute__ ((gcc_struct));
391 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__SubModule;
393 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__DataMemberType;
395 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__ClassType;
397 static struct __ecereNameSpace__ecere__com__Property * __ecereProp___ecereNameSpace__ecere__com__Class_char__PTR_, * __ecerePropM___ecereNameSpace__ecere__com__Class_char__PTR_;
399 char * __ecereProp___ecereNameSpace__ecere__com__Class_Get_char__PTR_(struct __ecereNameSpace__ecere__com__Class * this)
404 extern struct __ecereNameSpace__ecere__com__Instance * __thisModule;
406 struct __ecereNameSpace__ecere__com__Class * __ecereProp___ecereNameSpace__ecere__com__Class_Set_char__PTR_(char * value)
408 struct __ecereNameSpace__ecere__com__Class * theClass = __ecereNameSpace__ecere__com__eSystem_FindClass(__thisModule, value);
413 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)
418 struct __ecereNameSpace__ecere__com__NameSpace
421 struct __ecereNameSpace__ecere__com__NameSpace * btParent, * left, * right;
423 struct __ecereNameSpace__ecere__com__NameSpace * parent;
424 struct __ecereNameSpace__ecere__sys__BinaryTree nameSpaces;
425 struct __ecereNameSpace__ecere__sys__BinaryTree classes;
426 struct __ecereNameSpace__ecere__sys__BinaryTree defines;
427 struct __ecereNameSpace__ecere__sys__BinaryTree functions;
428 } __attribute__ ((gcc_struct));
430 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__NameSpace;
432 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Module;
434 struct __ecereNameSpace__ecere__com__Module
436 struct __ecereNameSpace__ecere__com__Instance * application;
437 struct __ecereNameSpace__ecere__sys__OldList classes;
438 struct __ecereNameSpace__ecere__sys__OldList defines;
439 struct __ecereNameSpace__ecere__sys__OldList functions;
440 struct __ecereNameSpace__ecere__sys__OldList modules;
441 struct __ecereNameSpace__ecere__com__Instance * prev;
442 struct __ecereNameSpace__ecere__com__Instance * next;
448 struct __ecereNameSpace__ecere__com__NameSpace privateNameSpace;
449 struct __ecereNameSpace__ecere__com__NameSpace publicNameSpace;
450 } __attribute__ ((gcc_struct));
452 unsigned int __ecereMethod___ecereNameSpace__ecere__com__Class_OnGetDataFromString(struct __ecereNameSpace__ecere__com__Class * class, struct __ecereNameSpace__ecere__com__Class ** this, char * string)
454 struct __ecereNameSpace__ecere__com__Class * theClass;
456 theClass = __ecereNameSpace__ecere__com__eSystem_FindClass(__thisModule, string);
458 theClass = __ecereNameSpace__ecere__com__eSystem_FindClass(((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application, string);
459 (*(this)) = (void *)theClass;
460 return theClass != (((void *)0));
463 void __ecereMethod___ecereNameSpace__ecere__com__IOChannel_Serialize(struct __ecereNameSpace__ecere__com__Instance * this, struct __ecereNameSpace__ecere__com__Class * class, void * data);
465 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_char__PTR_;
467 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)
469 __ecereMethod___ecereNameSpace__ecere__com__IOChannel_Serialize(channel, __ecereClass_char__PTR_, this->fullName);
472 void __ecereMethod___ecereNameSpace__ecere__com__Class_OnFree(struct __ecereNameSpace__ecere__com__Class * class, struct __ecereNameSpace__ecere__com__Class * this)
476 void __ecereMethod___ecereNameSpace__ecere__com__IOChannel_Unserialize(struct __ecereNameSpace__ecere__com__Instance * this, struct __ecereNameSpace__ecere__com__Class * class, void * * data);
478 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_String;
480 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)
482 struct __ecereNameSpace__ecere__com__Class * theClass;
485 __ecereMethod___ecereNameSpace__ecere__com__IOChannel_Unserialize(channel, __ecereClass_String, &string);
486 theClass = __ecereNameSpace__ecere__com__eSystem_FindClass(__thisModule, string);
488 theClass = __ecereNameSpace__ecere__com__eSystem_FindClass(((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application, string);
489 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
490 (*(this)) = (void *)theClass;
493 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__TemplateParameterType;
495 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__TemplateMemberType;
497 struct __ecereNameSpace__ecere__com__ClassTemplateParameter
499 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * prev, * next;
504 char * dataTypeString;
506 } __attribute__ ((gcc_struct));
507 struct __ecereNameSpace__ecere__com__ClassTemplateArgument defaultArg;
509 } __attribute__ ((gcc_struct));
511 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__ClassTemplateParameter;
513 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__MethodType;
515 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__ImportType;
517 struct __ecereNameSpace__ecere__com__BitMember
519 struct __ecereNameSpace__ecere__com__BitMember * prev, * next;
521 unsigned int isProperty;
524 struct __ecereNameSpace__ecere__com__Class * _class;
525 char * dataTypeString;
526 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
527 struct __ecereNameSpace__ecere__com__Instance * dataType;
532 } __attribute__ ((gcc_struct));
534 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__BitMember;
536 struct __ecereNameSpace__ecere__com__ClassProperty
539 struct __ecereNameSpace__ecere__com__ClassProperty * parent, * left, * right;
541 void (* Set)(struct __ecereNameSpace__ecere__com__Class *, int);
542 int (* Get)(struct __ecereNameSpace__ecere__com__Class *);
543 char * dataTypeString;
544 struct __ecereNameSpace__ecere__com__Instance * dataType;
545 unsigned int constant;
546 } __attribute__ ((gcc_struct));
548 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__ClassProperty;
550 struct __ecereNameSpace__ecere__com__DefinedExpression
552 struct __ecereNameSpace__ecere__com__DefinedExpression * prev, * next;
555 struct __ecereNameSpace__ecere__com__NameSpace * nameSpace;
556 } __attribute__ ((gcc_struct));
558 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__DefinedExpression;
560 struct __ecereNameSpace__ecere__com__GlobalFunction
562 struct __ecereNameSpace__ecere__com__GlobalFunction * prev, * next;
565 struct __ecereNameSpace__ecere__com__Instance * module;
566 struct __ecereNameSpace__ecere__com__NameSpace * nameSpace;
567 char * dataTypeString;
568 struct __ecereNameSpace__ecere__com__Instance * dataType;
570 } __attribute__ ((gcc_struct));
572 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__GlobalFunction;
574 struct __ecereNameSpace__ecere__com__EnumClassData
576 struct __ecereNameSpace__ecere__sys__OldList values;
578 } __attribute__ ((gcc_struct));
580 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__EnumClassData;
582 struct __ecereNameSpace__ecere__com__Watcher
584 struct __ecereNameSpace__ecere__com__Watcher * prev, * next;
585 void (* callback)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__Instance *);
586 struct __ecereNameSpace__ecere__com__Instance * object;
587 } __attribute__ ((gcc_struct));
589 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Watcher;
591 static unsigned int __ecereNameSpace__ecere__com__TOTAL_MEM = 0;
593 static unsigned int __ecereNameSpace__ecere__com__OUTSIDE_MEM = 0;
595 struct __ecereNameSpace__ecere__com__MemBlock
597 struct __ecereNameSpace__ecere__com__MemBlock * prev, * next;
598 struct __ecereNameSpace__ecere__com__MemPart * part;
600 } __attribute__ ((gcc_struct));
602 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__MemBlock;
604 struct __ecereNameSpace__ecere__com__MemPart
609 struct __ecereNameSpace__ecere__com__BlockPool * pool;
610 } __attribute__ ((gcc_struct));
612 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__MemPart;
614 static int __ecereNameSpace__ecere__com__power15[] =
616 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
619 struct __ecereNameSpace__ecere__com__BlockPool
621 struct __ecereNameSpace__ecere__com__MemBlock * first, * last;
622 struct __ecereNameSpace__ecere__com__MemBlock * free;
623 unsigned int blockSize;
624 unsigned int blockSpace;
627 unsigned int totalSize;
628 unsigned int usedSpace;
629 } __attribute__ ((gcc_struct));
631 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__BlockPool;
633 unsigned int __ecereMethod___ecereNameSpace__ecere__com__BlockPool_Expand(struct __ecereNameSpace__ecere__com__BlockPool * this, unsigned int numBlocks)
635 unsigned char * memory = malloc(numBlocks * this->blockSpace);
637 __ecereNameSpace__ecere__com__TOTAL_MEM += numBlocks * this->blockSpace;
641 struct __ecereNameSpace__ecere__com__MemBlock * block = (struct __ecereNameSpace__ecere__com__MemBlock *)memory;
642 struct __ecereNameSpace__ecere__com__MemPart * part = calloc(1, sizeof(struct __ecereNameSpace__ecere__com__MemPart));
644 __ecereNameSpace__ecere__com__TOTAL_MEM += sizeof(struct __ecereNameSpace__ecere__com__MemPart);
646 for(c = 0; c < numBlocks - 1; c++)
649 block->prev = (((void *)0));
650 block->next = (struct __ecereNameSpace__ecere__com__MemBlock *)((unsigned char *)block + this->blockSpace);
653 part->blocksUsed = 0;
655 part->memory = memory;
656 part->size = numBlocks;
658 block->prev = (((void *)0));
659 block->next = (((void *)0));
660 this->totalSize += numBlocks;
667 struct __ecereNameSpace__ecere__com__MemBlock * __ecereMethod___ecereNameSpace__ecere__com__BlockPool_Add(struct __ecereNameSpace__ecere__com__BlockPool * this)
670 struct __ecereNameSpace__ecere__com__MemBlock * block = (((void *)0));
673 __ecereMethod___ecereNameSpace__ecere__com__BlockPool_Expand(this, (__simpleStruct0 = this->numBlocks / 2, (1 > __simpleStruct0) ? 1 : __simpleStruct0));
677 block->prev = this->last;
679 block->prev->next = block;
683 this->free = block->next;
684 block->next = (((void *)0));
685 block->part->blocksUsed++;
691 void __ecereMethod___ecereNameSpace__ecere__com__BlockPool_Remove(struct __ecereNameSpace__ecere__com__BlockPool * this, struct __ecereNameSpace__ecere__com__MemBlock * block)
694 block->prev->next = block->next;
696 block->next->prev = block->prev;
697 if(this->first == block)
698 this->first = block->next;
699 if(this->last == block)
700 this->last = block->prev;
701 block->next = this->free;
703 block->part->blocksUsed--;
705 (*block->part->pool).usedSpace -= block->size;
706 if(!block->part->blocksUsed && this->numBlocks && this->totalSize > this->numBlocks + this->numBlocks / 2)
708 struct __ecereNameSpace__ecere__com__MemBlock * next = this->free, * prev = (((void *)0));
709 struct __ecereNameSpace__ecere__com__MemPart * part = block->part;
711 this->free = (((void *)0));
712 this->totalSize -= part->size;
715 if(next->part != part)
727 prev->next = (((void *)0));
728 __ecereNameSpace__ecere__com__TOTAL_MEM -= part->size * this->blockSpace;
729 __ecereNameSpace__ecere__com__TOTAL_MEM -= sizeof(struct __ecereNameSpace__ecere__com__MemPart);
736 static struct __ecereNameSpace__ecere__com__BlockPool * __ecereNameSpace__ecere__com__pools;
738 static unsigned int __ecereNameSpace__ecere__com__PosFibonacci(unsigned int number)
741 unsigned int last = 1, prev = 0;
742 unsigned int current = 1;
744 for(pos = 0; ; pos++)
749 if(current >= number)
755 static unsigned int __ecereNameSpace__ecere__com__NthFibonacci(unsigned int number)
758 unsigned int last = 1, prev = 0;
759 unsigned int current = 1;
761 for(pos = 0; pos <= number; pos++)
770 static unsigned int __ecereNameSpace__ecere__com__NextFibonacci(unsigned int number)
773 unsigned int last = 1, prev = 0;
774 unsigned int current = 1;
776 for(pos = 0; ; pos++)
781 if(current >= number)
786 static unsigned int __ecereNameSpace__ecere__com__log1_5i(unsigned int number)
791 for(pos = 0; pos < 31; pos++)
793 if(current >= number)
795 current = current * 3 / 2;
802 static unsigned int __ecereNameSpace__ecere__com__pow1_5(unsigned int number)
807 for(pos = 0; pos < number; pos++)
809 current = current * 3 / 2;
813 return (unsigned int)current;
816 static unsigned int __ecereNameSpace__ecere__com__pow1_5i(unsigned int number)
821 for(pos = 0; pos < 31; pos++)
823 if(current >= number)
824 return (unsigned int)current;
825 current = current * 3 / 2;
829 return (unsigned int)current;
832 unsigned int __ecereNameSpace__ecere__com__log2i(unsigned int number)
836 for(power = 0; power < 32; power++)
837 if((1L << power) >= number)
842 unsigned int __ecereNameSpace__ecere__com__pow2i(unsigned int number)
844 return 1 << __ecereNameSpace__ecere__com__log2i(number);
847 static unsigned int __ecereNameSpace__ecere__com__memoryInitialized = 0x0;
849 static void __ecereNameSpace__ecere__com__InitMemory()
853 __ecereNameSpace__ecere__com__memoryInitialized = 0x1;
854 __ecereNameSpace__ecere__com__pools = calloc(1, sizeof(struct __ecereNameSpace__ecere__com__BlockPool) * 31);
855 for(c = 0; c < 31; c++)
859 __ecereNameSpace__ecere__com__pools[c].blockSize = __ecereNameSpace__ecere__com__pow1_5(c);
860 if(__ecereNameSpace__ecere__com__pools[c].blockSize % 4)
861 __ecereNameSpace__ecere__com__pools[c].blockSize += 4 - (__ecereNameSpace__ecere__com__pools[c].blockSize % 4);
862 __ecereNameSpace__ecere__com__pools[c].blockSpace = __ecereNameSpace__ecere__com__pools[c].blockSize;
863 __ecereNameSpace__ecere__com__pools[c].blockSpace += sizeof(struct __ecereNameSpace__ecere__com__MemBlock);
864 expansion = (__ecereNameSpace__ecere__com__pools[c].blockSize < 128) ? 1024 : (131072 / __ecereNameSpace__ecere__com__pools[c].blockSize);
866 __ecereMethod___ecereNameSpace__ecere__com__BlockPool_Expand(&__ecereNameSpace__ecere__com__pools[c], ((1 > expansion) ? 1 : expansion));
870 static void * __ecereNameSpace__ecere__com___mymalloc(unsigned int size)
872 struct __ecereNameSpace__ecere__com__MemBlock * block = (((void *)0));
876 unsigned int p = __ecereNameSpace__ecere__com__log1_5i(size);
878 if(!__ecereNameSpace__ecere__com__memoryInitialized)
879 __ecereNameSpace__ecere__com__InitMemory();
882 block = __ecereMethod___ecereNameSpace__ecere__com__BlockPool_Add(&__ecereNameSpace__ecere__com__pools[p]);
886 __ecereNameSpace__ecere__com__pools[p].usedSpace += size;
891 block = malloc(sizeof(struct __ecereNameSpace__ecere__com__MemBlock) + size);
894 __ecereNameSpace__ecere__com__TOTAL_MEM += sizeof(struct __ecereNameSpace__ecere__com__MemBlock) + size;
895 __ecereNameSpace__ecere__com__OUTSIDE_MEM += sizeof(struct __ecereNameSpace__ecere__com__MemBlock) + size;
896 block->part = (((void *)0));
900 return block ? ((struct __ecereNameSpace__ecere__com__MemBlock *)block + 1) : (((void *)0));
903 extern void memset(void * area, unsigned char value, unsigned int count);
905 static void * __ecereNameSpace__ecere__com___mycalloc(int n, unsigned int size)
907 void * pointer = __ecereNameSpace__ecere__com___mymalloc(size);
910 memset(pointer, (unsigned char)0, size);
914 static void __ecereNameSpace__ecere__com___myfree(void * pointer)
918 struct __ecereNameSpace__ecere__com__MemBlock * block = (struct __ecereNameSpace__ecere__com__MemBlock *)((unsigned char *)pointer - sizeof(struct __ecereNameSpace__ecere__com__MemBlock));
919 struct __ecereNameSpace__ecere__com__MemPart * part = block->part;
920 struct __ecereNameSpace__ecere__com__BlockPool * pool = part ? part->pool : (((void *)0));
923 __ecereMethod___ecereNameSpace__ecere__com__BlockPool_Remove((&*pool), block);
926 __ecereNameSpace__ecere__com__TOTAL_MEM -= sizeof(struct __ecereNameSpace__ecere__com__MemBlock) + block->size;
927 __ecereNameSpace__ecere__com__OUTSIDE_MEM -= sizeof(struct __ecereNameSpace__ecere__com__MemBlock) + block->size;
933 extern void * memcpy(void * , const void * , unsigned int size);
935 static void * __ecereNameSpace__ecere__com___myrealloc(void * pointer, unsigned int size)
937 struct __ecereNameSpace__ecere__com__MemBlock * block = pointer ? ((struct __ecereNameSpace__ecere__com__MemBlock *)((unsigned char *)pointer - sizeof(struct __ecereNameSpace__ecere__com__MemBlock))) : (((void *)0));
938 void * newPointer = (((void *)0));
939 struct __ecereNameSpace__ecere__com__MemPart * part = block ? block->part : (((void *)0));
940 struct __ecereNameSpace__ecere__com__BlockPool * pool = part ? part->pool : (((void *)0));
946 unsigned int ns = __ecereNameSpace__ecere__com__pow1_5i(size);
947 unsigned int mod = ns % 4;
951 if(ns == (*pool).blockSize)
953 newPointer = pointer;
954 (*pool).usedSpace += size - block->size;
960 struct __ecereNameSpace__ecere__com__MemBlock * newBlock = realloc(block, sizeof(struct __ecereNameSpace__ecere__com__MemBlock) + size);
964 __ecereNameSpace__ecere__com__TOTAL_MEM += size - newBlock->size;
965 __ecereNameSpace__ecere__com__OUTSIDE_MEM += size - newBlock->size;
966 newPointer = ((struct __ecereNameSpace__ecere__com__MemBlock *)newBlock + 1);
972 newPointer = __ecereNameSpace__ecere__com___mymalloc(size);
973 if(pointer && newPointer)
975 unsigned int __simpleStruct0;
977 memcpy(newPointer, pointer, (__simpleStruct0 = block->size, (size < __simpleStruct0) ? size : __simpleStruct0));
978 __ecereNameSpace__ecere__com___myfree(pointer);
984 static void * __ecereNameSpace__ecere__com___mycrealloc(void * pointer, unsigned int size)
986 struct __ecereNameSpace__ecere__com__MemBlock * block = pointer ? ((struct __ecereNameSpace__ecere__com__MemBlock *)((unsigned char *)pointer - sizeof(struct __ecereNameSpace__ecere__com__MemBlock))) : (((void *)0));
987 void * newPointer = (((void *)0));
988 struct __ecereNameSpace__ecere__com__MemPart * part = block ? block->part : (((void *)0));
989 struct __ecereNameSpace__ecere__com__BlockPool * pool = part ? part->pool : (((void *)0));
995 unsigned int ns = __ecereNameSpace__ecere__com__pow1_5i(size);
996 unsigned int mod = ns % 4;
1000 if(ns == (*pool).blockSize)
1002 int extra = size - block->size;
1004 newPointer = pointer;
1005 (*pool).usedSpace += extra;
1007 memset((unsigned char *)pointer + block->size, (unsigned char)0, extra);
1013 struct __ecereNameSpace__ecere__com__MemBlock * newBlock = realloc(block, sizeof(struct __ecereNameSpace__ecere__com__MemBlock) + size);
1017 int extra = size - newBlock->size;
1019 __ecereNameSpace__ecere__com__TOTAL_MEM += extra;
1020 __ecereNameSpace__ecere__com__OUTSIDE_MEM += extra;
1021 newPointer = ((struct __ecereNameSpace__ecere__com__MemBlock *)newBlock + 1);
1023 memset((unsigned char *)newPointer + newBlock->size, (unsigned char)0, extra);
1024 newBlock->size = size;
1030 newPointer = __ecereNameSpace__ecere__com___mymalloc(size);
1035 unsigned int __simpleStruct0;
1037 memcpy(newPointer, pointer, (__simpleStruct0 = block->size, (size < __simpleStruct0) ? size : __simpleStruct0));
1038 if(size > block->size)
1039 memset((unsigned char *)newPointer + block->size, (unsigned char)0, size - block->size);
1040 __ecereNameSpace__ecere__com___myfree(pointer);
1043 memset((unsigned char *)newPointer, (unsigned char)0, size);
1049 static void * __ecereNameSpace__ecere__com___malloc(unsigned int size)
1053 pointer = __ecereNameSpace__ecere__com___mymalloc(size + 2 * 0);
1054 return (unsigned char *)pointer + 0;
1057 static void * __ecereNameSpace__ecere__com___calloc(int n, unsigned int size)
1061 pointer = __ecereNameSpace__ecere__com___mycalloc(n, size + 2 * 0);
1062 return (unsigned char *)pointer + 0;
1065 static void __ecereNameSpace__ecere__com___free(void * pointer);
1067 static void * __ecereNameSpace__ecere__com___realloc(void * pointer, unsigned int size)
1071 __ecereNameSpace__ecere__com___free(pointer);
1072 return (((void *)0));
1074 pointer = __ecereNameSpace__ecere__com___myrealloc(pointer, size);
1075 return (unsigned char *)pointer + 0;
1078 static void * __ecereNameSpace__ecere__com___crealloc(void * pointer, unsigned int size)
1081 return (((void *)0));
1082 pointer = __ecereNameSpace__ecere__com___mycrealloc(pointer, size);
1083 return (unsigned char *)pointer + 0;
1086 static void __ecereNameSpace__ecere__com___free(void * pointer)
1090 __ecereNameSpace__ecere__com___myfree(pointer);
1094 void __ecereNameSpace__ecere__com__memswap(unsigned char * a, unsigned char * b, unsigned int size)
1097 unsigned char buffer[1024];
1099 for(c = 0; c < size; )
1101 int s = sizeof buffer;
1105 memcpy(buffer, a + c, s);
1106 memcpy(a + c, b + c, s);
1107 memcpy(b + c, buffer, s);
1112 void __ecereNameSpace__ecere__com__CheckMemory()
1116 static void __ecereNameSpace__ecere__com__ComputeClassParameters(struct __ecereNameSpace__ecere__com__Class * templatedClass, char * templateParams, struct __ecereNameSpace__ecere__com__Instance * findModule);
1118 extern char * strchr(char * , int);
1120 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__OldLink;
1122 struct __ecereNameSpace__ecere__sys__OldLink
1124 struct __ecereNameSpace__ecere__sys__OldLink * prev;
1125 struct __ecereNameSpace__ecere__sys__OldLink * next;
1127 } __attribute__ ((gcc_struct));
1129 extern char * __ecereNameSpace__ecere__sys__CopyString(char * string);
1131 extern void * memmove(void * , const void * , unsigned int size);
1133 static void __ecereNameSpace__ecere__com__SetDelayedCPValues(struct __ecereNameSpace__ecere__com__Class * _class, struct __ecereNameSpace__ecere__com__ClassProperty * _property);
1135 struct __ecereNameSpace__ecere__sys__BTNode * __ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(struct __ecereNameSpace__ecere__sys__BinaryTree * this);
1137 extern struct __ecereNameSpace__ecere__com__Property ** __ecereProp___ecereNameSpace__ecere__sys__BinaryTree_first;
1139 struct __ecereNameSpace__ecere__sys__BTNode * __ecereProp___ecereNameSpace__ecere__sys__BTNode_Get_next(struct __ecereNameSpace__ecere__sys__BTNode * this);
1141 extern struct __ecereNameSpace__ecere__com__Property ** __ecereProp___ecereNameSpace__ecere__sys__BTNode_next;
1143 struct __ecereNameSpace__ecere__sys__BTNode * __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(struct __ecereNameSpace__ecere__sys__BinaryTree * this, char * key);
1145 void __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(struct __ecereNameSpace__ecere__sys__BinaryTree * this, struct __ecereNameSpace__ecere__sys__BTNode * node);
1147 void __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(struct __ecereNameSpace__ecere__sys__OldList * this, void * item);
1149 static void __ecereNameSpace__ecere__com__FixDerivativesBase(struct __ecereNameSpace__ecere__com__Class * base, struct __ecereNameSpace__ecere__com__Class * mod)
1151 struct __ecereNameSpace__ecere__sys__OldLink * derivative;
1152 struct __ecereNameSpace__ecere__sys__OldLink * templateLink;
1154 __ecereNameSpace__ecere__com__ComputeClassParameters(base, strchr(base->name, '<'), (((void *)0)));
1155 for(derivative = base->derivatives.first; derivative; derivative = derivative->next)
1157 struct __ecereNameSpace__ecere__com__Class * _class = derivative->data;
1158 int type = _class->type;
1159 int size = _class->structSize - _class->offset;
1160 int oldSizeClass = _class->sizeClass;
1161 int sizeClass = _class->sizeClass - _class->offsetClass;
1162 struct __ecereNameSpace__ecere__com__Class * enumBase = (((void *)0));
1163 char * dataTypeString = (((void *)0));
1164 struct __ecereNameSpace__ecere__com__Class * baseClass;
1165 unsigned int offsetBefore = _class->offset;
1166 int offsetClass, totalSizeClass;
1168 for(baseClass = base; baseClass->base; baseClass = baseClass->base)
1170 if(base && !base->internalDecl && (base->type == 5 || base->type == 1 || base->type == 0))
1172 if(base->type == 1 && type == 0)
1177 if(base && (_class->type == 0 || _class->type == 5 || _class->type == 1) && (base->type == 3 || base->type == 2 || base->type == 4))
1186 base = __ecereNameSpace__ecere__com__eSystem_FindClass(_class->module, "enum");
1189 dataTypeString = enumBase ? enumBase->dataTypeString : base->dataTypeString;
1190 offsetClass = base ? (base->templateClass ? base->templateClass->sizeClass : base->sizeClass) : (type == 5 ? 0 : 0);
1191 totalSizeClass = offsetClass + sizeClass;
1192 if(type == 0 || type == 5)
1193 _class->offset = (base && (base->templateClass ? base->templateClass->structSize : base->structSize) && base->type != 1000) ? (base->templateClass ? base->templateClass->structSize : base->structSize) : ((type == 5) ? 0 : 12);
1196 _class->memberOffset = (base && (base->templateClass ? base->templateClass->structSize : base->structSize) && base->type != 1000) ? (base->templateClass ? base->templateClass->structSize : base->structSize) : 0;
1197 _class->typeSize = _class->structSize = _class->memberOffset + size;
1199 else if(type == 2 || type == 4 || type == 3)
1201 struct __ecereNameSpace__ecere__com__Class * dataTypeClass = __ecereNameSpace__ecere__com__eSystem_FindClass(_class->module, dataTypeString);
1204 _class->typeSize = dataTypeClass->typeSize;
1205 _class->structSize = 0;
1207 else if(type == 0 || type == 5)
1209 _class->structSize = _class->offset + size;
1210 _class->typeSize = sizeof(void *);
1212 if(_class->type != 1000)
1213 _class->type = type;
1214 (__ecereNameSpace__ecere__com__eSystem_Delete(_class->dataTypeString), _class->dataTypeString = 0);
1215 _class->dataTypeString = __ecereNameSpace__ecere__sys__CopyString(dataTypeString);
1216 if(totalSizeClass != oldSizeClass)
1218 _class->data = __ecereNameSpace__ecere__com__eSystem_Renew(_class->data, sizeof(unsigned char) * (totalSizeClass));
1219 memmove((unsigned char *)_class->data + mod->offsetClass, (unsigned char *)_class->data, totalSizeClass - mod->sizeClass);
1220 if(base->type != 1000 && base->type != 4)
1221 memcpy((unsigned char *)_class->data, (unsigned char *)base->data, totalSizeClass - _class->sizeClass);
1223 memset((unsigned char *)_class->data, (unsigned char)0, totalSizeClass - _class->sizeClass);
1225 _class->offsetClass = offsetClass;
1226 _class->sizeClass = totalSizeClass;
1228 struct __ecereNameSpace__ecere__com__Method * method, * next;
1229 struct __ecereNameSpace__ecere__com__Class * b;
1230 unsigned int needUpdate = (mod != (base->templateClass ? base->templateClass : base) || _class->vTblSize != mod->vTblSize);
1231 int updateStart = -1, updateEnd = -1;
1233 if(mod->base && mod->base->base && mod->base->vTblSize > baseClass->vTblSize && needUpdate)
1235 _class->vTblSize += mod->base->vTblSize - baseClass->vTblSize;
1236 _class->_vTbl = __ecereNameSpace__ecere__com__eSystem_Renew(_class->_vTbl, sizeof(void *) * (_class->vTblSize));
1237 memmove(_class->_vTbl + mod->base->vTblSize, _class->_vTbl + baseClass->vTblSize, (_class->vTblSize - mod->vTblSize) * sizeof(void *));
1238 updateStart = baseClass->vTblSize;
1239 updateEnd = updateStart + mod->base->vTblSize - baseClass->vTblSize;
1240 for(method = (struct __ecereNameSpace__ecere__com__Method *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&_class->methods); method; method = next)
1242 next = (struct __ecereNameSpace__ecere__com__Method *)__ecereProp___ecereNameSpace__ecere__sys__BTNode_Get_next(((struct __ecereNameSpace__ecere__sys__BTNode *)method));
1243 if(method->type == 1)
1244 method->vid += mod->base->vTblSize - baseClass->vTblSize;
1247 for(b = mod->base; b && b != (((void *)0)); b = b->base)
1249 struct __ecereNameSpace__ecere__com__Method * vMethod;
1251 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)))
1253 if(vMethod->type == 1)
1255 method = (struct __ecereNameSpace__ecere__com__Method *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&_class->methods, vMethod->name);
1258 if(method->function)
1259 _class->_vTbl[vMethod->vid] = method->function;
1262 (__ecereNameSpace__ecere__com__eSystem_Delete(method->name), method->name = 0);
1263 (__ecereNameSpace__ecere__com__eSystem_Delete(method->dataTypeString), method->dataTypeString = 0);
1264 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&_class->methods, (struct __ecereNameSpace__ecere__sys__BTNode *)method);
1268 (__ecereNameSpace__ecere__com__eSystem_Delete(method->dataTypeString), method->dataTypeString = 0);
1269 method->type = vMethod->type;
1270 method->dataTypeString = __ecereNameSpace__ecere__sys__CopyString(vMethod->dataTypeString);
1271 method->_class = vMethod->_class;
1274 else if((vMethod->vid >= updateStart && vMethod->vid < updateEnd) || _class->_vTbl[vMethod->vid] == b->_vTbl[vMethod->vid])
1275 _class->_vTbl[vMethod->vid] = _class->base->_vTbl[vMethod->vid];
1280 if(type == 0 || type == 5 || type == 1)
1282 struct __ecereNameSpace__ecere__com__Property * prop;
1283 struct __ecereNameSpace__ecere__com__DataMember * member;
1284 struct __ecereNameSpace__ecere__com__Class * c;
1286 for(c = mod->base; c; c = c->base)
1288 struct __ecereNameSpace__ecere__com__Property * _property;
1290 for(_property = c->membersAndProperties.first; _property; _property = _property->next)
1292 if(_property->isProperty)
1294 struct __ecereNameSpace__ecere__com__BTNamedLink * link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&_class->prop, _property->name);
1299 if(!prop->Set && !prop->Get && prop->memberAccess == 4)
1301 struct __ecereNameSpace__ecere__com__SelfWatcher * watcher;
1303 for(watcher = _class->selfWatchers.first; watcher; watcher = watcher->next)
1305 if(watcher->_property == prop)
1306 watcher->_property = _property;
1308 _property->selfWatchable = 0x1;
1309 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&_class->prop, (struct __ecereNameSpace__ecere__sys__BTNode *)link);
1310 (__ecereNameSpace__ecere__com__eSystem_Delete(prop->name), prop->name = 0);
1311 (__ecereNameSpace__ecere__com__eSystem_Delete(prop->dataTypeString), prop->dataTypeString = 0);
1312 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&_class->membersAndProperties, prop);
1319 for(member = _class->membersAndProperties.first; member; member = member->next)
1321 int offsetDiff = _class->offset - offsetBefore;
1323 if(!member->isProperty && offsetDiff > 0)
1325 member->offset += offsetDiff;
1326 member->memberOffset += offsetDiff;
1328 member->id += mod->base->memberID;
1330 _class->memberID += mod->base->memberID;
1331 _class->startMemberID += mod->base->memberID;
1334 __ecereNameSpace__ecere__com__FixDerivativesBase(_class, mod);
1336 struct __ecereNameSpace__ecere__com__Class * c;
1338 for(c = mod->base; c; c = c->base)
1340 struct __ecereNameSpace__ecere__com__ClassProperty * _property;
1342 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)))
1344 __ecereNameSpace__ecere__com__SetDelayedCPValues(_class, _property);
1350 struct __ecereNameSpace__ecere__sys__OldLink * templateLink;
1352 for(templateLink = base->templatized.first; templateLink; templateLink = templateLink->next)
1354 struct __ecereNameSpace__ecere__com__Class * template = templateLink->data;
1355 char * templateParams = strchr(template->name, '<');
1357 template->base = base->base;
1358 template->_vTbl = base->_vTbl;
1359 template->data = base->data;
1360 template->offset = base->offset;
1361 template->offsetClass = base->offsetClass;
1362 template->sizeClass = base->sizeClass;
1363 template->structSize = base->structSize;
1364 template->vTblSize = base->vTblSize;
1365 __ecereNameSpace__ecere__com__FixDerivativesBase(template, mod);
1370 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Application;
1372 struct __ecereNameSpace__ecere__com__Application
1377 unsigned int isGUIApp;
1378 struct __ecereNameSpace__ecere__sys__OldList allModules;
1379 char * parsedCommand;
1380 struct __ecereNameSpace__ecere__com__NameSpace systemNameSpace;
1381 } __attribute__ ((gcc_struct));
1383 extern char * strncpy(char * , const char * , int n);
1385 extern int strcmp(const char * , const char * );
1387 static void __ecereNameSpace__ecere__com__FreeTemplatesDerivatives(struct __ecereNameSpace__ecere__com__Class * base);
1389 extern int printf(char * , ...);
1391 static void __ecereNameSpace__ecere__com__NameSpace_Free(struct __ecereNameSpace__ecere__com__NameSpace * parentNameSpace);
1393 static struct __ecereNameSpace__ecere__com__BTNamedLink * __ecereNameSpace__ecere__com__SearchNameSpace(struct __ecereNameSpace__ecere__com__NameSpace * nameSpace, char * name, void * listOffset);
1395 extern char * strcpy(char * , const char * );
1397 static void __ecereNameSpace__ecere__com__FreeTemplateArgs(struct __ecereNameSpace__ecere__com__Class * template);
1399 static void __ecereNameSpace__ecere__com__CopyTemplateArg(struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param, struct __ecereNameSpace__ecere__com__ClassTemplateArgument * arg);
1401 int __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString(struct __ecereNameSpace__ecere__sys__BinaryTree * this, char * a, char * b);
1403 unsigned int __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(struct __ecereNameSpace__ecere__sys__BinaryTree * this, struct __ecereNameSpace__ecere__sys__BTNode * node);
1405 void __ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove(struct __ecereNameSpace__ecere__sys__OldList * this, void * item);
1407 struct __ecereNameSpace__ecere__sys__OldLink * __ecereMethod___ecereNameSpace__ecere__sys__OldList_FindLink(struct __ecereNameSpace__ecere__sys__OldList * this, void * data);
1409 void __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(struct __ecereNameSpace__ecere__sys__OldList * this, void * item);
1411 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)
1413 void * __ecereTemp1;
1415 struct __ecereNameSpace__ecere__com__NameSpace * nameSpace = (((void *)0));
1418 nameSpace = (declMode == 1) ? &((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->publicNameSpace : &((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->privateNameSpace;
1420 nameSpace = &((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application + 300)))->systemNameSpace;
1422 for(c = 0; name[c]; c++)
1424 if(name[c] == '.' || (name[c] == ':' && name[c + 1] == ':'))
1426 struct __ecereNameSpace__ecere__com__NameSpace * newSpace;
1427 char * spaceName = __ecereNameSpace__ecere__com___malloc(c - start + 1);
1429 strncpy(spaceName, name + start, c - start);
1430 spaceName[c - start] = '\0';
1431 newSpace = (struct __ecereNameSpace__ecere__com__NameSpace *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&(*nameSpace).nameSpaces, spaceName);
1434 newSpace = __ecereNameSpace__ecere__com__eSystem_New0(sizeof(struct __ecereNameSpace__ecere__com__NameSpace) * (1));
1435 (*newSpace).classes.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
1436 (*newSpace).defines.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
1437 (*newSpace).functions.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
1438 (*newSpace).nameSpaces.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
1439 (*newSpace).name = spaceName;
1440 (*newSpace).parent = nameSpace;
1441 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&(*nameSpace).nameSpaces, (struct __ecereNameSpace__ecere__sys__BTNode *)newSpace);
1444 (__ecereNameSpace__ecere__com__eSystem_Delete(spaceName), spaceName = 0);
1445 nameSpace = newSpace;
1457 struct __ecereNameSpace__ecere__com__BTNamedLink * classLink = (((void *)0));
1458 struct __ecereNameSpace__ecere__com__Class * _class = (((void *)0));
1459 char * dataTypeString = (((void *)0));
1460 struct __ecereNameSpace__ecere__com__Class * enumBase = (((void *)0));
1461 struct __ecereNameSpace__ecere__com__Class * base = (baseName && baseName[0]) ? __ecereNameSpace__ecere__com__eSystem_FindClass(module, baseName) : (((void *)0));
1462 unsigned int refine = 0x0;
1464 if(base && !base->internalDecl && (base->type == 5 || base->type == 1 || base->type == 0))
1466 if(base->type == 1 && type == 0)
1471 if(base && (type == 0 || type == 5 || type == 1) && (base->type == 3 || base->type == 2 || base->type == 4))
1475 if(!base || base->type == 1000)
1479 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"))
1481 base = __ecereNameSpace__ecere__com__eSystem_FindClass(module, "enum");
1482 dataTypeString = (baseName && baseName[0]) ? baseName : "int";
1486 base = __ecereNameSpace__ecere__com__eSystem_RegisterClass((int)0, baseName, (((void *)0)), 0, 0, (((void *)0)), (((void *)0)), module, declMode, 1);
1487 base->internalDecl = 0x1;
1489 base = __ecereNameSpace__ecere__com__eSystem_FindClass(module, "enum");
1492 else if(type == 1 && (!baseName || !baseName[0]))
1494 base = __ecereNameSpace__ecere__com__eSystem_FindClass(module, "struct");
1495 dataTypeString = name + start;
1500 dataTypeString = "struct __ecereNameSpace__ecere__com__Instance";
1502 dataTypeString = "void *";
1504 dataTypeString = (baseName && baseName[0]) ? baseName : "unsigned int";
1506 dataTypeString = (baseName && baseName[0]) ? baseName : "int";
1508 dataTypeString = name + start;
1509 if(base || (!baseName || !baseName[0]) || type == 2 || type == 3)
1511 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"))
1513 if(type == 0 && strcmp(name, "ecere::com::Instance") && strcmp(name, "enum") && strcmp(name, "struct"))
1514 base = __ecereNameSpace__ecere__com__eSystem_FindClass(module, "ecere::com::Instance");
1516 base = __ecereNameSpace__ecere__com__eSystem_FindClass(module, "class");
1531 base = __ecereNameSpace__ecere__com__eSystem_FindClass(module, "enum");
1534 dataTypeString = enumBase ? enumBase->dataTypeString : base->dataTypeString;
1536 offsetClass = base ? base->sizeClass : (type == 5 ? 0 : 0);
1537 totalSizeClass = offsetClass + sizeClass;
1538 if((_class = __ecereNameSpace__ecere__com__eSystem_FindClass(module, name)))
1540 __ecereNameSpace__ecere__com__FreeTemplatesDerivatives(_class);
1541 if(!_class->internalDecl)
1544 printf("error: Redefinition of class %s\n", name);
1547 _class->comRedefinition = 0x1;
1550 return (((void *)0));
1552 classLink = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&(*_class->nameSpace).classes, name + start);
1553 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&(*_class->nameSpace).classes, (struct __ecereNameSpace__ecere__sys__BTNode *)classLink);
1555 struct __ecereNameSpace__ecere__sys__OldLink * t;
1557 for(t = _class->templatized.first; t; t = t->next)
1559 struct __ecereNameSpace__ecere__com__Class * template = t->data;
1561 classLink = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&(*_class->nameSpace).classes, template->name);
1562 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&(*_class->nameSpace).classes, (struct __ecereNameSpace__ecere__sys__BTNode *)classLink);
1566 struct __ecereNameSpace__ecere__com__NameSpace * ns = _class->nameSpace;
1568 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))
1570 struct __ecereNameSpace__ecere__com__NameSpace * parent = (*ns).parent;
1572 __ecereNameSpace__ecere__com__NameSpace_Free(ns);
1573 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&(*parent).nameSpaces, (struct __ecereNameSpace__ecere__sys__BTNode *)ns);
1581 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);
1583 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);
1585 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);
1587 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);
1589 _class = classLink->data;
1590 if(_class && _class->internalDecl)
1592 __ecereNameSpace__ecere__com__FreeTemplatesDerivatives(_class);
1593 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&(*_class->nameSpace).classes, (struct __ecereNameSpace__ecere__sys__BTNode *)classLink);
1595 struct __ecereNameSpace__ecere__sys__OldLink * t;
1597 for(t = _class->templatized.first; t; t = t->next)
1599 struct __ecereNameSpace__ecere__com__Class * template = t->data;
1601 classLink = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&(*_class->nameSpace).classes, template->name);
1602 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&(*_class->nameSpace).classes, (struct __ecereNameSpace__ecere__sys__BTNode *)classLink);
1606 (__ecereNameSpace__ecere__com__eSystem_Delete(_class->fullName), _class->fullName = 0);
1607 _class->fullName = __ecereNameSpace__ecere__sys__CopyString(name);
1611 _class = __ecereNameSpace__ecere__com___calloc(1, sizeof(struct __ecereNameSpace__ecere__com__Class));
1612 _class->methods.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
1613 _class->members.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
1614 _class->prop.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
1615 _class->classProperties.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
1616 _class->name = __ecereNameSpace__ecere__sys__CopyString(name + start);
1617 _class->fullName = __ecereNameSpace__ecere__sys__CopyString(name);
1622 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&(*nameSpace).classes, (struct __ecereNameSpace__ecere__sys__BTNode *)(__ecereTemp1 = __ecereNameSpace__ecere__com__eSystem_New0(24), ((struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereTemp1)->name = _class->name, ((struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereTemp1)->data = _class, ((struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereTemp1)));
1624 struct __ecereNameSpace__ecere__sys__OldLink * t;
1626 for(t = _class->templatized.first; t; t = t->next)
1628 struct __ecereNameSpace__ecere__com__Class * template = t->data;
1630 __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)));
1636 if(!base && baseName && strcmp(baseName, name))
1638 if(strchr(baseName, '<'))
1640 char templateClassName[1024];
1641 struct __ecereNameSpace__ecere__com__Class * templateBase;
1643 strcpy(templateClassName, baseName);
1644 *strchr(templateClassName, '<') = '\0';
1645 templateBase = __ecereNameSpace__ecere__com__eSystem_FindClass(module, templateClassName);
1648 templateBase = __ecereNameSpace__ecere__com__eSystem_RegisterClass((int)0, templateClassName, (((void *)0)), 0, 0, (((void *)0)), (((void *)0)), module, declMode, 1);
1649 templateBase->internalDecl = 0x1;
1651 base = __ecereNameSpace__ecere__com__eSystem_FindClass(module, baseName);
1655 base = __ecereNameSpace__ecere__com__eSystem_RegisterClass((int)0, baseName, (((void *)0)), 0, 0, (((void *)0)), (((void *)0)), module, declMode, 1);
1656 base->internalDecl = 0x1;
1660 _class->internalDecl = 0x0;
1663 _class->data = __ecereNameSpace__ecere__com__eSystem_Renew(_class->data, sizeof(unsigned char) * (totalSizeClass));
1664 if(base && base->type != 1000 && base->type != 4)
1665 memcpy(_class->data, base->data, offsetClass);
1667 memset(_class->data, (unsigned char)0, offsetClass);
1668 memset((unsigned char *)_class->data + offsetClass, (unsigned char)0, sizeClass);
1670 (__ecereNameSpace__ecere__com__eSystem_Delete(_class->dataTypeString), _class->dataTypeString = 0);
1671 _class->dataTypeString = __ecereNameSpace__ecere__sys__CopyString(dataTypeString);
1672 _class->defaultAlignment = base ? base->defaultAlignment : 0;
1675 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)_class->module + 12)))->classes, _class);
1679 struct __ecereNameSpace__ecere__com__Class * base = _class->base;
1680 struct __ecereNameSpace__ecere__sys__OldLink * deriv = __ecereMethod___ecereNameSpace__ecere__sys__OldList_FindLink(&base->derivatives, _class);
1682 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&base->derivatives, deriv);
1686 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->classes, _class);
1688 _class->nameSpace = nameSpace;
1690 struct __ecereNameSpace__ecere__sys__OldLink * t;
1692 for(t = _class->templatized.first; t; t = t->next)
1694 struct __ecereNameSpace__ecere__com__Class * template = t->data;
1696 template->nameSpace = nameSpace;
1699 _class->module = module;
1700 _class->base = base;
1704 struct __ecereNameSpace__ecere__com__Class * sClass;
1706 for(sClass = base; sClass; sClass = sClass->base)
1708 if(sClass->templateClass)
1709 sClass = sClass->templateClass;
1710 numParams += sClass->templateParams.count;
1714 if(_class->templateArgs)
1716 __ecereNameSpace__ecere__com__FreeTemplateArgs(_class);
1718 (__ecereNameSpace__ecere__com__eSystem_Delete(_class->templateArgs), _class->templateArgs = 0);
1719 _class->templateArgs = __ecereNameSpace__ecere__com__eSystem_New0(sizeof(struct __ecereNameSpace__ecere__com__ClassTemplateArgument) * (numParams));
1720 _class->numParams = numParams;
1721 for(sClass = _class; sClass; sClass = sClass->base)
1723 struct __ecereNameSpace__ecere__com__Class * prevClass;
1724 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param;
1727 if(sClass->templateClass)
1728 sClass = sClass->templateClass;
1729 for(prevClass = sClass->base; prevClass; prevClass = prevClass->base)
1731 if(prevClass->templateClass)
1732 prevClass = prevClass->templateClass;
1733 id += prevClass->templateParams.count;
1735 if(base->templateArgs)
1737 for(param = sClass->templateParams.first; param; param = param->next)
1739 _class->templateArgs[id] = base->templateArgs[id];
1740 __ecereNameSpace__ecere__com__CopyTemplateArg(param, &_class->templateArgs[id]);
1747 _class->memberID = _class->startMemberID = (base && (type == 0 || type == 5 || type == 1)) ? base->memberID : 0;
1748 if(type == 0 || type == 5)
1749 _class->offset = (base && base->structSize && base->type != 1000) ? base->structSize : ((type == 5) ? 0 : 12);
1752 _class->memberOffset = (base && base->structSize && base->type != 1000) ? base->structSize : 0;
1753 _class->typeSize = _class->structSize = _class->memberOffset + size;
1755 else if(type == 2 || type == 4 || type == 3)
1757 struct __ecereNameSpace__ecere__com__Class * dataTypeClass = __ecereNameSpace__ecere__com__eSystem_FindClass(_class->module, dataTypeString);
1760 _class->typeSize = dataTypeClass->typeSize;
1761 _class->structSize = 0;
1763 else if(type == 0 || type == 5)
1765 _class->structSize = _class->offset + size;
1766 _class->typeSize = sizeof(void *);
1768 _class->offsetClass = offsetClass;
1769 _class->sizeClass = totalSizeClass;
1770 _class->Constructor = (void *)Constructor;
1771 _class->Destructor = Destructor;
1772 if(_class->type != 1000)
1773 _class->type = type;
1775 _class->computeSize = 0x1;
1777 _class->computeSize = 0x0;
1778 _class->inheritanceAccess = inheritanceAccess;
1782 _class->base = base = enumBase;
1784 struct __ecereNameSpace__ecere__com__EnumClassData * data = (struct __ecereNameSpace__ecere__com__EnumClassData *)_class->data;
1786 if(base && base->type != 4)
1789 data->largest = ((struct __ecereNameSpace__ecere__com__EnumClassData *)base->data)->largest;
1792 if(base && base->vTblSize)
1794 _class->vTblSize = base->vTblSize;
1795 (__ecereNameSpace__ecere__com__eSystem_Delete(_class->_vTbl), _class->_vTbl = 0);
1796 _class->_vTbl = __ecereNameSpace__ecere__com___malloc(sizeof(int (*)()) * _class->vTblSize);
1797 memcpy(_class->_vTbl, base->_vTbl, sizeof(int (*)()) * _class->vTblSize);
1801 struct __ecereNameSpace__ecere__sys__OldLink * link = (link = __ecereNameSpace__ecere__com__eSystem_New0(12), link->data = _class, link);
1803 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&_class->base->derivatives, link);
1805 __ecereNameSpace__ecere__com__FixDerivativesBase(_class, _class);
1809 return (((void *)0));
1812 static void __ecereNameSpace__ecere__com__DataMember_Free(struct __ecereNameSpace__ecere__com__DataMember * parentMember)
1814 struct __ecereNameSpace__ecere__com__DataMember * member;
1815 struct __ecereNameSpace__ecere__com__BTNamedLink * namedLink;
1817 (__ecereNameSpace__ecere__com__eSystem_Delete(parentMember->name), parentMember->name = 0);
1818 (__ecereNameSpace__ecere__com__eSystem_Delete(parentMember->dataTypeString), parentMember->dataTypeString = 0);
1819 while((member = parentMember->members.first))
1821 __ecereNameSpace__ecere__com__DataMember_Free(member);
1822 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&parentMember->members, member);
1824 while((namedLink = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&parentMember->membersAlpha)))
1826 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&parentMember->membersAlpha, (struct __ecereNameSpace__ecere__sys__BTNode *)namedLink);
1830 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__NamedLink;
1832 struct __ecereNameSpace__ecere__sys__NamedLink
1834 struct __ecereNameSpace__ecere__sys__NamedLink * prev;
1835 struct __ecereNameSpace__ecere__sys__NamedLink * next;
1838 } __attribute__ ((gcc_struct));
1840 static void __ecereNameSpace__ecere__com__FreeEnumValue(struct __ecereNameSpace__ecere__sys__NamedLink * value)
1842 (__ecereNameSpace__ecere__com__eSystem_Delete(value->name), value->name = 0);
1845 static void __ecereNameSpace__ecere__com__FreeTemplateArg(struct __ecereNameSpace__ecere__com__Class * template, struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param, int id)
1850 (__ecereNameSpace__ecere__com__eSystem_Delete(template->templateArgs[id].dataTypeString), template->templateArgs[id].dataTypeString = 0);
1853 (__ecereNameSpace__ecere__com__eSystem_Delete(template->templateArgs[id].memberString), template->templateArgs[id].memberString = 0);
1860 static void __ecereNameSpace__ecere__com__FreeTemplateArgs(struct __ecereNameSpace__ecere__com__Class * template)
1862 if(template->templateArgs)
1864 struct __ecereNameSpace__ecere__com__Class * _class;
1866 for(_class = template; _class; _class = _class->base)
1868 struct __ecereNameSpace__ecere__com__Class * prevClass;
1869 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param;
1872 if(_class->templateClass)
1873 _class = _class->templateClass;
1874 for(prevClass = _class->base; prevClass; prevClass = prevClass->base)
1876 if(prevClass->templateClass)
1877 prevClass = prevClass->templateClass;
1878 id += prevClass->templateParams.count;
1880 if(id < template->numParams)
1882 for(param = _class->templateParams.first; param; param = param->next)
1887 (__ecereNameSpace__ecere__com__eSystem_Delete(template->templateArgs[id].dataTypeString), template->templateArgs[id].dataTypeString = 0);
1890 (__ecereNameSpace__ecere__com__eSystem_Delete(template->templateArgs[id].memberString), template->templateArgs[id].memberString = 0);
1902 static void __ecereNameSpace__ecere__com__FreeTemplate(struct __ecereNameSpace__ecere__com__Class * template)
1904 struct __ecereNameSpace__ecere__sys__OldLink * deriv;
1906 if(template->nameSpace)
1908 struct __ecereNameSpace__ecere__com__BTNamedLink * link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&(*template->nameSpace).classes, template->name);
1910 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&(*template->nameSpace).classes, (struct __ecereNameSpace__ecere__sys__BTNode *)link);
1912 __ecereNameSpace__ecere__com__FreeTemplateArgs(template);
1913 (__ecereNameSpace__ecere__com__eSystem_Delete(template->fullName), template->fullName = 0);
1914 (__ecereNameSpace__ecere__com__eSystem_Delete(template->name), template->name = 0);
1915 (__ecereNameSpace__ecere__com__eSystem_Delete(template->templateArgs), template->templateArgs = 0);
1916 while((deriv = template->derivatives.first))
1918 ((struct __ecereNameSpace__ecere__com__Class *)deriv->data)->base = (((void *)0));
1919 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&template->derivatives, deriv);
1921 __ecereNameSpace__ecere__com___free(template);
1924 static void __ecereNameSpace__ecere__com__FreeTemplates(struct __ecereNameSpace__ecere__com__Class * _class)
1926 struct __ecereNameSpace__ecere__sys__OldLink * deriv, * template;
1928 for(deriv = _class->derivatives.first; deriv; deriv = deriv->next)
1930 __ecereNameSpace__ecere__com__FreeTemplates(deriv->data);
1932 __ecereNameSpace__ecere__com__FreeTemplateArgs(_class);
1933 (__ecereNameSpace__ecere__com__eSystem_Delete(_class->templateArgs), _class->templateArgs = 0);
1934 while((template = _class->templatized.first))
1936 __ecereNameSpace__ecere__com__FreeTemplates(template->data);
1937 __ecereNameSpace__ecere__com__FreeTemplate(template->data);
1938 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&_class->templatized, template);
1942 void __ecereMethod___ecereNameSpace__ecere__sys__OldList_Free(struct __ecereNameSpace__ecere__sys__OldList * this, void (* freeFn)(void * ));
1944 void __ecereNameSpace__ecere__com__eClass_Unregister(struct __ecereNameSpace__ecere__com__Class * _class)
1946 struct __ecereNameSpace__ecere__com__BTNamedLink * namedLink;
1947 struct __ecereNameSpace__ecere__com__DataMember * member;
1948 struct __ecereNameSpace__ecere__com__Method * method;
1949 struct __ecereNameSpace__ecere__sys__OldLink * deriv, * template;
1950 struct __ecereNameSpace__ecere__com__ClassProperty * classProp;
1951 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param;
1953 (__ecereNameSpace__ecere__com__eSystem_Delete(_class->_vTbl), _class->_vTbl = 0);
1954 __ecereNameSpace__ecere__com__FreeTemplates(_class);
1955 __ecereNameSpace__ecere__com__FreeTemplateArgs(_class);
1956 (__ecereNameSpace__ecere__com__eSystem_Delete(_class->templateArgs), _class->templateArgs = 0);
1957 while((template = _class->templatized.first))
1959 __ecereNameSpace__ecere__com__FreeTemplate(template->data);
1960 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&_class->templatized, template);
1962 while((member = _class->membersAndProperties.first))
1964 if(!member->isProperty && (member->type == 1 || member->type == 2))
1965 __ecereNameSpace__ecere__com__DataMember_Free(member);
1966 (__ecereNameSpace__ecere__com__eSystem_Delete(member->name), member->name = 0);
1967 (__ecereNameSpace__ecere__com__eSystem_Delete(member->dataTypeString), member->dataTypeString = 0);
1968 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&_class->membersAndProperties, member);
1970 while((member = _class->conversions.first))
1972 (__ecereNameSpace__ecere__com__eSystem_Delete(member->name), member->name = 0);
1973 (__ecereNameSpace__ecere__com__eSystem_Delete(member->dataTypeString), member->dataTypeString = 0);
1974 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&_class->conversions, member);
1976 while((namedLink = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&_class->prop)))
1978 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&_class->prop, (struct __ecereNameSpace__ecere__sys__BTNode *)namedLink);
1980 while((namedLink = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&_class->members)))
1982 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&_class->members, (struct __ecereNameSpace__ecere__sys__BTNode *)namedLink);
1984 while((classProp = (struct __ecereNameSpace__ecere__com__ClassProperty *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&_class->classProperties)))
1986 (__ecereNameSpace__ecere__com__eSystem_Delete(classProp->name), classProp->name = 0);
1987 (__ecereNameSpace__ecere__com__eSystem_Delete(classProp->dataTypeString), classProp->dataTypeString = 0);
1988 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&_class->classProperties, (struct __ecereNameSpace__ecere__sys__BTNode *)classProp);
1990 while((method = (struct __ecereNameSpace__ecere__com__Method *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&_class->methods)))
1992 (__ecereNameSpace__ecere__com__eSystem_Delete(method->name), method->name = 0);
1993 (__ecereNameSpace__ecere__com__eSystem_Delete(method->dataTypeString), method->dataTypeString = 0);
1994 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&_class->methods, (struct __ecereNameSpace__ecere__sys__BTNode *)method);
1996 if(_class->type == 4)
1998 struct __ecereNameSpace__ecere__com__EnumClassData * data = (struct __ecereNameSpace__ecere__com__EnumClassData *)_class->data;
2000 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Free(&data->values, (void *)__ecereNameSpace__ecere__com__FreeEnumValue);
2002 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Free(&_class->delayedCPValues, (((void *)0)));
2003 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Free(&_class->selfWatchers, (((void *)0)));
2006 struct __ecereNameSpace__ecere__com__Class * base = _class->base;
2008 for(deriv = base->derivatives.first; deriv; deriv = deriv->next)
2010 if(deriv->data == _class)
2014 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&base->derivatives, deriv);
2016 while((deriv = _class->derivatives.first))
2018 ((struct __ecereNameSpace__ecere__com__Class *)deriv->data)->base = (((void *)0));
2019 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&_class->derivatives, deriv);
2021 if(_class->nameSpace)
2023 struct __ecereNameSpace__ecere__com__BTNamedLink * link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&(*_class->nameSpace).classes, _class->name);
2025 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&(*_class->nameSpace).classes, (struct __ecereNameSpace__ecere__sys__BTNode *)link);
2027 (__ecereNameSpace__ecere__com__eSystem_Delete(_class->name), _class->name = 0);
2028 (__ecereNameSpace__ecere__com__eSystem_Delete(_class->fullName), _class->fullName = 0);
2029 (__ecereNameSpace__ecere__com__eSystem_Delete(_class->dataTypeString), _class->dataTypeString = 0);
2030 (__ecereNameSpace__ecere__com__eSystem_Delete(_class->data), _class->data = 0);
2031 while((param = _class->templateParams.first))
2036 (__ecereNameSpace__ecere__com__eSystem_Delete(param->defaultArg.dataTypeString), param->defaultArg.dataTypeString = 0);
2039 (__ecereNameSpace__ecere__com__eSystem_Delete(param->defaultArg.memberString), param->defaultArg.memberString = 0);
2044 if(param->type != 1)
2045 (__ecereNameSpace__ecere__com__eSystem_Delete(param->dataTypeString), param->dataTypeString = 0);
2046 (__ecereNameSpace__ecere__com__eSystem_Delete(param->name), param->name = 0);
2047 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&_class->templateParams, param);
2049 __ecereNameSpace__ecere__com___free(_class);
2052 struct __ecereNameSpace__ecere__sys__BTNode * __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Find(struct __ecereNameSpace__ecere__sys__BinaryTree * this, uintptr_t key);
2054 static struct __ecereNameSpace__ecere__com__BTNamedLink * __ecereNameSpace__ecere__com__ScanNameSpace(struct __ecereNameSpace__ecere__com__NameSpace * nameSpace, char * name, void * listOffset)
2056 struct __ecereNameSpace__ecere__sys__BinaryTree * tree = (struct __ecereNameSpace__ecere__sys__BinaryTree *)((unsigned char *)nameSpace + (unsigned int)listOffset);
2057 struct __ecereNameSpace__ecere__com__BTNamedLink * link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Find((&*tree), (uintptr_t)name);
2058 struct __ecereNameSpace__ecere__com__NameSpace * child;
2062 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)))
2064 link = __ecereNameSpace__ecere__com__ScanNameSpace(child, name, listOffset);
2072 static struct __ecereNameSpace__ecere__com__BTNamedLink * __ecereNameSpace__ecere__com__SearchNameSpace(struct __ecereNameSpace__ecere__com__NameSpace * nameSpace, char * name, void * listOffset)
2078 for(c = 0; (ch = name[c]); c++)
2084 if(level == 0 && (ch == '.' || (ch == ':' && name[c + 1] == ':')))
2086 struct __ecereNameSpace__ecere__com__NameSpace * newSpace;
2087 char * spaceName = __ecereNameSpace__ecere__com___malloc(c - start + 1);
2089 memcpy(spaceName, name + start, c - start);
2090 spaceName[c - start] = '\0';
2091 newSpace = (struct __ecereNameSpace__ecere__com__NameSpace *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&nameSpace->nameSpaces, spaceName);
2092 __ecereNameSpace__ecere__com___free(spaceName);
2094 return (((void *)0));
2095 nameSpace = newSpace;
2096 if(level == 0 && ch == ':')
2103 return __ecereNameSpace__ecere__com__ScanNameSpace(nameSpace, name + start, listOffset);
2105 return (((void *)0));
2108 static struct __ecereNameSpace__ecere__com__BTNamedLink * __ecereNameSpace__ecere__com__SearchModule(struct __ecereNameSpace__ecere__com__Instance * module, char * name, void * listOffset, unsigned int searchPrivate)
2110 struct __ecereNameSpace__ecere__com__SubModule * subModule;
2111 struct __ecereNameSpace__ecere__com__BTNamedLink * link;
2115 link = __ecereNameSpace__ecere__com__SearchNameSpace(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->privateNameSpace, name, listOffset);
2119 link = __ecereNameSpace__ecere__com__SearchNameSpace(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->publicNameSpace, name, listOffset);
2122 for(subModule = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->modules.first; subModule; subModule = subModule->next)
2124 if(searchPrivate || subModule->importMode == 1)
2126 link = __ecereNameSpace__ecere__com__SearchModule(subModule->module, name, listOffset, 0x0);
2131 return (((void *)0));
2134 extern int isspace(int c);
2136 long long __ecereNameSpace__ecere__com___strtoi64(char * string, char ** endString, int base)
2138 long long value = 0;
2143 for(c = 0; (ch = string[c]) && isspace(ch); c++)
2155 if(ch == (char)0 && string[c + 1] == 'x')
2168 for(; (ch = string[c]); c++)
2172 else if(ch >= '1' && ch <= '9')
2174 else if(ch >= 'a' && ch <= 'z')
2176 else if(ch >= 'A' && ch <= 'Z')
2180 *endString = string + c;
2190 *endString = string + c;
2194 return sign * value;
2197 uint64 __ecereNameSpace__ecere__com___strtoui64(char * string, char ** endString, int base)
2204 for(c = 0; (ch = string[c]) && isspace(ch); c++)
2216 if(ch == (char)0 && string[c + 1] == 'x')
2229 for(; (ch = string[c]); c++)
2233 else if(ch >= '1' && ch <= '9')
2235 else if(ch >= 'a' && ch <= 'z')
2237 else if(ch >= 'A' && ch <= 'Z')
2241 *endString = string + c;
2251 *endString = string + c;
2255 return sign * value;
2258 extern char * strcat(char * , const char * );
2260 extern int strlen(const char * );
2262 struct __ecereNameSpace__ecere__com__Class * __ecereNameSpace__ecere__com__eSystem_FindClass(struct __ecereNameSpace__ecere__com__Instance * module, char * name)
2264 void * __ecereTemp1;
2268 struct __ecereNameSpace__ecere__com__BTNamedLink * link;
2270 link = __ecereNameSpace__ecere__com__SearchNameSpace(&((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application + 300)))->systemNameSpace, name, &(*((struct __ecereNameSpace__ecere__com__NameSpace *)0)).classes);
2273 link = __ecereNameSpace__ecere__com__SearchModule(module, name, &(*((struct __ecereNameSpace__ecere__com__NameSpace *)0)).classes, 0x1);
2277 char noTemplateName[1024];
2278 char * templateParams = strchr(name, '<');
2282 strncpy(noTemplateName, name, templateParams - name);
2283 noTemplateName[templateParams - name] = '\0';
2286 strcpy(noTemplateName, name);
2287 link = __ecereNameSpace__ecere__com__SearchNameSpace(&((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application + 300)))->systemNameSpace, noTemplateName, &(*((struct __ecereNameSpace__ecere__com__NameSpace *)0)).classes);
2289 link = __ecereNameSpace__ecere__com__SearchModule(module, noTemplateName, &(*((struct __ecereNameSpace__ecere__com__NameSpace *)0)).classes, 0x1);
2292 struct __ecereNameSpace__ecere__com__Class * _class = link->data;
2293 struct __ecereNameSpace__ecere__com__Class * templatedClass = (((void *)0));
2294 char className[1024];
2296 strcpy(className, _class->fullName);
2297 strcat(className, templateParams);
2298 link = __ecereNameSpace__ecere__com__SearchNameSpace(&((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application + 300)))->systemNameSpace, className, &(*((struct __ecereNameSpace__ecere__com__NameSpace *)0)).classes);
2301 link = __ecereNameSpace__ecere__com__SearchModule(module, className, &(*((struct __ecereNameSpace__ecere__com__NameSpace *)0)).classes, 0x1);
2304 if(_class && templateParams)
2306 struct __ecereNameSpace__ecere__sys__OldList __simpleStruct1 =
2310 struct __ecereNameSpace__ecere__sys__OldList __simpleStruct0 =
2315 templatedClass = __ecereNameSpace__ecere__com__eSystem_New0(368);
2316 *templatedClass = *_class;
2317 templatedClass->templateClass = _class;
2318 templatedClass->fullName = __ecereNameSpace__ecere__sys__CopyString(className);
2319 templatedClass->name = __ecereNameSpace__ecere__sys__CopyString(templatedClass->fullName + strlen(_class->fullName) - strlen(_class->name));
2320 __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)));
2321 templatedClass->templateArgs = (((void *)0));
2322 templatedClass->numParams = 0;
2323 templatedClass->derivatives = __simpleStruct0;
2324 templatedClass->templatized = __simpleStruct1;
2325 __ecereNameSpace__ecere__com__ComputeClassParameters(templatedClass, templateParams, module);
2326 __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)));
2328 return templatedClass;
2332 return (((void *)0));
2335 static void __ecereNameSpace__ecere__com__CopyTemplateArg(struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param, struct __ecereNameSpace__ecere__com__ClassTemplateArgument * arg)
2340 arg->dataTypeString = __ecereNameSpace__ecere__sys__CopyString(arg->dataTypeString);
2345 arg->memberString = __ecereNameSpace__ecere__sys__CopyString(arg->memberString);
2350 extern char * __ecereNameSpace__ecere__sys__TrimRSpaces(char * string, char * output);
2352 extern unsigned long strtoul(const char * nptr, char * * endptr, int base);
2354 extern double strtod(char * , char * * );
2356 extern int sprintf(char * , char * , ...);
2358 extern char * strstr(char * , const char * );
2360 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);
2362 struct __ecereNameSpace__ecere__com__Method * __ecereNameSpace__ecere__com__eClass_FindMethod(struct __ecereNameSpace__ecere__com__Class * _class, char * name, struct __ecereNameSpace__ecere__com__Instance * module);
2364 struct __ecereNameSpace__ecere__com__Property * __ecereNameSpace__ecere__com__eClass_FindProperty(struct __ecereNameSpace__ecere__com__Class * _class, char * name, struct __ecereNameSpace__ecere__com__Instance * module);
2366 static void __ecereNameSpace__ecere__com__ComputeClassParameters(struct __ecereNameSpace__ecere__com__Class * templatedClass, char * templateParams, struct __ecereNameSpace__ecere__com__Instance * findModule)
2369 char * nextParamStart = templateParams ? (templateParams + 1) : (((void *)0));
2370 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * curParam = (((void *)0));
2371 struct __ecereNameSpace__ecere__com__Class * lastClass = (((void *)0)), * sClass;
2374 struct __ecereNameSpace__ecere__com__Class * _class = templatedClass->templateClass ? templatedClass->templateClass : templatedClass;
2376 for(sClass = _class; sClass; sClass = sClass->base)
2378 if(sClass->templateClass)
2379 sClass = sClass->templateClass;
2380 numParams += sClass->templateParams.count;
2382 if(templatedClass->templateArgs)
2383 __ecereNameSpace__ecere__com__FreeTemplateArgs(templatedClass);
2384 (__ecereNameSpace__ecere__com__eSystem_Delete(templatedClass->templateArgs), templatedClass->templateArgs = 0);
2385 templatedClass->templateArgs = __ecereNameSpace__ecere__com__eSystem_New0(sizeof(struct __ecereNameSpace__ecere__com__ClassTemplateArgument) * (numParams));
2386 templatedClass->numParams = numParams;
2387 if(_class != templatedClass)
2390 if(templatedClass->base && templatedClass->base->templateArgs && _class == templatedClass)
2392 struct __ecereNameSpace__ecere__com__Class * sClass;
2394 memcpy(templatedClass->templateArgs, templatedClass->base->templateArgs, sizeof(struct __ecereNameSpace__ecere__com__ClassTemplateArgument) * (numParams - templatedClass->templateParams.count));
2395 for(sClass = templatedClass->base; sClass; sClass = sClass->base)
2397 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param;
2398 struct __ecereNameSpace__ecere__com__Class * prevClass;
2401 for(prevClass = sClass->base; prevClass; prevClass = prevClass->base)
2403 if(prevClass->templateClass)
2404 prevClass = prevClass->templateClass;
2405 id += prevClass->templateParams.count;
2407 if(sClass->templateClass)
2408 sClass = sClass->templateClass;
2409 for(param = sClass->templateParams.first; param; param = param->next)
2410 __ecereNameSpace__ecere__com__CopyTemplateArg(param, &templatedClass->templateArgs[id++]);
2413 while(nextParamStart)
2415 char * paramStart = nextParamStart;
2419 while(*paramStart == ' ')
2421 paramEnd = paramStart;
2422 while((ch = *paramEnd, ch && (level > 0 || (ch != '>' && ch != ','))))
2430 nextParamStart = (ch == ',') ? (paramEnd + 1) : (((void *)0));
2431 while(*paramEnd == ' ')
2433 if(paramEnd > paramStart)
2435 char * ptr, * equal = (((void *)0));
2437 for(ptr = paramStart; ptr <= paramEnd; ptr++)
2447 char * end = equal - 1;
2452 strncpy(ident, paramStart, end + 1 - paramStart);
2453 ident[end + 1 - paramStart] = (char)0;
2454 for(sClass = _class; sClass; sClass = sClass->base)
2456 if(sClass->templateClass)
2457 sClass = sClass->templateClass;
2458 for(curParam = sClass->templateParams.first; curParam; curParam = curParam->next)
2460 if(!strcmp(curParam->name, ident))
2465 struct __ecereNameSpace__ecere__com__Class * nextClass;
2466 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * prevParam;
2469 for(prevParam = curParam->prev; prevParam; prevParam = prevParam->prev)
2471 for(nextClass = sClass->base; nextClass; nextClass = nextClass->base)
2473 if(nextClass->templateClass)
2474 nextClass = nextClass->templateClass;
2475 curParamID += nextClass->templateParams.count;
2486 curParam = curParam->next;
2491 for(sClass = lastClass ? lastClass->base : _class; sClass; sClass = sClass->base)
2493 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param;
2496 if(sClass->templateClass)
2497 sClass = sClass->templateClass;
2498 for(param = sClass->templateParams.first; param; param = param->next, curParamID++)
2505 struct __ecereNameSpace__ecere__com__Class * nextClass;
2507 for(nextClass = sClass->base; nextClass; nextClass = nextClass->base)
2509 if(nextClass->templateClass)
2510 nextClass = nextClass->templateClass;
2511 curParamID += nextClass->templateParams.count;
2521 struct __ecereNameSpace__ecere__com__ClassTemplateArgument argument =
2530 while(*equal == ' ')
2532 memcpy(value, equal, paramEnd - equal);
2533 value[paramEnd - equal] = (char)0;
2537 memcpy(value, paramStart, paramEnd - paramStart);
2538 value[paramEnd - paramStart] = (char)0;
2540 __ecereNameSpace__ecere__sys__TrimRSpaces(value, value);
2541 switch(curParam->type)
2544 argument.dataTypeString = __ecereNameSpace__ecere__sys__CopyString(value);
2545 argument.dataTypeClass = __ecereNameSpace__ecere__com__eSystem_FindClass(_class->module, value);
2546 if(!argument.dataTypeClass)
2547 argument.dataTypeClass = __ecereNameSpace__ecere__com__eSystem_FindClass(((struct __ecereNameSpace__ecere__com__Module *)(((char *)_class->module + 12)))->application, value);
2548 if(!argument.dataTypeClass)
2549 argument.dataTypeClass = __ecereNameSpace__ecere__com__eSystem_FindClass(findModule, value);
2553 struct __ecereNameSpace__ecere__com__Class * expClass = __ecereNameSpace__ecere__com__eSystem_FindClass(_class->module, curParam->dataTypeString);
2556 expClass = __ecereNameSpace__ecere__com__eSystem_FindClass(((struct __ecereNameSpace__ecere__com__Module *)(((char *)_class->module + 12)))->application, curParam->dataTypeString);
2559 expClass->_vTbl[__ecereVMethodID_class_OnGetDataFromString](expClass, &argument.expression, value);
2561 else if(value[0] == '\"')
2563 char * endQuote = value + strlen(value) - 1;
2565 if(*endQuote != '\"')
2568 argument.expression.p = __ecereNameSpace__ecere__sys__CopyString(value + 1);
2570 else if(value[0] == '\'')
2573 unsigned int ch = __ecereNameSpace__ecere__sys__UTF8GetChar(value + 1, &nb);
2575 argument.expression.ui = ch;
2577 else if(!strcmp(curParam->dataTypeString, "uint"))
2579 argument.expression.ui = strtoul(value, (((void *)0)), 0);
2581 else if(!strcmp(curParam->dataTypeString, "char"))
2583 argument.expression.c = (char)strtol(value, (((void *)0)), 0);
2585 else if(!strcmp(curParam->dataTypeString, "byte"))
2587 argument.expression.uc = (unsigned char)strtoul(value, (((void *)0)), 0);
2589 else if(!strcmp(curParam->dataTypeString, "short"))
2591 argument.expression.s = (short)strtol(value, (((void *)0)), 0);
2593 else if(!strcmp(curParam->dataTypeString, "uint16"))
2595 argument.expression.us = (unsigned short)strtoul(value, (((void *)0)), 0);
2597 else if(!strcmp(curParam->dataTypeString, "int64"))
2599 argument.expression.i64 = __ecereNameSpace__ecere__com___strtoi64(value, (((void *)0)), 0);
2601 else if(!strcmp(curParam->dataTypeString, "uint64"))
2603 argument.expression.ui64 = __ecereNameSpace__ecere__com___strtoui64(value, (((void *)0)), 0);
2605 else if(!strcmp(curParam->dataTypeString, "float"))
2607 argument.expression.f = (float)strtod(value, (((void *)0)));
2609 else if(!strcmp(curParam->dataTypeString, "double"))
2611 argument.expression.d = strtod(value, (((void *)0)));
2615 argument.expression.i = strtol(value, (((void *)0)), 0);
2620 argument.memberString = __ecereNameSpace__ecere__sys__CopyString(value);
2623 __ecereNameSpace__ecere__com__FreeTemplateArg(templatedClass, curParam, curParamID);
2624 templatedClass->templateArgs[curParamID] = argument;
2628 if(templatedClass == _class)
2630 struct __ecereNameSpace__ecere__com__Class * sClass = _class;
2632 struct __ecereNameSpace__ecere__com__Class * nextClass;
2633 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param;
2635 for(nextClass = sClass->base; nextClass; nextClass = nextClass->base)
2637 if(nextClass->templateClass)
2638 nextClass = nextClass->templateClass;
2639 curParamID += nextClass->templateParams.count;
2641 for(param = sClass->templateParams.first; param; param = param->next)
2643 if(!templatedClass->templateArgs[curParamID].dataTypeString)
2645 templatedClass->templateArgs[curParamID] = param->defaultArg;
2646 __ecereNameSpace__ecere__com__CopyTemplateArg(param, &templatedClass->templateArgs[curParamID]);
2647 if(param->type == 0 && param->defaultArg.dataTypeString)
2649 templatedClass->templateArgs[curParamID].dataTypeClass = __ecereNameSpace__ecere__com__eSystem_FindClass(templatedClass->module, param->defaultArg.dataTypeString);
2650 if(!templatedClass->templateArgs[curParamID].dataTypeClass)
2651 templatedClass->templateArgs[curParamID].dataTypeClass = __ecereNameSpace__ecere__com__eSystem_FindClass(((struct __ecereNameSpace__ecere__com__Module *)(((char *)templatedClass->module + 12)))->application, param->defaultArg.dataTypeString);
2652 if(!templatedClass->templateArgs[curParamID].dataTypeClass)
2653 templatedClass->templateArgs[curParamID].dataTypeClass = __ecereNameSpace__ecere__com__eSystem_FindClass(findModule, param->defaultArg.dataTypeString);
2659 if(templatedClass->base && templatedClass->base->templateArgs && numParams - _class->templateParams.count)
2661 int c = numParams - _class->templateParams.count - 1;
2663 for(sClass = _class->base; sClass; sClass = sClass->base)
2665 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param;
2667 if(sClass->templateClass)
2668 sClass = sClass->templateClass;
2669 for(param = sClass->templateParams.last; param; param = param->prev)
2671 struct __ecereNameSpace__ecere__com__ClassTemplateArgument * arg = &templatedClass->templateArgs[c];
2672 struct __ecereNameSpace__ecere__com__ClassTemplateArgument * baseArg = &templatedClass->base->templateArgs[c];
2674 if(!(*arg).dataTypeString)
2676 *arg = templatedClass->base->templateArgs[c];
2677 __ecereNameSpace__ecere__com__CopyTemplateArg(param, arg);
2678 if(param->type == 0)
2680 if((*arg).dataTypeClass && strchr((*arg).dataTypeString, '<') && (*arg).dataTypeClass->templateArgs)
2682 struct __ecereNameSpace__ecere__com__Class * expClass = (*arg).dataTypeClass;
2683 struct __ecereNameSpace__ecere__com__Class * cClass = (((void *)0));
2686 char templateString[1024];
2688 sprintf(templateString, "%s<", expClass->templateClass->fullName);
2689 for(cClass = expClass; cClass; cClass = cClass->base)
2692 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param;
2694 for(param = cClass->templateParams.first; param; param = param->next)
2697 struct __ecereNameSpace__ecere__com__Class * sClass;
2698 struct __ecereNameSpace__ecere__com__ClassTemplateArgument arg;
2700 for(sClass = expClass->base; sClass; sClass = sClass->base)
2701 id += sClass->templateParams.count;
2702 arg = expClass->templateArgs[id];
2704 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * cParam;
2705 int p = numParams - _class->templateParams.count;
2707 for(cParam = _class->templateParams.first; cParam; cParam = cParam->next, p++)
2709 if(cParam->type == 0 && arg.dataTypeString && !strcmp(cParam->name, arg.dataTypeString))
2711 arg.dataTypeString = templatedClass->templateArgs[p].dataTypeString;
2712 arg.dataTypeClass = templatedClass->templateArgs[p].dataTypeClass;
2729 strcat(argument, arg.member->name);
2734 if(arg.dataTypeString)
2735 strcat(argument, arg.dataTypeString);
2742 strcat(templateString, ", ");
2743 if(lastParam != p - 1)
2745 strcat(templateString, param->name);
2746 strcat(templateString, " = ");
2748 strcat(templateString, argument);
2757 int len = strlen(templateString);
2759 if(templateString[len - 1] == '>')
2760 templateString[len++] = ' ';
2761 templateString[len++] = '>';
2762 templateString[len++] = '\0';
2764 __ecereNameSpace__ecere__com__FreeTemplateArg(templatedClass, param, c);
2765 (*arg).dataTypeString = __ecereNameSpace__ecere__sys__CopyString(templateString);
2766 (*arg).dataTypeClass = __ecereNameSpace__ecere__com__eSystem_FindClass(templatedClass->module, templateString);
2767 if(!(*arg).dataTypeClass)
2768 (*arg).dataTypeClass = __ecereNameSpace__ecere__com__eSystem_FindClass(((struct __ecereNameSpace__ecere__com__Module *)(((char *)templatedClass->module + 12)))->application, templateString);
2772 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * cParam;
2773 int p = numParams - _class->templateParams.count;
2775 for(cParam = _class->templateParams.first; cParam; cParam = cParam->next, p++)
2777 if(cParam->type == 0 && (*baseArg).dataTypeString && !strcmp(cParam->name, (*baseArg).dataTypeString))
2779 __ecereNameSpace__ecere__com__FreeTemplateArg(templatedClass, param, c);
2780 (*arg).dataTypeString = templatedClass->templateArgs[p].dataTypeString;
2781 (*arg).dataTypeClass = templatedClass->templateArgs[p].dataTypeClass;
2782 __ecereNameSpace__ecere__com__CopyTemplateArg(cParam, arg);
2794 struct __ecereNameSpace__ecere__com__Class * sClass;
2796 for(sClass = _class; sClass; sClass = sClass->base)
2799 struct __ecereNameSpace__ecere__com__Class * nextClass;
2800 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param;
2802 if(sClass->templateClass)
2803 sClass = sClass->templateClass;
2804 for(nextClass = sClass->base; nextClass; nextClass = nextClass->base)
2806 if(nextClass->templateClass)
2807 nextClass = nextClass->templateClass;
2808 curParamID += nextClass->templateParams.count;
2810 for(param = sClass->templateParams.first; param; param = param->next)
2812 if(!templatedClass->templateArgs[curParamID].dataTypeString)
2814 templatedClass->templateArgs[curParamID] = param->defaultArg;
2815 __ecereNameSpace__ecere__com__CopyTemplateArg(param, &templatedClass->templateArgs[curParamID]);
2816 if(param->type == 0 && param->defaultArg.dataTypeString)
2818 templatedClass->templateArgs[curParamID].dataTypeClass = __ecereNameSpace__ecere__com__eSystem_FindClass(templatedClass->module, param->defaultArg.dataTypeString);
2819 if(!templatedClass->templateArgs[curParamID].dataTypeClass)
2820 templatedClass->templateArgs[curParamID].dataTypeClass = __ecereNameSpace__ecere__com__eSystem_FindClass(((struct __ecereNameSpace__ecere__com__Module *)(((char *)templatedClass->module + 12)))->application, param->defaultArg.dataTypeString);
2821 if(!templatedClass->templateArgs[curParamID].dataTypeClass)
2822 templatedClass->templateArgs[curParamID].dataTypeClass = __ecereNameSpace__ecere__com__eSystem_FindClass(findModule, param->defaultArg.dataTypeString);
2830 int c = numParams - 1;
2832 for(sClass = _class; sClass; sClass = sClass->base)
2834 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param;
2836 if(sClass->templateClass)
2837 sClass = sClass->templateClass;
2838 for(param = sClass->templateParams.last; param; param = param->prev)
2840 if(param->type == 0)
2842 struct __ecereNameSpace__ecere__com__ClassTemplateArgument * arg = &templatedClass->templateArgs[c];
2843 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * cParam;
2844 struct __ecereNameSpace__ecere__com__Class * dClass;
2845 int p = numParams - 1;
2847 for(dClass = _class; dClass; dClass = dClass->base)
2849 if(dClass->templateClass)
2850 dClass = dClass->templateClass;
2851 for(cParam = dClass->templateParams.last; cParam; cParam = cParam->prev, p--)
2853 if(cParam->type == 0 && (*arg).dataTypeString && !strcmp(cParam->name, (*arg).dataTypeString))
2855 if(templatedClass->templateArgs[p].dataTypeString && c != p)
2857 __ecereNameSpace__ecere__com__FreeTemplateArg(templatedClass, param, c);
2858 (*arg).dataTypeString = templatedClass->templateArgs[p].dataTypeString;
2859 (*arg).dataTypeClass = templatedClass->templateArgs[p].dataTypeClass;
2860 __ecereNameSpace__ecere__com__CopyTemplateArg(cParam, arg);
2871 struct __ecereNameSpace__ecere__com__Class * tClass;
2872 int c = numParams - 1;
2874 for(tClass = _class; tClass; tClass = tClass->base)
2876 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param;
2878 if(tClass->templateClass)
2879 tClass = tClass->templateClass;
2880 for(param = tClass->templateParams.last; param; param = param->prev)
2882 struct __ecereNameSpace__ecere__com__ClassTemplateArgument * arg = &templatedClass->templateArgs[c];
2884 if(param->type == 1 && (*arg).memberString)
2886 struct __ecereNameSpace__ecere__com__Class * memberClass = templatedClass;
2887 char * memberString = (*arg).memberString;
2888 char * colon = strstr(memberString, "::");
2889 char * memberName = memberString;
2892 memberName = colon + 2;
2895 memberString = param->defaultArg.memberString;
2896 colon = memberString ? strstr(memberString, "::") : (((void *)0));
2900 char className[1024];
2901 struct __ecereNameSpace__ecere__com__Class * sClass;
2903 memcpy(className, memberString, colon - memberString);
2904 className[colon - memberString] = '\0';
2905 for(sClass = _class; sClass; sClass = sClass->base)
2907 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * cParam;
2908 struct __ecereNameSpace__ecere__com__Class * nextClass;
2911 if(sClass->templateClass)
2912 sClass = sClass->templateClass;
2913 for(nextClass = sClass->base; nextClass; nextClass = nextClass->base)
2915 if(nextClass->templateClass)
2916 nextClass = nextClass->templateClass;
2917 id += nextClass->templateParams.count;
2919 for(cParam = sClass->templateParams.first; cParam; cParam = cParam->next)
2921 if(cParam->type == 0 && !strcmp(cParam->name, className) && templatedClass->templateArgs[id].dataTypeString)
2923 strcpy(className, templatedClass->templateArgs[id].dataTypeString);
2928 memberClass = __ecereNameSpace__ecere__com__eSystem_FindClass(templatedClass->module, className);
2930 memberClass = __ecereNameSpace__ecere__com__eSystem_FindClass(findModule, className);
2932 memberClass = __ecereNameSpace__ecere__com__eSystem_FindClass(((struct __ecereNameSpace__ecere__com__Module *)(((char *)templatedClass->module + 12)))->application, className);
2936 switch(param->memberType)
2939 (*arg).member = __ecereNameSpace__ecere__com__eClass_FindDataMember(memberClass, memberName, memberClass->module, (((void *)0)), (((void *)0)));
2942 (*arg).method = __ecereNameSpace__ecere__com__eClass_FindMethod(memberClass, memberName, memberClass->module);
2945 (*arg).prop = __ecereNameSpace__ecere__com__eClass_FindProperty(memberClass, memberName, memberClass->module);
2956 unsigned int __ecereNameSpace__ecere__com__DefaultFunction()
2961 unsigned int __ecereNameSpace__ecere__com__eClass_IsDerived(struct __ecereNameSpace__ecere__com__Class * _class, struct __ecereNameSpace__ecere__com__Class * from)
2963 if(!_class && !from)
2965 if(_class && from && (_class->templateClass || from->templateClass))
2967 if(__ecereNameSpace__ecere__com__eClass_IsDerived(_class->templateClass ? _class->templateClass : _class, from->templateClass ? from->templateClass : from))
2969 if(!from->templateClass)
2971 else if(!_class->templateClass && _class == from->templateClass)
2975 struct __ecereNameSpace__ecere__com__Class * sClass;
2977 for(sClass = from; sClass; sClass = sClass->base)
2979 if(sClass->templateParams.first)
2981 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param;
2982 struct __ecereNameSpace__ecere__com__Class * nextClass;
2985 for(nextClass = sClass->base; nextClass; nextClass = nextClass->base)
2986 p += nextClass->templateParams.count;
2987 for(param = sClass->templateParams.first; param; param = param->next, p++)
2989 struct __ecereNameSpace__ecere__com__ClassTemplateArgument * arg = &_class->templateArgs[p];
2990 struct __ecereNameSpace__ecere__com__ClassTemplateArgument * fArg = &from->templateArgs[p];
2992 if(param->type == 0)
2994 if((*arg).dataTypeString != (*fArg).dataTypeString && (*arg).dataTypeString && (*fArg).dataTypeString && strcmp((*arg).dataTypeString, (*fArg).dataTypeString))
2997 else if(param->type == 1)
2999 if((*arg).member != (*fArg).member)
3002 else if(param->type == 2)
3004 if((*arg).expression.ui64 != (*fArg).expression.ui64)
3018 for(; _class && from; _class = _class->base)
3020 if(_class == from || _class->templateClass == from || (_class->type == 1000 && from->name && !strcmp(_class->name, from->name)))
3027 static void __ecereNameSpace__ecere__com__FixDerivativeVirtualMethod(struct __ecereNameSpace__ecere__com__Class * base, char * name, int vid, void * origFunction, char * type)
3029 struct __ecereNameSpace__ecere__sys__OldLink * derivative;
3031 for(derivative = base->derivatives.first; derivative; derivative = derivative->next)
3033 struct __ecereNameSpace__ecere__com__Class * _class = derivative->data;
3034 struct __ecereNameSpace__ecere__com__Method * method, * next;
3035 void * function = origFunction;
3038 _class->_vTbl = __ecereNameSpace__ecere__com__eSystem_Renew(_class->_vTbl, sizeof(void *) * (_class->vTblSize));
3039 memmove(_class->_vTbl + vid + 1, _class->_vTbl + vid, (_class->vTblSize - vid - 1) * sizeof(void *));
3040 method = (struct __ecereNameSpace__ecere__com__Method *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&_class->methods, name);
3043 if(method->function)
3044 function = method->function;
3047 (__ecereNameSpace__ecere__com__eSystem_Delete(method->name), method->name = 0);
3048 (__ecereNameSpace__ecere__com__eSystem_Delete(method->dataTypeString), method->dataTypeString = 0);
3049 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&_class->methods, (struct __ecereNameSpace__ecere__sys__BTNode *)method);
3053 (__ecereNameSpace__ecere__com__eSystem_Delete(method->dataTypeString), method->dataTypeString = 0);
3055 method->dataTypeString = __ecereNameSpace__ecere__sys__CopyString(type);
3056 method->_class = base;
3059 for(method = (struct __ecereNameSpace__ecere__com__Method *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&_class->methods); method; method = next)
3061 next = (struct __ecereNameSpace__ecere__com__Method *)__ecereProp___ecereNameSpace__ecere__sys__BTNode_Get_next(((struct __ecereNameSpace__ecere__sys__BTNode *)method));
3062 if(method->type == 1)
3065 _class->_vTbl[vid] = function;
3067 struct __ecereNameSpace__ecere__sys__OldLink * templateLink;
3069 for(templateLink = _class->templatized.first; templateLink; templateLink = templateLink->next)
3071 struct __ecereNameSpace__ecere__com__Class * template = templateLink->data;
3073 template->_vTbl = _class->_vTbl;
3076 if(_class->derivatives.first || _class->templatized.first)
3077 __ecereNameSpace__ecere__com__FixDerivativeVirtualMethod(_class, name, vid, function, type);
3080 struct __ecereNameSpace__ecere__sys__OldLink * templateLink;
3082 for(templateLink = base->templatized.first; templateLink; templateLink = templateLink->next)
3084 struct __ecereNameSpace__ecere__com__Class * template = templateLink->data;
3086 template->_vTbl = base->_vTbl;
3087 __ecereNameSpace__ecere__com__FixDerivativeVirtualMethod(template, name, vid, origFunction, type);
3092 struct __ecereNameSpace__ecere__com__Method * __ecereNameSpace__ecere__com__eClass_AddMethod(struct __ecereNameSpace__ecere__com__Class * _class, char * name, char * type, void * function, int declMode)
3096 struct __ecereNameSpace__ecere__com__Class * base;
3098 for(base = _class; base; base = base->base)
3100 struct __ecereNameSpace__ecere__com__Method * method = (struct __ecereNameSpace__ecere__com__Method *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&base->methods, name);
3104 if(method->type == 1)
3106 struct __ecereNameSpace__ecere__sys__OldLink * deriv;
3107 void * oldFunction = _class->_vTbl[method->vid];
3109 if(method->vid > _class->vTblSize)
3112 _class->_vTbl[method->vid] = function ? function : __ecereNameSpace__ecere__com__DefaultFunction;
3113 for(deriv = _class->derivatives.first; deriv; deriv = deriv->next)
3115 struct __ecereNameSpace__ecere__com__Class * derivClass = deriv->data;
3117 if(derivClass->_vTbl[method->vid] == oldFunction)
3118 __ecereNameSpace__ecere__com__eClass_AddMethod(derivClass, name, type, function, declMode);
3121 struct __ecereNameSpace__ecere__sys__OldLink * templateLink;
3123 for(templateLink = _class->templatized.first; templateLink; templateLink = templateLink->next)
3125 struct __ecereNameSpace__ecere__com__Class * template = templateLink->data;
3127 for(deriv = template->derivatives.first; deriv; deriv = deriv->next)
3129 struct __ecereNameSpace__ecere__com__Class * derivClass = deriv->data;
3131 if(derivClass->_vTbl[method->vid] == oldFunction)
3132 __ecereNameSpace__ecere__com__eClass_AddMethod(derivClass, name, type, function, declMode);
3143 base = (((void *)0));
3151 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);
3153 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&_class->methods, (struct __ecereNameSpace__ecere__sys__BTNode *)method);
3157 return (((void *)0));
3160 struct __ecereNameSpace__ecere__com__Method * __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(struct __ecereNameSpace__ecere__com__Class * _class, char * name, char * type, void * function, int declMode)
3164 struct __ecereNameSpace__ecere__com__Class * base;
3166 for(base = _class; base; base = base->base)
3168 struct __ecereNameSpace__ecere__com__Method * method = (struct __ecereNameSpace__ecere__com__Method *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&base->methods, name);
3172 if(method->type == 1)
3173 _class->_vTbl[method->vid] = function ? function : __ecereNameSpace__ecere__com__DefaultFunction;
3175 base = (((void *)0));
3181 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);
3183 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&_class->methods, (struct __ecereNameSpace__ecere__sys__BTNode *)method);
3184 _class->_vTbl = __ecereNameSpace__ecere__com__eSystem_Renew(_class->_vTbl, sizeof(void *) * (_class->vTblSize));
3185 _class->_vTbl[method->vid] = function ? function : __ecereNameSpace__ecere__com__DefaultFunction;
3186 if(_class->derivatives.first || _class->templatized.first)
3187 __ecereNameSpace__ecere__com__FixDerivativeVirtualMethod(_class, name, method->vid, function ? function : (void *)__ecereNameSpace__ecere__com__DefaultFunction, type);
3191 return (((void *)0));
3194 static void __ecereNameSpace__ecere__com__FixDerivativeProperty(struct __ecereNameSpace__ecere__com__Class * base, struct __ecereNameSpace__ecere__com__Property * _property)
3196 struct __ecereNameSpace__ecere__sys__OldLink * derivative;
3198 for(derivative = base->derivatives.first; derivative; derivative = derivative->next)
3200 struct __ecereNameSpace__ecere__com__Class * _class = derivative->data;
3201 struct __ecereNameSpace__ecere__com__Property * prop;
3202 struct __ecereNameSpace__ecere__com__BTNamedLink * link;
3204 link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&_class->prop, _property->name);
3208 if(!prop->Set && !prop->Get && prop->memberAccess == 4)
3210 struct __ecereNameSpace__ecere__com__SelfWatcher * watcher;
3212 for(watcher = _class->selfWatchers.first; watcher; watcher = watcher->next)
3214 if(watcher->_property == prop)
3215 watcher->_property = _property;
3217 _property->selfWatchable = 0x1;
3218 (__ecereNameSpace__ecere__com__eSystem_Delete(prop->name), prop->name = 0);
3219 (__ecereNameSpace__ecere__com__eSystem_Delete(prop->dataTypeString), prop->dataTypeString = 0);
3220 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&_class->membersAndProperties, prop);
3221 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&_class->prop, (struct __ecereNameSpace__ecere__sys__BTNode *)link);
3224 for(prop = _class->membersAndProperties.first; prop; prop = prop->next)
3227 _class->startMemberID++;
3228 __ecereNameSpace__ecere__com__FixDerivativeProperty(_class, _property);
3232 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)
3234 void * __ecereTemp1;
3235 struct __ecereNameSpace__ecere__com__Property * _property = (((void *)0));
3239 if(!__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&_class->prop, (name ? name : dataType)))
3241 _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));
3243 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&_class->membersAndProperties, _property);
3245 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&_class->conversions, _property);
3246 __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)));
3247 if(!_property->conversion)
3249 __ecereNameSpace__ecere__com__FixDerivativeProperty(_class, _property);
3256 static void __ecereNameSpace__ecere__com__SetDelayedCPValues(struct __ecereNameSpace__ecere__com__Class * _class, struct __ecereNameSpace__ecere__com__ClassProperty * _property)
3258 struct __ecereNameSpace__ecere__sys__OldLink * deriv;
3259 struct __ecereNameSpace__ecere__sys__NamedLink * value, * next;
3261 for(value = _class->delayedCPValues.first; value; value = next)
3264 if(!strcmp(value->name, _property->name))
3266 _property->Set(_class, (int)value->data);
3267 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&_class->delayedCPValues, value);
3270 for(deriv = _class->derivatives.first; deriv; deriv = deriv->next)
3272 __ecereNameSpace__ecere__com__SetDelayedCPValues(deriv->data, _property);
3276 struct __ecereNameSpace__ecere__com__ClassProperty * __ecereNameSpace__ecere__com__eClass_AddClassProperty(struct __ecereNameSpace__ecere__com__Class * _class, char * name, char * dataType, void * setStmt, void * getStmt)
3278 if(name && !__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&_class->classProperties, name))
3280 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);
3282 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&_class->classProperties, (struct __ecereNameSpace__ecere__sys__BTNode *)_property);
3283 __ecereNameSpace__ecere__com__SetDelayedCPValues(_class, _property);
3286 return (((void *)0));
3289 struct __ecereNameSpace__ecere__com__ClassProperty * __ecereNameSpace__ecere__com__eClass_FindClassProperty(struct __ecereNameSpace__ecere__com__Class * _class, char * name)
3291 struct __ecereNameSpace__ecere__com__ClassProperty * _property = (((void *)0));
3295 struct __ecereNameSpace__ecere__com__Class * origClass = _class;
3297 for(; _class; _class = _class->base)
3299 _property = (struct __ecereNameSpace__ecere__com__ClassProperty *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&_class->classProperties, name);
3303 if(!_property && origClass->type == 4)
3305 struct __ecereNameSpace__ecere__com__Class * enumClass = __ecereNameSpace__ecere__com__eSystem_FindClass(origClass->module, "enum");
3307 _property = __ecereNameSpace__ecere__com__eClass_FindClassProperty(enumClass, name);
3313 int __ecereNameSpace__ecere__com__eClass_GetProperty(struct __ecereNameSpace__ecere__com__Class * _class, char * name)
3315 struct __ecereNameSpace__ecere__com__ClassProperty * _property = __ecereNameSpace__ecere__com__eClass_FindClassProperty(_class, name);
3317 if(_property && _property->Get && _property->Get != (void *)1)
3319 int result = _property->Get(_class);
3326 void __ecereNameSpace__ecere__com__eClass_SetProperty(struct __ecereNameSpace__ecere__com__Class * _class, char * name, int value)
3328 void * __ecereTemp1;
3329 struct __ecereNameSpace__ecere__com__ClassProperty * _property = __ecereNameSpace__ecere__com__eClass_FindClassProperty(_class, name);
3334 _property->Set(_class, value);
3338 __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)));
3342 struct __ecereNameSpace__ecere__com__Method * __ecereNameSpace__ecere__com__eClass_FindMethod(struct __ecereNameSpace__ecere__com__Class * _class, char * name, struct __ecereNameSpace__ecere__com__Instance * module)
3346 for(; _class; _class = _class->base)
3348 struct __ecereNameSpace__ecere__com__Method * method;
3350 if(_class->templateClass)
3351 _class = _class->templateClass;
3352 method = (struct __ecereNameSpace__ecere__com__Method *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&_class->methods, name);
3353 if(method && (method->memberAccess == 1 || _class->module == module || !method->dataTypeString))
3355 if(!method->dataTypeString)
3357 if(_class->module != module)
3359 if(method->memberAccess == 1)
3360 module = _class->module;
3363 return (((void *)0));
3372 if(_class->inheritanceAccess == 2 && _class->module != module)
3376 return (((void *)0));
3379 static unsigned int __ecereNameSpace__ecere__com__ConstructInstance(void * instance, struct __ecereNameSpace__ecere__com__Class * _class, struct __ecereNameSpace__ecere__com__Class * from)
3381 if(_class->templateClass)
3382 _class = _class->templateClass;
3383 if(_class->base && from != _class->base)
3385 if(!__ecereNameSpace__ecere__com__ConstructInstance(instance, _class->base, from))
3388 if(_class->Initialize)
3390 void (* Initialize)(struct __ecereNameSpace__ecere__com__Instance * module) = (void *)_class->Initialize;
3392 _class->Initialize = (((void *)0));
3393 Initialize(_class->module);
3395 if(_class->Constructor)
3397 if(!_class->Constructor(instance))
3399 for(; _class; _class = _class->base)
3401 if(_class->templateClass)
3402 _class = _class->templateClass;
3403 if(_class->Destructor)
3404 _class->Destructor(instance);
3409 (_class->templateClass ? _class->templateClass : _class)->count++;
3413 void * __ecereNameSpace__ecere__com__eInstance_New(struct __ecereNameSpace__ecere__com__Class * _class)
3415 struct __ecereNameSpace__ecere__com__Instance * instance = (((void *)0));
3419 instance = __ecereNameSpace__ecere__com___calloc(1, _class->structSize);
3420 if(_class->type == 0)
3422 ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class = _class;
3423 ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_vTbl = _class->_vTbl;
3425 if(!__ecereNameSpace__ecere__com__ConstructInstance(instance, _class, (((void *)0))))
3427 __ecereNameSpace__ecere__com___free(instance);
3428 instance = (((void *)0));
3434 void __ecereNameSpace__ecere__com__eInstance_Evolve(struct __ecereNameSpace__ecere__com__Instance ** instancePtr, struct __ecereNameSpace__ecere__com__Class * _class)
3436 if(_class && instancePtr && *instancePtr)
3438 unsigned int wasApp = 0x0, wasGuiApp = 0x0;
3439 struct __ecereNameSpace__ecere__com__Instance * instance = (struct __ecereNameSpace__ecere__com__Instance *)__ecereNameSpace__ecere__com__eSystem_Renew(*instancePtr, sizeof(unsigned char) * (_class->structSize));
3440 struct __ecereNameSpace__ecere__com__Class * fromClass = ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class;
3442 *instancePtr = instance;
3443 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);
3444 if((wasApp = !strcmp(((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class->name, "Application")) || (wasGuiApp = !strcmp(((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class->name, "GuiApplication")))
3446 struct __ecereNameSpace__ecere__com__Instance * module;
3447 struct __ecereNameSpace__ecere__com__Instance * app = (struct __ecereNameSpace__ecere__com__Instance *)instance;
3448 struct __ecereNameSpace__ecere__com__BTNamedLink * link;
3449 struct __ecereNameSpace__ecere__com__Class * _class;
3450 struct __ecereNameSpace__ecere__com__NameSpace * nameSpace;
3452 for(module = ((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 300)))->allModules.first; module; module = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->next)
3453 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application = app;
3454 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)))
3456 struct __ecereNameSpace__ecere__sys__OldLink * t;
3458 ((struct __ecereNameSpace__ecere__com__Class *)link->data)->nameSpace = &((struct __ecereNameSpace__ecere__com__Module *)(((char *)app + 12)))->privateNameSpace;
3459 for(t = ((struct __ecereNameSpace__ecere__com__Class *)link->data)->templatized.first; t; t = t->next)
3461 struct __ecereNameSpace__ecere__com__Class * template = t->data;
3463 template->nameSpace = ((struct __ecereNameSpace__ecere__com__Class *)link->data)->nameSpace;
3466 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)))
3468 struct __ecereNameSpace__ecere__sys__OldLink * t;
3470 ((struct __ecereNameSpace__ecere__com__Class *)link->data)->nameSpace = &((struct __ecereNameSpace__ecere__com__Module *)(((char *)app + 12)))->publicNameSpace;
3471 for(t = ((struct __ecereNameSpace__ecere__com__Class *)link->data)->templatized.first; t; t = t->next)
3473 struct __ecereNameSpace__ecere__com__Class * template = t->data;
3475 template->nameSpace = ((struct __ecereNameSpace__ecere__com__Class *)link->data)->nameSpace;
3478 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)))
3479 ((struct __ecereNameSpace__ecere__com__DefinedExpression *)link->data)->nameSpace = &((struct __ecereNameSpace__ecere__com__Module *)(((char *)app + 12)))->privateNameSpace;
3480 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)))
3481 ((struct __ecereNameSpace__ecere__com__DefinedExpression *)link->data)->nameSpace = &((struct __ecereNameSpace__ecere__com__Module *)(((char *)app + 12)))->publicNameSpace;
3482 for(link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&((struct __ecereNameSpace__ecere__com__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)))
3483 ((struct __ecereNameSpace__ecere__com__GlobalFunction *)link->data)->nameSpace = &((struct __ecereNameSpace__ecere__com__Module *)(((char *)app + 12)))->privateNameSpace;
3484 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)))
3485 ((struct __ecereNameSpace__ecere__com__GlobalFunction *)link->data)->nameSpace = &((struct __ecereNameSpace__ecere__com__Module *)(((char *)app + 12)))->publicNameSpace;
3486 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)))
3487 (*nameSpace).parent = &((struct __ecereNameSpace__ecere__com__Module *)(((char *)app + 12)))->privateNameSpace;
3488 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)))
3489 (*nameSpace).parent = &((struct __ecereNameSpace__ecere__com__Module *)(((char *)app + 12)))->publicNameSpace;
3490 for(link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 300)))->systemNameSpace.classes); link; link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereProp___ecereNameSpace__ecere__sys__BTNode_Get_next(((struct __ecereNameSpace__ecere__sys__BTNode *)link)))
3492 struct __ecereNameSpace__ecere__sys__OldLink * t;
3494 ((struct __ecereNameSpace__ecere__com__Class *)link->data)->nameSpace = &((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 300)))->systemNameSpace;
3495 for(t = ((struct __ecereNameSpace__ecere__com__Class *)link->data)->templatized.first; t; t = t->next)
3497 struct __ecereNameSpace__ecere__com__Class * template = t->data;
3499 template->nameSpace = ((struct __ecereNameSpace__ecere__com__Class *)link->data)->nameSpace;
3502 for(link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 300)))->systemNameSpace.defines); link; link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereProp___ecereNameSpace__ecere__sys__BTNode_Get_next(((struct __ecereNameSpace__ecere__sys__BTNode *)link)))
3503 ((struct __ecereNameSpace__ecere__com__DefinedExpression *)link->data)->nameSpace = &((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 300)))->systemNameSpace;
3504 for(link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 300)))->systemNameSpace.functions); link; link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereProp___ecereNameSpace__ecere__sys__BTNode_Get_next(((struct __ecereNameSpace__ecere__sys__BTNode *)link)))
3505 ((struct __ecereNameSpace__ecere__com__GlobalFunction *)link->data)->nameSpace = &((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 300)))->systemNameSpace;
3506 for(link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 300)))->systemNameSpace.functions); link; link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereProp___ecereNameSpace__ecere__sys__BTNode_Get_next(((struct __ecereNameSpace__ecere__sys__BTNode *)link)))
3507 ((struct __ecereNameSpace__ecere__com__GlobalFunction *)link->data)->nameSpace = &((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 300)))->systemNameSpace;
3508 for(nameSpace = (struct __ecereNameSpace__ecere__com__NameSpace *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 300)))->systemNameSpace.nameSpaces); nameSpace; nameSpace = (struct __ecereNameSpace__ecere__com__NameSpace *)__ecereProp___ecereNameSpace__ecere__sys__BTNode_Get_next(((struct __ecereNameSpace__ecere__sys__BTNode *)nameSpace)))
3509 (*nameSpace).parent = &((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 300)))->systemNameSpace;
3510 for(_class = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)app + 12)))->classes.first; _class; _class = _class->next)
3512 struct __ecereNameSpace__ecere__sys__OldLink * templateLink;
3514 _class->module = (struct __ecereNameSpace__ecere__com__Instance *)app;
3515 for(templateLink = _class->templatized.first; templateLink; templateLink = templateLink->next)
3517 struct __ecereNameSpace__ecere__com__Class * template = templateLink->data;
3519 template->module = _class->module;
3522 for(module = ((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 300)))->allModules.first; module; module = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->next)
3524 for(_class = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->classes.first; _class; _class = _class->next)
3526 struct __ecereNameSpace__ecere__sys__OldLink * templateLink;
3528 _class->module = module;
3529 for(templateLink = _class->templatized.first; templateLink; templateLink = templateLink->next)
3531 struct __ecereNameSpace__ecere__com__Class * template = templateLink->data;
3533 template->module = _class->module;
3537 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)app + 12)))->application = app;
3540 struct __ecereNameSpace__ecere__com__Class * base;
3542 for(base = ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class; base && base->type == 0 && base->count; base = base->base)
3543 (base->templateClass ? base->templateClass : base)->count--;
3545 ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class = _class;
3546 ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_vTbl = _class->_vTbl;
3547 if(!__ecereNameSpace__ecere__com__ConstructInstance(instance, _class, fromClass))
3549 __ecereNameSpace__ecere__com___free(instance);
3550 *instancePtr = (((void *)0));
3555 void __ecereNameSpace__ecere__com__eInstance_Delete(struct __ecereNameSpace__ecere__com__Instance * instance)
3559 struct __ecereNameSpace__ecere__com__Class * _class, * base;
3560 unsigned int ownVtbl;
3562 ownVtbl = ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_vTbl != ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class->_vTbl;
3563 for(_class = ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class; _class; _class = base)
3565 if(_class->templateClass)
3566 _class = _class->templateClass;
3567 if(_class->destructionWatchOffset)
3569 struct __ecereNameSpace__ecere__sys__OldList * watchers = (struct __ecereNameSpace__ecere__sys__OldList *)((unsigned char *)instance + _class->destructionWatchOffset);
3570 struct __ecereNameSpace__ecere__com__Watcher * watcher, * next;
3572 for(watcher = (*watchers).first; watcher; watcher = next)
3574 next = watcher->next;
3575 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove((&*watchers), watcher);
3576 watcher->callback(watcher->object, instance);
3577 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete((&*watchers), watcher);
3580 base = _class->base;
3581 if(base && base->type == 1000)
3582 base = (((void *)0));
3583 if(_class->Destructor)
3584 _class->Destructor(instance);
3586 for(_class = ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class; _class; _class = base)
3588 if(_class->templateClass)
3589 _class = _class->templateClass;
3590 base = _class->base;
3591 (_class->templateClass ? _class->templateClass : _class)->count--;
3592 if(_class->type == 0 && !_class->count && !_class->module)
3594 __ecereNameSpace__ecere__com__eClass_Unregister(_class);
3599 (__ecereNameSpace__ecere__com__eSystem_Delete(((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_vTbl), ((struct __ecereNameSpace__ecere__com__Instance * )(char * )instance)->_vTbl = 0);
3601 __ecereNameSpace__ecere__com___free(instance);
3605 struct __ecereNameSpace__ecere__com__Property * __ecereNameSpace__ecere__com__eClass_FindProperty(struct __ecereNameSpace__ecere__com__Class * _class, char * name, struct __ecereNameSpace__ecere__com__Instance * module)
3609 for(; _class; _class = _class->base)
3611 struct __ecereNameSpace__ecere__com__BTNamedLink * link;
3613 if(_class->templateClass)
3614 _class = _class->templateClass;
3615 link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&_class->prop, name);
3618 struct __ecereNameSpace__ecere__com__Property * _property = (struct __ecereNameSpace__ecere__com__Property *)link->data;
3620 if(_property->memberAccess == 1 || _class->module == module || !_property->dataTypeString)
3622 if(!_property->dataTypeString)
3624 if(_class->module != module)
3626 if(_property->memberAccess == 1)
3627 module = _class->module;
3630 return (((void *)0));
3640 if(_class->inheritanceAccess == 2 && _class->module != module)
3644 return (((void *)0));
3647 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)
3649 struct __ecereNameSpace__ecere__com__BTNamedLink * link;
3650 struct __ecereNameSpace__ecere__com__DataMember * dataMember;
3652 link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(alist, name);
3655 dataMember = link->data;
3656 if(dataMember->type == 0 && (dataMember->memberAccess == 1 || searchPrivate || !dataMember->dataTypeString))
3659 *offset += dataMember->offset;
3661 *id = dataMember->id;
3664 return (((void *)0));
3666 for(dataMember = list->first; dataMember; dataMember = dataMember->next)
3668 if(!dataMember->isProperty && (dataMember->memberAccess == 1 || searchPrivate) && !dataMember->name && (dataMember->type == 1 || dataMember->type == 2))
3670 struct __ecereNameSpace__ecere__com__DataMember * childMember;
3672 if(subMemberStackPos)
3673 subMemberStack[(*subMemberStackPos)++] = dataMember;
3674 childMember = __ecereNameSpace__ecere__com__FindDataMember(&dataMember->members, &dataMember->membersAlpha, name, offset, id, searchPrivate, subMemberStack, subMemberStackPos);
3678 *offset += dataMember->offset;
3680 *id += dataMember->id;
3683 if(subMemberStackPos)
3684 (*subMemberStackPos)--;
3687 return (((void *)0));
3690 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)
3692 struct __ecereNameSpace__ecere__com__DataMember * dataMember = (((void *)0));
3694 if(subMemberStackPos)
3695 *subMemberStackPos = 0;
3698 for(; _class; _class = _class->base)
3700 if(_class->templateClass)
3701 _class = _class->templateClass;
3702 dataMember = __ecereNameSpace__ecere__com__FindDataMember(&_class->membersAndProperties, &_class->members, name, (((void *)0)), (((void *)0)), _class->module == module, subMemberStack, subMemberStackPos);
3705 if(!dataMember->dataTypeString)
3707 if(_class->module != module)
3709 if(dataMember->memberAccess == 1)
3710 module = _class->module;
3713 return (((void *)0));
3716 dataMember = (((void *)0));
3720 dataMember->_class = _class->templateClass ? _class->templateClass : _class;
3724 if(_class->inheritanceAccess == 2 && _class->module != module)
3731 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)
3733 struct __ecereNameSpace__ecere__com__DataMember * dataMember = (((void *)0));
3735 if(subMemberStackPos)
3736 *subMemberStackPos = 0;
3741 for(; _class; _class = _class->base)
3743 if(_class->templateClass)
3744 _class = _class->templateClass;
3745 dataMember = __ecereNameSpace__ecere__com__FindDataMember(&_class->membersAndProperties, &_class->members, name, offset, (((void *)0)), _class->module == module, subMemberStack, subMemberStackPos);
3748 if(!dataMember->dataTypeString)
3750 if(_class->module != module)
3752 if(dataMember->memberAccess == 1)
3753 module = _class->module;
3756 return (((void *)0));
3759 dataMember = (((void *)0));
3763 dataMember->_class = _class;
3767 if(_class->inheritanceAccess == 2 && _class->module != module)
3774 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)
3776 struct __ecereNameSpace__ecere__com__DataMember * dataMember = (((void *)0));
3778 if(subMemberStackPos)
3779 *subMemberStackPos = 0;
3782 for(; _class; _class = _class->base)
3784 if(_class->templateClass)
3785 _class = _class->templateClass;
3786 dataMember = __ecereNameSpace__ecere__com__FindDataMember(&_class->membersAndProperties, &_class->members, name, (((void *)0)), id, _class->module == module, subMemberStack, subMemberStackPos);
3789 if(!dataMember->dataTypeString)
3791 if(_class->module != module)
3793 if(dataMember->memberAccess == 1)
3794 module = _class->module;
3797 return (((void *)0));
3800 dataMember = (((void *)0));
3804 dataMember->_class = _class;
3808 if(_class->inheritanceAccess == 2 && _class->module != module)
3815 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)
3819 *curMember = (*curMember)->next;
3820 if(subMemberStackPos && *subMemberStackPos > 0 && subMemberStack[*subMemberStackPos - 1]->type == 1)
3822 *curMember = subMemberStack[--(*subMemberStackPos)];
3823 *curMember = (*curMember)->next;
3825 if(subMemberStackPos && *subMemberStackPos > 0)
3827 while(*curMember && ((*curMember)->memberAccess == 2))
3828 *curMember = (*curMember)->next;
3831 while(*curMember && (*curMember)->name)
3833 struct __ecereNameSpace__ecere__com__DataMember * dataMember = __ecereNameSpace__ecere__com__eClass_FindDataMember(_class, (*curMember)->name, (((void *)0)), (((void *)0)), (((void *)0)));
3836 dataMember = (struct __ecereNameSpace__ecere__com__DataMember *)__ecereNameSpace__ecere__com__eClass_FindProperty(_class, (*curMember)->name, (((void *)0)));
3837 if(dataMember && dataMember->memberAccess != 2)
3839 *curMember = dataMember;
3843 *curMember = (*curMember)->next;
3845 if(subMemberStackPos)
3847 while((*curMember) && !(*curMember)->isProperty && !(*curMember)->name && ((*curMember)->type == 2 || (*curMember)->type == 1))
3849 subMemberStack[(*subMemberStackPos)++] = *curMember;
3850 *curMember = (*curMember)->members.first;
3851 while(*curMember && ((*curMember)->memberAccess == 2))
3852 *curMember = (*curMember)->next;
3860 if(subMemberStackPos && *subMemberStackPos)
3862 *curMember = subMemberStack[--(*subMemberStackPos)];
3863 *curMember = (*curMember)->next;
3867 struct __ecereNameSpace__ecere__com__Class * lastCurClass = *curClass;
3869 if(*curClass == _class)
3871 for(*curClass = _class; (*curClass)->base != lastCurClass && (*curClass)->base->type != 1000 && (*curClass)->inheritanceAccess != 2; *curClass = (*curClass)->base)
3873 *curMember = (*curClass)->membersAndProperties.first;
3875 if(subMemberStackPos && *subMemberStackPos > 0)
3877 while(*curMember && ((*curMember)->memberAccess == 2))
3878 *curMember = (*curMember)->next;
3881 while(*curMember && (*curMember)->name)
3883 struct __ecereNameSpace__ecere__com__DataMember * dataMember = __ecereNameSpace__ecere__com__eClass_FindDataMember(_class, (*curMember)->name, (((void *)0)), (((void *)0)), (((void *)0)));
3886 dataMember = (struct __ecereNameSpace__ecere__com__DataMember *)__ecereNameSpace__ecere__com__eClass_FindProperty(_class, (*curMember)->name, (((void *)0)));
3887 if(dataMember && dataMember->memberAccess != 2)
3889 *curMember = dataMember;
3893 *curMember = (*curMember)->next;
3895 if(subMemberStackPos)
3897 while((*curMember) && !(*curMember)->isProperty && !(*curMember)->name && ((*curMember)->type == 2 || (*curMember)->type == 1))
3899 subMemberStack[(*subMemberStackPos)++] = *curMember;
3900 *curMember = (*curMember)->members.first;
3901 while(*curMember && (*curMember)->memberAccess == 2)
3902 *curMember = (*curMember)->next;
3909 void __ecereNameSpace__ecere__com__eInstance_SetMethod(struct __ecereNameSpace__ecere__com__Instance * instance, char * name, void * function)
3911 if(instance && name)
3913 struct __ecereNameSpace__ecere__com__Class * _class;
3915 for(_class = ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class; _class; _class = _class->base)
3917 struct __ecereNameSpace__ecere__com__Method * method = (struct __ecereNameSpace__ecere__com__Method *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&_class->methods, name);
3919 if(method && method->type == 1)
3921 if(((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_vTbl == ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class->_vTbl)
3923 ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_vTbl = __ecereNameSpace__ecere__com___malloc(sizeof(void *) * ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class->vTblSize);
3924 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);
3926 ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_vTbl[method->vid] = function ? function : __ecereNameSpace__ecere__com__DefaultFunction;
3932 unsigned int __ecereNameSpace__ecere__com__eInstance_IsDerived(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Class * from)
3936 struct __ecereNameSpace__ecere__com__Class * _class = ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class;
3938 for(; _class; _class = _class->base)
3947 void __ecereNameSpace__ecere__com__eInstance_IncRef(struct __ecereNameSpace__ecere__com__Instance * instance)
3950 ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_refCount++;
3953 void __ecereNameSpace__ecere__com__eInstance_DecRef(struct __ecereNameSpace__ecere__com__Instance * instance)
3957 ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_refCount--;
3958 if(((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_refCount <= 0)
3960 __ecereNameSpace__ecere__com__eInstance_Delete(instance);
3965 static void __ecereNameSpace__ecere__com__FixOffsets(struct __ecereNameSpace__ecere__com__Class * _class)
3967 struct __ecereNameSpace__ecere__sys__OldLink * deriv;
3969 _class->structSize += _class->base->structSize - _class->offset;
3970 _class->offset = _class->base->structSize;
3971 for(deriv = _class->derivatives.first; deriv; deriv = deriv->next)
3972 __ecereNameSpace__ecere__com__FixOffsets(deriv->data);
3975 void __ecereNameSpace__ecere__com__eClass_Resize(struct __ecereNameSpace__ecere__com__Class * _class, int newSize)
3977 struct __ecereNameSpace__ecere__sys__OldLink * deriv;
3979 _class->structSize = newSize;
3980 for(deriv = _class->derivatives.first; deriv; deriv = deriv->next)
3981 __ecereNameSpace__ecere__com__FixOffsets(deriv->data);
3984 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)
3986 void * __ecereTemp1;
3990 if(!__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&_class->members, name))
3992 struct __ecereNameSpace__ecere__com__DataMember * dataMember;
3996 int __simpleStruct0;
3998 _class->structAlignment = (__simpleStruct0 = _class->structAlignment, (__simpleStruct0 > alignment) ? __simpleStruct0 : alignment);
3999 if(_class->memberOffset % alignment)
4000 _class->memberOffset += alignment - (_class->memberOffset % alignment);
4002 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));
4003 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&_class->membersAndProperties, dataMember);
4004 _class->memberOffset += size;
4005 __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)));
4009 return (((void *)0));
4012 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)
4014 void * __ecereTemp1;
4016 if(name && !__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&member->membersAlpha, name))
4018 struct __ecereNameSpace__ecere__com__DataMember * dataMember;
4022 int __simpleStruct0;
4024 member->structAlignment = (__simpleStruct0 = member->structAlignment, (__simpleStruct0 > alignment) ? __simpleStruct0 : alignment);
4025 if(member->memberOffset % alignment)
4026 member->memberOffset += alignment - (member->memberOffset % alignment);
4028 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));
4029 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&member->members, dataMember);
4030 if(member->type == 1)
4032 if(size > member->memberOffset)
4033 member->memberOffset = size;
4036 member->memberOffset += size;
4037 __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)));
4040 return (((void *)0));
4043 struct __ecereNameSpace__ecere__com__DataMember * __ecereNameSpace__ecere__com__eMember_New(int type, int declMode)
4045 void * __ecereTemp1;
4047 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));
4050 static void __ecereNameSpace__ecere__com__SetMemberClass(struct __ecereNameSpace__ecere__com__DataMember * member, struct __ecereNameSpace__ecere__com__Class * _class)
4052 struct __ecereNameSpace__ecere__com__DataMember * dataMember;
4054 member->_class = _class;
4055 for(dataMember = member->members.first; dataMember; dataMember = dataMember->next)
4056 __ecereNameSpace__ecere__com__SetMemberClass(dataMember, _class);
4059 unsigned int __ecereNameSpace__ecere__com__eMember_AddMember(struct __ecereNameSpace__ecere__com__DataMember * addTo, struct __ecereNameSpace__ecere__com__DataMember * dataMember)
4061 void * __ecereTemp1;
4062 int __simpleStruct0, __simpleStruct1;
4064 if(dataMember->name && __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&addTo->membersAlpha, dataMember->name))
4066 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&addTo->members, dataMember);
4067 if(dataMember->name)
4068 __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)));
4069 dataMember->_class = addTo->_class;
4070 dataMember->id = addTo->memberID;
4071 if(dataMember->type == 1)
4072 addTo->memberID += 1;
4074 addTo->memberID += dataMember->memberID;
4075 addTo->structAlignment = (__simpleStruct0 = addTo->structAlignment, __simpleStruct1 = dataMember->structAlignment, (__simpleStruct0 > __simpleStruct1) ? __simpleStruct0 : __simpleStruct1);
4076 dataMember->offset = (addTo->type == 1) ? 0 : addTo->memberOffset;
4077 if(addTo->type == 1)
4079 if(dataMember->memberOffset > addTo->memberOffset)
4080 addTo->memberOffset = dataMember->memberOffset;
4083 addTo->memberOffset += dataMember->memberOffset;
4087 unsigned int __ecereNameSpace__ecere__com__eClass_AddMember(struct __ecereNameSpace__ecere__com__Class * _class, struct __ecereNameSpace__ecere__com__DataMember * dataMember)
4089 void * __ecereTemp1;
4090 int __simpleStruct0, __simpleStruct1;
4092 if(!_class || _class->comRedefinition || (dataMember->name && __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&_class->members, dataMember->name)))
4094 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&_class->membersAndProperties, dataMember);
4095 if(dataMember->name)
4096 __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)));
4097 __ecereNameSpace__ecere__com__SetMemberClass(dataMember, _class);
4098 dataMember->id = _class->memberID;
4099 _class->structAlignment = (__simpleStruct0 = _class->structAlignment, __simpleStruct1 = dataMember->structAlignment, (__simpleStruct0 > __simpleStruct1) ? __simpleStruct0 : __simpleStruct1);
4100 if(dataMember->type == 1)
4101 _class->memberID += 1;
4103 _class->memberID += dataMember->memberID;
4104 dataMember->offset = _class->memberOffset;
4105 _class->memberOffset += dataMember->memberOffset;
4109 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)
4111 void * __ecereTemp1;
4113 if(_class && name && !__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&_class->members, name))
4117 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);
4119 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&_class->membersAndProperties, bitMember);
4122 bitMember->pos = (bitPos == -1) ? _class->memberOffset : bitPos;
4123 bitMember->size = bitSize;
4124 _class->memberOffset = bitMember->pos + bitMember->size;
4125 for(c = 0; c < bitSize; c++)
4131 bitMember->mask = mask << bitMember->pos;
4133 __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)));
4136 return (((void *)0));
4139 static struct __ecereNameSpace__ecere__com__Instance * __ecereNameSpace__ecere__com__Module_Load(struct __ecereNameSpace__ecere__com__Instance * fromModule, char * name, int importAccess, unsigned int ensureCOM)
4141 void * __ecereTemp1;
4142 unsigned int (stdcall * Load)(struct __ecereNameSpace__ecere__com__Instance * module) = (((void *)0));
4143 unsigned int (stdcall * Unload)(struct __ecereNameSpace__ecere__com__Instance * module) = (((void *)0));
4144 struct __ecereNameSpace__ecere__com__Instance * module;
4146 for(module = ((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)fromModule + 12)))->application + 300)))->allModules.first; module; module = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->next)
4148 if(!strcmp(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->name, name))
4151 if(ensureCOM && (!strcmp(name, "ecereCOM") || !strcmp(name, "ecere")))
4153 for(module = ((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)fromModule + 12)))->application + 300)))->allModules.first; module; module = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->next)
4155 if(!strcmp(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->name, "ecere") || !strcmp(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->name, "ecereCOM"))
4161 void * library = (((void *)0));
4163 if(ensureCOM && !strcmp(name, "ecereCOM"))
4165 Load = __ecereDll_Load_ecere;
4166 Unload = __ecereDll_Unload_ecere;
4170 library = Instance_Module_Load(name, &Load, &Unload);
4174 module = (struct __ecereNameSpace__ecere__com__Instance *)__ecereNameSpace__ecere__com__eInstance_New(__ecereNameSpace__ecere__com__eSystem_FindClass(fromModule, "Module"));
4175 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)fromModule + 12)))->application;
4176 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->library = library;
4177 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->name = __ecereNameSpace__ecere__sys__CopyString(name);
4178 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->Unload = Unload;
4179 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->origImportType = 0;
4182 __ecereNameSpace__ecere__com__eInstance_Delete((struct __ecereNameSpace__ecere__com__Instance *)module);
4183 module = (((void *)0));
4186 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)fromModule + 12)))->application + 300)))->allModules, module);
4188 if(ensureCOM && !strcmp(name, "ecere") && module)
4190 name = !strcmp(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->name, "ecereCOM") ? "ecere" : "ecereCOM";
4191 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))
4193 struct __ecereNameSpace__ecere__com__Instance * module;
4195 for(module = ((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)fromModule + 12)))->application + 300)))->allModules.first; module; module = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->next)
4197 if(!strcmp(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->name, name))
4202 Load = __ecereDll_Load_ecere;
4203 Unload = __ecereDll_Unload_ecere;
4204 module = (struct __ecereNameSpace__ecere__com__Instance *)__ecereNameSpace__ecere__com__eInstance_New(__ecereNameSpace__ecere__com__eSystem_FindClass(fromModule, "Module"));
4205 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)fromModule + 12)))->application;
4206 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->library = (((void *)0));
4207 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->name = __ecereNameSpace__ecere__sys__CopyString(name);
4208 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->Unload = Unload;
4211 __ecereNameSpace__ecere__com__eInstance_Delete((struct __ecereNameSpace__ecere__com__Instance *)module);
4212 module = (((void *)0));
4214 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)fromModule + 12)))->application + 300)))->allModules, module);
4220 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)fromModule + 12)))->modules, (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass___ecereNameSpace__ecere__com__SubModule), ((struct __ecereNameSpace__ecere__com__SubModule *)__ecereTemp1)->module = module, ((struct __ecereNameSpace__ecere__com__SubModule *)__ecereTemp1)->importMode = importAccess, ((struct __ecereNameSpace__ecere__com__SubModule *)__ecereTemp1)));
4222 module->_refCount++;
4230 __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)));
4232 module->_refCount++;
4237 struct __ecereNameSpace__ecere__com__Instance * __ecereNameSpace__ecere__com__eModule_Load(struct __ecereNameSpace__ecere__com__Instance * fromModule, char * name, int importAccess)
4239 return __ecereNameSpace__ecere__com__Module_Load(fromModule, name, importAccess, 0x1);
4242 struct __ecereNameSpace__ecere__com__Instance * __ecereNameSpace__ecere__com__eModule_LoadStrict(struct __ecereNameSpace__ecere__com__Instance * fromModule, char * name, int importAccess)
4244 return __ecereNameSpace__ecere__com__Module_Load(fromModule, name, importAccess, 0x0);
4247 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))
4249 void * __ecereTemp1;
4250 struct __ecereNameSpace__ecere__com__Instance * module;
4252 for(module = ((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)fromModule + 12)))->application + 300)))->allModules.first; module; module = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->next)
4254 if(!strcmp(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->name, name))
4261 module = (struct __ecereNameSpace__ecere__com__Instance *)__ecereNameSpace__ecere__com__eInstance_New(__ecereNameSpace__ecere__com__eSystem_FindClass(fromModule, "Module"));
4262 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)fromModule + 12)))->application;
4263 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->name = __ecereNameSpace__ecere__sys__CopyString(name);
4264 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->origImportType = 1;
4265 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->Unload = (void *)Unload;
4268 __ecereNameSpace__ecere__com__eInstance_Delete((struct __ecereNameSpace__ecere__com__Instance *)module);
4269 module = (((void *)0));
4272 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)fromModule + 12)))->application + 300)))->allModules, module);
4278 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)fromModule + 12)))->modules, (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass___ecereNameSpace__ecere__com__SubModule), ((struct __ecereNameSpace__ecere__com__SubModule *)__ecereTemp1)->module = module, ((struct __ecereNameSpace__ecere__com__SubModule *)__ecereTemp1)->importMode = importAccess, ((struct __ecereNameSpace__ecere__com__SubModule *)__ecereTemp1)));
4280 module->_refCount++;
4285 void __ecereNameSpace__ecere__com__eModule_Unload(struct __ecereNameSpace__ecere__com__Instance * fromModule, struct __ecereNameSpace__ecere__com__Instance * module)
4287 struct __ecereNameSpace__ecere__sys__OldLink * m;
4289 for(m = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)fromModule + 12)))->modules.first; m; m = m->next)
4291 if(m->data == module)
4296 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)fromModule + 12)))->modules, m);
4297 (__ecereNameSpace__ecere__com__eInstance_DecRef(module), module = 0);
4301 void __ecereNameSpace__ecere__com__eEnum_AddFixedValue(struct __ecereNameSpace__ecere__com__Class * _class, char * string, int value)
4303 void * __ecereTemp1;
4305 if(_class && _class->type == 4)
4307 struct __ecereNameSpace__ecere__com__EnumClassData * data = (struct __ecereNameSpace__ecere__com__EnumClassData *)_class->data;
4308 struct __ecereNameSpace__ecere__sys__NamedLink * item;
4310 for(item = data->values.first; item; item = item->next)
4311 if(!strcmp(item->name, string))
4315 __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)));
4316 if(value > data->largest)
4317 data->largest = value;
4322 int __ecereNameSpace__ecere__com__eEnum_AddValue(struct __ecereNameSpace__ecere__com__Class * _class, char * string)
4324 void * __ecereTemp1;
4326 if(_class && _class->type == 4)
4328 struct __ecereNameSpace__ecere__com__EnumClassData * data = (struct __ecereNameSpace__ecere__com__EnumClassData *)_class->data;
4329 int value = data->largest + 1;
4330 struct __ecereNameSpace__ecere__sys__NamedLink * item;
4332 for(item = data->values.first; item; item = item->next)
4333 if(!strcmp(item->name, string))
4337 __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)));
4338 if(value > data->largest)
4339 data->largest = value;
4346 static void __ecereNameSpace__ecere__com__NameSpace_Free(struct __ecereNameSpace__ecere__com__NameSpace * parentNameSpace)
4348 struct __ecereNameSpace__ecere__com__NameSpace * nameSpace;
4350 (__ecereNameSpace__ecere__com__eSystem_Delete(parentNameSpace->name), parentNameSpace->name = 0);
4351 while((nameSpace = (struct __ecereNameSpace__ecere__com__NameSpace *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&parentNameSpace->nameSpaces)))
4353 __ecereNameSpace__ecere__com__NameSpace_Free(nameSpace);
4354 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&parentNameSpace->nameSpaces, (struct __ecereNameSpace__ecere__sys__BTNode *)nameSpace);
4358 static void __ecereNameSpace__ecere__com__Application_Destructor(struct __ecereNameSpace__ecere__com__Instance * app)
4360 if(((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 300)))->parsedCommand)
4362 (__ecereNameSpace__ecere__com__eSystem_Delete(((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 300)))->argv), ((struct __ecereNameSpace__ecere__com__Application * )(((char * )app + 300)))->argv = 0);
4363 (__ecereNameSpace__ecere__com__eSystem_Delete(((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 300)))->parsedCommand), ((struct __ecereNameSpace__ecere__com__Application * )(((char * )app + 300)))->parsedCommand = 0);
4367 static unsigned int __ecereNameSpace__ecere__com__Module_Constructor(struct __ecereNameSpace__ecere__com__Instance * module)
4369 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->privateNameSpace.classes.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
4370 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->privateNameSpace.defines.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
4371 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->privateNameSpace.functions.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
4372 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->privateNameSpace.nameSpaces.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
4373 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->publicNameSpace.classes.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
4374 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->publicNameSpace.defines.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
4375 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->publicNameSpace.functions.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
4376 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->publicNameSpace.nameSpaces.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
4380 static void __ecereNameSpace__ecere__com__Module_Destructor(struct __ecereNameSpace__ecere__com__Instance * module)
4382 struct __ecereNameSpace__ecere__com__Class * _class;
4383 struct __ecereNameSpace__ecere__com__DefinedExpression * def;
4384 struct __ecereNameSpace__ecere__com__GlobalFunction * function;
4385 struct __ecereNameSpace__ecere__com__Instance * m;
4386 struct __ecereNameSpace__ecere__com__SubModule * handle;
4388 for(m = ((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application + 300)))->allModules.first; m; m = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)m + 12)))->next)
4390 struct __ecereNameSpace__ecere__com__SubModule * next;
4392 for(handle = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)m + 12)))->modules.first; handle; handle = next)
4394 next = handle->next;
4395 if(handle->module == module)
4396 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)m + 12)))->modules, handle);
4399 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->Unload)
4401 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->origImportType == 1)
4403 unsigned int (* Unload)(struct __ecereNameSpace__ecere__com__Instance * module) = (void *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->Unload;
4409 unsigned int (stdcall * Unload)(struct __ecereNameSpace__ecere__com__Instance * module) = (void *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->Unload;
4415 struct __ecereNameSpace__ecere__com__Instance * ourWorld = __ecereClass___ecereNameSpace__ecere__com__Class->module;
4416 void * ourHandle = (((void *)0));
4418 while((handle = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->modules.last))
4420 struct __ecereNameSpace__ecere__com__Instance * depModule = handle->module;
4422 if(depModule == ourWorld)
4424 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->modules, handle);
4429 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->modules, handle);
4430 (__ecereNameSpace__ecere__com__eInstance_DecRef(depModule), depModule = 0);
4435 (__ecereNameSpace__ecere__com__eSystem_Delete(ourHandle), ourHandle = 0);
4436 (__ecereNameSpace__ecere__com__eInstance_DecRef(ourWorld), ourWorld = 0);
4439 for(; (_class = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->classes.first); )
4441 if(_class->nameSpace)
4443 struct __ecereNameSpace__ecere__com__BTNamedLink * classLink = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&(*_class->nameSpace).classes, _class->name);
4444 struct __ecereNameSpace__ecere__sys__OldLink * t;
4446 for(t = _class->templatized.first; t; t = t->next)
4448 struct __ecereNameSpace__ecere__com__Class * template = t->data;
4449 struct __ecereNameSpace__ecere__com__BTNamedLink * link;
4451 link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&(*template->nameSpace).classes, template->name);
4452 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&(*template->nameSpace).classes, (struct __ecereNameSpace__ecere__sys__BTNode *)link);
4453 template->nameSpace = (((void *)0));
4455 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&(*_class->nameSpace).classes, (struct __ecereNameSpace__ecere__sys__BTNode *)classLink);
4456 _class->nameSpace = (((void *)0));
4458 _class->module = (((void *)0));
4459 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->classes, _class);
4460 if(!_class->count || _class->type != 0)
4461 __ecereNameSpace__ecere__com__eClass_Unregister(_class);
4466 for(; (def = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->defines.first); )
4470 struct __ecereNameSpace__ecere__com__BTNamedLink * defLink;
4472 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)))
4473 if(defLink->data == def)
4475 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&(*def->nameSpace).defines, (struct __ecereNameSpace__ecere__sys__BTNode *)defLink);
4479 (__ecereNameSpace__ecere__com__eSystem_Delete(def->name), def->name = 0);
4480 (__ecereNameSpace__ecere__com__eSystem_Delete(def->value), def->value = 0);
4481 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->defines, def);
4483 for(; (function = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->functions.first); )
4485 if(function->nameSpace)
4487 struct __ecereNameSpace__ecere__com__BTNamedLink * functionLink;
4489 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)))
4490 if(functionLink->data == function)
4492 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&(*function->nameSpace).functions, (struct __ecereNameSpace__ecere__sys__BTNode *)functionLink);
4496 (__ecereNameSpace__ecere__com__eSystem_Delete(function->name), function->name = 0);
4497 (__ecereNameSpace__ecere__com__eSystem_Delete(function->dataTypeString), function->dataTypeString = 0);
4498 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->functions, function);
4500 (__ecereNameSpace__ecere__com__eSystem_Delete(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->name), ((struct __ecereNameSpace__ecere__com__Module * )(((char * )module + 12)))->name = 0);
4501 __ecereNameSpace__ecere__com__NameSpace_Free(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->privateNameSpace);
4502 __ecereNameSpace__ecere__com__NameSpace_Free(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->publicNameSpace);
4503 if(module != ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application)
4504 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove(&((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application + 300)))->allModules, module);
4506 __ecereNameSpace__ecere__com__NameSpace_Free(&((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application + 300)))->systemNameSpace);
4507 Instance_Module_Free(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->library);
4510 static int __ecereNameSpace__ecere__com__GetEnumSize(struct __ecereNameSpace__ecere__com__Class * _class)
4512 struct __ecereNameSpace__ecere__com__EnumClassData * data = (struct __ecereNameSpace__ecere__com__EnumClassData *)_class->data;
4514 return data->largest + 1;
4517 char * strlwr(char * string)
4521 for(c = 0; string[c]; c++)
4522 if(string[c] >= 'A' && string[c] <= 'Z')
4523 string[c] += 'a' - 'A';
4527 char * strupr(char * string)
4531 for(c = 0; string[c]; c++)
4532 if(string[c] >= 'a' && string[c] <= 'z')
4533 string[c] -= 'a' - 'A';
4537 struct __ecereNameSpace__ecere__com__DefinedExpression * __ecereNameSpace__ecere__com__eSystem_RegisterDefine(char * name, char * value, struct __ecereNameSpace__ecere__com__Instance * module, int declMode)
4539 void * __ecereTemp1;
4540 struct __ecereNameSpace__ecere__com__NameSpace * nameSpace = (((void *)0));
4543 nameSpace = (declMode == 1) ? &((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->publicNameSpace : &((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->privateNameSpace;
4545 nameSpace = &((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application + 300)))->systemNameSpace;
4548 for(c = 0; name[c]; c++)
4550 if(name[c] == '.' || (name[c] == ':' && name[c + 1] == ':'))
4552 struct __ecereNameSpace__ecere__com__NameSpace * newSpace;
4553 char * spaceName = __ecereNameSpace__ecere__com___malloc(c - start + 1);
4555 strncpy(spaceName, name + start, c - start);
4556 spaceName[c - start] = '\0';
4557 newSpace = (struct __ecereNameSpace__ecere__com__NameSpace *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&(*nameSpace).nameSpaces, spaceName);
4560 newSpace = __ecereNameSpace__ecere__com__eSystem_New0(sizeof(struct __ecereNameSpace__ecere__com__NameSpace) * (1));
4561 (*newSpace).classes.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
4562 (*newSpace).defines.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
4563 (*newSpace).functions.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
4564 (*newSpace).nameSpaces.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
4565 (*newSpace).name = spaceName;
4566 (*newSpace).parent = nameSpace;
4567 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&(*nameSpace).nameSpaces, (struct __ecereNameSpace__ecere__sys__BTNode *)newSpace);
4570 (__ecereNameSpace__ecere__com__eSystem_Delete(spaceName), spaceName = 0);
4571 nameSpace = newSpace;
4580 if(c - start && !__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&(*nameSpace).defines, name + start))
4582 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);
4584 __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)));
4585 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->defines, def);
4588 return (((void *)0));
4591 struct __ecereNameSpace__ecere__com__GlobalFunction * __ecereNameSpace__ecere__com__eSystem_RegisterFunction(char * name, char * type, void * func, struct __ecereNameSpace__ecere__com__Instance * module, int declMode)
4593 void * __ecereTemp1;
4594 struct __ecereNameSpace__ecere__com__NameSpace * nameSpace = (((void *)0));
4597 nameSpace = (declMode == 1) ? &((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->publicNameSpace : &((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->privateNameSpace;
4599 nameSpace = &((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application + 300)))->systemNameSpace;
4602 for(c = 0; name[c]; c++)
4604 if(name[c] == '.' || (name[c] == ':' && name[c + 1] == ':'))
4606 struct __ecereNameSpace__ecere__com__NameSpace * newSpace;
4607 char * spaceName = __ecereNameSpace__ecere__com___malloc(c - start + 1);
4609 strncpy(spaceName, name + start, c - start);
4610 spaceName[c - start] = '\0';
4611 newSpace = (struct __ecereNameSpace__ecere__com__NameSpace *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&(*nameSpace).nameSpaces, spaceName);
4614 newSpace = __ecereNameSpace__ecere__com__eSystem_New0(sizeof(struct __ecereNameSpace__ecere__com__NameSpace) * (1));
4615 (*newSpace).classes.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
4616 (*newSpace).defines.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
4617 (*newSpace).functions.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
4618 (*newSpace).nameSpaces.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
4619 (*newSpace).name = spaceName;
4620 (*newSpace).parent = nameSpace;
4621 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&(*nameSpace).nameSpaces, (struct __ecereNameSpace__ecere__sys__BTNode *)newSpace);
4624 (__ecereNameSpace__ecere__com__eSystem_Delete(spaceName), spaceName = 0);
4625 nameSpace = newSpace;
4634 if(c - start && !__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&(*nameSpace).functions, name + start))
4636 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);
4638 __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)));
4639 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->functions, function);
4642 return (((void *)0));
4645 struct __ecereNameSpace__ecere__com__DefinedExpression * __ecereNameSpace__ecere__com__eSystem_FindDefine(struct __ecereNameSpace__ecere__com__Instance * module, char * name)
4649 struct __ecereNameSpace__ecere__com__BTNamedLink * link;
4651 link = __ecereNameSpace__ecere__com__SearchNameSpace(&((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application + 300)))->systemNameSpace, name, &(*((struct __ecereNameSpace__ecere__com__NameSpace *)0)).defines);
4654 link = __ecereNameSpace__ecere__com__SearchModule(module, name, &(*((struct __ecereNameSpace__ecere__com__NameSpace *)0)).defines, 0x1);
4658 return (((void *)0));
4661 struct __ecereNameSpace__ecere__com__GlobalFunction * __ecereNameSpace__ecere__com__eSystem_FindFunction(struct __ecereNameSpace__ecere__com__Instance * module, char * name)
4665 struct __ecereNameSpace__ecere__com__BTNamedLink * link;
4667 link = __ecereNameSpace__ecere__com__SearchNameSpace(&((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application + 300)))->systemNameSpace, name, &(*((struct __ecereNameSpace__ecere__com__NameSpace *)0)).functions);
4670 link = __ecereNameSpace__ecere__com__SearchModule(module, name, &(*((struct __ecereNameSpace__ecere__com__NameSpace *)0)).functions, 0x1);
4674 return (((void *)0));
4677 void * __ecereNameSpace__ecere__com__eSystem_Renew(void * memory, unsigned int size)
4679 return __ecereNameSpace__ecere__com___realloc(memory, size);
4682 void * __ecereNameSpace__ecere__com__eSystem_Renew0(void * memory, unsigned int size)
4684 return __ecereNameSpace__ecere__com___crealloc(memory, size);
4687 void * __ecereNameSpace__ecere__com__eSystem_New(unsigned int size)
4689 return __ecereNameSpace__ecere__com___malloc(size);
4692 void * __ecereNameSpace__ecere__com__eSystem_New0(unsigned int size)
4694 return __ecereNameSpace__ecere__com___calloc(1, size);
4697 void __ecereNameSpace__ecere__com__eSystem_Delete(void * memory)
4700 __ecereNameSpace__ecere__com___free(memory);
4703 void __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property)
4705 if(instance && _property && _property->selfWatchable)
4707 struct __ecereNameSpace__ecere__com__Class * _class;
4709 for(_class = ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class; _class; _class = _class->base)
4711 struct __ecereNameSpace__ecere__com__SelfWatcher * selfWatcher, * next;
4713 for(selfWatcher = _class->selfWatchers.first; selfWatcher; selfWatcher = next)
4715 next = selfWatcher->next;
4716 if(selfWatcher->_property == _property)
4717 selfWatcher->callback(instance);
4723 void __ecereNameSpace__ecere__com__eInstance_FireWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property)
4725 if(instance && _property && _property->isWatchable)
4727 struct __ecereNameSpace__ecere__sys__OldList * watchers = (struct __ecereNameSpace__ecere__sys__OldList *)((unsigned char *)instance + _property->watcherOffset);
4728 struct __ecereNameSpace__ecere__com__Watcher * watcher, * next;
4730 for(watcher = (*watchers).first; watcher; watcher = next)
4732 next = watcher->next;
4733 watcher->callback(watcher->object, instance);
4738 void __ecereNameSpace__ecere__com__eProperty_Watchable(struct __ecereNameSpace__ecere__com__Property * _property)
4740 if(!_property->isWatchable)
4742 struct __ecereNameSpace__ecere__com__Class * _class = _property->_class;
4744 if(!_class->computeSize)
4746 _property->watcherOffset = _class->structSize;
4747 _class->structSize += sizeof(struct __ecereNameSpace__ecere__sys__OldList);
4748 __ecereNameSpace__ecere__com__FixDerivativesBase(_class, _class);
4750 _property->isWatchable = 0x1;
4754 void __ecereNameSpace__ecere__com__eClass_DestructionWatchable(struct __ecereNameSpace__ecere__com__Class * _class)
4756 if(!_class->destructionWatchOffset)
4758 _class->destructionWatchOffset = _class->structSize;
4759 _class->structSize += sizeof(struct __ecereNameSpace__ecere__sys__OldList);
4760 __ecereNameSpace__ecere__com__FixDerivativesBase(_class, _class);
4764 void __ecereNameSpace__ecere__com__eProperty_SelfWatch(struct __ecereNameSpace__ecere__com__Class * _class, char * name, void (* callback)(void *))
4766 void * __ecereTemp1;
4770 struct __ecereNameSpace__ecere__com__Property * _property = __ecereNameSpace__ecere__com__eClass_FindProperty(_class, name, _class->module);
4773 _property = __ecereNameSpace__ecere__com__eClass_AddProperty(_class, name, (((void *)0)), (((void *)0)), (((void *)0)), 4);
4774 __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)));
4775 _property->selfWatchable = 0x1;
4779 void __ecereNameSpace__ecere__com__eInstance_Watch(void * instance, struct __ecereNameSpace__ecere__com__Property * _property, void * object, void (* callback)(void *, void *))
4781 void * __ecereTemp1;
4783 if(_property->isWatchable)
4785 struct __ecereNameSpace__ecere__sys__OldList * watchers = (struct __ecereNameSpace__ecere__sys__OldList *)((unsigned char *)instance + _property->watcherOffset);
4787 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*watchers), (__ecereTemp1 = __ecereNameSpace__ecere__com__eSystem_New0(16), ((struct __ecereNameSpace__ecere__com__Watcher *)__ecereTemp1)->callback = callback, ((struct __ecereNameSpace__ecere__com__Watcher *)__ecereTemp1)->object = object, ((struct __ecereNameSpace__ecere__com__Watcher *)__ecereTemp1)));
4791 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 *))
4793 void * __ecereTemp1;
4794 struct __ecereNameSpace__ecere__sys__OldList * watchers = (struct __ecereNameSpace__ecere__sys__OldList *)((unsigned char *)instance + ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class->destructionWatchOffset);
4796 __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)));
4799 void __ecereNameSpace__ecere__com__eInstance_StopWatching(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, struct __ecereNameSpace__ecere__com__Instance * object)
4801 if(instance && (!_property || _property->isWatchable))
4805 struct __ecereNameSpace__ecere__sys__OldList * watchers = (struct __ecereNameSpace__ecere__sys__OldList *)((unsigned char *)instance + _property->watcherOffset);
4806 struct __ecereNameSpace__ecere__com__Watcher * watcher;
4808 for(watcher = (*watchers).first; watcher; watcher = watcher->next)
4809 if(watcher->object == object)
4811 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete((&*watchers), watcher);
4817 struct __ecereNameSpace__ecere__com__Class * _class, * base;
4819 for(_class = ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class; _class; _class = base)
4821 if(_class->destructionWatchOffset)
4823 struct __ecereNameSpace__ecere__sys__OldList * watchers = (struct __ecereNameSpace__ecere__sys__OldList *)((unsigned char *)instance + _class->destructionWatchOffset);
4824 struct __ecereNameSpace__ecere__com__Watcher * watcher;
4826 for(watcher = (*watchers).first; watcher; watcher = watcher->next)
4828 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete((&*watchers), watcher);
4832 for(_property = (struct __ecereNameSpace__ecere__com__Property *)_class->membersAndProperties.first; _property; _property = _property->next)
4834 if(_property->isProperty && _property->isWatchable)
4836 struct __ecereNameSpace__ecere__sys__OldList * watchers = (struct __ecereNameSpace__ecere__sys__OldList *)((unsigned char *)instance + _property->watcherOffset);
4837 struct __ecereNameSpace__ecere__com__Watcher * watcher;
4839 for(watcher = (*watchers).first; watcher; watcher = watcher->next)
4840 if(watcher->object == object)
4842 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete((&*watchers), watcher);
4847 base = _class->base;
4848 if(base && base->type == 1000)
4849 base = (((void *)0));
4855 struct __ecereNameSpace__ecere__com__Class * __ecereNameSpace__ecere__com__eClass_GetDesigner(struct __ecereNameSpace__ecere__com__Class * _class)
4857 for(; _class; _class = _class->base)
4859 if(_class->designerClass)
4860 return (struct __ecereNameSpace__ecere__com__Class *)__ecereNameSpace__ecere__com__eSystem_FindClass(_class->module, _class->designerClass);
4862 return (((void *)0));
4865 struct __ecereNameSpace__ecere__com__Class * __ecereNameSpace__ecere__com__eInstance_GetDesigner(struct __ecereNameSpace__ecere__com__Instance * instance)
4868 return __ecereNameSpace__ecere__com__eClass_GetDesigner(((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class);
4869 return (((void *)0));
4872 unsigned int __ecereNameSpace__ecere__com__LocateModule(char * name, char * fileName)
4874 return Instance_LocateModule(name, fileName);
4877 extern void __ecereNameSpace__ecere__com__InitializeDataTypes1(struct __ecereNameSpace__ecere__com__Instance * module);
4879 extern void __ecereNameSpace__ecere__com__InitializeDataTypes(struct __ecereNameSpace__ecere__com__Instance * module);
4881 extern double sin(struct __ecereNameSpace__ecere__com__Instance * number);
4883 extern double sinh(struct __ecereNameSpace__ecere__com__Instance * number);
4885 extern double cosh(struct __ecereNameSpace__ecere__com__Instance * number);
4887 extern double tanh(struct __ecereNameSpace__ecere__com__Instance * number);
4889 extern double sqrt(double number);
4891 extern double cos(struct __ecereNameSpace__ecere__com__Instance * number);
4893 extern double tan(struct __ecereNameSpace__ecere__com__Instance * number);
4895 extern struct __ecereNameSpace__ecere__com__Instance * atan2(double y, double x);
4897 extern struct __ecereNameSpace__ecere__com__Instance * asin(double number);
4899 extern struct __ecereNameSpace__ecere__com__Instance * acos(double number);
4901 extern struct __ecereNameSpace__ecere__com__Instance * atan(double number);
4903 extern double pow(double number, double number2);
4905 extern double fmod(double x, double y);
4907 extern double fabs(double number);
4909 extern double log(double number);
4911 extern double log10(double number);
4913 extern double ceil(double number);
4915 extern double floor(double number);
4917 extern double exp(double number);
4919 extern void qsort(void * , unsigned int, unsigned int, int (* )(void * , void * ));
4921 extern int system(const char * );
4923 extern int atoi(const char * );
4925 extern float atof(const char * );
4927 extern int tolower(int);
4929 extern int toupper(int);
4931 extern unsigned int isdigit(int);
4933 extern char * getenv(const char * name);
4935 extern int rename(const char * oldpath, const char * newpath);
4937 extern char * strncat(char * , const char * , int n);
4939 extern int strcasecmp(const char * , const char * );
4941 extern int strncasecmp(const char * , const char * , int n);
4943 extern int strncmp(const char * , const char * , int n);
4945 extern int vsprintf(char * , const char * , __builtin_va_list);
4947 extern int puts(char * );
4949 extern int fputs(char * , void * stream);
4951 extern int isalnum(int c);
4953 extern int isalpha(int c);
4955 extern int islower(int c);
4957 extern int isupper(int c);
4959 extern int isprint(int c);
4961 static void __ecereNameSpace__ecere__com__LoadCOM(struct __ecereNameSpace__ecere__com__Instance * module)
4963 struct __ecereNameSpace__ecere__com__Class * applicationClass;
4964 struct __ecereNameSpace__ecere__com__Class * enumClass, * structClass, * boolClass;
4965 struct __ecereNameSpace__ecere__com__Class * moduleClass;
4966 struct __ecereNameSpace__ecere__com__Class * baseClass = __ecereNameSpace__ecere__com__eSystem_RegisterClass(0, "class", (((void *)0)), 0, 0, (((void *)0)), (((void *)0)), module, 4, 1);
4968 baseClass->type = 1000;
4969 baseClass->memberOffset = 0;
4970 baseClass->offset = 0;
4971 baseClass->structSize = 0;
4972 baseClass->typeSize = 0;
4974 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);
4976 instanceClass->type = 1000;
4977 instanceClass->fixed = 0x1;
4978 instanceClass->memberOffset = 0;
4979 instanceClass->offset = 0;
4980 instanceClass->memberID = -3;
4981 instanceClass->startMemberID = -3;
4982 __ecereNameSpace__ecere__com__eClass_AddDataMember(instanceClass, "_vTbl", "int (**)()", sizeof(int (**)()), 4, 1);
4983 __ecereNameSpace__ecere__com__eClass_AddDataMember(instanceClass, "_class", "ecere::com::Class", sizeof(struct __ecereNameSpace__ecere__com__Class *), 4, 1);
4984 __ecereNameSpace__ecere__com__eClass_AddDataMember(instanceClass, "_refCount", "int", sizeof(int (**)()), 4, 1);
4986 __ecereNameSpace__ecere__com__InitializeDataTypes1(module);
4987 enumClass = __ecereNameSpace__ecere__com__eSystem_RegisterClass(0, "enum", (((void *)0)), 0, sizeof(struct __ecereNameSpace__ecere__com__EnumClassData), (((void *)0)), (((void *)0)), module, 4, 1);
4988 __ecereNameSpace__ecere__com__eClass_AddClassProperty(enumClass, "enumSize", "int", (((void *)0)), __ecereNameSpace__ecere__com__GetEnumSize)->constant = 0x1;
4989 enumClass->type = 1000;
4990 (__ecereNameSpace__ecere__com__eSystem_Delete(enumClass->dataTypeString), enumClass->dataTypeString = 0);
4991 enumClass->dataTypeString = __ecereNameSpace__ecere__sys__CopyString("int");
4992 structClass = __ecereNameSpace__ecere__com__eSystem_RegisterClass(0, "struct", (((void *)0)), 0, 0, (((void *)0)), (((void *)0)), module, 4, 1);
4993 structClass->type = 1000;
4994 structClass->memberOffset = 0;
4995 structClass->offset = 0;
4996 structClass->structSize = 0;
4997 structClass->typeSize = 0;
4998 __ecereNameSpace__ecere__com__InitializeDataTypes(module);
4999 boolClass = __ecereNameSpace__ecere__com__eSystem_RegisterClass(4, "bool", "uint", 0, 0, (((void *)0)), (((void *)0)), module, 4, 1);
5000 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(boolClass, "true", (unsigned int)0x1);
5001 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(boolClass, "false", (unsigned int)0x0);
5002 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);
5003 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(moduleClass, "OnLoad", "bool()", (((void *)0)), 1);
5004 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(moduleClass, "OnUnload", "void()", (((void *)0)), 1);
5005 __ecereNameSpace__ecere__com__eClass_AddMethod(moduleClass, "Load", "Module(char * name, AccessMode importAccess)", __ecereNameSpace__ecere__com__eModule_Load, 1);
5006 __ecereNameSpace__ecere__com__eClass_AddMethod(moduleClass, "Unload", "void(Module module)", __ecereNameSpace__ecere__com__eModule_Unload, 1);
5007 __ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "application", "Application", sizeof(struct __ecereNameSpace__ecere__com__Instance *), 4, 1);
5008 __ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "classes", "OldList", sizeof(struct __ecereNameSpace__ecere__sys__OldList), 4, 1);
5009 __ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "defines", "OldList", sizeof(struct __ecereNameSpace__ecere__sys__OldList), 4, 1);
5010 __ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "functions", "OldList", sizeof(struct __ecereNameSpace__ecere__sys__OldList), 4, 1);
5011 __ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "modules", "OldList", sizeof(struct __ecereNameSpace__ecere__sys__OldList), 4, 1);
5012 __ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "prev", "Module", sizeof(struct __ecereNameSpace__ecere__com__Instance *), 4, 1);
5013 __ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "next", "Module", sizeof(struct __ecereNameSpace__ecere__com__Instance *), 4, 1);
5014 __ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "name", "char *", sizeof(char *), 4, 1);
5015 __ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "library", "void *", sizeof(void *), 4, 1);
5016 __ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "Unload", "void *", sizeof(void *), 4, 1);
5017 __ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "importType", "ImportType", sizeof(int), 4, 1);
5018 __ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "origImportType", "ImportType", sizeof(int), 4, 1);
5019 __ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "privateNameSpace", "NameSpace", sizeof(struct __ecereNameSpace__ecere__com__NameSpace), 4, 1);
5020 __ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "publicNameSpace", "NameSpace", sizeof(struct __ecereNameSpace__ecere__com__NameSpace), 4, 1);
5021 moduleClass->fixed = 0x1;
5022 moduleClass->count++;
5023 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);
5024 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(applicationClass, "Main", "void()", (((void *)0)), 1);
5025 __ecereNameSpace__ecere__com__eClass_AddDataMember(applicationClass, "argc", "int", sizeof(int), 4, 1);
5026 __ecereNameSpace__ecere__com__eClass_AddDataMember(applicationClass, "argv", "char **", sizeof(char **), 4, 1);
5027 __ecereNameSpace__ecere__com__eClass_AddDataMember(applicationClass, "exitCode", "int", sizeof(int), 4, 1);
5028 __ecereNameSpace__ecere__com__eClass_AddDataMember(applicationClass, "isGUIApp", "bool", sizeof(unsigned int), 4, 1);
5029 __ecereNameSpace__ecere__com__eClass_AddDataMember(applicationClass, "allModules", "OldList", sizeof(struct __ecereNameSpace__ecere__sys__OldList), 4, 1);
5030 __ecereNameSpace__ecere__com__eClass_AddDataMember(applicationClass, "parsedCommand", "char *", sizeof(char *), 4, 1);
5031 __ecereNameSpace__ecere__com__eClass_AddDataMember(applicationClass, "systemNameSpace", "NameSpace", sizeof(struct __ecereNameSpace__ecere__com__NameSpace), 4, 1);
5032 applicationClass->fixed = 0x1;
5033 applicationClass->count++;
5034 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("sin", "double sin(Angle number)", sin, module, 4);
5035 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("sinh", "double sinh(Angle number)", sinh, module, 4);
5036 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("cosh", "double cosh(Angle number)", cosh, module, 4);
5037 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("tanh", "double tanh(Angle number)", tanh, module, 4);
5038 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("sqrt", "double sqrt(double number)", sqrt, module, 4);
5039 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("cos", "double cos(Angle number)", cos, module, 4);
5040 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("tan", "double tan(Angle number)", tan, module, 4);
5041 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("atan2", "Angle atan2(double y, double x)", atan2, module, 4);
5042 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("asin", "Angle asin(double number)", asin, module, 4);
5043 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("acos", "Angle acos(double number)", acos, module, 4);
5044 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("atan", "Angle atan(double number)", atan, module, 4);
5045 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("pow", "double pow(double number, double number2)", pow, module, 4);
5046 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("fmod", "double fmod(double x, double y)", fmod, module, 4);
5047 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("fabs", "double fabs(double number)", fabs, module, 4);
5048 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("log", "double log(double number)", log, module, 4);
5049 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("log10", "double log10(double number)", log10, module, 4);
5050 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ceil", "double ceil(double number)", ceil, module, 4);
5051 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("floor", "double floor(double number)", floor, module, 4);
5052 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("exp", "double exp(double number)", exp, module, 4);
5053 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("qsort", "void qsort(void *, uint, uint, int (*)(void *, void *))", qsort, module, 4);
5054 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strtod", "double strtod(char*, char**)", strtod, module, 4);
5055 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strtol", "int strtol(char*, char**, int base)", strtol, module, 4);
5056 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("system", "int system(const char*)", system, module, 4);
5057 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("atoi", "int atoi(const char*)", atoi, module, 4);
5058 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("atof", "float atof(const char*)", atof, module, 4);
5059 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("tolower", "int tolower(int)", tolower, module, 4);
5060 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("toupper", "int toupper(int)", toupper, module, 4);
5061 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("isdigit", "bool isdigit(int)", isdigit, module, 4);
5062 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("memset", "void memset(void * area, byte value, uint count)", memset, module, 4);
5063 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("getenv", "char * getenv(const char * name)", getenv, module, 4);
5064 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("rename", "int rename(const char *oldpath, const char *newpath)", rename, module, 4);
5065 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strlen", "int strlen(const char *)", strlen, module, 4);
5066 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strcat", "char * strcat(char *, const char *)", strcat, module, 4);
5067 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strncat", "char * strncat(char *, const char *, int n)", strncat, module, 4);
5068 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strchr", "char * strchr(char *, int)", strchr, module, 4);
5069 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strstr", "char * strstr(char *, const char *)", strstr, module, 4);
5070 __ecereNameSpace__ecere__com__eSystem_RegisterDefine("fstrcmp", "(GetRuntimePlatform() == win32) ? strcmpi : strcmp", module, 4);
5071 __ecereNameSpace__ecere__com__eSystem_RegisterDefine("strcmpi", "strcasecmp", module, 4);
5072 __ecereNameSpace__ecere__com__eSystem_RegisterDefine("strnicmp", "strncasecmp", module, 4);
5073 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strcasecmp", "int strcasecmp(const char *, const char *)", strcasecmp, module, 4);
5074 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strncasecmp", "int strncasecmp(const char *, const char *, int n)", strncasecmp, module, 4);
5075 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strcmp", "int strcmp(const char *, const char *)", strcmp, module, 4);
5076 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strncmp", "int strncmp(const char *, const char *, int n)", strncmp, module, 4);
5077 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strlwr", "char * strlwr(char *)", strlwr, module, 4);
5078 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strupr", "char * strupr(char *)", strupr, module, 4);
5079 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strcpy", "char * strcpy(char *, const char *)", strcpy, module, 4);
5080 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strncpy", "char * strncpy(char *, const char *, int n)", strncpy, module, 4);
5081 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("memcpy", "void * memcpy(void *, const void *, uint size)", memcpy, module, 4);
5082 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("memmove", "void * memmove(void *, const void *, uint size)", memmove, module, 4);
5083 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("sprintf", "int sprintf(char *, char *, ...)", sprintf, module, 4);
5084 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("snprintf", "int sprintf(char *, int, char *, ...)", snprintf, module, 4);
5085 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("printf", "int printf(char *, ...)", printf, module, 4);
5086 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("vsprintf", "int vsprintf(char*, const char*, __builtin_va_list)", vsprintf, module, 4);
5087 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("vsnprintf", "int vsnprintf(char*, int, const char*, __builtin_va_list)", vsnprintf, module, 4);
5088 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("puts", "int puts(char *)", puts, module, 4);
5089 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("fputs", "int fputs(char *, void * stream)", fputs, module, 4);
5090 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("isalnum", "int isalnum(int c)", isalnum, module, 4);
5091 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("isspace", "int isspace(int c)", isspace, module, 4);
5092 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("isalpha", "int isalpha(int c)", isalpha, module, 4);
5093 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("islower", "int islower(int c)", islower, module, 4);
5094 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("isupper", "int isupper(int c)", isupper, module, 4);
5095 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("isprint", "int isprint(int c)", isprint, module, 4);
5096 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strtoul", "unsigned long strtoul(const char * nptr, char ** endptr, int base)", strtoul, module, 4);
5099 struct __ecereNameSpace__ecere__com__Instance * __ecereNameSpace__ecere__com____ecere_COM_Initialize(unsigned int guiApp, int argc, char * argv[])
5101 struct __ecereNameSpace__ecere__com__Instance * app;
5103 app = __ecereNameSpace__ecere__com___calloc(1, 428);
5104 __ecereNameSpace__ecere__com__Module_Constructor(app);
5105 ((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 300)))->systemNameSpace.classes.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
5106 ((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 300)))->systemNameSpace.defines.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
5107 ((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 300)))->systemNameSpace.functions.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
5108 ((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 300)))->systemNameSpace.nameSpaces.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
5109 Instance_COM_Initialize(argc, argv, &((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 300)))->parsedCommand, &((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 300)))->argc, &((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 300)))->argv);
5110 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)app + 12)))->application = app;
5111 ((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 300)))->allModules.offset = 12 + (unsigned int)&(*((struct __ecereNameSpace__ecere__com__Module *)0)).prev;
5112 ((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 300)))->isGUIApp = guiApp;
5113 __ecereNameSpace__ecere__com__LoadCOM(app);
5114 ((struct __ecereNameSpace__ecere__com__Instance *)(char *)app)->_class = __ecereNameSpace__ecere__com__eSystem_FindClass(app, "Application");
5118 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)
5120 void * __ecereTemp1;
5124 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param;
5126 for(param = _class->templateParams.first; param; param = param->next)
5128 if(!strcmp(param->name, name))
5131 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));
5132 if(defaultArg != (((void *)0)))
5134 param->defaultArg = *defaultArg;
5135 __ecereNameSpace__ecere__com__CopyTemplateArg(param, ¶m->defaultArg);
5137 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&_class->templateParams, param);
5140 return (((void *)0));
5143 void __ecereNameSpace__ecere__com__eClass_DoneAddingTemplateParameters(struct __ecereNameSpace__ecere__com__Class * base)
5147 struct __ecereNameSpace__ecere__sys__OldLink * derivative;
5148 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param;
5151 void * first = base->templateParams.first;
5152 int count = base->templateParams.count;
5154 base->templateParams.first = (((void *)0));
5155 base->templateParams.count = 0;
5156 __ecereNameSpace__ecere__com__FreeTemplateArgs(base);
5157 (__ecereNameSpace__ecere__com__eSystem_Delete(base->templateArgs), base->templateArgs = 0);
5158 __ecereNameSpace__ecere__com__FreeTemplatesDerivatives(base);
5159 base->templateParams.first = first;
5160 base->templateParams.count = count;
5162 for(param = base->templateParams.first; param; param = param->next)
5164 if(param->type == 1 && param->defaultArg.memberString)
5166 struct __ecereNameSpace__ecere__com__Class * memberClass = base;
5167 char * colon = strstr(param->defaultArg.memberString, "::");
5172 char className[1024];
5173 struct __ecereNameSpace__ecere__com__Class * sClass;
5175 memcpy(className, param->defaultArg.memberString, colon - param->defaultArg.memberString);
5176 className[colon - param->defaultArg.memberString] = '\0';
5177 memberName = colon + 2;
5178 for(sClass = base; sClass; sClass = sClass->base)
5180 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * cParam;
5181 struct __ecereNameSpace__ecere__com__Class * nextClass;
5184 for(nextClass = sClass->base; nextClass; nextClass = nextClass->base)
5185 id += nextClass->templateParams.count;
5186 if(sClass == base || base->templateArgs)
5188 for(cParam = sClass->templateParams.first; cParam; cParam = cParam->next)
5190 if(cParam->type == 0 && !strcmp(cParam->name, className))
5191 strcpy(className, (sClass == base) ? cParam->defaultArg.dataTypeString : base->templateArgs[id].dataTypeString);
5196 memberClass = __ecereNameSpace__ecere__com__eSystem_FindClass(base->module, className);
5198 memberClass = __ecereNameSpace__ecere__com__eSystem_FindClass(((struct __ecereNameSpace__ecere__com__Module *)(((char *)base->module + 12)))->application, className);
5201 memberName = param->defaultArg.memberString;
5204 switch(param->memberType)
5207 param->defaultArg.member = __ecereNameSpace__ecere__com__eClass_FindDataMember(memberClass, memberName, memberClass->module, (((void *)0)), (((void *)0)));
5210 param->defaultArg.method = __ecereNameSpace__ecere__com__eClass_FindMethod(memberClass, memberName, memberClass->module);
5213 param->defaultArg.prop = __ecereNameSpace__ecere__com__eClass_FindProperty(memberClass, memberName, memberClass->module);
5219 __ecereNameSpace__ecere__com__FixDerivativesBase(base, base);
5223 static void __ecereNameSpace__ecere__com__FreeTemplatesDerivatives(struct __ecereNameSpace__ecere__com__Class * base)
5225 struct __ecereNameSpace__ecere__sys__OldLink * derivative, * templateLink;
5227 for(derivative = base->derivatives.first; derivative; derivative = derivative->next)
5229 struct __ecereNameSpace__ecere__com__Class * _class = derivative->data;
5231 if(_class->templateArgs)
5233 __ecereNameSpace__ecere__com__FreeTemplateArgs(_class);
5234 (__ecereNameSpace__ecere__com__eSystem_Delete(_class->templateArgs), _class->templateArgs = 0);
5236 __ecereNameSpace__ecere__com__FreeTemplatesDerivatives(_class);
5238 for(templateLink = base->templatized.first; templateLink; templateLink = templateLink->next)
5240 struct __ecereNameSpace__ecere__com__Class * _class = templateLink->data;
5242 if(_class->templateArgs)
5244 __ecereNameSpace__ecere__com__FreeTemplateArgs(_class);
5245 (__ecereNameSpace__ecere__com__eSystem_Delete(_class->templateArgs), _class->templateArgs = 0);
5247 __ecereNameSpace__ecere__com__FreeTemplatesDerivatives(_class);
5251 static const char * __ecereNameSpace__ecere__com__platformNames[4] =
5253 "", "win32", "linux", "apple"
5256 static const int __ecereNameSpace__ecere__com__firstPlatform = 1;
5258 static struct __ecereNameSpace__ecere__com__Property * __ecereProp___ecereNameSpace__ecere__com__Platform_char__PTR_, * __ecerePropM___ecereNameSpace__ecere__com__Platform_char__PTR_;
5260 static const int __ecereNameSpace__ecere__com__lastPlatform = 3;
5262 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Platform;
5264 int __ecereVMethodID_class_OnGetString;
5266 char * __ecereProp___ecereNameSpace__ecere__com__Platform_Get_char__PTR_(int this)
5268 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)));
5271 int __ecereProp___ecereNameSpace__ecere__com__Platform_Set_char__PTR_(char * value)
5277 for(c = __ecereNameSpace__ecere__com__firstPlatform; c <= __ecereNameSpace__ecere__com__lastPlatform; c++)
5278 if(!strcasecmp(value, __ecereNameSpace__ecere__com__platformNames[c]))
5284 char * __ecereMethod___ecereNameSpace__ecere__com__Platform_OnGetString(struct __ecereNameSpace__ecere__com__Class * class, int * this, char * tempString, void * fieldData, unsigned int * needClass)
5286 if((*(this)) >= __ecereNameSpace__ecere__com__firstPlatform && (*(this)) <= __ecereNameSpace__ecere__com__lastPlatform)
5289 strcpy(tempString, __ecereNameSpace__ecere__com__platformNames[*(int *)this]);
5290 return __ecereNameSpace__ecere__com__platformNames[*(int *)this];
5292 if(tempString && tempString[0])
5293 tempString[0] = '\0';
5294 return (((void *)0));
5297 unsigned int __ecereMethod___ecereNameSpace__ecere__com__Platform_OnGetDataFromString(struct __ecereNameSpace__ecere__com__Class * class, int * this, char * string)
5299 (*(this)) = __ecereProp___ecereNameSpace__ecere__com__Platform_Set_char__PTR_(string);
5300 return (unsigned int)*(int *)this;
5303 extern int runtimePlatform;
5305 int __ecereNameSpace__ecere__com__GetRuntimePlatform()
5307 return runtimePlatform;
5310 struct __ecereNameSpace__ecere__com__ObjectInfo
5312 struct __ecereNameSpace__ecere__com__ObjectInfo * prev, * next;
5313 struct __ecereNameSpace__ecere__com__Instance * instance;
5315 struct __ecereNameSpace__ecere__com__Instance * instCode;
5316 unsigned int deleted;
5317 struct __ecereNameSpace__ecere__com__ObjectInfo * oClass;
5318 struct __ecereNameSpace__ecere__sys__OldList instances;
5319 struct __ecereNameSpace__ecere__com__Instance * classDefinition;
5320 unsigned int modified;
5321 } __attribute__ ((gcc_struct));
5323 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__ObjectInfo;
5325 static struct __ecereNameSpace__ecere__com__Property * __ecereProp___ecereNameSpace__ecere__com__DesignerBase_classDesigner, * __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_classDesigner;
5327 static struct __ecereNameSpace__ecere__com__Property * __ecereProp___ecereNameSpace__ecere__com__DesignerBase_objectClass, * __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_objectClass;
5329 static struct __ecereNameSpace__ecere__com__Property * __ecereProp___ecereNameSpace__ecere__com__DesignerBase_isDragging, * __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_isDragging;
5331 struct __ecereNameSpace__ecere__com__DesignerBase
5333 struct __ecereNameSpace__ecere__com__Instance * classDesigner;
5335 unsigned int isDragging;
5336 } __attribute__ ((gcc_struct));
5338 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__DesignerBase;
5340 struct __ecereNameSpace__ecere__com__Instance * __ecereProp___ecereNameSpace__ecere__com__DesignerBase_Get_classDesigner(struct __ecereNameSpace__ecere__com__Instance * this)
5342 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);
5344 return __ecerePointer___ecereNameSpace__ecere__com__DesignerBase->classDesigner;
5347 void __ecereProp___ecereNameSpace__ecere__com__DesignerBase_Set_classDesigner(struct __ecereNameSpace__ecere__com__Instance * this, struct __ecereNameSpace__ecere__com__Instance * value)
5349 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);
5351 __ecerePointer___ecereNameSpace__ecere__com__DesignerBase->classDesigner = value;
5352 __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(this, __ecereProp___ecereNameSpace__ecere__com__DesignerBase_classDesigner), __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(this, __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_classDesigner);
5355 char * __ecereProp___ecereNameSpace__ecere__com__DesignerBase_Get_objectClass(struct __ecereNameSpace__ecere__com__Instance * this)
5357 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);
5359 return __ecerePointer___ecereNameSpace__ecere__com__DesignerBase->objectClass;
5362 void __ecereProp___ecereNameSpace__ecere__com__DesignerBase_Set_objectClass(struct __ecereNameSpace__ecere__com__Instance * this, char * value)
5364 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);
5366 __ecerePointer___ecereNameSpace__ecere__com__DesignerBase->objectClass = value;
5367 __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(this, __ecereProp___ecereNameSpace__ecere__com__DesignerBase_objectClass), __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(this, __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_objectClass);
5370 unsigned int __ecereProp___ecereNameSpace__ecere__com__DesignerBase_Get_isDragging(struct __ecereNameSpace__ecere__com__Instance * this)
5372 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);
5374 return __ecerePointer___ecereNameSpace__ecere__com__DesignerBase->isDragging;
5377 void __ecereProp___ecereNameSpace__ecere__com__DesignerBase_Set_isDragging(struct __ecereNameSpace__ecere__com__Instance * this, unsigned int value)
5379 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);
5381 __ecerePointer___ecereNameSpace__ecere__com__DesignerBase->isDragging = value;
5382 __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(this, __ecereProp___ecereNameSpace__ecere__com__DesignerBase_isDragging), __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(this, __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_isDragging);
5385 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__ClassDesignerBase;
5387 struct __ecereNameSpace__ecere__com__Instance * __ecereNameSpace__ecere__com__activeDesigner;
5389 void __ecereNameSpace__ecere__com__SetActiveDesigner(struct __ecereNameSpace__ecere__com__Instance * designer)
5391 __ecereNameSpace__ecere__com__activeDesigner = designer;
5394 struct __ecereNameSpace__ecere__com__Instance * __ecereNameSpace__ecere__com__GetActiveDesigner()
5396 return __ecereNameSpace__ecere__com__activeDesigner;
5401 unsigned int __ecereNameSpace__ecere__sys__UTF8Validate(char * source)
5407 for(c = 0; source[c]; )
5409 unsigned char ch = source[c];
5410 unsigned int codePoint = 0;
5413 unsigned char mask = (unsigned char)0x7F;
5415 if(ch & (unsigned char)0x80)
5417 if(ch & (unsigned char)0x40)
5421 if(ch & (unsigned char)0x20)
5425 if(ch & (unsigned char)0x10)
5427 if(ch & (unsigned char)0x08)
5437 for(i = 0; i < numBytes && (ch = source[c]); i++, c++)
5440 codePoint |= ch & mask;
5441 mask = (unsigned char)0x3F;
5444 if(!(ch & (unsigned char)0x80) || (ch & (unsigned char)0x40))
5450 if(codePoint > 0x10FFFF || (codePoint >= 0xD800 && codePoint <= 0xDFFF) || (codePoint < 0x80 && numBytes > 1) || (codePoint < 0x800 && numBytes > 2) || (codePoint < 0x10000 && numBytes > 3))
5457 int __ecereNameSpace__ecere__sys__ISO8859_1toUTF8(char * source, char * dest, int max)
5462 for(c = 0; source[c]; c++)
5464 unsigned int ch = ((unsigned char *)source)[c];
5470 dest[d++] = (char)ch;
5476 dest[d++] = (unsigned char)0xC0 | (unsigned char)((ch & 0x7C0) >> 6);
5477 dest[d++] = (unsigned char)0x80 | (unsigned char)(ch & 0x03F);
5479 else if(ch < 0x10000)
5483 dest[d++] = (unsigned char)0xE0 | (unsigned char)((ch & 0xF000) >> 12);
5484 dest[d++] = (unsigned char)0x80 | (unsigned char)((ch & 0xFC0) >> 6);
5485 dest[d++] = (unsigned char)0x80 | (unsigned char)(ch & 0x03F);
5491 dest[d++] = (unsigned char)0xF0 | (unsigned char)((ch & 0x1C0000) >> 18);
5492 dest[d++] = (unsigned char)0x80 | (unsigned char)((ch & 0x3F000) >> 12);
5493 dest[d++] = (unsigned char)0x80 | (unsigned char)((ch & 0xFC0) >> 6);
5494 dest[d++] = (unsigned char)0x80 | (unsigned char)(ch & 0x03F);
5501 char * __ecereNameSpace__ecere__sys__UTF16toUTF8(unsigned short * source)
5508 unsigned int invert = 0x0;
5510 for(len = 0; source[len]; len++)
5512 dest = __ecereNameSpace__ecere__com__eSystem_New(sizeof(char) * (len * 3 + 1));
5513 for(c = 0; (u16 = source[c]); c++)
5517 if(!c && (u16 == (unsigned short)0xFFFE || u16 == (unsigned short)0xFEFF))
5519 if(u16 == (unsigned short)0xFFFE)
5525 u16 = ((u16 & (unsigned short)0xFF00) >> (unsigned short)8) | ((u16 & (unsigned short)0x00FF) << (unsigned short)8);
5527 if(u16 < (unsigned short)0xD800 || u16 > (unsigned short)0xDBFF)
5530 ch = (u16 << 10) + source[c++] + (0x10000 - (0xD800 << 10) - 0xDC00);
5533 dest[d++] = (char)ch;
5537 dest[d++] = (unsigned char)0xC0 | (unsigned char)((ch & 0x7C0) >> 6);
5538 dest[d++] = (unsigned char)0x80 | (unsigned char)(ch & 0x03F);
5540 else if(ch < 0x10000)
5542 dest[d++] = (unsigned char)0xE0 | (unsigned char)((ch & 0xF000) >> 12);
5543 dest[d++] = (unsigned char)0x80 | (unsigned char)((ch & 0xFC0) >> 6);
5544 dest[d++] = (unsigned char)0x80 | (unsigned char)(ch & 0x03F);
5548 dest[d++] = (unsigned char)0xF0 | (unsigned char)((ch & 0x1C0000) >> 18);
5549 dest[d++] = (unsigned char)0x80 | (unsigned char)((ch & 0x3F000) >> 12);
5550 dest[d++] = (unsigned char)0x80 | (unsigned char)((ch & 0xFC0) >> 6);
5551 dest[d++] = (unsigned char)0x80 | (unsigned char)(ch & 0x03F);
5555 dest = __ecereNameSpace__ecere__com__eSystem_Renew(dest, sizeof(char) * (d + 1));
5559 int __ecereNameSpace__ecere__sys__UTF16toUTF8Buffer(unsigned short * source, unsigned char * dest, int max)
5565 for(c = 0; (u16 = source[c]); c++)
5569 if(u16 < (unsigned short)0xD800 || u16 > (unsigned short)0xDBFF)
5572 ch = (u16 << 10) + source[c++] + (0x10000 - (0xD800 << 10) - 0xDC00);
5577 dest[d++] = (char)ch;
5583 dest[d++] = (unsigned char)0xC0 | (unsigned char)((ch & 0x7C0) >> 6);
5584 dest[d++] = (unsigned char)0x80 | (unsigned char)(ch & 0x03F);
5586 else if(ch < 0x10000)
5590 dest[d++] = (unsigned char)0xE0 | (unsigned char)((ch & 0xF000) >> 12);
5591 dest[d++] = (unsigned char)0x80 | (unsigned char)((ch & 0xFC0) >> 6);
5592 dest[d++] = (unsigned char)0x80 | (unsigned char)(ch & 0x03F);
5598 dest[d++] = (unsigned char)0xF0 | (unsigned char)((ch & 0x1C0000) >> 18);
5599 dest[d++] = (unsigned char)0x80 | (unsigned char)((ch & 0x3F000) >> 12);
5600 dest[d++] = (unsigned char)0x80 | (unsigned char)((ch & 0xFC0) >> 6);
5601 dest[d++] = (unsigned char)0x80 | (unsigned char)(ch & 0x03F);
5604 dest[d] = (unsigned char)0;
5608 unsigned int __ecereNameSpace__ecere__sys__UTF8GetChar(char * string, int * numBytes)
5611 unsigned char b = ((unsigned char *)string)[0];
5613 unsigned char mask = (unsigned char)0x7F;
5617 if(b & (unsigned char)0x80)
5619 if(b & (unsigned char)0x40)
5623 if(b & (unsigned char)0x20)
5627 if(b & (unsigned char)0x10)
5629 if(b & (unsigned char)0x08)
5641 for(i = 0; i < nb; i++)
5644 ch |= (b = ((unsigned char *)string)[i]) & mask;
5645 mask = (unsigned char)0x3F;
5646 if(i > 1 && (!(b & (unsigned char)0x80) || (b & (unsigned char)0x40)))
5652 if(i < nb || ch > 0x10FFFF || (ch >= 0xD800 && ch <= 0xDFFF) || (ch < 0x80 && nb > 1) || (ch < 0x800 && nb > 2) || (ch < 0x10000 && nb > 3))
5662 int __ecereNameSpace__ecere__sys__UTF8toUTF16Buffer(char * source, unsigned short * dest, int max)
5669 for(c = 0; source[c]; )
5671 unsigned char ch = source[c];
5672 unsigned int codePoint = 0;
5675 unsigned char mask = (unsigned char)0x7F;
5677 if(ch & (unsigned char)0x80 && ch & (unsigned char)0x40)
5681 if(ch & (unsigned char)0x20)
5685 if(ch & (unsigned char)0x10)
5692 for(i = 0; i < numBytes; i++)
5695 codePoint |= source[c++] & mask;
5696 mask = (unsigned char)0x3F;
5698 if(codePoint > 0xFFFF)
5700 unsigned short lead = (unsigned short)((0xD800 - (0x10000 >> 10)) + (codePoint >> 10));
5701 unsigned short trail = (unsigned short)0xDC00 + (unsigned short)(codePoint & 0x3FF);
5712 dest[d++] = (unsigned short)codePoint;
5715 dest[d] = (unsigned short)0;
5721 int __ecereNameSpace__ecere__sys__UTF32toUTF8Len(unsigned int * source, int count, unsigned char * dest, int max)
5727 for(c = 0; c < count && (ch = source[c]); c++)
5733 dest[d++] = (char)ch;
5739 dest[d++] = (unsigned char)0xC0 | (unsigned char)((ch & 0x7C0) >> 6);
5740 dest[d++] = (unsigned char)0x80 | (unsigned char)(ch & 0x03F);
5742 else if(ch < 0x10000)
5746 dest[d++] = (unsigned char)0xE0 | (unsigned char)((ch & 0xF000) >> 12);
5747 dest[d++] = (unsigned char)0x80 | (unsigned char)((ch & 0xFC0) >> 6);
5748 dest[d++] = (unsigned char)0x80 | (unsigned char)(ch & 0x03F);
5754 dest[d++] = (unsigned char)0xF0 | (unsigned char)((ch & 0x1C0000) >> 18);
5755 dest[d++] = (unsigned char)0x80 | (unsigned char)((ch & 0x3F000) >> 12);
5756 dest[d++] = (unsigned char)0x80 | (unsigned char)((ch & 0xFC0) >> 6);
5757 dest[d++] = (unsigned char)0x80 | (unsigned char)(ch & 0x03F);
5760 dest[d] = (unsigned char)0;
5764 unsigned short * __ecereNameSpace__ecere__sys__UTF8toUTF16(char * source, int * wordCount)
5768 int len = strlen(source);
5769 unsigned short * dest = __ecereNameSpace__ecere__com__eSystem_New(sizeof(unsigned short) * (len + 1));
5773 for(c = 0; source[c]; )
5775 unsigned char ch = source[c];
5776 unsigned int codePoint = 0;
5779 unsigned char mask = (unsigned char)0x7F;
5781 if(ch & (unsigned char)0x80 && ch & (unsigned char)0x40)
5785 if(ch & (unsigned char)0x20)
5789 if(ch & (unsigned char)0x10)
5796 for(i = 0; i < numBytes; i++)
5799 codePoint |= source[c++] & mask;
5800 mask = (unsigned char)0x3F;
5802 if(codePoint > 0xFFFF)
5804 unsigned short lead = (unsigned short)((0xD800 - (0x10000 >> 10)) + (codePoint >> 10));
5805 unsigned short trail = (unsigned short)0xDC00 + (unsigned short)(codePoint & 0x3FF);
5812 dest[d++] = (unsigned short)codePoint;
5815 dest[d] = (unsigned short)0;
5820 return (((void *)0));
5823 int __ecereVMethodID___ecereNameSpace__ecere__com__DesignerBase_FindObject;
5825 int __ecereVMethodID___ecereNameSpace__ecere__com__DesignerBase_RenameObject;
5827 int __ecereVMethodID___ecereNameSpace__ecere__com__DesignerBase_SelectObjectFromDesigner;
5829 int __ecereVMethodID___ecereNameSpace__ecere__com__DesignerBase_CodeAddObject;
5831 int __ecereVMethodID___ecereNameSpace__ecere__com__DesignerBase_SheetAddObject;
5833 int __ecereVMethodID___ecereNameSpace__ecere__com__DesignerBase_AddToolBoxClass;
5835 int __ecereVMethodID___ecereNameSpace__ecere__com__DesignerBase_AddDefaultMethod;
5837 int __ecereVMethodID___ecereNameSpace__ecere__com__DesignerBase_DeleteObject;
5839 int __ecereVMethodID___ecereNameSpace__ecere__com__DesignerBase_ObjectContainsCode;
5841 int __ecereVMethodID___ecereNameSpace__ecere__com__DesignerBase_ModifyCode;
5843 int __ecereVMethodID___ecereNameSpace__ecere__com__DesignerBase_UpdateProperties;
5845 int __ecereVMethodID___ecereNameSpace__ecere__com__ClassDesignerBase_Reset;
5847 int __ecereVMethodID___ecereNameSpace__ecere__com__ClassDesignerBase_AddObject;
5849 int __ecereVMethodID___ecereNameSpace__ecere__com__ClassDesignerBase_SelectObject;
5851 int __ecereVMethodID___ecereNameSpace__ecere__com__ClassDesignerBase_ListToolBoxClasses;
5853 int __ecereVMethodID___ecereNameSpace__ecere__com__ClassDesignerBase_PrepareTestObject;
5855 int __ecereVMethodID___ecereNameSpace__ecere__com__ClassDesignerBase_CreateObject;
5857 int __ecereVMethodID___ecereNameSpace__ecere__com__ClassDesignerBase_PostCreateObject;
5859 int __ecereVMethodID___ecereNameSpace__ecere__com__ClassDesignerBase_DroppedObject;
5861 int __ecereVMethodID___ecereNameSpace__ecere__com__ClassDesignerBase_DestroyObject;
5863 int __ecereVMethodID___ecereNameSpace__ecere__com__ClassDesignerBase_FixProperty;
5865 int __ecereVMethodID___ecereNameSpace__ecere__com__ClassDesignerBase_CreateNew;
5867 void __ecereRegisterModule_instance(struct __ecereNameSpace__ecere__com__Instance * module)
5869 struct __ecereNameSpace__ecere__com__Class * class;
5871 __ecereNameSpace__ecere__com__eSystem_RegisterDefine("ecere::com::null", "((void *)0)", module, 4);
5872 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(3, "ecere::com::unichar", "uint", 0, 0, 0, 0, module, 4, 1);
5873 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
5874 __ecereClass___ecereNameSpace__ecere__com__unichar = class;
5875 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "OnGetString", 0, __ecereMethod___ecereNameSpace__ecere__com__unichar_OnGetString, 1);
5876 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "OnGetDataFromString", 0, __ecereMethod___ecereNameSpace__ecere__com__unichar_OnGetDataFromString, 1);
5877 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::Property", 0, sizeof(struct __ecereNameSpace__ecere__com__Property), 0, 0, 0, module, 4, 1);
5878 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
5879 __ecereClass___ecereNameSpace__ecere__com__Property = class;
5880 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "prev", "ecere::com::Property", 4, 4, 1);
5881 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "next", "ecere::com::Property", 4, 4, 1);
5882 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "name", "char *", 4, 4, 1);
5883 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "isProperty", "bool", 4, 4, 1);
5884 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "memberAccess", "ecere::com::AccessMode", 4, 4, 1);
5885 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "id", "int", 4, 4, 1);
5886 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "_class", "ecere::com::Class", 4, 4, 1);
5887 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataTypeString", "char *", 4, 4, 1);
5888 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataTypeClass", "ecere::com::Class", 4, 4, 1);
5889 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataType", "Type", 4, 4, 1);
5890 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "Set", "void( *)()", 4, 4, 1);
5891 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "Get", "int( *)()", 4, 4, 1);
5892 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "IsSet", "bool( *)()", 4, 4, 1);
5893 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "data", "void *", 4, 4, 1);
5894 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "symbol", "void *", 4, 4, 1);
5895 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "vid", "int", 4, 4, 1);
5896 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "conversion", "bool", 4, 4, 1);
5897 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "watcherOffset", "uint", 4, 4, 1);
5898 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "category", "char *", 4, 4, 1);
5899 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "compiled", "bool", 4, 4, 1);
5900 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "selfWatchable", "bool", 4, 4, 1);
5901 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "isWatchable", "bool", 4, 4, 1);
5903 class->fixed = (unsigned int)1;
5905 class->noExpansion = (unsigned int)1;
5906 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::MemoryGuard_PushLoc", "void ecere::com::MemoryGuard_PushLoc(char * loc)", __ecereNameSpace__ecere__com__MemoryGuard_PushLoc, module, 4);
5907 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::MemoryGuard_PopLoc", "void ecere::com::MemoryGuard_PopLoc(void)", __ecereNameSpace__ecere__com__MemoryGuard_PopLoc, module, 4);
5908 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::BTNamedLink", 0, sizeof(struct __ecereNameSpace__ecere__com__BTNamedLink), 0, 0, 0, module, 4, 1);
5909 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
5910 __ecereClass___ecereNameSpace__ecere__com__BTNamedLink = class;
5911 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "name", "char *", 4, 4, 1);
5912 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "parent", "ecere::com::BTNamedLink", 4, 4, 1);
5913 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "left", "ecere::com::BTNamedLink", 4, 4, 1);
5914 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "right", "ecere::com::BTNamedLink", 4, 4, 1);
5915 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "depth", "int", 4, 4, 1);
5916 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "data", "void *", 4, 4, 1);
5918 class->fixed = (unsigned int)1;
5919 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::SelfWatcher", 0, sizeof(struct __ecereNameSpace__ecere__com__SelfWatcher), 0, 0, 0, module, 2, 1);
5920 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
5921 __ecereClass___ecereNameSpace__ecere__com__SelfWatcher = class;
5923 class->fixed = (unsigned int)1;
5924 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(4, "ecere::com::AccessMode", 0, 0, 0, 0, 0, module, 4, 1);
5925 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
5926 __ecereClass___ecereNameSpace__ecere__com__AccessMode = class;
5927 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "defaultAccess", 0);
5928 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "publicAccess", 1);
5929 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "privateAccess", 2);
5930 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "staticAccess", 3);
5931 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "baseSystemAccess", 4);
5932 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::SubModule", 0, sizeof(struct __ecereNameSpace__ecere__com__SubModule), 0, 0, 0, module, 4, 1);
5933 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
5934 __ecereClass___ecereNameSpace__ecere__com__SubModule = class;
5935 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "prev", "ecere::com::SubModule", 4, 4, 1);
5936 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "next", "ecere::com::SubModule", 4, 4, 1);
5937 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "module", "ecere::com::Module", 4, 4, 1);
5938 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "importMode", "ecere::com::AccessMode", 4, 4, 1);
5939 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(4, "ecere::com::DataMemberType", 0, 0, 0, 0, 0, module, 4, 1);
5940 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
5941 __ecereClass___ecereNameSpace__ecere__com__DataMemberType = class;
5942 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "normalMember", 0);
5943 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "unionMember", 1);
5944 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "structMember", 2);
5945 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(4, "ecere::com::ClassType", 0, 0, 0, 0, 0, module, 4, 1);
5946 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
5947 __ecereClass___ecereNameSpace__ecere__com__ClassType = class;
5948 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "normalClass", 0);
5949 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "structClass", 1);
5950 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "bitClass", 2);
5951 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "unitClass", 3);
5952 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "enumClass", 4);
5953 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "noHeadClass", 5);
5954 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "unionClass", 6);
5955 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "systemClass", 1000);
5956 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::Class", 0, sizeof(struct __ecereNameSpace__ecere__com__Class), 0, 0, 0, module, 4, 1);
5957 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
5958 __ecereClass___ecereNameSpace__ecere__com__Class = class;
5959 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "OnFree", 0, __ecereMethod___ecereNameSpace__ecere__com__Class_OnFree, 1);
5960 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "OnGetString", 0, __ecereMethod___ecereNameSpace__ecere__com__Class_OnGetString, 1);
5961 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "OnGetDataFromString", 0, __ecereMethod___ecereNameSpace__ecere__com__Class_OnGetDataFromString, 1);
5962 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "OnSerialize", 0, __ecereMethod___ecereNameSpace__ecere__com__Class_OnSerialize, 1);
5963 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "OnUnserialize", 0, __ecereMethod___ecereNameSpace__ecere__com__Class_OnUnserialize, 1);
5964 __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);
5965 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "prev", "ecere::com::Class", 4, 4, 1);
5966 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "next", "ecere::com::Class", 4, 4, 1);
5967 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "name", "char *", 4, 4, 1);
5968 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "offset", "int", 4, 4, 1);
5969 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "structSize", "int", 4, 4, 1);
5970 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "_vTbl", "int( * *)()", 4, 4, 1);
5971 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "vTblSize", "int", 4, 4, 1);
5972 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "Constructor", "int( *)(ecere::com::Instance)", 4, 4, 1);
5973 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "Destructor", "void( *)(ecere::com::Instance)", 4, 4, 1);
5974 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "offsetClass", "int", 4, 4, 1);
5975 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "sizeClass", "int", 4, 4, 1);
5976 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "base", "ecere::com::Class", 4, 4, 1);
5977 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "methods", "ecere::sys::BinaryTree", 16, 4, 1);
5978 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "members", "ecere::sys::BinaryTree", 16, 4, 1);
5979 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "prop", "ecere::sys::BinaryTree", 16, 4, 1);
5980 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "membersAndProperties", "ecere::sys::OldList", 20, 4, 1);
5981 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "classProperties", "ecere::sys::BinaryTree", 16, 4, 1);
5982 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "derivatives", "ecere::sys::OldList", 20, 4, 1);
5983 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "memberID", "int", 4, 4, 1);
5984 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "startMemberID", "int", 4, 4, 1);
5985 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "type", "ecere::com::ClassType", 4, 4, 1);
5986 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "module", "ecere::com::Module", 4, 4, 1);
5987 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "nameSpace", "ecere::com::NameSpace *", 4, 4, 1);
5988 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataTypeString", "char *", 4, 4, 1);
5989 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataType", "Type", 4, 4, 1);
5990 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "typeSize", "int", 4, 4, 1);
5991 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "defaultAlignment", "int", 4, 4, 1);
5992 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "Initialize", "void( *)()", 4, 4, 1);
5993 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "memberOffset", "int", 4, 4, 1);
5994 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "selfWatchers", "ecere::sys::OldList", 20, 4, 1);
5995 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "designerClass", "char *", 4, 4, 1);
5996 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "noExpansion", "bool", 4, 4, 1);
5997 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "defaultProperty", "char *", 4, 4, 1);
5998 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "comRedefinition", "bool", 4, 4, 1);
5999 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "count", "int", 4, 4, 1);
6000 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "isRemote", "bool", 4, 4, 1);
6001 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "internalDecl", "bool", 4, 4, 1);
6002 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "data", "void *", 4, 4, 1);
6003 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "computeSize", "bool", 4, 4, 1);
6004 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "structAlignment", "int", 4, 4, 1);
6005 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "destructionWatchOffset", "int", 4, 4, 1);
6006 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "fixed", "bool", 4, 4, 1);
6007 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "delayedCPValues", "ecere::sys::OldList", 20, 4, 1);
6008 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "inheritanceAccess", "ecere::com::AccessMode", 4, 4, 1);
6009 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "fullName", "char *", 4, 4, 1);
6010 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "symbol", "void *", 4, 4, 1);
6011 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "conversions", "ecere::sys::OldList", 20, 4, 1);
6012 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "templateParams", "ecere::sys::OldList", 20, 4, 1);
6013 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "templateArgs", "ecere::com::ClassTemplateArgument *", 4, 4, 1);
6014 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "templateClass", "ecere::com::Class", 4, 4, 1);
6015 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "templatized", "ecere::sys::OldList", 20, 4, 1);
6016 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "numParams", "int", 4, 4, 1);
6018 class->fixed = (unsigned int)1;
6020 class->noExpansion = (unsigned int)1;
6021 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(4, "ecere::com::TemplateParameterType", 0, 0, 0, 0, 0, module, 4, 1);
6022 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6023 __ecereClass___ecereNameSpace__ecere__com__TemplateParameterType = class;
6024 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "type", 0);
6025 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "identifier", 1);
6026 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "expression", 2);
6027 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(4, "ecere::com::TemplateMemberType", 0, 0, 0, 0, 0, module, 4, 1);
6028 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6029 __ecereClass___ecereNameSpace__ecere__com__TemplateMemberType = class;
6030 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "dataMember", 0);
6031 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "method", 1);
6032 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "prop", 2);
6033 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(1, "ecere::com::ClassTemplateArgument", 0, sizeof(struct __ecereNameSpace__ecere__com__ClassTemplateArgument), 0, 0, 0, module, 4, 1);
6034 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6035 __ecereClass___ecereNameSpace__ecere__com__ClassTemplateArgument = class;
6037 struct __ecereNameSpace__ecere__com__DataMember * dataMember0 = __ecereNameSpace__ecere__com__eMember_New(1, 1);
6040 struct __ecereNameSpace__ecere__com__DataMember * dataMember1 = __ecereNameSpace__ecere__com__eMember_New(2, 1);
6042 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember1, "dataTypeString", "char *", 4, 4, 1);
6043 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember1, "dataTypeClass", "ecere::com::Class", 4, 4, 1);
6044 __ecereNameSpace__ecere__com__eMember_AddMember(dataMember0, dataMember1);
6046 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember0, "expression", "ecere::com::DataValue", 8, 8, 1);
6048 struct __ecereNameSpace__ecere__com__DataMember * dataMember1 = __ecereNameSpace__ecere__com__eMember_New(2, 1);
6050 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember1, "memberString", "char *", 4, 4, 1);
6052 struct __ecereNameSpace__ecere__com__DataMember * dataMember2 = __ecereNameSpace__ecere__com__eMember_New(1, 1);
6054 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember2, "member", "ecere::com::DataMember", 4, 4, 1);
6055 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember2, "prop", "ecere::com::Property", 4, 4, 1);
6056 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember2, "method", "ecere::com::Method", 4, 4, 1);
6057 __ecereNameSpace__ecere__com__eMember_AddMember(dataMember1, dataMember2);
6059 __ecereNameSpace__ecere__com__eMember_AddMember(dataMember0, dataMember1);
6061 __ecereNameSpace__ecere__com__eClass_AddMember(class, dataMember0);
6063 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::ClassTemplateParameter", 0, sizeof(struct __ecereNameSpace__ecere__com__ClassTemplateParameter), 0, 0, 0, module, 4, 1);
6064 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6065 __ecereClass___ecereNameSpace__ecere__com__ClassTemplateParameter = class;
6066 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "prev", "ecere::com::ClassTemplateParameter", 4, 4, 1);
6067 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "next", "ecere::com::ClassTemplateParameter", 4, 4, 1);
6068 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "name", "char *", 4, 4, 1);
6069 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "type", "ecere::com::TemplateParameterType", 4, 4, 1);
6071 struct __ecereNameSpace__ecere__com__DataMember * dataMember0 = __ecereNameSpace__ecere__com__eMember_New(1, 1);
6073 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember0, "dataTypeString", "char *", 4, 4, 1);
6074 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember0, "memberType", "ecere::com::TemplateMemberType", 4, 4, 1);
6075 __ecereNameSpace__ecere__com__eClass_AddMember(class, dataMember0);
6077 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "defaultArg", "ecere::com::ClassTemplateArgument", 8, 8, 1);
6078 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "param", "void *", 4, 4, 1);
6080 class->fixed = (unsigned int)1;
6081 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(4, "ecere::com::MethodType", 0, 0, 0, 0, 0, module, 4, 1);
6082 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6083 __ecereClass___ecereNameSpace__ecere__com__MethodType = class;
6084 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "normalMethod", 0);
6085 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "virtualMethod", 1);
6086 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::Method", 0, sizeof(struct __ecereNameSpace__ecere__com__Method), 0, 0, 0, module, 4, 1);
6087 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6088 __ecereClass___ecereNameSpace__ecere__com__Method = class;
6089 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "name", "char *", 4, 4, 1);
6090 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "parent", "ecere::com::Method", 4, 4, 1);
6091 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "left", "ecere::com::Method", 4, 4, 1);
6092 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "right", "ecere::com::Method", 4, 4, 1);
6093 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "depth", "int", 4, 4, 1);
6094 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "function", "int( *)()", 4, 4, 1);
6095 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "vid", "int", 4, 4, 1);
6096 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "type", "ecere::com::MethodType", 4, 4, 1);
6097 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "_class", "ecere::com::Class", 4, 4, 1);
6098 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "symbol", "void *", 4, 4, 1);
6099 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataTypeString", "char *", 4, 4, 1);
6100 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataType", "Type", 4, 4, 1);
6101 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "memberAccess", "ecere::com::AccessMode", 4, 4, 1);
6103 class->fixed = (unsigned int)1;
6104 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(4, "ecere::com::ImportType", 0, 0, 0, 0, 0, module, 4, 1);
6105 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6106 __ecereClass___ecereNameSpace__ecere__com__ImportType = class;
6107 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "normalImport", 0);
6108 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "staticImport", 1);
6109 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "remoteImport", 2);
6110 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "preDeclImport", 3);
6111 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "comCheckImport", 4);
6112 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(1, "ecere::com::NameSpace", 0, sizeof(struct __ecereNameSpace__ecere__com__NameSpace), 0, 0, 0, module, 4, 1);
6113 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6114 __ecereClass___ecereNameSpace__ecere__com__NameSpace = class;
6115 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "name", "char *", 4, 4, 1);
6116 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "btParent", "ecere::com::NameSpace *", 4, 4, 1);
6117 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "left", "ecere::com::NameSpace *", 4, 4, 1);
6118 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "right", "ecere::com::NameSpace *", 4, 4, 1);
6119 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "depth", "int", 4, 4, 1);
6120 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "parent", "ecere::com::NameSpace *", 4, 4, 1);
6121 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "nameSpaces", "ecere::sys::BinaryTree", 16, 4, 1);
6122 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "classes", "ecere::sys::BinaryTree", 16, 4, 1);
6123 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "defines", "ecere::sys::BinaryTree", 16, 4, 1);
6124 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "functions", "ecere::sys::BinaryTree", 16, 4, 1);
6125 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(1, "ecere::com::DataValue", 0, sizeof(struct __ecereNameSpace__ecere__com__DataValue), 0, 0, 0, module, 4, 1);
6126 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6127 __ecereClass___ecereNameSpace__ecere__com__DataValue = class;
6129 struct __ecereNameSpace__ecere__com__DataMember * dataMember0 = __ecereNameSpace__ecere__com__eMember_New(1, 1);
6131 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember0, "c", "char", 1, 1, 1);
6132 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember0, "uc", "byte", 1, 1, 1);
6133 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember0, "s", "short", 2, 2, 1);
6134 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember0, "us", "uint16", 2, 2, 1);
6135 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember0, "i", "int", 4, 4, 1);
6136 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember0, "ui", "uint", 4, 4, 1);
6137 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember0, "p", "void *", 4, 4, 1);
6138 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember0, "f", "float", 4, 4, 1);
6139 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember0, "d", "double", 8, 8, 1);
6140 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember0, "i64", "int64", 8, 8, 1);
6141 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember0, "ui64", "uint64", 8, 8, 1);
6142 __ecereNameSpace__ecere__com__eClass_AddMember(class, dataMember0);
6144 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::DataMember", 0, sizeof(struct __ecereNameSpace__ecere__com__DataMember), 0, 0, 0, module, 4, 1);
6145 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6146 __ecereClass___ecereNameSpace__ecere__com__DataMember = class;
6147 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "prev", "ecere::com::DataMember", 4, 4, 1);
6148 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "next", "ecere::com::DataMember", 4, 4, 1);
6149 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "name", "char *", 4, 4, 1);
6150 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "isProperty", "bool", 4, 4, 1);
6151 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "memberAccess", "ecere::com::AccessMode", 4, 4, 1);
6152 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "id", "int", 4, 4, 1);
6153 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "_class", "ecere::com::Class", 4, 4, 1);
6154 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataTypeString", "char *", 4, 4, 1);
6155 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataTypeClass", "ecere::com::Class", 4, 4, 1);
6156 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataType", "Type", 4, 4, 1);
6157 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "type", "ecere::com::DataMemberType", 4, 4, 1);
6158 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "offset", "int", 4, 4, 1);
6159 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "memberID", "int", 4, 4, 1);
6160 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "members", "ecere::sys::OldList", 20, 4, 1);
6161 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "membersAlpha", "ecere::sys::BinaryTree", 16, 4, 1);
6162 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "memberOffset", "int", 4, 4, 1);
6163 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "structAlignment", "int", 4, 4, 1);
6165 class->fixed = (unsigned int)1;
6166 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::BitMember", 0, sizeof(struct __ecereNameSpace__ecere__com__BitMember), 0, 0, 0, module, 4, 1);
6167 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6168 __ecereClass___ecereNameSpace__ecere__com__BitMember = class;
6169 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "prev", "ecere::com::BitMember", 4, 4, 1);
6170 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "next", "ecere::com::BitMember", 4, 4, 1);
6171 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "name", "char *", 4, 4, 1);
6172 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "isProperty", "bool", 4, 4, 1);
6173 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "memberAccess", "ecere::com::AccessMode", 4, 4, 1);
6174 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "id", "int", 4, 4, 1);
6175 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "_class", "ecere::com::Class", 4, 4, 1);
6176 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataTypeString", "char *", 4, 4, 1);
6177 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataTypeClass", "ecere::com::Class", 4, 4, 1);
6178 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataType", "Type", 4, 4, 1);
6179 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "type", "ecere::com::DataMemberType", 4, 4, 1);
6180 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "size", "int", 4, 4, 1);
6181 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "pos", "int", 4, 4, 1);
6182 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "mask", "uint64", 8, 8, 1);
6184 class->fixed = (unsigned int)1;
6185 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::ClassProperty", 0, sizeof(struct __ecereNameSpace__ecere__com__ClassProperty), 0, 0, 0, module, 4, 1);
6186 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6187 __ecereClass___ecereNameSpace__ecere__com__ClassProperty = class;
6188 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "name", "char *", 4, 4, 1);
6189 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "parent", "ecere::com::ClassProperty", 4, 4, 1);
6190 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "left", "ecere::com::ClassProperty", 4, 4, 1);
6191 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "right", "ecere::com::ClassProperty", 4, 4, 1);
6192 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "depth", "int", 4, 4, 1);
6193 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "Set", "void( *)(ecere::com::Class, int)", 4, 4, 1);
6194 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "Get", "int( *)(ecere::com::Class)", 4, 4, 1);
6195 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataTypeString", "char *", 4, 4, 1);
6196 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataType", "Type", 4, 4, 1);
6197 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "constant", "bool", 4, 4, 1);
6199 class->fixed = (unsigned int)1;
6200 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::DefinedExpression", 0, sizeof(struct __ecereNameSpace__ecere__com__DefinedExpression), 0, 0, 0, module, 4, 1);
6201 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6202 __ecereClass___ecereNameSpace__ecere__com__DefinedExpression = class;
6203 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "prev", "ecere::com::DefinedExpression", 4, 4, 1);
6204 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "next", "ecere::com::DefinedExpression", 4, 4, 1);
6205 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "name", "char *", 4, 4, 1);
6206 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "value", "char *", 4, 4, 1);
6207 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "nameSpace", "ecere::com::NameSpace *", 4, 4, 1);
6209 class->fixed = (unsigned int)1;
6210 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::GlobalFunction", 0, sizeof(struct __ecereNameSpace__ecere__com__GlobalFunction), 0, 0, 0, module, 4, 1);
6211 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6212 __ecereClass___ecereNameSpace__ecere__com__GlobalFunction = class;
6213 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "prev", "ecere::com::GlobalFunction", 4, 4, 1);
6214 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "next", "ecere::com::GlobalFunction", 4, 4, 1);
6215 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "name", "char *", 4, 4, 1);
6216 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "function", "int( *)()", 4, 4, 1);
6217 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "module", "ecere::com::Module", 4, 4, 1);
6218 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "nameSpace", "ecere::com::NameSpace *", 4, 4, 1);
6219 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataTypeString", "char *", 4, 4, 1);
6220 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataType", "Type", 4, 4, 1);
6221 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "symbol", "void *", 4, 4, 1);
6223 class->fixed = (unsigned int)1;
6224 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::EnumClassData", 0, sizeof(struct __ecereNameSpace__ecere__com__EnumClassData), 0, 0, 0, module, 4, 1);
6225 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6226 __ecereClass___ecereNameSpace__ecere__com__EnumClassData = class;
6227 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "values", "ecere::sys::OldList", 20, 4, 1);
6228 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "largest", "int", 4, 4, 1);
6230 class->fixed = (unsigned int)1;
6231 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::Watcher", 0, sizeof(struct __ecereNameSpace__ecere__com__Watcher), 0, 0, 0, module, 2, 1);
6232 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6233 __ecereClass___ecereNameSpace__ecere__com__Watcher = class;
6235 class->fixed = (unsigned int)1;
6236 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::MemBlock", 0, sizeof(struct __ecereNameSpace__ecere__com__MemBlock), 0, 0, 0, module, 2, 1);
6237 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6238 __ecereClass___ecereNameSpace__ecere__com__MemBlock = class;
6239 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::MemPart", 0, sizeof(struct __ecereNameSpace__ecere__com__MemPart), 0, 0, 0, module, 2, 1);
6240 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6241 __ecereClass___ecereNameSpace__ecere__com__MemPart = class;
6242 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(1, "ecere::com::BlockPool", 0, sizeof(struct __ecereNameSpace__ecere__com__BlockPool), 0, 0, 0, module, 2, 1);
6243 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6244 __ecereClass___ecereNameSpace__ecere__com__BlockPool = class;
6245 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "Add", "ecere::com::MemBlock Add()", __ecereMethod___ecereNameSpace__ecere__com__BlockPool_Add, 1);
6246 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "Expand", "bool Expand(unsigned int numBlocks)", __ecereMethod___ecereNameSpace__ecere__com__BlockPool_Expand, 1);
6247 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "Remove", "void Remove(ecere::com::MemBlock block)", __ecereMethod___ecereNameSpace__ecere__com__BlockPool_Remove, 1);
6248 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "first", "ecere::com::MemBlock", 4, 4, 1);
6249 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "last", "ecere::com::MemBlock", 4, 4, 1);
6250 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "free", "ecere::com::MemBlock", 4, 4, 1);
6251 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "blockSize", "uint", 4, 4, 1);
6252 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "blockSpace", "uint", 4, 4, 1);
6253 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "numParts", "int", 4, 4, 1);
6254 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "numBlocks", "int", 4, 4, 1);
6255 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "totalSize", "uint", 4, 4, 1);
6256 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "usedSpace", "uint", 4, 4, 1);
6257 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::log2i", "uint ecere::com::log2i(uint number)", __ecereNameSpace__ecere__com__log2i, module, 4);
6258 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::pow2i", "uint ecere::com::pow2i(uint number)", __ecereNameSpace__ecere__com__pow2i, module, 4);
6259 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::memswap", "void ecere::com::memswap(byte * a, byte * b, uint size)", __ecereNameSpace__ecere__com__memswap, module, 4);
6260 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::CheckMemory", "void ecere::com::CheckMemory(void)", __ecereNameSpace__ecere__com__CheckMemory, module, 4);
6261 __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);
6262 __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);
6263 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::_strtoi64", "int64 ecere::com::_strtoi64(char * string, char * * endString, int base)", __ecereNameSpace__ecere__com___strtoi64, module, 4);
6264 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::_strtoui64", "uint64 ecere::com::_strtoui64(char * string, char * * endString, int base)", __ecereNameSpace__ecere__com___strtoui64, module, 4);
6265 __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);
6266 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::DefaultFunction", "bool ecere::com::DefaultFunction(void)", __ecereNameSpace__ecere__com__DefaultFunction, module, 2);
6267 __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);
6268 __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);
6269 __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);
6270 __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);
6271 __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);
6272 __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);
6273 __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);
6274 __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);
6275 __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);
6276 __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);
6277 __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);
6278 __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);
6279 __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);
6280 __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);
6281 __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);
6282 __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);
6283 __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);
6284 __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);
6285 __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);
6286 __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);
6287 __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);
6288 __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);
6289 __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);
6290 __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);
6291 __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);
6292 __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);
6293 __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);
6294 __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);
6295 __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);
6296 __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);
6297 __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);
6298 __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);
6299 __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);
6300 __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);
6301 __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);
6302 __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);
6303 __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);
6304 __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);
6305 __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);
6306 __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);
6307 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eSystem_New", "void * ecere::com::eSystem_New(uint size)", __ecereNameSpace__ecere__com__eSystem_New, module, 4);
6308 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eSystem_New0", "void * ecere::com::eSystem_New0(uint size)", __ecereNameSpace__ecere__com__eSystem_New0, module, 4);
6309 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eSystem_Delete", "void ecere::com::eSystem_Delete(void * memory)", __ecereNameSpace__ecere__com__eSystem_Delete, module, 4);
6310 __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);
6311 __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);
6312 __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);
6313 __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);
6314 __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);
6315 __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);
6316 __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);
6317 __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);
6318 __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);
6319 __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);
6320 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::LocateModule", "bool ecere::com::LocateModule(char * name, char * fileName)", __ecereNameSpace__ecere__com__LocateModule, module, 4);
6321 __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);
6322 __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);
6323 __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);
6324 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(4, "ecere::com::Platform", 0, 0, 0, 0, 0, module, 4, 1);
6325 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6326 __ecereClass___ecereNameSpace__ecere__com__Platform = class;
6327 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "OnGetString", 0, __ecereMethod___ecereNameSpace__ecere__com__Platform_OnGetString, 1);
6328 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "OnGetDataFromString", 0, __ecereMethod___ecereNameSpace__ecere__com__Platform_OnGetDataFromString, 1);
6329 __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);
6330 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "unknown", 0);
6331 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "win32", 1);
6332 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "tux", 2);
6333 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "apple", 3);
6334 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::GetRuntimePlatform", "ecere::com::Platform ecere::com::GetRuntimePlatform(void)", __ecereNameSpace__ecere__com__GetRuntimePlatform, module, 4);
6335 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::ObjectInfo", 0, sizeof(struct __ecereNameSpace__ecere__com__ObjectInfo), 0, 0, 0, module, 4, 1);
6336 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6337 __ecereClass___ecereNameSpace__ecere__com__ObjectInfo = class;
6338 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "prev", "ecere::com::ObjectInfo", 4, 4, 1);
6339 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "next", "ecere::com::ObjectInfo", 4, 4, 1);
6340 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "instance", "ecere::com::Instance", 4, 4, 1);
6341 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "name", "char *", 4, 4, 1);
6342 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "instCode", "Instantiation", 4, 4, 1);
6343 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "deleted", "bool", 4, 4, 1);
6344 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "oClass", "ecere::com::ObjectInfo", 4, 4, 1);
6345 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "instances", "ecere::sys::OldList", 20, 4, 1);
6346 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "classDefinition", "ClassDefinition", 4, 4, 1);
6347 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "modified", "bool", 4, 4, 1);
6348 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);
6349 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6350 __ecereClass___ecereNameSpace__ecere__com__DesignerBase = class;
6351 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "FindObject", "bool FindObject(ecere::com::Instance * instance, char * string)", 0, 1);
6352 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "RenameObject", "void RenameObject(ecere::com::ObjectInfo object, char * name)", 0, 1);
6353 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "SelectObjectFromDesigner", "void SelectObjectFromDesigner(ecere::com::ObjectInfo object)", 0, 1);
6354 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "CodeAddObject", "void CodeAddObject(ecere::com::Instance instance, ecere::com::ObjectInfo * object)", 0, 1);
6355 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "SheetAddObject", "void SheetAddObject(ecere::com::ObjectInfo object)", 0, 1);
6356 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "AddToolBoxClass", "void AddToolBoxClass(ecere::com::Class _class)", 0, 1);
6357 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "AddDefaultMethod", "void AddDefaultMethod(ecere::com::Instance instance, ecere::com::Instance classInstance)", 0, 1);
6358 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "DeleteObject", "void DeleteObject(ecere::com::ObjectInfo object)", 0, 1);
6359 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "ObjectContainsCode", "bool ObjectContainsCode(ecere::com::ObjectInfo object)", 0, 1);
6360 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "ModifyCode", "void ModifyCode(void)", 0, 1);
6361 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "UpdateProperties", "void UpdateProperties(void)", 0, 1);
6362 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "classDesigner", "ecere::com::ClassDesignerBase", 4, 4, 1);
6363 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "objectClass", "char *", 4, 4, 1);
6364 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "isDragging", "bool", 4, 4, 1);
6365 __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);
6366 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application)
6367 __ecereProp___ecereNameSpace__ecere__com__DesignerBase_classDesigner = __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_classDesigner, __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_classDesigner = (void *)0;
6368 __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);
6369 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application)
6370 __ecereProp___ecereNameSpace__ecere__com__DesignerBase_objectClass = __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_objectClass, __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_objectClass = (void *)0;
6371 __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);
6372 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application)
6373 __ecereProp___ecereNameSpace__ecere__com__DesignerBase_isDragging = __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_isDragging, __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_isDragging = (void *)0;
6374 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(0, "ecere::com::ClassDesignerBase", "ecere::gui::Window", 0, 0, 0, 0, module, 4, 1);
6375 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6376 __ecereClass___ecereNameSpace__ecere__com__ClassDesignerBase = class;
6377 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "Reset", "void Reset(void)", 0, 1);
6378 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "AddObject", "void AddObject(void)", 0, 1);
6379 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "SelectObject", "void SelectObject(ecere::com::ObjectInfo object, ecere::com::Instance control)", 0, 1);
6380 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "ListToolBoxClasses", "void ListToolBoxClasses(ecere::com::DesignerBase designer)", 0, 1);
6381 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "PrepareTestObject", "void ::PrepareTestObject(ecere::com::DesignerBase designer, ecere::com::Instance test)", 0, 1);
6382 __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);
6383 __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);
6384 __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);
6385 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "DestroyObject", "void ::DestroyObject(ecere::com::Instance object)", 0, 1);
6386 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "FixProperty", "void ::FixProperty(ecere::com::Property prop, ecere::com::Instance object)", 0, 1);
6387 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "CreateNew", "void ::CreateNew(EditBox editBox, Size clientSize, char * name, char * inherit)", 0, 1);
6388 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::SetActiveDesigner", "void ecere::com::SetActiveDesigner(ecere::com::DesignerBase designer)", __ecereNameSpace__ecere__com__SetActiveDesigner, module, 4);
6389 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::GetActiveDesigner", "ecere::com::DesignerBase ecere::com::GetActiveDesigner(void)", __ecereNameSpace__ecere__com__GetActiveDesigner, module, 4);
6390 __ecereNameSpace__ecere__com__eSystem_RegisterDefine("ecere::sys::LEAD_OFFSET", "0xD800 - (0x10000 >> 10)", module, 2);
6391 __ecereNameSpace__ecere__com__eSystem_RegisterDefine("ecere::sys::SURROGATE_OFFSET", "0x10000 - (0xD800 << 10) - 0xDC00", module, 2);
6392 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::UTF8Validate", "bool ecere::sys::UTF8Validate(char * source)", __ecereNameSpace__ecere__sys__UTF8Validate, module, 4);
6393 __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);
6394 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::UTF16toUTF8", "char * ecere::sys::UTF16toUTF8(uint16 * source)", __ecereNameSpace__ecere__sys__UTF16toUTF8, module, 4);
6395 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::UTF16toUTF8Buffer", "int ecere::sys::UTF16toUTF8Buffer(uint16 * source, byte * dest, int max)", __ecereNameSpace__ecere__sys__UTF16toUTF8Buffer, module, 4);
6396 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::UTF8GetChar", "ecere::com::unichar ecere::sys::UTF8GetChar(char * string, int * numBytes)", __ecereNameSpace__ecere__sys__UTF8GetChar, module, 4);
6397 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::UTF8toUTF16Buffer", "int ecere::sys::UTF8toUTF16Buffer(char * source, uint16 * dest, int max)", __ecereNameSpace__ecere__sys__UTF8toUTF16Buffer, module, 4);
6398 __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);
6399 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::UTF8toUTF16", "uint16 * ecere::sys::UTF8toUTF16(char * source, int * wordCount)", __ecereNameSpace__ecere__sys__UTF8toUTF16, module, 4);
6402 void __ecereUnregisterModule_instance(struct __ecereNameSpace__ecere__com__Instance * module)
6405 __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_classDesigner = (void *)0;
6406 __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_objectClass = (void *)0;
6407 __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_isDragging = (void *)0;