2 typedef long long int64;
3 typedef unsigned long long uint64;
5 #define stdcall __attribute__((__stdcall__))
10 #elif defined(__TINYC__)
12 #define __builtin_va_list va_list
13 #define __builtin_va_start va_start
14 #define __builtin_va_end va_end
16 #define strcasecmp stricmp
17 #define strncasecmp strnicmp
18 #define __declspec(x) __attribute__((x))
19 #define stdcall __attribute__((__stdcall__))
24 typedef long long int64;
25 typedef unsigned long long uint64;
27 typedef __int64 int64;
28 typedef unsigned __int64 uint64;
31 #define __ENDIAN_PAD(x) (8 - (x))
33 #define __ENDIAN_PAD(x) 0
37 typedef unsigned long long int uintptr_t;
38 typedef long long int intptr_t;
40 typedef unsigned int uintptr_t;
46 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__BTNode;
48 struct __ecereNameSpace__ecere__sys__BTNode;
50 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__BinaryTree;
52 struct __ecereNameSpace__ecere__sys__BinaryTree
54 struct __ecereNameSpace__ecere__sys__BTNode * root;
56 int (* CompareKey)(struct __ecereNameSpace__ecere__sys__BinaryTree * tree, uintptr_t a, uintptr_t b);
57 void (* FreeKey)(void * key);
58 } __attribute__ ((gcc_struct));
60 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__OldList;
62 struct __ecereNameSpace__ecere__sys__OldList
69 } __attribute__ ((gcc_struct));
71 struct __ecereNameSpace__ecere__com__Class
73 struct __ecereNameSpace__ecere__com__Class * prev, * next;
75 int offset, structSize;
78 int (* Constructor)(struct __ecereNameSpace__ecere__com__Instance *);
79 void (* Destructor)(struct __ecereNameSpace__ecere__com__Instance *);
80 int offsetClass, sizeClass;
81 struct __ecereNameSpace__ecere__com__Class * base;
82 struct __ecereNameSpace__ecere__sys__BinaryTree methods;
83 struct __ecereNameSpace__ecere__sys__BinaryTree members;
84 struct __ecereNameSpace__ecere__sys__BinaryTree prop;
85 struct __ecereNameSpace__ecere__sys__OldList membersAndProperties;
86 struct __ecereNameSpace__ecere__sys__BinaryTree classProperties;
87 struct __ecereNameSpace__ecere__sys__OldList derivatives;
88 int memberID, startMemberID;
90 struct __ecereNameSpace__ecere__com__Instance * module;
91 struct __ecereNameSpace__ecere__com__NameSpace * nameSpace;
92 char * dataTypeString;
93 struct __ecereNameSpace__ecere__com__Instance * dataType;
96 void (* Initialize)();
98 struct __ecereNameSpace__ecere__sys__OldList selfWatchers;
100 unsigned int noExpansion;
101 char * defaultProperty;
102 unsigned int comRedefinition;
104 unsigned int isRemote;
105 unsigned int internalDecl;
107 unsigned int computeSize;
109 int destructionWatchOffset;
111 struct __ecereNameSpace__ecere__sys__OldList delayedCPValues;
112 int inheritanceAccess;
115 struct __ecereNameSpace__ecere__sys__OldList conversions;
116 struct __ecereNameSpace__ecere__sys__OldList templateParams;
117 struct __ecereNameSpace__ecere__com__ClassTemplateArgument * templateArgs;
118 struct __ecereNameSpace__ecere__com__Class * templateClass;
119 struct __ecereNameSpace__ecere__sys__OldList templatized;
121 } __attribute__ ((gcc_struct));
123 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Class;
125 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Instance;
127 struct __ecereNameSpace__ecere__com__Instance
130 struct __ecereNameSpace__ecere__com__Class * _class;
132 } __attribute__ ((gcc_struct));
134 struct __ecereNameSpace__ecere__com__Property
136 struct __ecereNameSpace__ecere__com__Property * prev, * next;
138 unsigned int isProperty;
141 struct __ecereNameSpace__ecere__com__Class * _class;
142 char * dataTypeString;
143 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
144 struct __ecereNameSpace__ecere__com__Instance * dataType;
147 unsigned int (* IsSet)();
151 unsigned int conversion;
152 unsigned int watcherOffset;
154 unsigned int compiled;
155 unsigned int selfWatchable, isWatchable;
156 } __attribute__ ((gcc_struct));
158 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Property;
160 struct __ecereNameSpace__ecere__com__DataMember
162 struct __ecereNameSpace__ecere__com__DataMember * prev, * next;
164 unsigned int isProperty;
167 struct __ecereNameSpace__ecere__com__Class * _class;
168 char * dataTypeString;
169 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
170 struct __ecereNameSpace__ecere__com__Instance * dataType;
174 struct __ecereNameSpace__ecere__sys__OldList members;
175 struct __ecereNameSpace__ecere__sys__BinaryTree membersAlpha;
178 } __attribute__ ((gcc_struct));
180 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__DataMember;
182 struct __ecereNameSpace__ecere__com__Method
185 struct __ecereNameSpace__ecere__com__Method * parent, * left, * right;
190 struct __ecereNameSpace__ecere__com__Class * _class;
192 char * dataTypeString;
193 struct __ecereNameSpace__ecere__com__Instance * dataType;
195 } __attribute__ ((gcc_struct));
197 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Method;
199 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__SerialBuffer;
201 struct __ecereNameSpace__ecere__com__SerialBuffer
203 unsigned char * _buffer;
207 } __attribute__ ((gcc_struct));
209 struct __ecereNameSpace__ecere__com__DataValue
224 } __attribute__ ((gcc_struct));
225 } __attribute__ ((gcc_struct));
227 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__DataValue;
229 struct __ecereNameSpace__ecere__com__ClassTemplateArgument
235 char * dataTypeString;
236 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
237 } __attribute__ ((gcc_struct));
238 struct __ecereNameSpace__ecere__com__DataValue expression;
244 struct __ecereNameSpace__ecere__com__DataMember * member;
245 struct __ecereNameSpace__ecere__com__Property * prop;
246 struct __ecereNameSpace__ecere__com__Method * method;
247 } __attribute__ ((gcc_struct));
248 } __attribute__ ((gcc_struct));
249 } __attribute__ ((gcc_struct));
250 } __attribute__ ((gcc_struct));
252 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__ClassTemplateArgument;
254 typedef unsigned int size_t;
256 void exit(int status);
258 void * calloc(size_t nmemb, size_t size);
260 void free(void * ptr);
262 void * malloc(size_t size);
264 void * realloc(void * ptr, size_t size);
266 long int strtol(const char * nptr, char ** endptr, int base);
268 long long int strtoll(const char * nptr, char ** endptr, int base);
270 unsigned long long int strtoull(const char * nptr, char ** endptr, int base);
272 typedef __builtin_va_list __gnuc_va_list;
274 typedef __gnuc_va_list va_list;
278 FILE * bsl_stdin(void);
280 FILE * bsl_stdout(void);
282 FILE * bsl_stderr(void);
284 char * fgets(char * s, int size, FILE * stream);
286 FILE * fopen(const char * path, const char * mode);
288 int fclose(FILE * fp);
290 int fflush(FILE * stream);
292 int fgetc(FILE * stream);
294 int fprintf(FILE * stream, const char * format, ...);
296 int fputc(int c, FILE * stream);
298 size_t fread(void * ptr, size_t size, size_t nmemb, FILE * stream);
300 size_t fwrite(const void * ptr, size_t size, size_t nmemb, FILE * stream);
302 int vsnprintf(char *, size_t, const char *, ...);
304 int snprintf(char * str, size_t, const char * format, ...);
306 int fseek(FILE * stream, long offset, int whence);
308 long ftell(FILE * stream);
310 int feof(FILE * stream);
312 int ferror(FILE * stream);
314 int fileno(FILE * stream);
317 struct __ecereNameSpace__ecere__com__Class * __ecereNameSpace__ecere__com__eSystem_FindClass(struct __ecereNameSpace__ecere__com__Instance * module, char * name);
319 void * __ecereNameSpace__ecere__com__eSystem_Renew(void * memory, unsigned int size);
321 void * __ecereNameSpace__ecere__com__eSystem_Renew0(void * memory, unsigned int size);
323 void * __ecereNameSpace__ecere__com__eSystem_New(unsigned int size);
325 void * __ecereNameSpace__ecere__com__eSystem_New0(unsigned int size);
327 void __ecereNameSpace__ecere__com__eSystem_Delete(void * memory);
329 void * __ecereNameSpace__ecere__com__eInstance_New(struct __ecereNameSpace__ecere__com__Class * _class);
331 extern int __ecereVMethodID_class_OnGetDataFromString;
333 unsigned int Instance_LocateModule(char * name, char * fileName);
335 void Instance_COM_Initialize(int argc, char ** argv, char ** parsedCommand, int * argcPtr, char *** argvPtr);
337 void * Instance_Module_Load(char * name, void ** Load, void ** Unload);
339 void Instance_Module_Free(void * library);
341 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__unichar;
343 int __ecereNameSpace__ecere__sys__UTF32toUTF8Len(unsigned int * source, int count, unsigned char * dest, int max);
345 char * __ecereMethod___ecereNameSpace__ecere__com__unichar_OnGetString(struct __ecereNameSpace__ecere__com__Class * class, unsigned int * this, char * tempString, void * fieldData, unsigned int * needClass)
347 __ecereNameSpace__ecere__sys__UTF32toUTF8Len(&(*(this)), 1, tempString, 5);
351 unsigned int __ecereNameSpace__ecere__sys__UTF8GetChar(char * string, int * numBytes);
353 unsigned int __ecereMethod___ecereNameSpace__ecere__com__unichar_OnGetDataFromString(struct __ecereNameSpace__ecere__com__Class * class, unsigned int * this, char * string)
357 (*(this)) = __ecereNameSpace__ecere__sys__UTF8GetChar(string, &nb);
361 void __ecereNameSpace__ecere__com__eInstance_FireWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property);
363 void __ecereNameSpace__ecere__com__MemoryGuard_PushLoc(char * loc)
367 void __ecereNameSpace__ecere__com__MemoryGuard_PopLoc()
371 extern unsigned int __ecereDll_Load_ecere(struct __ecereNameSpace__ecere__com__Instance * module);
373 extern unsigned int __ecereDll_Unload_ecere(struct __ecereNameSpace__ecere__com__Instance * module);
375 struct __ecereNameSpace__ecere__com__BTNamedLink
378 struct __ecereNameSpace__ecere__com__BTNamedLink * parent, * left, * right;
381 } __attribute__ ((gcc_struct));
383 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__BTNamedLink;
385 struct __ecereNameSpace__ecere__com__SelfWatcher
387 struct __ecereNameSpace__ecere__com__SelfWatcher * prev, * next;
388 void (* callback)(struct __ecereNameSpace__ecere__com__Instance *);
389 struct __ecereNameSpace__ecere__com__Property * _property;
390 } __attribute__ ((gcc_struct));
392 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__SelfWatcher;
394 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__AccessMode;
396 struct __ecereNameSpace__ecere__com__SubModule
398 struct __ecereNameSpace__ecere__com__SubModule * prev, * next;
399 struct __ecereNameSpace__ecere__com__Instance * module;
401 } __attribute__ ((gcc_struct));
403 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__SubModule;
405 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__DataMemberType;
407 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__ClassType;
409 static struct __ecereNameSpace__ecere__com__Property * __ecereProp___ecereNameSpace__ecere__com__Class_char__PTR_, * __ecerePropM___ecereNameSpace__ecere__com__Class_char__PTR_;
411 char * __ecereProp___ecereNameSpace__ecere__com__Class_Get_char__PTR_(struct __ecereNameSpace__ecere__com__Class * this)
416 extern struct __ecereNameSpace__ecere__com__Instance * __thisModule;
418 struct __ecereNameSpace__ecere__com__Class * __ecereProp___ecereNameSpace__ecere__com__Class_Set_char__PTR_(char * value)
420 struct __ecereNameSpace__ecere__com__Class * theClass = __ecereNameSpace__ecere__com__eSystem_FindClass(__thisModule, value);
425 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)
430 struct __ecereNameSpace__ecere__com__NameSpace
433 struct __ecereNameSpace__ecere__com__NameSpace * btParent, * left, * right;
435 struct __ecereNameSpace__ecere__com__NameSpace * parent;
436 struct __ecereNameSpace__ecere__sys__BinaryTree nameSpaces;
437 struct __ecereNameSpace__ecere__sys__BinaryTree classes;
438 struct __ecereNameSpace__ecere__sys__BinaryTree defines;
439 struct __ecereNameSpace__ecere__sys__BinaryTree functions;
440 } __attribute__ ((gcc_struct));
442 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__NameSpace;
444 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Module;
446 struct __ecereNameSpace__ecere__com__Module
448 struct __ecereNameSpace__ecere__com__Instance * application;
449 struct __ecereNameSpace__ecere__sys__OldList classes;
450 struct __ecereNameSpace__ecere__sys__OldList defines;
451 struct __ecereNameSpace__ecere__sys__OldList functions;
452 struct __ecereNameSpace__ecere__sys__OldList modules;
453 struct __ecereNameSpace__ecere__com__Instance * prev;
454 struct __ecereNameSpace__ecere__com__Instance * next;
460 struct __ecereNameSpace__ecere__com__NameSpace privateNameSpace;
461 struct __ecereNameSpace__ecere__com__NameSpace publicNameSpace;
462 } __attribute__ ((gcc_struct));
464 unsigned int __ecereMethod___ecereNameSpace__ecere__com__Class_OnGetDataFromString(struct __ecereNameSpace__ecere__com__Class * class, struct __ecereNameSpace__ecere__com__Class ** this, char * string)
466 struct __ecereNameSpace__ecere__com__Class * theClass;
468 theClass = __ecereNameSpace__ecere__com__eSystem_FindClass(__thisModule, string);
470 theClass = __ecereNameSpace__ecere__com__eSystem_FindClass(((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application, string);
471 (*(this)) = (void *)theClass;
472 return theClass != (((void *)0));
475 void __ecereMethod___ecereNameSpace__ecere__com__IOChannel_Serialize(struct __ecereNameSpace__ecere__com__Instance * this, struct __ecereNameSpace__ecere__com__Class * class, void * data);
477 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_char__PTR_;
479 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)
481 __ecereMethod___ecereNameSpace__ecere__com__IOChannel_Serialize(channel, __ecereClass_char__PTR_, this->fullName);
484 void __ecereMethod___ecereNameSpace__ecere__com__Class_OnFree(struct __ecereNameSpace__ecere__com__Class * class, struct __ecereNameSpace__ecere__com__Class * this)
488 void __ecereMethod___ecereNameSpace__ecere__com__IOChannel_Unserialize(struct __ecereNameSpace__ecere__com__Instance * this, struct __ecereNameSpace__ecere__com__Class * class, void * * data);
490 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_String;
492 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)
494 struct __ecereNameSpace__ecere__com__Class * theClass;
497 __ecereMethod___ecereNameSpace__ecere__com__IOChannel_Unserialize(channel, __ecereClass_String, &string);
498 theClass = __ecereNameSpace__ecere__com__eSystem_FindClass(__thisModule, string);
500 theClass = __ecereNameSpace__ecere__com__eSystem_FindClass(((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application, string);
501 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
502 (*(this)) = (void *)theClass;
505 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__TemplateParameterType;
507 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__TemplateMemberType;
509 struct __ecereNameSpace__ecere__com__ClassTemplateParameter
511 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * prev, * next;
516 char * dataTypeString;
518 } __attribute__ ((gcc_struct));
519 struct __ecereNameSpace__ecere__com__ClassTemplateArgument defaultArg;
521 } __attribute__ ((gcc_struct));
523 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__ClassTemplateParameter;
525 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__MethodType;
527 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__ImportType;
529 struct __ecereNameSpace__ecere__com__BitMember
531 struct __ecereNameSpace__ecere__com__BitMember * prev, * next;
533 unsigned int isProperty;
536 struct __ecereNameSpace__ecere__com__Class * _class;
537 char * dataTypeString;
538 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
539 struct __ecereNameSpace__ecere__com__Instance * dataType;
544 } __attribute__ ((gcc_struct));
546 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__BitMember;
548 struct __ecereNameSpace__ecere__com__ClassProperty
551 struct __ecereNameSpace__ecere__com__ClassProperty * parent, * left, * right;
553 void (* Set)(struct __ecereNameSpace__ecere__com__Class *, long long);
554 long long (* Get)(struct __ecereNameSpace__ecere__com__Class *);
555 char * dataTypeString;
556 struct __ecereNameSpace__ecere__com__Instance * dataType;
557 unsigned int constant;
558 } __attribute__ ((gcc_struct));
560 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__ClassProperty;
562 struct __ecereNameSpace__ecere__com__DefinedExpression
564 struct __ecereNameSpace__ecere__com__DefinedExpression * prev, * next;
567 struct __ecereNameSpace__ecere__com__NameSpace * nameSpace;
568 } __attribute__ ((gcc_struct));
570 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__DefinedExpression;
572 struct __ecereNameSpace__ecere__com__GlobalFunction
574 struct __ecereNameSpace__ecere__com__GlobalFunction * prev, * next;
577 struct __ecereNameSpace__ecere__com__Instance * module;
578 struct __ecereNameSpace__ecere__com__NameSpace * nameSpace;
579 char * dataTypeString;
580 struct __ecereNameSpace__ecere__com__Instance * dataType;
582 } __attribute__ ((gcc_struct));
584 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__GlobalFunction;
586 struct __ecereNameSpace__ecere__com__EnumClassData
588 struct __ecereNameSpace__ecere__sys__OldList values;
590 } __attribute__ ((gcc_struct));
592 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__EnumClassData;
594 struct __ecereNameSpace__ecere__com__Watcher
596 struct __ecereNameSpace__ecere__com__Watcher * prev, * next;
597 void (* callback)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__Instance *);
598 struct __ecereNameSpace__ecere__com__Instance * object;
599 } __attribute__ ((gcc_struct));
601 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Watcher;
603 static unsigned int __ecereNameSpace__ecere__com__TOTAL_MEM = 0;
605 static unsigned int __ecereNameSpace__ecere__com__OUTSIDE_MEM = 0;
607 struct __ecereNameSpace__ecere__com__MemBlock
609 struct __ecereNameSpace__ecere__com__MemBlock * prev, * next;
610 struct __ecereNameSpace__ecere__com__MemPart * part;
612 } __attribute__ ((gcc_struct));
614 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__MemBlock;
616 struct __ecereNameSpace__ecere__com__MemPart
621 struct __ecereNameSpace__ecere__com__BlockPool * pool;
622 } __attribute__ ((gcc_struct));
624 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__MemPart;
626 static int __ecereNameSpace__ecere__com__power15[] =
628 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
631 struct __ecereNameSpace__ecere__com__BlockPool
633 struct __ecereNameSpace__ecere__com__MemBlock * first, * last;
634 struct __ecereNameSpace__ecere__com__MemBlock * free;
635 unsigned int blockSize;
636 unsigned int blockSpace;
639 unsigned int totalSize;
640 unsigned int usedSpace;
641 } __attribute__ ((gcc_struct));
643 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__BlockPool;
645 unsigned int __ecereMethod___ecereNameSpace__ecere__com__BlockPool_Expand(struct __ecereNameSpace__ecere__com__BlockPool * this, unsigned int numBlocks)
647 unsigned char * memory = malloc(numBlocks * this->blockSpace);
649 __ecereNameSpace__ecere__com__TOTAL_MEM += numBlocks * this->blockSpace;
653 struct __ecereNameSpace__ecere__com__MemBlock * block = (struct __ecereNameSpace__ecere__com__MemBlock *)memory;
654 struct __ecereNameSpace__ecere__com__MemPart * part = calloc(1, sizeof(struct __ecereNameSpace__ecere__com__MemPart));
656 __ecereNameSpace__ecere__com__TOTAL_MEM += sizeof(struct __ecereNameSpace__ecere__com__MemPart);
658 for(c = 0; c < numBlocks - 1; c++)
661 block->prev = (((void *)0));
662 block->next = (struct __ecereNameSpace__ecere__com__MemBlock *)((unsigned char *)block + this->blockSpace);
665 part->blocksUsed = 0;
667 part->memory = memory;
668 part->size = numBlocks;
670 block->prev = (((void *)0));
671 block->next = (((void *)0));
672 this->totalSize += numBlocks;
679 struct __ecereNameSpace__ecere__com__MemBlock * __ecereMethod___ecereNameSpace__ecere__com__BlockPool_Add(struct __ecereNameSpace__ecere__com__BlockPool * this)
682 struct __ecereNameSpace__ecere__com__MemBlock * block = (((void *)0));
685 __ecereMethod___ecereNameSpace__ecere__com__BlockPool_Expand(this, (__simpleStruct0 = this->numBlocks / 2, (1 > __simpleStruct0) ? 1 : __simpleStruct0));
689 block->prev = this->last;
691 block->prev->next = block;
695 this->free = block->next;
696 block->next = (((void *)0));
697 block->part->blocksUsed++;
703 void __ecereMethod___ecereNameSpace__ecere__com__BlockPool_Remove(struct __ecereNameSpace__ecere__com__BlockPool * this, struct __ecereNameSpace__ecere__com__MemBlock * block)
706 block->prev->next = block->next;
708 block->next->prev = block->prev;
709 if(this->first == block)
710 this->first = block->next;
711 if(this->last == block)
712 this->last = block->prev;
713 block->next = this->free;
715 block->part->blocksUsed--;
717 (*block->part->pool).usedSpace -= block->size;
718 if(!block->part->blocksUsed && this->numBlocks && this->totalSize > this->numBlocks + this->numBlocks / 2)
720 struct __ecereNameSpace__ecere__com__MemBlock * next = this->free, * prev = (((void *)0));
721 struct __ecereNameSpace__ecere__com__MemPart * part = block->part;
723 this->free = (((void *)0));
724 this->totalSize -= part->size;
727 if(next->part != part)
739 prev->next = (((void *)0));
740 __ecereNameSpace__ecere__com__TOTAL_MEM -= part->size * this->blockSpace;
741 __ecereNameSpace__ecere__com__TOTAL_MEM -= sizeof(struct __ecereNameSpace__ecere__com__MemPart);
748 static struct __ecereNameSpace__ecere__com__BlockPool * __ecereNameSpace__ecere__com__pools;
750 static unsigned int __ecereNameSpace__ecere__com__PosFibonacci(unsigned int number)
753 unsigned int last = 1, prev = 0;
754 unsigned int current = 1;
756 for(pos = 0; ; pos++)
761 if(current >= number)
767 static unsigned int __ecereNameSpace__ecere__com__NthFibonacci(unsigned int number)
770 unsigned int last = 1, prev = 0;
771 unsigned int current = 1;
773 for(pos = 0; pos <= number; pos++)
782 static unsigned int __ecereNameSpace__ecere__com__NextFibonacci(unsigned int number)
785 unsigned int last = 1, prev = 0;
786 unsigned int current = 1;
788 for(pos = 0; ; pos++)
793 if(current >= number)
798 static unsigned int __ecereNameSpace__ecere__com__log1_5i(unsigned int number)
801 uint64 current = sizeof(void *);
803 for(pos = 0; pos < 31; pos++)
805 if(current >= number)
807 current = current * 3 / 2;
814 static unsigned int __ecereNameSpace__ecere__com__pow1_5(unsigned int number)
817 uint64 current = sizeof(void *);
819 for(pos = 0; pos < number; pos++)
821 current = current * 3 / 2;
825 return (unsigned int)current;
828 static unsigned int __ecereNameSpace__ecere__com__pow1_5i(unsigned int number)
831 uint64 current = sizeof(void *);
833 for(pos = 0; pos < 31; pos++)
835 if(current >= number)
836 return (unsigned int)current;
837 current = current * 3 / 2;
841 return (unsigned int)current;
844 unsigned int __ecereNameSpace__ecere__com__log2i(unsigned int number)
848 for(power = 0; power < 32; power++)
849 if((1L << power) >= number)
854 unsigned int __ecereNameSpace__ecere__com__pow2i(unsigned int number)
856 return 1 << __ecereNameSpace__ecere__com__log2i(number);
859 static unsigned int __ecereNameSpace__ecere__com__memoryInitialized = 0x0;
861 static void __ecereNameSpace__ecere__com__InitMemory()
865 __ecereNameSpace__ecere__com__memoryInitialized = 0x1;
866 __ecereNameSpace__ecere__com__pools = calloc(1, sizeof(struct __ecereNameSpace__ecere__com__BlockPool) * 31);
867 for(c = 0; c < 31; c++)
871 __ecereNameSpace__ecere__com__pools[c].blockSize = __ecereNameSpace__ecere__com__pow1_5(c);
872 if(__ecereNameSpace__ecere__com__pools[c].blockSize % sizeof(void *))
873 __ecereNameSpace__ecere__com__pools[c].blockSize += sizeof(void *) - (__ecereNameSpace__ecere__com__pools[c].blockSize % sizeof(void *));
874 __ecereNameSpace__ecere__com__pools[c].blockSpace = __ecereNameSpace__ecere__com__pools[c].blockSize;
875 __ecereNameSpace__ecere__com__pools[c].blockSpace += sizeof(struct __ecereNameSpace__ecere__com__MemBlock);
876 expansion = (__ecereNameSpace__ecere__com__pools[c].blockSize < 128) ? 1024 : (131072 / __ecereNameSpace__ecere__com__pools[c].blockSize);
878 __ecereMethod___ecereNameSpace__ecere__com__BlockPool_Expand(&__ecereNameSpace__ecere__com__pools[c], ((1 > expansion) ? 1 : expansion));
882 static void * __ecereNameSpace__ecere__com___mymalloc(unsigned int size)
884 struct __ecereNameSpace__ecere__com__MemBlock * block = (((void *)0));
888 unsigned int p = __ecereNameSpace__ecere__com__log1_5i(size);
890 if(!__ecereNameSpace__ecere__com__memoryInitialized)
891 __ecereNameSpace__ecere__com__InitMemory();
894 block = __ecereMethod___ecereNameSpace__ecere__com__BlockPool_Add(&__ecereNameSpace__ecere__com__pools[p]);
898 __ecereNameSpace__ecere__com__pools[p].usedSpace += size;
903 block = malloc(sizeof(struct __ecereNameSpace__ecere__com__MemBlock) + size);
906 __ecereNameSpace__ecere__com__TOTAL_MEM += sizeof(struct __ecereNameSpace__ecere__com__MemBlock) + size;
907 __ecereNameSpace__ecere__com__OUTSIDE_MEM += sizeof(struct __ecereNameSpace__ecere__com__MemBlock) + size;
908 block->part = (((void *)0));
912 return block ? ((struct __ecereNameSpace__ecere__com__MemBlock *)block + 1) : (((void *)0));
915 extern void memset(void * area, unsigned char value, unsigned int count);
917 static void * __ecereNameSpace__ecere__com___mycalloc(int n, unsigned int size)
919 void * pointer = __ecereNameSpace__ecere__com___mymalloc(size);
922 memset(pointer, (unsigned char)0, size);
926 static void __ecereNameSpace__ecere__com___myfree(void * pointer)
930 struct __ecereNameSpace__ecere__com__MemBlock * block = (struct __ecereNameSpace__ecere__com__MemBlock *)((unsigned char *)pointer - sizeof(struct __ecereNameSpace__ecere__com__MemBlock));
931 struct __ecereNameSpace__ecere__com__MemPart * part = block->part;
932 struct __ecereNameSpace__ecere__com__BlockPool * pool = part ? part->pool : (((void *)0));
935 __ecereMethod___ecereNameSpace__ecere__com__BlockPool_Remove((&*pool), block);
938 __ecereNameSpace__ecere__com__TOTAL_MEM -= sizeof(struct __ecereNameSpace__ecere__com__MemBlock) + block->size;
939 __ecereNameSpace__ecere__com__OUTSIDE_MEM -= sizeof(struct __ecereNameSpace__ecere__com__MemBlock) + block->size;
945 extern void * memcpy(void * , const void * , unsigned int size);
947 static void * __ecereNameSpace__ecere__com___myrealloc(void * pointer, unsigned int size)
949 struct __ecereNameSpace__ecere__com__MemBlock * block = pointer ? ((struct __ecereNameSpace__ecere__com__MemBlock *)((unsigned char *)pointer - sizeof(struct __ecereNameSpace__ecere__com__MemBlock))) : (((void *)0));
950 void * newPointer = (((void *)0));
951 struct __ecereNameSpace__ecere__com__MemPart * part = block ? block->part : (((void *)0));
952 struct __ecereNameSpace__ecere__com__BlockPool * pool = part ? part->pool : (((void *)0));
958 unsigned int ns = __ecereNameSpace__ecere__com__pow1_5i(size);
959 unsigned int mod = ns % sizeof(void *);
962 ns += sizeof(void *) - mod;
963 if(ns == (*pool).blockSize)
965 newPointer = pointer;
966 (*pool).usedSpace += size - block->size;
972 struct __ecereNameSpace__ecere__com__MemBlock * newBlock = realloc(block, sizeof(struct __ecereNameSpace__ecere__com__MemBlock) + size);
976 __ecereNameSpace__ecere__com__TOTAL_MEM += size - newBlock->size;
977 __ecereNameSpace__ecere__com__OUTSIDE_MEM += size - newBlock->size;
978 newPointer = ((struct __ecereNameSpace__ecere__com__MemBlock *)newBlock + 1);
984 newPointer = __ecereNameSpace__ecere__com___mymalloc(size);
985 if(pointer && newPointer)
987 unsigned int __simpleStruct0;
989 memcpy(newPointer, pointer, (__simpleStruct0 = block->size, (size < __simpleStruct0) ? size : __simpleStruct0));
990 __ecereNameSpace__ecere__com___myfree(pointer);
996 static void * __ecereNameSpace__ecere__com___mycrealloc(void * pointer, unsigned int size)
998 struct __ecereNameSpace__ecere__com__MemBlock * block = pointer ? ((struct __ecereNameSpace__ecere__com__MemBlock *)((unsigned char *)pointer - sizeof(struct __ecereNameSpace__ecere__com__MemBlock))) : (((void *)0));
999 void * newPointer = (((void *)0));
1000 struct __ecereNameSpace__ecere__com__MemPart * part = block ? block->part : (((void *)0));
1001 struct __ecereNameSpace__ecere__com__BlockPool * pool = part ? part->pool : (((void *)0));
1007 unsigned int ns = __ecereNameSpace__ecere__com__pow1_5i(size);
1008 unsigned int mod = ns % sizeof(void *);
1011 ns += sizeof(void *) - mod;
1012 if(ns == (*pool).blockSize)
1014 int extra = size - block->size;
1016 newPointer = pointer;
1017 (*pool).usedSpace += extra;
1019 memset((unsigned char *)pointer + block->size, (unsigned char)0, extra);
1025 struct __ecereNameSpace__ecere__com__MemBlock * newBlock = realloc(block, sizeof(struct __ecereNameSpace__ecere__com__MemBlock) + size);
1029 int extra = size - newBlock->size;
1031 __ecereNameSpace__ecere__com__TOTAL_MEM += extra;
1032 __ecereNameSpace__ecere__com__OUTSIDE_MEM += extra;
1033 newPointer = ((struct __ecereNameSpace__ecere__com__MemBlock *)newBlock + 1);
1035 memset((unsigned char *)newPointer + newBlock->size, (unsigned char)0, extra);
1036 newBlock->size = size;
1042 newPointer = __ecereNameSpace__ecere__com___mymalloc(size);
1047 unsigned int __simpleStruct0;
1049 memcpy(newPointer, pointer, (__simpleStruct0 = block->size, (size < __simpleStruct0) ? size : __simpleStruct0));
1050 if(size > block->size)
1051 memset((unsigned char *)newPointer + block->size, (unsigned char)0, size - block->size);
1052 __ecereNameSpace__ecere__com___myfree(pointer);
1055 memset((unsigned char *)newPointer, (unsigned char)0, size);
1061 static void * __ecereNameSpace__ecere__com___malloc(unsigned int size)
1065 pointer = __ecereNameSpace__ecere__com___mymalloc(size + 2 * 0);
1066 return (unsigned char *)pointer + 0;
1069 static void * __ecereNameSpace__ecere__com___calloc(int n, unsigned int size)
1073 pointer = __ecereNameSpace__ecere__com___mycalloc(n, size + 2 * 0);
1074 return (unsigned char *)pointer + 0;
1077 static void __ecereNameSpace__ecere__com___free(void * pointer);
1079 static void * __ecereNameSpace__ecere__com___realloc(void * pointer, unsigned int size)
1083 __ecereNameSpace__ecere__com___free(pointer);
1084 return (((void *)0));
1086 pointer = __ecereNameSpace__ecere__com___myrealloc(pointer, size);
1087 return (unsigned char *)pointer + 0;
1090 static void * __ecereNameSpace__ecere__com___crealloc(void * pointer, unsigned int size)
1093 return (((void *)0));
1094 pointer = __ecereNameSpace__ecere__com___mycrealloc(pointer, size);
1095 return (unsigned char *)pointer + 0;
1098 static void __ecereNameSpace__ecere__com___free(void * pointer)
1102 __ecereNameSpace__ecere__com___myfree(pointer);
1106 void __ecereNameSpace__ecere__com__memswap(unsigned char * a, unsigned char * b, unsigned int size)
1109 unsigned char buffer[1024];
1111 for(c = 0; c < size; )
1113 int s = sizeof buffer;
1117 memcpy(buffer, a + c, s);
1118 memcpy(a + c, b + c, s);
1119 memcpy(b + c, buffer, s);
1124 void __ecereNameSpace__ecere__com__CheckMemory()
1128 static void __ecereNameSpace__ecere__com__ComputeClassParameters(struct __ecereNameSpace__ecere__com__Class * templatedClass, char * templateParams, struct __ecereNameSpace__ecere__com__Instance * findModule);
1130 extern char * strchr(char * , int);
1132 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__OldLink;
1134 struct __ecereNameSpace__ecere__sys__OldLink
1136 struct __ecereNameSpace__ecere__sys__OldLink * prev;
1137 struct __ecereNameSpace__ecere__sys__OldLink * next;
1139 } __attribute__ ((gcc_struct));
1141 extern char * __ecereNameSpace__ecere__sys__CopyString(char * string);
1143 extern void * memmove(void * , const void * , unsigned int size);
1145 static void __ecereNameSpace__ecere__com__SetDelayedCPValues(struct __ecereNameSpace__ecere__com__Class * _class, struct __ecereNameSpace__ecere__com__ClassProperty * _property);
1147 struct __ecereNameSpace__ecere__sys__BTNode * __ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(struct __ecereNameSpace__ecere__sys__BinaryTree * this);
1149 extern struct __ecereNameSpace__ecere__com__Property ** __ecereProp___ecereNameSpace__ecere__sys__BinaryTree_first;
1151 struct __ecereNameSpace__ecere__sys__BTNode * __ecereProp___ecereNameSpace__ecere__sys__BTNode_Get_next(struct __ecereNameSpace__ecere__sys__BTNode * this);
1153 extern struct __ecereNameSpace__ecere__com__Property ** __ecereProp___ecereNameSpace__ecere__sys__BTNode_next;
1155 struct __ecereNameSpace__ecere__sys__BTNode * __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(struct __ecereNameSpace__ecere__sys__BinaryTree * this, char * key);
1157 void __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(struct __ecereNameSpace__ecere__sys__BinaryTree * this, struct __ecereNameSpace__ecere__sys__BTNode * node);
1159 void __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(struct __ecereNameSpace__ecere__sys__OldList * this, void * item);
1161 static void __ecereNameSpace__ecere__com__FixDerivativesBase(struct __ecereNameSpace__ecere__com__Class * base, struct __ecereNameSpace__ecere__com__Class * mod)
1163 struct __ecereNameSpace__ecere__sys__OldLink * derivative;
1164 struct __ecereNameSpace__ecere__sys__OldLink * templateLink;
1166 __ecereNameSpace__ecere__com__ComputeClassParameters(base, strchr(base->name, '<'), (((void *)0)));
1167 for(derivative = base->derivatives.first; derivative; derivative = derivative->next)
1169 struct __ecereNameSpace__ecere__com__Class * _class = derivative->data;
1170 int type = _class->type;
1171 int size = _class->structSize - _class->offset;
1172 int oldSizeClass = _class->sizeClass;
1173 int sizeClass = _class->sizeClass - _class->offsetClass;
1174 struct __ecereNameSpace__ecere__com__Class * enumBase = (((void *)0));
1175 char * dataTypeString = (((void *)0));
1176 struct __ecereNameSpace__ecere__com__Class * baseClass;
1177 unsigned int offsetBefore = _class->offset;
1178 int offsetClass, totalSizeClass;
1180 for(baseClass = base; baseClass->base; baseClass = baseClass->base)
1182 if(base && !base->internalDecl && (base->type == 5 || base->type == 1 || base->type == 0))
1184 if(base->type == 1 && type == 0)
1189 if(base && (_class->type == 0 || _class->type == 5 || _class->type == 1) && (base->type == 3 || base->type == 2 || base->type == 4))
1198 base = __ecereNameSpace__ecere__com__eSystem_FindClass(_class->module, "enum");
1201 dataTypeString = enumBase ? enumBase->dataTypeString : base->dataTypeString;
1202 offsetClass = base ? (base->templateClass ? base->templateClass->sizeClass : base->sizeClass) : (type == 5 ? 0 : 0);
1203 totalSizeClass = offsetClass + sizeClass;
1204 if(type == 0 || type == 5)
1205 _class->offset = (base && (base->templateClass ? base->templateClass->structSize : base->structSize) && base->type != 1000) ? (base->templateClass ? base->templateClass->structSize : base->structSize) : ((type == 5) ? 0 : 12);
1208 _class->memberOffset = (base && (base->templateClass ? base->templateClass->structSize : base->structSize) && base->type != 1000) ? (base->templateClass ? base->templateClass->structSize : base->structSize) : 0;
1209 _class->typeSize = _class->structSize = _class->memberOffset + size;
1211 else if(type == 2 || type == 4 || type == 3)
1213 struct __ecereNameSpace__ecere__com__Class * dataTypeClass = __ecereNameSpace__ecere__com__eSystem_FindClass(_class->module, dataTypeString);
1216 _class->typeSize = dataTypeClass->typeSize;
1217 _class->structSize = 0;
1219 else if(type == 0 || type == 5)
1221 _class->structSize = _class->offset + size;
1222 _class->typeSize = sizeof(void *);
1224 if(_class->type != 1000)
1225 _class->type = type;
1226 (__ecereNameSpace__ecere__com__eSystem_Delete(_class->dataTypeString), _class->dataTypeString = 0);
1227 _class->dataTypeString = __ecereNameSpace__ecere__sys__CopyString(dataTypeString);
1228 if(totalSizeClass != oldSizeClass)
1230 _class->data = __ecereNameSpace__ecere__com__eSystem_Renew(_class->data, sizeof(unsigned char) * (totalSizeClass));
1231 memmove((unsigned char *)_class->data + mod->offsetClass, (unsigned char *)_class->data, totalSizeClass - mod->sizeClass);
1232 if(base->type != 1000 && base->type != 4)
1233 memcpy((unsigned char *)_class->data, (unsigned char *)base->data, totalSizeClass - _class->sizeClass);
1235 memset((unsigned char *)_class->data, (unsigned char)0, totalSizeClass - _class->sizeClass);
1237 _class->offsetClass = offsetClass;
1238 _class->sizeClass = totalSizeClass;
1240 struct __ecereNameSpace__ecere__com__Method * method, * next;
1241 struct __ecereNameSpace__ecere__com__Class * b;
1242 unsigned int needUpdate = (mod != (base->templateClass ? base->templateClass : base) || _class->vTblSize != mod->vTblSize);
1243 int updateStart = -1, updateEnd = -1;
1245 if(mod->base && mod->base->base && mod->base->vTblSize > baseClass->vTblSize && needUpdate)
1247 _class->vTblSize += mod->base->vTblSize - baseClass->vTblSize;
1248 _class->_vTbl = __ecereNameSpace__ecere__com__eSystem_Renew(_class->_vTbl, sizeof(void *) * (_class->vTblSize));
1249 memmove(_class->_vTbl + mod->base->vTblSize, _class->_vTbl + baseClass->vTblSize, (_class->vTblSize - mod->vTblSize) * sizeof(void *));
1250 updateStart = baseClass->vTblSize;
1251 updateEnd = updateStart + mod->base->vTblSize - baseClass->vTblSize;
1252 for(method = (struct __ecereNameSpace__ecere__com__Method *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&_class->methods); method; method = next)
1254 next = (struct __ecereNameSpace__ecere__com__Method *)__ecereProp___ecereNameSpace__ecere__sys__BTNode_Get_next(((struct __ecereNameSpace__ecere__sys__BTNode *)method));
1255 if(method->type == 1)
1256 method->vid += mod->base->vTblSize - baseClass->vTblSize;
1259 for(b = mod->base; b && b != (((void *)0)); b = b->base)
1261 struct __ecereNameSpace__ecere__com__Method * vMethod;
1263 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)))
1265 if(vMethod->type == 1)
1267 method = (struct __ecereNameSpace__ecere__com__Method *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&_class->methods, vMethod->name);
1270 if(method->function)
1271 _class->_vTbl[vMethod->vid] = method->function;
1274 (__ecereNameSpace__ecere__com__eSystem_Delete(method->name), method->name = 0);
1275 (__ecereNameSpace__ecere__com__eSystem_Delete(method->dataTypeString), method->dataTypeString = 0);
1276 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&_class->methods, (struct __ecereNameSpace__ecere__sys__BTNode *)method);
1280 (__ecereNameSpace__ecere__com__eSystem_Delete(method->dataTypeString), method->dataTypeString = 0);
1281 method->type = vMethod->type;
1282 method->dataTypeString = __ecereNameSpace__ecere__sys__CopyString(vMethod->dataTypeString);
1283 method->_class = vMethod->_class;
1286 else if((vMethod->vid >= updateStart && vMethod->vid < updateEnd) || _class->_vTbl[vMethod->vid] == b->_vTbl[vMethod->vid])
1287 _class->_vTbl[vMethod->vid] = _class->base->_vTbl[vMethod->vid];
1292 if(type == 0 || type == 5 || type == 1)
1294 struct __ecereNameSpace__ecere__com__Property * prop;
1295 struct __ecereNameSpace__ecere__com__DataMember * member;
1296 struct __ecereNameSpace__ecere__com__Class * c;
1298 for(c = mod->base; c; c = c->base)
1300 struct __ecereNameSpace__ecere__com__Property * _property;
1302 for(_property = c->membersAndProperties.first; _property; _property = _property->next)
1304 if(_property->isProperty)
1306 struct __ecereNameSpace__ecere__com__BTNamedLink * link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&_class->prop, _property->name);
1311 if(!prop->Set && !prop->Get && prop->memberAccess == 4)
1313 struct __ecereNameSpace__ecere__com__SelfWatcher * watcher;
1315 for(watcher = _class->selfWatchers.first; watcher; watcher = watcher->next)
1317 if(watcher->_property == prop)
1318 watcher->_property = _property;
1320 _property->selfWatchable = 0x1;
1321 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&_class->prop, (struct __ecereNameSpace__ecere__sys__BTNode *)link);
1322 (__ecereNameSpace__ecere__com__eSystem_Delete(prop->name), prop->name = 0);
1323 (__ecereNameSpace__ecere__com__eSystem_Delete(prop->dataTypeString), prop->dataTypeString = 0);
1324 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&_class->membersAndProperties, prop);
1331 for(member = _class->membersAndProperties.first; member; member = member->next)
1333 int offsetDiff = _class->offset - offsetBefore;
1335 if(!member->isProperty && offsetDiff > 0)
1337 member->offset += offsetDiff;
1338 member->memberOffset += offsetDiff;
1340 member->id += mod->base->memberID;
1342 _class->memberID += mod->base->memberID;
1343 _class->startMemberID += mod->base->memberID;
1346 __ecereNameSpace__ecere__com__FixDerivativesBase(_class, mod);
1348 struct __ecereNameSpace__ecere__com__Class * c;
1350 for(c = mod->base; c; c = c->base)
1352 struct __ecereNameSpace__ecere__com__ClassProperty * _property;
1354 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)))
1356 __ecereNameSpace__ecere__com__SetDelayedCPValues(_class, _property);
1362 struct __ecereNameSpace__ecere__sys__OldLink * templateLink;
1364 for(templateLink = base->templatized.first; templateLink; templateLink = templateLink->next)
1366 struct __ecereNameSpace__ecere__com__Class * template = templateLink->data;
1367 char * templateParams = strchr(template->name, '<');
1369 template->base = base->base;
1370 template->_vTbl = base->_vTbl;
1371 template->data = base->data;
1372 template->offset = base->offset;
1373 template->offsetClass = base->offsetClass;
1374 template->sizeClass = base->sizeClass;
1375 template->structSize = base->structSize;
1376 template->vTblSize = base->vTblSize;
1377 __ecereNameSpace__ecere__com__FixDerivativesBase(template, mod);
1382 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Application;
1384 struct __ecereNameSpace__ecere__com__Application
1389 unsigned int isGUIApp;
1390 struct __ecereNameSpace__ecere__sys__OldList allModules;
1391 char * parsedCommand;
1392 struct __ecereNameSpace__ecere__com__NameSpace systemNameSpace;
1393 } __attribute__ ((gcc_struct));
1395 extern char * strncpy(char * , const char * , int n);
1397 extern int strcmp(const char * , const char * );
1399 static void __ecereNameSpace__ecere__com__FreeTemplatesDerivatives(struct __ecereNameSpace__ecere__com__Class * base);
1401 extern int printf(char * , ...);
1403 static void __ecereNameSpace__ecere__com__NameSpace_Free(struct __ecereNameSpace__ecere__com__NameSpace * parentNameSpace);
1405 static struct __ecereNameSpace__ecere__com__BTNamedLink * __ecereNameSpace__ecere__com__SearchNameSpace(struct __ecereNameSpace__ecere__com__NameSpace * nameSpace, char * name, void * listOffset);
1407 extern char * strcpy(char * , const char * );
1409 static void __ecereNameSpace__ecere__com__FreeTemplateArgs(struct __ecereNameSpace__ecere__com__Class * template);
1411 static void __ecereNameSpace__ecere__com__CopyTemplateArg(struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param, struct __ecereNameSpace__ecere__com__ClassTemplateArgument * arg);
1413 int __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString(struct __ecereNameSpace__ecere__sys__BinaryTree * this, char * a, char * b);
1415 unsigned int __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(struct __ecereNameSpace__ecere__sys__BinaryTree * this, struct __ecereNameSpace__ecere__sys__BTNode * node);
1417 void __ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove(struct __ecereNameSpace__ecere__sys__OldList * this, void * item);
1419 struct __ecereNameSpace__ecere__sys__OldLink * __ecereMethod___ecereNameSpace__ecere__sys__OldList_FindLink(struct __ecereNameSpace__ecere__sys__OldList * this, void * data);
1421 void __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(struct __ecereNameSpace__ecere__sys__OldList * this, void * item);
1423 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)
1425 void * __ecereTemp1;
1427 struct __ecereNameSpace__ecere__com__NameSpace * nameSpace = (((void *)0));
1428 unsigned int force64Bits = ((unsigned int)((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application + 300)))->isGUIApp & 2) ? 0x1 : 0x0;
1431 nameSpace = (declMode == 1) ? &((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->publicNameSpace : &((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->privateNameSpace;
1433 nameSpace = &((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application + 300)))->systemNameSpace;
1435 for(c = 0; name[c]; c++)
1437 if(name[c] == '.' || (name[c] == ':' && name[c + 1] == ':'))
1439 struct __ecereNameSpace__ecere__com__NameSpace * newSpace;
1440 char * spaceName = __ecereNameSpace__ecere__com___malloc(c - start + 1);
1442 strncpy(spaceName, name + start, c - start);
1443 spaceName[c - start] = '\0';
1444 newSpace = (struct __ecereNameSpace__ecere__com__NameSpace *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&(*nameSpace).nameSpaces, spaceName);
1447 newSpace = __ecereNameSpace__ecere__com__eSystem_New0(sizeof(struct __ecereNameSpace__ecere__com__NameSpace) * (1));
1448 (*newSpace).classes.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
1449 (*newSpace).defines.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
1450 (*newSpace).functions.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
1451 (*newSpace).nameSpaces.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
1452 (*newSpace).name = spaceName;
1453 (*newSpace).parent = nameSpace;
1454 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&(*nameSpace).nameSpaces, (struct __ecereNameSpace__ecere__sys__BTNode *)newSpace);
1457 (__ecereNameSpace__ecere__com__eSystem_Delete(spaceName), spaceName = 0);
1458 nameSpace = newSpace;
1470 struct __ecereNameSpace__ecere__com__BTNamedLink * classLink = (((void *)0));
1471 struct __ecereNameSpace__ecere__com__Class * _class = (((void *)0));
1472 char * dataTypeString = (((void *)0));
1473 struct __ecereNameSpace__ecere__com__Class * enumBase = (((void *)0));
1474 struct __ecereNameSpace__ecere__com__Class * base = (baseName && baseName[0]) ? __ecereNameSpace__ecere__com__eSystem_FindClass(module, baseName) : (((void *)0));
1475 unsigned int refine = 0x0;
1477 if(base && !base->internalDecl && (base->type == 5 || base->type == 1 || base->type == 0))
1479 if(base->type == 1 && type == 0)
1484 if(base && (type == 0 || type == 5 || type == 1) && (base->type == 3 || base->type == 2 || base->type == 4))
1488 if(!base || base->type == 1000)
1492 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"))
1494 base = __ecereNameSpace__ecere__com__eSystem_FindClass(module, "enum");
1495 dataTypeString = (baseName && baseName[0]) ? baseName : "int";
1499 base = __ecereNameSpace__ecere__com__eSystem_RegisterClass((int)0, baseName, (((void *)0)), 0, 0, (((void *)0)), (((void *)0)), module, declMode, 1);
1500 base->internalDecl = 0x1;
1502 base = __ecereNameSpace__ecere__com__eSystem_FindClass(module, "enum");
1505 else if(type == 1 && (!baseName || !baseName[0]))
1507 base = __ecereNameSpace__ecere__com__eSystem_FindClass(module, "struct");
1508 dataTypeString = name + start;
1513 dataTypeString = "struct __ecereNameSpace__ecere__com__Instance";
1515 dataTypeString = "void *";
1517 dataTypeString = (baseName && baseName[0]) ? baseName : "unsigned int";
1519 dataTypeString = (baseName && baseName[0]) ? baseName : "int";
1521 dataTypeString = name + start;
1522 if(base || (!baseName || !baseName[0]) || type == 2 || type == 3)
1524 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"))
1526 if(type == 0 && strcmp(name, "ecere::com::Instance") && strcmp(name, "enum") && strcmp(name, "struct"))
1527 base = __ecereNameSpace__ecere__com__eSystem_FindClass(module, "ecere::com::Instance");
1529 base = __ecereNameSpace__ecere__com__eSystem_FindClass(module, "class");
1544 base = __ecereNameSpace__ecere__com__eSystem_FindClass(module, "enum");
1547 dataTypeString = enumBase ? enumBase->dataTypeString : base->dataTypeString;
1549 offsetClass = base ? base->sizeClass : (type == 5 ? 0 : 0);
1550 totalSizeClass = offsetClass + sizeClass;
1551 if((_class = __ecereNameSpace__ecere__com__eSystem_FindClass(module, name)))
1553 __ecereNameSpace__ecere__com__FreeTemplatesDerivatives(_class);
1554 if(!_class->internalDecl)
1557 printf("error: Redefinition of class %s\n", name);
1560 _class->comRedefinition = 0x1;
1563 return (((void *)0));
1565 classLink = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&(*_class->nameSpace).classes, name + start);
1566 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&(*_class->nameSpace).classes, (struct __ecereNameSpace__ecere__sys__BTNode *)classLink);
1568 struct __ecereNameSpace__ecere__sys__OldLink * t;
1570 for(t = _class->templatized.first; t; t = t->next)
1572 struct __ecereNameSpace__ecere__com__Class * template = t->data;
1574 classLink = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&(*_class->nameSpace).classes, template->name);
1575 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&(*_class->nameSpace).classes, (struct __ecereNameSpace__ecere__sys__BTNode *)classLink);
1579 struct __ecereNameSpace__ecere__com__NameSpace * ns = _class->nameSpace;
1581 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))
1583 struct __ecereNameSpace__ecere__com__NameSpace * parent = (*ns).parent;
1585 __ecereNameSpace__ecere__com__NameSpace_Free(ns);
1586 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&(*parent).nameSpaces, (struct __ecereNameSpace__ecere__sys__BTNode *)ns);
1594 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);
1596 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);
1598 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);
1600 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);
1602 _class = classLink->data;
1603 if(_class && _class->internalDecl)
1605 __ecereNameSpace__ecere__com__FreeTemplatesDerivatives(_class);
1606 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&(*_class->nameSpace).classes, (struct __ecereNameSpace__ecere__sys__BTNode *)classLink);
1608 struct __ecereNameSpace__ecere__sys__OldLink * t;
1610 for(t = _class->templatized.first; t; t = t->next)
1612 struct __ecereNameSpace__ecere__com__Class * template = t->data;
1614 classLink = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&(*_class->nameSpace).classes, template->name);
1615 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&(*_class->nameSpace).classes, (struct __ecereNameSpace__ecere__sys__BTNode *)classLink);
1619 (__ecereNameSpace__ecere__com__eSystem_Delete(_class->fullName), _class->fullName = 0);
1620 _class->fullName = __ecereNameSpace__ecere__sys__CopyString(name);
1624 _class = __ecereNameSpace__ecere__com___calloc(1, sizeof(struct __ecereNameSpace__ecere__com__Class));
1625 _class->methods.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
1626 _class->members.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
1627 _class->prop.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
1628 _class->classProperties.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
1629 _class->name = __ecereNameSpace__ecere__sys__CopyString(name + start);
1630 _class->fullName = __ecereNameSpace__ecere__sys__CopyString(name);
1635 __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)));
1637 struct __ecereNameSpace__ecere__sys__OldLink * t;
1639 for(t = _class->templatized.first; t; t = t->next)
1641 struct __ecereNameSpace__ecere__com__Class * template = t->data;
1643 __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)));
1649 if(!base && baseName && strcmp(baseName, name))
1651 if(strchr(baseName, '<'))
1653 char templateClassName[1024];
1654 struct __ecereNameSpace__ecere__com__Class * templateBase;
1656 strcpy(templateClassName, baseName);
1657 *strchr(templateClassName, '<') = '\0';
1658 templateBase = __ecereNameSpace__ecere__com__eSystem_FindClass(module, templateClassName);
1661 templateBase = __ecereNameSpace__ecere__com__eSystem_RegisterClass((int)0, templateClassName, (((void *)0)), 0, 0, (((void *)0)), (((void *)0)), module, declMode, 1);
1662 templateBase->internalDecl = 0x1;
1664 base = __ecereNameSpace__ecere__com__eSystem_FindClass(module, baseName);
1668 base = __ecereNameSpace__ecere__com__eSystem_RegisterClass((int)0, baseName, (((void *)0)), 0, 0, (((void *)0)), (((void *)0)), module, declMode, 1);
1669 base->internalDecl = 0x1;
1673 _class->internalDecl = 0x0;
1676 _class->data = __ecereNameSpace__ecere__com__eSystem_Renew(_class->data, sizeof(unsigned char) * (totalSizeClass));
1677 if(base && base->type != 1000 && base->type != 4)
1678 memcpy(_class->data, base->data, offsetClass);
1680 memset(_class->data, (unsigned char)0, offsetClass);
1681 memset((unsigned char *)_class->data + offsetClass, (unsigned char)0, sizeClass);
1683 (__ecereNameSpace__ecere__com__eSystem_Delete(_class->dataTypeString), _class->dataTypeString = 0);
1684 _class->dataTypeString = __ecereNameSpace__ecere__sys__CopyString(dataTypeString);
1685 _class->defaultAlignment = base ? base->defaultAlignment : 0;
1688 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)_class->module + 12)))->classes, _class);
1692 struct __ecereNameSpace__ecere__com__Class * base = _class->base;
1693 struct __ecereNameSpace__ecere__sys__OldLink * deriv = __ecereMethod___ecereNameSpace__ecere__sys__OldList_FindLink(&base->derivatives, _class);
1695 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&base->derivatives, deriv);
1699 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->classes, _class);
1701 _class->nameSpace = nameSpace;
1703 struct __ecereNameSpace__ecere__sys__OldLink * t;
1705 for(t = _class->templatized.first; t; t = t->next)
1707 struct __ecereNameSpace__ecere__com__Class * template = t->data;
1709 template->nameSpace = nameSpace;
1712 _class->module = module;
1713 _class->base = base;
1717 struct __ecereNameSpace__ecere__com__Class * sClass;
1719 for(sClass = base; sClass; sClass = sClass->base)
1721 if(sClass->templateClass)
1722 sClass = sClass->templateClass;
1723 numParams += sClass->templateParams.count;
1727 if(_class->templateArgs)
1729 __ecereNameSpace__ecere__com__FreeTemplateArgs(_class);
1731 (__ecereNameSpace__ecere__com__eSystem_Delete(_class->templateArgs), _class->templateArgs = 0);
1732 _class->templateArgs = __ecereNameSpace__ecere__com__eSystem_New0(sizeof(struct __ecereNameSpace__ecere__com__ClassTemplateArgument) * (numParams));
1733 _class->numParams = numParams;
1734 for(sClass = _class; sClass; sClass = sClass->base)
1736 struct __ecereNameSpace__ecere__com__Class * prevClass;
1737 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param;
1740 if(sClass->templateClass)
1741 sClass = sClass->templateClass;
1742 for(prevClass = sClass->base; prevClass; prevClass = prevClass->base)
1744 if(prevClass->templateClass)
1745 prevClass = prevClass->templateClass;
1746 id += prevClass->templateParams.count;
1748 if(base->templateArgs)
1750 for(param = sClass->templateParams.first; param; param = param->next)
1752 _class->templateArgs[id] = base->templateArgs[id];
1753 __ecereNameSpace__ecere__com__CopyTemplateArg(param, &_class->templateArgs[id]);
1760 _class->memberID = _class->startMemberID = (base && (type == 0 || type == 5 || type == 1)) ? base->memberID : 0;
1761 if(type == 0 || type == 5)
1762 _class->offset = (base && base->structSize && base->type != 1000) ? base->structSize : ((type == 5) ? 0 : (force64Bits ? 24 : 12));
1765 _class->memberOffset = (base && base->structSize && base->type != 1000) ? base->structSize : 0;
1766 _class->typeSize = _class->structSize = _class->memberOffset + size;
1768 else if(type == 2 || type == 4 || type == 3)
1770 struct __ecereNameSpace__ecere__com__Class * dataTypeClass = __ecereNameSpace__ecere__com__eSystem_FindClass(_class->module, dataTypeString);
1773 _class->typeSize = dataTypeClass->typeSize;
1774 _class->structSize = 0;
1776 else if(type == 0 || type == 5)
1778 _class->structSize = _class->offset + size;
1779 _class->typeSize = sizeof(void *);
1781 _class->offsetClass = offsetClass;
1782 _class->sizeClass = totalSizeClass;
1783 _class->Constructor = (void *)Constructor;
1784 _class->Destructor = Destructor;
1785 if(_class->type != 1000)
1786 _class->type = type;
1788 _class->computeSize = 0x1;
1790 _class->computeSize = 0x0;
1791 _class->inheritanceAccess = inheritanceAccess;
1795 _class->base = base = enumBase;
1797 struct __ecereNameSpace__ecere__com__EnumClassData * data = (struct __ecereNameSpace__ecere__com__EnumClassData *)_class->data;
1799 if(base && base->type != 4)
1802 data->largest = ((struct __ecereNameSpace__ecere__com__EnumClassData *)base->data)->largest;
1805 if(base && base->vTblSize)
1807 _class->vTblSize = base->vTblSize;
1808 (__ecereNameSpace__ecere__com__eSystem_Delete(_class->_vTbl), _class->_vTbl = 0);
1809 _class->_vTbl = __ecereNameSpace__ecere__com___malloc(sizeof(int (*)()) * _class->vTblSize);
1810 memcpy(_class->_vTbl, base->_vTbl, sizeof(int (*)()) * _class->vTblSize);
1814 struct __ecereNameSpace__ecere__sys__OldLink * link = (link = __ecereNameSpace__ecere__com__eSystem_New0(12), link->data = _class, link);
1816 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&_class->base->derivatives, link);
1818 __ecereNameSpace__ecere__com__FixDerivativesBase(_class, _class);
1822 return (((void *)0));
1825 static void __ecereNameSpace__ecere__com__DataMember_Free(struct __ecereNameSpace__ecere__com__DataMember * parentMember)
1827 struct __ecereNameSpace__ecere__com__DataMember * member;
1828 struct __ecereNameSpace__ecere__com__BTNamedLink * namedLink;
1830 (__ecereNameSpace__ecere__com__eSystem_Delete(parentMember->name), parentMember->name = 0);
1831 (__ecereNameSpace__ecere__com__eSystem_Delete(parentMember->dataTypeString), parentMember->dataTypeString = 0);
1832 while((member = parentMember->members.first))
1834 __ecereNameSpace__ecere__com__DataMember_Free(member);
1835 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&parentMember->members, member);
1837 while((namedLink = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&parentMember->membersAlpha)))
1839 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&parentMember->membersAlpha, (struct __ecereNameSpace__ecere__sys__BTNode *)namedLink);
1843 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__NamedLink;
1845 struct __ecereNameSpace__ecere__sys__NamedLink
1847 struct __ecereNameSpace__ecere__sys__NamedLink * prev;
1848 struct __ecereNameSpace__ecere__sys__NamedLink * next;
1851 } __attribute__ ((gcc_struct));
1853 static void __ecereNameSpace__ecere__com__FreeEnumValue(struct __ecereNameSpace__ecere__sys__NamedLink * value)
1855 (__ecereNameSpace__ecere__com__eSystem_Delete(value->name), value->name = 0);
1858 static void __ecereNameSpace__ecere__com__FreeTemplateArg(struct __ecereNameSpace__ecere__com__Class * template, struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param, int id)
1863 (__ecereNameSpace__ecere__com__eSystem_Delete(template->templateArgs[id].dataTypeString), template->templateArgs[id].dataTypeString = 0);
1866 (__ecereNameSpace__ecere__com__eSystem_Delete(template->templateArgs[id].memberString), template->templateArgs[id].memberString = 0);
1873 static void __ecereNameSpace__ecere__com__FreeTemplateArgs(struct __ecereNameSpace__ecere__com__Class * template)
1875 if(template->templateArgs)
1877 struct __ecereNameSpace__ecere__com__Class * _class;
1879 for(_class = template; _class; _class = _class->base)
1881 struct __ecereNameSpace__ecere__com__Class * prevClass;
1882 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param;
1885 if(_class->templateClass)
1886 _class = _class->templateClass;
1887 for(prevClass = _class->base; prevClass; prevClass = prevClass->base)
1889 if(prevClass->templateClass)
1890 prevClass = prevClass->templateClass;
1891 id += prevClass->templateParams.count;
1893 if(id < template->numParams)
1895 for(param = _class->templateParams.first; param; param = param->next)
1900 (__ecereNameSpace__ecere__com__eSystem_Delete(template->templateArgs[id].dataTypeString), template->templateArgs[id].dataTypeString = 0);
1903 (__ecereNameSpace__ecere__com__eSystem_Delete(template->templateArgs[id].memberString), template->templateArgs[id].memberString = 0);
1915 static void __ecereNameSpace__ecere__com__FreeTemplate(struct __ecereNameSpace__ecere__com__Class * template)
1917 struct __ecereNameSpace__ecere__sys__OldLink * deriv;
1919 if(template->nameSpace)
1921 struct __ecereNameSpace__ecere__com__BTNamedLink * link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&(*template->nameSpace).classes, template->name);
1923 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&(*template->nameSpace).classes, (struct __ecereNameSpace__ecere__sys__BTNode *)link);
1925 __ecereNameSpace__ecere__com__FreeTemplateArgs(template);
1926 (__ecereNameSpace__ecere__com__eSystem_Delete(template->fullName), template->fullName = 0);
1927 (__ecereNameSpace__ecere__com__eSystem_Delete(template->name), template->name = 0);
1928 (__ecereNameSpace__ecere__com__eSystem_Delete(template->templateArgs), template->templateArgs = 0);
1929 while((deriv = template->derivatives.first))
1931 ((struct __ecereNameSpace__ecere__com__Class *)deriv->data)->base = (((void *)0));
1932 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&template->derivatives, deriv);
1934 __ecereNameSpace__ecere__com___free(template);
1937 static void __ecereNameSpace__ecere__com__FreeTemplates(struct __ecereNameSpace__ecere__com__Class * _class)
1939 struct __ecereNameSpace__ecere__sys__OldLink * deriv, * template;
1941 for(deriv = _class->derivatives.first; deriv; deriv = deriv->next)
1943 __ecereNameSpace__ecere__com__FreeTemplates(deriv->data);
1945 __ecereNameSpace__ecere__com__FreeTemplateArgs(_class);
1946 (__ecereNameSpace__ecere__com__eSystem_Delete(_class->templateArgs), _class->templateArgs = 0);
1947 while((template = _class->templatized.first))
1949 __ecereNameSpace__ecere__com__FreeTemplates(template->data);
1950 __ecereNameSpace__ecere__com__FreeTemplate(template->data);
1951 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&_class->templatized, template);
1955 void __ecereMethod___ecereNameSpace__ecere__sys__OldList_Free(struct __ecereNameSpace__ecere__sys__OldList * this, void (* freeFn)(void * ));
1957 void __ecereNameSpace__ecere__com__eClass_Unregister(struct __ecereNameSpace__ecere__com__Class * _class)
1959 struct __ecereNameSpace__ecere__com__BTNamedLink * namedLink;
1960 struct __ecereNameSpace__ecere__com__DataMember * member;
1961 struct __ecereNameSpace__ecere__com__Method * method;
1962 struct __ecereNameSpace__ecere__sys__OldLink * deriv, * template;
1963 struct __ecereNameSpace__ecere__com__ClassProperty * classProp;
1964 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param;
1966 (__ecereNameSpace__ecere__com__eSystem_Delete(_class->_vTbl), _class->_vTbl = 0);
1967 __ecereNameSpace__ecere__com__FreeTemplates(_class);
1968 __ecereNameSpace__ecere__com__FreeTemplateArgs(_class);
1969 (__ecereNameSpace__ecere__com__eSystem_Delete(_class->templateArgs), _class->templateArgs = 0);
1970 while((template = _class->templatized.first))
1972 __ecereNameSpace__ecere__com__FreeTemplate(template->data);
1973 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&_class->templatized, template);
1975 while((member = _class->membersAndProperties.first))
1977 if(!member->isProperty && (member->type == 1 || member->type == 2))
1978 __ecereNameSpace__ecere__com__DataMember_Free(member);
1979 (__ecereNameSpace__ecere__com__eSystem_Delete(member->name), member->name = 0);
1980 (__ecereNameSpace__ecere__com__eSystem_Delete(member->dataTypeString), member->dataTypeString = 0);
1981 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&_class->membersAndProperties, member);
1983 while((member = _class->conversions.first))
1985 (__ecereNameSpace__ecere__com__eSystem_Delete(member->name), member->name = 0);
1986 (__ecereNameSpace__ecere__com__eSystem_Delete(member->dataTypeString), member->dataTypeString = 0);
1987 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&_class->conversions, member);
1989 while((namedLink = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&_class->prop)))
1991 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&_class->prop, (struct __ecereNameSpace__ecere__sys__BTNode *)namedLink);
1993 while((namedLink = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&_class->members)))
1995 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&_class->members, (struct __ecereNameSpace__ecere__sys__BTNode *)namedLink);
1997 while((classProp = (struct __ecereNameSpace__ecere__com__ClassProperty *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&_class->classProperties)))
1999 (__ecereNameSpace__ecere__com__eSystem_Delete(classProp->name), classProp->name = 0);
2000 (__ecereNameSpace__ecere__com__eSystem_Delete(classProp->dataTypeString), classProp->dataTypeString = 0);
2001 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&_class->classProperties, (struct __ecereNameSpace__ecere__sys__BTNode *)classProp);
2003 while((method = (struct __ecereNameSpace__ecere__com__Method *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&_class->methods)))
2005 (__ecereNameSpace__ecere__com__eSystem_Delete(method->name), method->name = 0);
2006 (__ecereNameSpace__ecere__com__eSystem_Delete(method->dataTypeString), method->dataTypeString = 0);
2007 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&_class->methods, (struct __ecereNameSpace__ecere__sys__BTNode *)method);
2009 if(_class->type == 4)
2011 struct __ecereNameSpace__ecere__com__EnumClassData * data = (struct __ecereNameSpace__ecere__com__EnumClassData *)_class->data;
2013 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Free(&data->values, (void *)__ecereNameSpace__ecere__com__FreeEnumValue);
2015 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Free(&_class->delayedCPValues, (((void *)0)));
2016 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Free(&_class->selfWatchers, (((void *)0)));
2019 struct __ecereNameSpace__ecere__com__Class * base = _class->base;
2021 for(deriv = base->derivatives.first; deriv; deriv = deriv->next)
2023 if(deriv->data == _class)
2027 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&base->derivatives, deriv);
2029 while((deriv = _class->derivatives.first))
2031 ((struct __ecereNameSpace__ecere__com__Class *)deriv->data)->base = (((void *)0));
2032 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&_class->derivatives, deriv);
2034 if(_class->nameSpace)
2036 struct __ecereNameSpace__ecere__com__BTNamedLink * link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&(*_class->nameSpace).classes, _class->name);
2038 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&(*_class->nameSpace).classes, (struct __ecereNameSpace__ecere__sys__BTNode *)link);
2040 (__ecereNameSpace__ecere__com__eSystem_Delete(_class->name), _class->name = 0);
2041 (__ecereNameSpace__ecere__com__eSystem_Delete(_class->fullName), _class->fullName = 0);
2042 (__ecereNameSpace__ecere__com__eSystem_Delete(_class->dataTypeString), _class->dataTypeString = 0);
2043 (__ecereNameSpace__ecere__com__eSystem_Delete(_class->data), _class->data = 0);
2044 while((param = _class->templateParams.first))
2049 (__ecereNameSpace__ecere__com__eSystem_Delete(param->defaultArg.dataTypeString), param->defaultArg.dataTypeString = 0);
2052 (__ecereNameSpace__ecere__com__eSystem_Delete(param->defaultArg.memberString), param->defaultArg.memberString = 0);
2057 if(param->type != 1)
2058 (__ecereNameSpace__ecere__com__eSystem_Delete(param->dataTypeString), param->dataTypeString = 0);
2059 (__ecereNameSpace__ecere__com__eSystem_Delete(param->name), param->name = 0);
2060 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&_class->templateParams, param);
2062 __ecereNameSpace__ecere__com___free(_class);
2065 struct __ecereNameSpace__ecere__sys__BTNode * __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Find(struct __ecereNameSpace__ecere__sys__BinaryTree * this, uintptr_t key);
2067 static struct __ecereNameSpace__ecere__com__BTNamedLink * __ecereNameSpace__ecere__com__ScanNameSpace(struct __ecereNameSpace__ecere__com__NameSpace * nameSpace, char * name, void * listOffset)
2069 struct __ecereNameSpace__ecere__sys__BinaryTree * tree = (struct __ecereNameSpace__ecere__sys__BinaryTree *)((unsigned char *)nameSpace + (unsigned int)listOffset);
2070 struct __ecereNameSpace__ecere__com__BTNamedLink * link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Find((&*tree), (uintptr_t)name);
2071 struct __ecereNameSpace__ecere__com__NameSpace * child;
2075 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)))
2077 link = __ecereNameSpace__ecere__com__ScanNameSpace(child, name, listOffset);
2085 static struct __ecereNameSpace__ecere__com__BTNamedLink * __ecereNameSpace__ecere__com__SearchNameSpace(struct __ecereNameSpace__ecere__com__NameSpace * nameSpace, char * name, void * listOffset)
2091 for(c = 0; (ch = name[c]); c++)
2097 if(level == 0 && (ch == '.' || (ch == ':' && name[c + 1] == ':')))
2099 struct __ecereNameSpace__ecere__com__NameSpace * newSpace;
2100 char * spaceName = __ecereNameSpace__ecere__com___malloc(c - start + 1);
2102 memcpy(spaceName, name + start, c - start);
2103 spaceName[c - start] = '\0';
2104 newSpace = (struct __ecereNameSpace__ecere__com__NameSpace *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&nameSpace->nameSpaces, spaceName);
2105 __ecereNameSpace__ecere__com___free(spaceName);
2107 return (((void *)0));
2108 nameSpace = newSpace;
2109 if(level == 0 && ch == ':')
2116 return __ecereNameSpace__ecere__com__ScanNameSpace(nameSpace, name + start, listOffset);
2118 return (((void *)0));
2121 static struct __ecereNameSpace__ecere__com__BTNamedLink * __ecereNameSpace__ecere__com__SearchModule(struct __ecereNameSpace__ecere__com__Instance * module, char * name, void * listOffset, unsigned int searchPrivate)
2123 struct __ecereNameSpace__ecere__com__SubModule * subModule;
2124 struct __ecereNameSpace__ecere__com__BTNamedLink * link;
2128 link = __ecereNameSpace__ecere__com__SearchNameSpace(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->privateNameSpace, name, listOffset);
2132 link = __ecereNameSpace__ecere__com__SearchNameSpace(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->publicNameSpace, name, listOffset);
2135 for(subModule = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->modules.first; subModule; subModule = subModule->next)
2137 if(searchPrivate || subModule->importMode == 1)
2139 link = __ecereNameSpace__ecere__com__SearchModule(subModule->module, name, listOffset, 0x0);
2144 return (((void *)0));
2147 extern int isspace(int c);
2149 long long __ecereNameSpace__ecere__com___strtoi64(char * string, char ** endString, int base)
2151 long long value = 0;
2156 for(c = 0; (ch = string[c]) && isspace(ch); c++)
2168 if(ch == (char)0 && string[c + 1] == 'x')
2181 for(; (ch = string[c]); c++)
2185 else if(ch >= '1' && ch <= '9')
2187 else if(ch >= 'a' && ch <= 'z')
2189 else if(ch >= 'A' && ch <= 'Z')
2193 *endString = string + c;
2203 *endString = string + c;
2207 return sign * value;
2210 uint64 __ecereNameSpace__ecere__com___strtoui64(char * string, char ** endString, int base)
2217 for(c = 0; (ch = string[c]) && isspace(ch); c++)
2229 if(ch == (char)0 && string[c + 1] == 'x')
2242 for(; (ch = string[c]); c++)
2246 else if(ch >= '1' && ch <= '9')
2248 else if(ch >= 'a' && ch <= 'z')
2250 else if(ch >= 'A' && ch <= 'Z')
2254 *endString = string + c;
2264 *endString = string + c;
2268 return sign * value;
2271 extern char * strcat(char * , const char * );
2273 extern int strlen(const char * );
2275 struct __ecereNameSpace__ecere__com__Class * __ecereNameSpace__ecere__com__eSystem_FindClass(struct __ecereNameSpace__ecere__com__Instance * module, char * name)
2277 void * __ecereTemp1;
2281 struct __ecereNameSpace__ecere__com__BTNamedLink * link;
2283 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);
2286 link = __ecereNameSpace__ecere__com__SearchModule(module, name, &(*((struct __ecereNameSpace__ecere__com__NameSpace *)0)).classes, 0x1);
2290 char noTemplateName[1024];
2291 char * templateParams = strchr(name, '<');
2295 strncpy(noTemplateName, name, templateParams - name);
2296 noTemplateName[templateParams - name] = '\0';
2299 strcpy(noTemplateName, name);
2300 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);
2302 link = __ecereNameSpace__ecere__com__SearchModule(module, noTemplateName, &(*((struct __ecereNameSpace__ecere__com__NameSpace *)0)).classes, 0x1);
2305 struct __ecereNameSpace__ecere__com__Class * _class = link->data;
2306 struct __ecereNameSpace__ecere__com__Class * templatedClass = (((void *)0));
2307 char className[1024];
2309 strcpy(className, _class->fullName);
2310 strcat(className, templateParams);
2311 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);
2314 link = __ecereNameSpace__ecere__com__SearchModule(module, className, &(*((struct __ecereNameSpace__ecere__com__NameSpace *)0)).classes, 0x1);
2317 if(_class && templateParams)
2319 struct __ecereNameSpace__ecere__sys__OldList __simpleStruct1 =
2323 struct __ecereNameSpace__ecere__sys__OldList __simpleStruct0 =
2328 templatedClass = __ecereNameSpace__ecere__com__eSystem_New0(368);
2329 *templatedClass = *_class;
2330 templatedClass->templateClass = _class;
2331 templatedClass->fullName = __ecereNameSpace__ecere__sys__CopyString(className);
2332 templatedClass->name = __ecereNameSpace__ecere__sys__CopyString(templatedClass->fullName + strlen(_class->fullName) - strlen(_class->name));
2333 __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)));
2334 templatedClass->templateArgs = (((void *)0));
2335 templatedClass->numParams = 0;
2336 templatedClass->derivatives = __simpleStruct0;
2337 templatedClass->templatized = __simpleStruct1;
2338 __ecereNameSpace__ecere__com__ComputeClassParameters(templatedClass, templateParams, module);
2339 __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)));
2341 return templatedClass;
2345 return (((void *)0));
2348 static void __ecereNameSpace__ecere__com__CopyTemplateArg(struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param, struct __ecereNameSpace__ecere__com__ClassTemplateArgument * arg)
2353 arg->dataTypeString = __ecereNameSpace__ecere__sys__CopyString(arg->dataTypeString);
2358 arg->memberString = __ecereNameSpace__ecere__sys__CopyString(arg->memberString);
2363 extern char * __ecereNameSpace__ecere__sys__TrimRSpaces(char * string, char * output);
2365 extern unsigned long strtoul(const char * nptr, char * * endptr, int base);
2367 extern double strtod(char * , char * * );
2369 extern int sprintf(char * , char * , ...);
2371 extern char * strstr(char * , const char * );
2373 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);
2375 struct __ecereNameSpace__ecere__com__Method * __ecereNameSpace__ecere__com__eClass_FindMethod(struct __ecereNameSpace__ecere__com__Class * _class, char * name, struct __ecereNameSpace__ecere__com__Instance * module);
2377 struct __ecereNameSpace__ecere__com__Property * __ecereNameSpace__ecere__com__eClass_FindProperty(struct __ecereNameSpace__ecere__com__Class * _class, char * name, struct __ecereNameSpace__ecere__com__Instance * module);
2379 static void __ecereNameSpace__ecere__com__ComputeClassParameters(struct __ecereNameSpace__ecere__com__Class * templatedClass, char * templateParams, struct __ecereNameSpace__ecere__com__Instance * findModule)
2382 char * nextParamStart = templateParams ? (templateParams + 1) : (((void *)0));
2383 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * curParam = (((void *)0));
2384 struct __ecereNameSpace__ecere__com__Class * lastClass = (((void *)0)), * sClass;
2387 struct __ecereNameSpace__ecere__com__Class * _class = templatedClass->templateClass ? templatedClass->templateClass : templatedClass;
2389 for(sClass = _class; sClass; sClass = sClass->base)
2391 if(sClass->templateClass)
2392 sClass = sClass->templateClass;
2393 numParams += sClass->templateParams.count;
2395 if(templatedClass->templateArgs)
2396 __ecereNameSpace__ecere__com__FreeTemplateArgs(templatedClass);
2397 (__ecereNameSpace__ecere__com__eSystem_Delete(templatedClass->templateArgs), templatedClass->templateArgs = 0);
2398 templatedClass->templateArgs = __ecereNameSpace__ecere__com__eSystem_New0(sizeof(struct __ecereNameSpace__ecere__com__ClassTemplateArgument) * (numParams));
2399 templatedClass->numParams = numParams;
2400 if(_class != templatedClass)
2403 if(templatedClass->base && templatedClass->base->templateArgs && _class == templatedClass)
2405 struct __ecereNameSpace__ecere__com__Class * sClass;
2407 memcpy(templatedClass->templateArgs, templatedClass->base->templateArgs, sizeof(struct __ecereNameSpace__ecere__com__ClassTemplateArgument) * (numParams - templatedClass->templateParams.count));
2408 for(sClass = templatedClass->base; sClass; sClass = sClass->base)
2410 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param;
2411 struct __ecereNameSpace__ecere__com__Class * prevClass;
2414 for(prevClass = sClass->base; prevClass; prevClass = prevClass->base)
2416 if(prevClass->templateClass)
2417 prevClass = prevClass->templateClass;
2418 id += prevClass->templateParams.count;
2420 if(sClass->templateClass)
2421 sClass = sClass->templateClass;
2422 for(param = sClass->templateParams.first; param; param = param->next)
2423 __ecereNameSpace__ecere__com__CopyTemplateArg(param, &templatedClass->templateArgs[id++]);
2426 while(nextParamStart)
2428 char * paramStart = nextParamStart;
2432 while(*paramStart == ' ')
2434 paramEnd = paramStart;
2435 while((ch = *paramEnd, ch && (level > 0 || (ch != '>' && ch != ','))))
2443 nextParamStart = (ch == ',') ? (paramEnd + 1) : (((void *)0));
2444 while(*paramEnd == ' ')
2446 if(paramEnd > paramStart)
2448 char * ptr, * equal = (((void *)0));
2450 for(ptr = paramStart; ptr <= paramEnd; ptr++)
2460 char * end = equal - 1;
2465 strncpy(ident, paramStart, end + 1 - paramStart);
2466 ident[end + 1 - paramStart] = (char)0;
2467 for(sClass = _class; sClass; sClass = sClass->base)
2469 if(sClass->templateClass)
2470 sClass = sClass->templateClass;
2471 for(curParam = sClass->templateParams.first; curParam; curParam = curParam->next)
2473 if(!strcmp(curParam->name, ident))
2478 struct __ecereNameSpace__ecere__com__Class * nextClass;
2479 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * prevParam;
2482 for(prevParam = curParam->prev; prevParam; prevParam = prevParam->prev)
2484 for(nextClass = sClass->base; nextClass; nextClass = nextClass->base)
2486 if(nextClass->templateClass)
2487 nextClass = nextClass->templateClass;
2488 curParamID += nextClass->templateParams.count;
2499 curParam = curParam->next;
2504 for(sClass = lastClass ? lastClass->base : _class; sClass; sClass = sClass->base)
2506 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param;
2509 if(sClass->templateClass)
2510 sClass = sClass->templateClass;
2511 for(param = sClass->templateParams.first; param; param = param->next, curParamID++)
2518 struct __ecereNameSpace__ecere__com__Class * nextClass;
2520 for(nextClass = sClass->base; nextClass; nextClass = nextClass->base)
2522 if(nextClass->templateClass)
2523 nextClass = nextClass->templateClass;
2524 curParamID += nextClass->templateParams.count;
2534 struct __ecereNameSpace__ecere__com__ClassTemplateArgument argument =
2543 while(*equal == ' ')
2545 memcpy(value, equal, paramEnd - equal);
2546 value[paramEnd - equal] = (char)0;
2550 memcpy(value, paramStart, paramEnd - paramStart);
2551 value[paramEnd - paramStart] = (char)0;
2553 __ecereNameSpace__ecere__sys__TrimRSpaces(value, value);
2554 switch(curParam->type)
2557 argument.dataTypeString = __ecereNameSpace__ecere__sys__CopyString(value);
2558 argument.dataTypeClass = __ecereNameSpace__ecere__com__eSystem_FindClass(_class->module, value);
2559 if(!argument.dataTypeClass)
2560 argument.dataTypeClass = __ecereNameSpace__ecere__com__eSystem_FindClass(((struct __ecereNameSpace__ecere__com__Module *)(((char *)_class->module + 12)))->application, value);
2561 if(!argument.dataTypeClass)
2562 argument.dataTypeClass = __ecereNameSpace__ecere__com__eSystem_FindClass(findModule, value);
2566 struct __ecereNameSpace__ecere__com__Class * expClass = __ecereNameSpace__ecere__com__eSystem_FindClass(_class->module, curParam->dataTypeString);
2569 expClass = __ecereNameSpace__ecere__com__eSystem_FindClass(((struct __ecereNameSpace__ecere__com__Module *)(((char *)_class->module + 12)))->application, curParam->dataTypeString);
2572 expClass->_vTbl[__ecereVMethodID_class_OnGetDataFromString](expClass, &argument.expression, value);
2574 else if(value[0] == '\"')
2576 char * endQuote = value + strlen(value) - 1;
2578 if(*endQuote != '\"')
2581 argument.expression.p = __ecereNameSpace__ecere__sys__CopyString(value + 1);
2583 else if(value[0] == '\'')
2586 unsigned int ch = __ecereNameSpace__ecere__sys__UTF8GetChar(value + 1, &nb);
2588 argument.expression.ui = ch;
2590 else if(!strcmp(curParam->dataTypeString, "uint"))
2592 argument.expression.ui = strtoul(value, (((void *)0)), 0);
2594 else if(!strcmp(curParam->dataTypeString, "char"))
2596 argument.expression.c = (char)strtol(value, (((void *)0)), 0);
2598 else if(!strcmp(curParam->dataTypeString, "byte"))
2600 argument.expression.uc = (unsigned char)strtoul(value, (((void *)0)), 0);
2602 else if(!strcmp(curParam->dataTypeString, "short"))
2604 argument.expression.s = (short)strtol(value, (((void *)0)), 0);
2606 else if(!strcmp(curParam->dataTypeString, "uint16"))
2608 argument.expression.us = (unsigned short)strtoul(value, (((void *)0)), 0);
2610 else if(!strcmp(curParam->dataTypeString, "int64"))
2612 argument.expression.i64 = __ecereNameSpace__ecere__com___strtoi64(value, (((void *)0)), 0);
2614 else if(!strcmp(curParam->dataTypeString, "uint64"))
2616 argument.expression.ui64 = __ecereNameSpace__ecere__com___strtoui64(value, (((void *)0)), 0);
2618 else if(!strcmp(curParam->dataTypeString, "float"))
2620 argument.expression.f = (float)strtod(value, (((void *)0)));
2622 else if(!strcmp(curParam->dataTypeString, "double"))
2624 argument.expression.d = strtod(value, (((void *)0)));
2628 argument.expression.i = strtol(value, (((void *)0)), 0);
2633 argument.memberString = __ecereNameSpace__ecere__sys__CopyString(value);
2636 __ecereNameSpace__ecere__com__FreeTemplateArg(templatedClass, curParam, curParamID);
2637 templatedClass->templateArgs[curParamID] = argument;
2641 if(templatedClass == _class)
2643 struct __ecereNameSpace__ecere__com__Class * sClass = _class;
2645 struct __ecereNameSpace__ecere__com__Class * nextClass;
2646 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param;
2648 for(nextClass = sClass->base; nextClass; nextClass = nextClass->base)
2650 if(nextClass->templateClass)
2651 nextClass = nextClass->templateClass;
2652 curParamID += nextClass->templateParams.count;
2654 for(param = sClass->templateParams.first; param; param = param->next)
2656 if(!templatedClass->templateArgs[curParamID].dataTypeString)
2658 templatedClass->templateArgs[curParamID] = param->defaultArg;
2659 __ecereNameSpace__ecere__com__CopyTemplateArg(param, &templatedClass->templateArgs[curParamID]);
2660 if(param->type == 0 && param->defaultArg.dataTypeString)
2662 templatedClass->templateArgs[curParamID].dataTypeClass = __ecereNameSpace__ecere__com__eSystem_FindClass(templatedClass->module, param->defaultArg.dataTypeString);
2663 if(!templatedClass->templateArgs[curParamID].dataTypeClass)
2664 templatedClass->templateArgs[curParamID].dataTypeClass = __ecereNameSpace__ecere__com__eSystem_FindClass(((struct __ecereNameSpace__ecere__com__Module *)(((char *)templatedClass->module + 12)))->application, param->defaultArg.dataTypeString);
2665 if(!templatedClass->templateArgs[curParamID].dataTypeClass)
2666 templatedClass->templateArgs[curParamID].dataTypeClass = __ecereNameSpace__ecere__com__eSystem_FindClass(findModule, param->defaultArg.dataTypeString);
2672 if(templatedClass->base && templatedClass->base->templateArgs && numParams - _class->templateParams.count)
2674 int c = numParams - _class->templateParams.count - 1;
2676 for(sClass = _class->base; sClass; sClass = sClass->base)
2678 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param;
2680 if(sClass->templateClass)
2681 sClass = sClass->templateClass;
2682 for(param = sClass->templateParams.last; param; param = param->prev)
2684 struct __ecereNameSpace__ecere__com__ClassTemplateArgument * arg = &templatedClass->templateArgs[c];
2685 struct __ecereNameSpace__ecere__com__ClassTemplateArgument * baseArg = &templatedClass->base->templateArgs[c];
2687 if(!(*arg).dataTypeString)
2689 *arg = templatedClass->base->templateArgs[c];
2690 __ecereNameSpace__ecere__com__CopyTemplateArg(param, arg);
2691 if(param->type == 0)
2693 if((*arg).dataTypeClass && strchr((*arg).dataTypeString, '<') && (*arg).dataTypeClass->templateArgs)
2695 struct __ecereNameSpace__ecere__com__Class * expClass = (*arg).dataTypeClass;
2696 struct __ecereNameSpace__ecere__com__Class * cClass = (((void *)0));
2699 char templateString[1024];
2701 sprintf(templateString, "%s<", expClass->templateClass->fullName);
2702 for(cClass = expClass; cClass; cClass = cClass->base)
2705 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param;
2707 for(param = cClass->templateParams.first; param; param = param->next)
2710 struct __ecereNameSpace__ecere__com__Class * sClass;
2711 struct __ecereNameSpace__ecere__com__ClassTemplateArgument arg;
2713 for(sClass = expClass->base; sClass; sClass = sClass->base)
2714 id += sClass->templateParams.count;
2715 arg = expClass->templateArgs[id];
2717 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * cParam;
2718 int p = numParams - _class->templateParams.count;
2720 for(cParam = _class->templateParams.first; cParam; cParam = cParam->next, p++)
2722 if(cParam->type == 0 && arg.dataTypeString && !strcmp(cParam->name, arg.dataTypeString))
2724 arg.dataTypeString = templatedClass->templateArgs[p].dataTypeString;
2725 arg.dataTypeClass = templatedClass->templateArgs[p].dataTypeClass;
2742 strcat(argument, arg.member->name);
2747 if(arg.dataTypeString)
2748 strcat(argument, arg.dataTypeString);
2755 strcat(templateString, ", ");
2756 if(lastParam != p - 1)
2758 strcat(templateString, param->name);
2759 strcat(templateString, " = ");
2761 strcat(templateString, argument);
2770 int len = strlen(templateString);
2772 if(templateString[len - 1] == '>')
2773 templateString[len++] = ' ';
2774 templateString[len++] = '>';
2775 templateString[len++] = '\0';
2777 __ecereNameSpace__ecere__com__FreeTemplateArg(templatedClass, param, c);
2778 (*arg).dataTypeString = __ecereNameSpace__ecere__sys__CopyString(templateString);
2779 (*arg).dataTypeClass = __ecereNameSpace__ecere__com__eSystem_FindClass(templatedClass->module, templateString);
2780 if(!(*arg).dataTypeClass)
2781 (*arg).dataTypeClass = __ecereNameSpace__ecere__com__eSystem_FindClass(((struct __ecereNameSpace__ecere__com__Module *)(((char *)templatedClass->module + 12)))->application, templateString);
2785 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * cParam;
2786 int p = numParams - _class->templateParams.count;
2788 for(cParam = _class->templateParams.first; cParam; cParam = cParam->next, p++)
2790 if(cParam->type == 0 && (*baseArg).dataTypeString && !strcmp(cParam->name, (*baseArg).dataTypeString))
2792 __ecereNameSpace__ecere__com__FreeTemplateArg(templatedClass, param, c);
2793 (*arg).dataTypeString = templatedClass->templateArgs[p].dataTypeString;
2794 (*arg).dataTypeClass = templatedClass->templateArgs[p].dataTypeClass;
2795 __ecereNameSpace__ecere__com__CopyTemplateArg(cParam, arg);
2807 struct __ecereNameSpace__ecere__com__Class * sClass;
2809 for(sClass = _class; sClass; sClass = sClass->base)
2812 struct __ecereNameSpace__ecere__com__Class * nextClass;
2813 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param;
2815 if(sClass->templateClass)
2816 sClass = sClass->templateClass;
2817 for(nextClass = sClass->base; nextClass; nextClass = nextClass->base)
2819 if(nextClass->templateClass)
2820 nextClass = nextClass->templateClass;
2821 curParamID += nextClass->templateParams.count;
2823 for(param = sClass->templateParams.first; param; param = param->next)
2825 if(!templatedClass->templateArgs[curParamID].dataTypeString)
2827 templatedClass->templateArgs[curParamID] = param->defaultArg;
2828 __ecereNameSpace__ecere__com__CopyTemplateArg(param, &templatedClass->templateArgs[curParamID]);
2829 if(param->type == 0 && param->defaultArg.dataTypeString)
2831 templatedClass->templateArgs[curParamID].dataTypeClass = __ecereNameSpace__ecere__com__eSystem_FindClass(templatedClass->module, param->defaultArg.dataTypeString);
2832 if(!templatedClass->templateArgs[curParamID].dataTypeClass)
2833 templatedClass->templateArgs[curParamID].dataTypeClass = __ecereNameSpace__ecere__com__eSystem_FindClass(((struct __ecereNameSpace__ecere__com__Module *)(((char *)templatedClass->module + 12)))->application, param->defaultArg.dataTypeString);
2834 if(!templatedClass->templateArgs[curParamID].dataTypeClass)
2835 templatedClass->templateArgs[curParamID].dataTypeClass = __ecereNameSpace__ecere__com__eSystem_FindClass(findModule, param->defaultArg.dataTypeString);
2843 int c = numParams - 1;
2845 for(sClass = _class; sClass; sClass = sClass->base)
2847 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param;
2849 if(sClass->templateClass)
2850 sClass = sClass->templateClass;
2851 for(param = sClass->templateParams.last; param; param = param->prev)
2853 if(param->type == 0)
2855 struct __ecereNameSpace__ecere__com__ClassTemplateArgument * arg = &templatedClass->templateArgs[c];
2856 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * cParam;
2857 struct __ecereNameSpace__ecere__com__Class * dClass;
2858 int p = numParams - 1;
2860 for(dClass = _class; dClass; dClass = dClass->base)
2862 if(dClass->templateClass)
2863 dClass = dClass->templateClass;
2864 for(cParam = dClass->templateParams.last; cParam; cParam = cParam->prev, p--)
2866 if(cParam->type == 0 && (*arg).dataTypeString && !strcmp(cParam->name, (*arg).dataTypeString))
2868 if(templatedClass->templateArgs[p].dataTypeString && c != p)
2870 __ecereNameSpace__ecere__com__FreeTemplateArg(templatedClass, param, c);
2871 (*arg).dataTypeString = templatedClass->templateArgs[p].dataTypeString;
2872 (*arg).dataTypeClass = templatedClass->templateArgs[p].dataTypeClass;
2873 __ecereNameSpace__ecere__com__CopyTemplateArg(cParam, arg);
2884 struct __ecereNameSpace__ecere__com__Class * tClass;
2885 int c = numParams - 1;
2887 for(tClass = _class; tClass; tClass = tClass->base)
2889 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param;
2891 if(tClass->templateClass)
2892 tClass = tClass->templateClass;
2893 for(param = tClass->templateParams.last; param; param = param->prev)
2895 struct __ecereNameSpace__ecere__com__ClassTemplateArgument * arg = &templatedClass->templateArgs[c];
2897 if(param->type == 1 && (*arg).memberString)
2899 struct __ecereNameSpace__ecere__com__Class * memberClass = templatedClass;
2900 char * memberString = (*arg).memberString;
2901 char * colon = strstr(memberString, "::");
2902 char * memberName = memberString;
2905 memberName = colon + 2;
2908 memberString = param->defaultArg.memberString;
2909 colon = memberString ? strstr(memberString, "::") : (((void *)0));
2913 char className[1024];
2914 struct __ecereNameSpace__ecere__com__Class * sClass;
2916 memcpy(className, memberString, colon - memberString);
2917 className[colon - memberString] = '\0';
2918 for(sClass = _class; sClass; sClass = sClass->base)
2920 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * cParam;
2921 struct __ecereNameSpace__ecere__com__Class * nextClass;
2924 if(sClass->templateClass)
2925 sClass = sClass->templateClass;
2926 for(nextClass = sClass->base; nextClass; nextClass = nextClass->base)
2928 if(nextClass->templateClass)
2929 nextClass = nextClass->templateClass;
2930 id += nextClass->templateParams.count;
2932 for(cParam = sClass->templateParams.first; cParam; cParam = cParam->next)
2934 if(cParam->type == 0 && !strcmp(cParam->name, className) && templatedClass->templateArgs[id].dataTypeString)
2936 strcpy(className, templatedClass->templateArgs[id].dataTypeString);
2941 memberClass = __ecereNameSpace__ecere__com__eSystem_FindClass(templatedClass->module, className);
2943 memberClass = __ecereNameSpace__ecere__com__eSystem_FindClass(findModule, className);
2945 memberClass = __ecereNameSpace__ecere__com__eSystem_FindClass(((struct __ecereNameSpace__ecere__com__Module *)(((char *)templatedClass->module + 12)))->application, className);
2949 switch(param->memberType)
2952 (*arg).member = __ecereNameSpace__ecere__com__eClass_FindDataMember(memberClass, memberName, memberClass->module, (((void *)0)), (((void *)0)));
2955 (*arg).method = __ecereNameSpace__ecere__com__eClass_FindMethod(memberClass, memberName, memberClass->module);
2958 (*arg).prop = __ecereNameSpace__ecere__com__eClass_FindProperty(memberClass, memberName, memberClass->module);
2969 unsigned int __ecereNameSpace__ecere__com__DefaultFunction()
2974 unsigned int __ecereNameSpace__ecere__com__eClass_IsDerived(struct __ecereNameSpace__ecere__com__Class * _class, struct __ecereNameSpace__ecere__com__Class * from)
2976 if(!_class && !from)
2978 if(_class && from && (_class->templateClass || from->templateClass))
2980 if(__ecereNameSpace__ecere__com__eClass_IsDerived(_class->templateClass ? _class->templateClass : _class, from->templateClass ? from->templateClass : from))
2982 if(!from->templateClass)
2984 else if(!_class->templateClass && _class == from->templateClass)
2988 struct __ecereNameSpace__ecere__com__Class * sClass;
2990 for(sClass = from; sClass; sClass = sClass->base)
2992 if(sClass->templateParams.first)
2994 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param;
2995 struct __ecereNameSpace__ecere__com__Class * nextClass;
2998 for(nextClass = sClass->base; nextClass; nextClass = nextClass->base)
2999 p += nextClass->templateParams.count;
3000 for(param = sClass->templateParams.first; param; param = param->next, p++)
3002 struct __ecereNameSpace__ecere__com__ClassTemplateArgument * arg = &_class->templateArgs[p];
3003 struct __ecereNameSpace__ecere__com__ClassTemplateArgument * fArg = &from->templateArgs[p];
3005 if(param->type == 0)
3007 if((*arg).dataTypeString != (*fArg).dataTypeString && (*arg).dataTypeString && (*fArg).dataTypeString && strcmp((*arg).dataTypeString, (*fArg).dataTypeString))
3010 else if(param->type == 1)
3012 if((*arg).member != (*fArg).member)
3015 else if(param->type == 2)
3017 if((*arg).expression.ui64 != (*fArg).expression.ui64)
3031 for(; _class && from; _class = _class->base)
3033 if(_class == from || _class->templateClass == from || (_class->type == 1000 && from->name && !strcmp(_class->name, from->name)))
3040 static void __ecereNameSpace__ecere__com__FixDerivativeVirtualMethod(struct __ecereNameSpace__ecere__com__Class * base, char * name, int vid, void * origFunction, char * type)
3042 struct __ecereNameSpace__ecere__sys__OldLink * derivative;
3044 for(derivative = base->derivatives.first; derivative; derivative = derivative->next)
3046 struct __ecereNameSpace__ecere__com__Class * _class = derivative->data;
3047 struct __ecereNameSpace__ecere__com__Method * method, * next;
3048 void * function = origFunction;
3051 _class->_vTbl = __ecereNameSpace__ecere__com__eSystem_Renew(_class->_vTbl, sizeof(void *) * (_class->vTblSize));
3052 memmove(_class->_vTbl + vid + 1, _class->_vTbl + vid, (_class->vTblSize - vid - 1) * sizeof(void *));
3053 method = (struct __ecereNameSpace__ecere__com__Method *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&_class->methods, name);
3056 if(method->function)
3057 function = method->function;
3060 (__ecereNameSpace__ecere__com__eSystem_Delete(method->name), method->name = 0);
3061 (__ecereNameSpace__ecere__com__eSystem_Delete(method->dataTypeString), method->dataTypeString = 0);
3062 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&_class->methods, (struct __ecereNameSpace__ecere__sys__BTNode *)method);
3066 (__ecereNameSpace__ecere__com__eSystem_Delete(method->dataTypeString), method->dataTypeString = 0);
3068 method->dataTypeString = __ecereNameSpace__ecere__sys__CopyString(type);
3069 method->_class = base;
3072 for(method = (struct __ecereNameSpace__ecere__com__Method *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&_class->methods); method; method = next)
3074 next = (struct __ecereNameSpace__ecere__com__Method *)__ecereProp___ecereNameSpace__ecere__sys__BTNode_Get_next(((struct __ecereNameSpace__ecere__sys__BTNode *)method));
3075 if(method->type == 1)
3078 _class->_vTbl[vid] = function;
3080 struct __ecereNameSpace__ecere__sys__OldLink * templateLink;
3082 for(templateLink = _class->templatized.first; templateLink; templateLink = templateLink->next)
3084 struct __ecereNameSpace__ecere__com__Class * template = templateLink->data;
3086 template->_vTbl = _class->_vTbl;
3089 if(_class->derivatives.first || _class->templatized.first)
3090 __ecereNameSpace__ecere__com__FixDerivativeVirtualMethod(_class, name, vid, function, type);
3093 struct __ecereNameSpace__ecere__sys__OldLink * templateLink;
3095 for(templateLink = base->templatized.first; templateLink; templateLink = templateLink->next)
3097 struct __ecereNameSpace__ecere__com__Class * template = templateLink->data;
3099 template->_vTbl = base->_vTbl;
3100 __ecereNameSpace__ecere__com__FixDerivativeVirtualMethod(template, name, vid, origFunction, type);
3105 struct __ecereNameSpace__ecere__com__Method * __ecereNameSpace__ecere__com__eClass_AddMethod(struct __ecereNameSpace__ecere__com__Class * _class, char * name, char * type, void * function, int declMode)
3109 struct __ecereNameSpace__ecere__com__Class * base;
3111 for(base = _class; base; base = base->base)
3113 struct __ecereNameSpace__ecere__com__Method * method = (struct __ecereNameSpace__ecere__com__Method *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&base->methods, name);
3117 if(method->type == 1)
3119 struct __ecereNameSpace__ecere__sys__OldLink * deriv;
3120 void * oldFunction = _class->_vTbl[method->vid];
3122 if(method->vid > _class->vTblSize)
3125 _class->_vTbl[method->vid] = function ? function : __ecereNameSpace__ecere__com__DefaultFunction;
3126 for(deriv = _class->derivatives.first; deriv; deriv = deriv->next)
3128 struct __ecereNameSpace__ecere__com__Class * derivClass = deriv->data;
3130 if(derivClass->_vTbl[method->vid] == oldFunction)
3131 __ecereNameSpace__ecere__com__eClass_AddMethod(derivClass, name, type, function, declMode);
3134 struct __ecereNameSpace__ecere__sys__OldLink * templateLink;
3136 for(templateLink = _class->templatized.first; templateLink; templateLink = templateLink->next)
3138 struct __ecereNameSpace__ecere__com__Class * template = templateLink->data;
3140 for(deriv = template->derivatives.first; deriv; deriv = deriv->next)
3142 struct __ecereNameSpace__ecere__com__Class * derivClass = deriv->data;
3144 if(derivClass->_vTbl[method->vid] == oldFunction)
3145 __ecereNameSpace__ecere__com__eClass_AddMethod(derivClass, name, type, function, declMode);
3156 base = (((void *)0));
3164 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);
3166 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&_class->methods, (struct __ecereNameSpace__ecere__sys__BTNode *)method);
3170 return (((void *)0));
3173 struct __ecereNameSpace__ecere__com__Method * __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(struct __ecereNameSpace__ecere__com__Class * _class, char * name, char * type, void * function, int declMode)
3177 struct __ecereNameSpace__ecere__com__Class * base;
3179 for(base = _class; base; base = base->base)
3181 struct __ecereNameSpace__ecere__com__Method * method = (struct __ecereNameSpace__ecere__com__Method *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&base->methods, name);
3185 if(method->type == 1)
3186 _class->_vTbl[method->vid] = function ? function : __ecereNameSpace__ecere__com__DefaultFunction;
3188 base = (((void *)0));
3194 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);
3196 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&_class->methods, (struct __ecereNameSpace__ecere__sys__BTNode *)method);
3197 _class->_vTbl = __ecereNameSpace__ecere__com__eSystem_Renew(_class->_vTbl, sizeof(void *) * (_class->vTblSize));
3198 _class->_vTbl[method->vid] = function ? function : __ecereNameSpace__ecere__com__DefaultFunction;
3199 if(_class->derivatives.first || _class->templatized.first)
3200 __ecereNameSpace__ecere__com__FixDerivativeVirtualMethod(_class, name, method->vid, function ? function : (void *)__ecereNameSpace__ecere__com__DefaultFunction, type);
3204 return (((void *)0));
3207 static void __ecereNameSpace__ecere__com__FixDerivativeProperty(struct __ecereNameSpace__ecere__com__Class * base, struct __ecereNameSpace__ecere__com__Property * _property)
3209 struct __ecereNameSpace__ecere__sys__OldLink * derivative;
3211 for(derivative = base->derivatives.first; derivative; derivative = derivative->next)
3213 struct __ecereNameSpace__ecere__com__Class * _class = derivative->data;
3214 struct __ecereNameSpace__ecere__com__Property * prop;
3215 struct __ecereNameSpace__ecere__com__BTNamedLink * link;
3217 link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&_class->prop, _property->name);
3221 if(!prop->Set && !prop->Get && prop->memberAccess == 4)
3223 struct __ecereNameSpace__ecere__com__SelfWatcher * watcher;
3225 for(watcher = _class->selfWatchers.first; watcher; watcher = watcher->next)
3227 if(watcher->_property == prop)
3228 watcher->_property = _property;
3230 _property->selfWatchable = 0x1;
3231 (__ecereNameSpace__ecere__com__eSystem_Delete(prop->name), prop->name = 0);
3232 (__ecereNameSpace__ecere__com__eSystem_Delete(prop->dataTypeString), prop->dataTypeString = 0);
3233 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&_class->membersAndProperties, prop);
3234 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&_class->prop, (struct __ecereNameSpace__ecere__sys__BTNode *)link);
3237 for(prop = _class->membersAndProperties.first; prop; prop = prop->next)
3240 _class->startMemberID++;
3241 __ecereNameSpace__ecere__com__FixDerivativeProperty(_class, _property);
3245 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)
3247 void * __ecereTemp1;
3248 struct __ecereNameSpace__ecere__com__Property * _property = (((void *)0));
3252 if(!__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&_class->prop, (name ? name : dataType)))
3254 _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));
3256 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&_class->membersAndProperties, _property);
3258 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&_class->conversions, _property);
3259 __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)));
3260 if(!_property->conversion)
3262 __ecereNameSpace__ecere__com__FixDerivativeProperty(_class, _property);
3269 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__NamedLink64;
3271 struct __ecereNameSpace__ecere__sys__NamedLink64
3273 struct __ecereNameSpace__ecere__sys__NamedLink64 * prev;
3274 struct __ecereNameSpace__ecere__sys__NamedLink64 * next;
3277 } __attribute__ ((gcc_struct));
3279 static void __ecereNameSpace__ecere__com__SetDelayedCPValues(struct __ecereNameSpace__ecere__com__Class * _class, struct __ecereNameSpace__ecere__com__ClassProperty * _property)
3281 struct __ecereNameSpace__ecere__sys__OldLink * deriv;
3282 struct __ecereNameSpace__ecere__sys__NamedLink64 * value, * next;
3284 for(value = _class->delayedCPValues.first; value; value = next)
3287 if(!strcmp(value->name, _property->name))
3289 _property->Set(_class, value->data);
3290 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&_class->delayedCPValues, value);
3293 for(deriv = _class->derivatives.first; deriv; deriv = deriv->next)
3295 __ecereNameSpace__ecere__com__SetDelayedCPValues(deriv->data, _property);
3299 struct __ecereNameSpace__ecere__com__ClassProperty * __ecereNameSpace__ecere__com__eClass_AddClassProperty(struct __ecereNameSpace__ecere__com__Class * _class, char * name, char * dataType, void * setStmt, void * getStmt)
3301 if(name && !__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&_class->classProperties, name))
3303 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);
3305 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&_class->classProperties, (struct __ecereNameSpace__ecere__sys__BTNode *)_property);
3306 __ecereNameSpace__ecere__com__SetDelayedCPValues(_class, _property);
3309 return (((void *)0));
3312 struct __ecereNameSpace__ecere__com__ClassProperty * __ecereNameSpace__ecere__com__eClass_FindClassProperty(struct __ecereNameSpace__ecere__com__Class * _class, char * name)
3314 struct __ecereNameSpace__ecere__com__ClassProperty * _property = (((void *)0));
3318 struct __ecereNameSpace__ecere__com__Class * origClass = _class;
3320 for(; _class; _class = _class->base)
3322 _property = (struct __ecereNameSpace__ecere__com__ClassProperty *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&_class->classProperties, name);
3326 if(!_property && origClass->type == 4)
3328 struct __ecereNameSpace__ecere__com__Class * enumClass = __ecereNameSpace__ecere__com__eSystem_FindClass(origClass->module, "enum");
3330 _property = __ecereNameSpace__ecere__com__eClass_FindClassProperty(enumClass, name);
3336 long long __ecereNameSpace__ecere__com__eClass_GetProperty(struct __ecereNameSpace__ecere__com__Class * _class, char * name)
3338 struct __ecereNameSpace__ecere__com__ClassProperty * _property = __ecereNameSpace__ecere__com__eClass_FindClassProperty(_class, name);
3339 char * propName = _property->name;
3341 if(_property && _property->Get && _property->Get != (void *)1)
3343 long long result = _property->Get(_class);
3350 void __ecereNameSpace__ecere__com__eClass_SetProperty(struct __ecereNameSpace__ecere__com__Class * _class, char * name, long long value)
3352 void * __ecereTemp1;
3353 struct __ecereNameSpace__ecere__com__ClassProperty * _property = __ecereNameSpace__ecere__com__eClass_FindClassProperty(_class, name);
3358 ((void (*)(void *, long long))_property->Set)(_class, value);
3362 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&_class->delayedCPValues, (__ecereTemp1 = __ecereNameSpace__ecere__com__eSystem_New0(24), ((struct __ecereNameSpace__ecere__sys__NamedLink64 *)__ecereTemp1)->name = name, ((struct __ecereNameSpace__ecere__sys__NamedLink64 *)__ecereTemp1)->data = value, ((struct __ecereNameSpace__ecere__sys__NamedLink64 *)__ecereTemp1)));
3366 struct __ecereNameSpace__ecere__com__Method * __ecereNameSpace__ecere__com__eClass_FindMethod(struct __ecereNameSpace__ecere__com__Class * _class, char * name, struct __ecereNameSpace__ecere__com__Instance * module)
3370 for(; _class; _class = _class->base)
3372 struct __ecereNameSpace__ecere__com__Method * method;
3374 if(_class->templateClass)
3375 _class = _class->templateClass;
3376 method = (struct __ecereNameSpace__ecere__com__Method *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&_class->methods, name);
3377 if(method && (method->memberAccess == 1 || _class->module == module || !method->dataTypeString))
3379 if(!method->dataTypeString)
3381 if(_class->module != module)
3383 if(method->memberAccess == 1)
3384 module = _class->module;
3387 return (((void *)0));
3396 if(_class->inheritanceAccess == 2 && _class->module != module)
3400 return (((void *)0));
3403 static unsigned int __ecereNameSpace__ecere__com__ConstructInstance(void * instance, struct __ecereNameSpace__ecere__com__Class * _class, struct __ecereNameSpace__ecere__com__Class * from)
3405 if(_class->templateClass)
3406 _class = _class->templateClass;
3407 if(_class->base && from != _class->base)
3409 if(!__ecereNameSpace__ecere__com__ConstructInstance(instance, _class->base, from))
3412 if(_class->Initialize)
3414 void (* Initialize)(struct __ecereNameSpace__ecere__com__Instance * module) = (void *)_class->Initialize;
3416 _class->Initialize = (((void *)0));
3417 Initialize(_class->module);
3419 if(_class->Constructor)
3421 if(!_class->Constructor(instance))
3423 for(; _class; _class = _class->base)
3425 if(_class->templateClass)
3426 _class = _class->templateClass;
3427 if(_class->Destructor)
3428 _class->Destructor(instance);
3433 (_class->templateClass ? _class->templateClass : _class)->count++;
3437 void * __ecereNameSpace__ecere__com__eInstance_New(struct __ecereNameSpace__ecere__com__Class * _class)
3439 struct __ecereNameSpace__ecere__com__Instance * instance = (((void *)0));
3443 instance = __ecereNameSpace__ecere__com___calloc(1, _class->structSize);
3444 if(_class->type == 0)
3446 ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class = _class;
3447 ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_vTbl = _class->_vTbl;
3449 if(!__ecereNameSpace__ecere__com__ConstructInstance(instance, _class, (((void *)0))))
3451 __ecereNameSpace__ecere__com___free(instance);
3452 instance = (((void *)0));
3458 void __ecereNameSpace__ecere__com__eInstance_Evolve(struct __ecereNameSpace__ecere__com__Instance ** instancePtr, struct __ecereNameSpace__ecere__com__Class * _class)
3460 if(_class && instancePtr && *instancePtr)
3462 unsigned int wasApp = 0x0, wasGuiApp = 0x0;
3463 struct __ecereNameSpace__ecere__com__Instance * instance = (struct __ecereNameSpace__ecere__com__Instance *)__ecereNameSpace__ecere__com__eSystem_Renew(*instancePtr, sizeof(unsigned char) * (_class->structSize));
3464 struct __ecereNameSpace__ecere__com__Class * fromClass = ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class;
3466 *instancePtr = instance;
3467 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);
3468 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")))
3470 struct __ecereNameSpace__ecere__com__Instance * module;
3471 struct __ecereNameSpace__ecere__com__Instance * app = (struct __ecereNameSpace__ecere__com__Instance *)instance;
3472 struct __ecereNameSpace__ecere__com__BTNamedLink * link;
3473 struct __ecereNameSpace__ecere__com__Class * _class;
3474 struct __ecereNameSpace__ecere__com__NameSpace * nameSpace;
3476 for(module = ((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 300)))->allModules.first; module; module = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->next)
3477 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application = app;
3478 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)))
3480 struct __ecereNameSpace__ecere__sys__OldLink * t;
3482 ((struct __ecereNameSpace__ecere__com__Class *)link->data)->nameSpace = &((struct __ecereNameSpace__ecere__com__Module *)(((char *)app + 12)))->privateNameSpace;
3483 for(t = ((struct __ecereNameSpace__ecere__com__Class *)link->data)->templatized.first; t; t = t->next)
3485 struct __ecereNameSpace__ecere__com__Class * template = t->data;
3487 template->nameSpace = ((struct __ecereNameSpace__ecere__com__Class *)link->data)->nameSpace;
3490 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)))
3492 struct __ecereNameSpace__ecere__sys__OldLink * t;
3494 ((struct __ecereNameSpace__ecere__com__Class *)link->data)->nameSpace = &((struct __ecereNameSpace__ecere__com__Module *)(((char *)app + 12)))->publicNameSpace;
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__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)))
3503 ((struct __ecereNameSpace__ecere__com__DefinedExpression *)link->data)->nameSpace = &((struct __ecereNameSpace__ecere__com__Module *)(((char *)app + 12)))->privateNameSpace;
3504 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)))
3505 ((struct __ecereNameSpace__ecere__com__DefinedExpression *)link->data)->nameSpace = &((struct __ecereNameSpace__ecere__com__Module *)(((char *)app + 12)))->publicNameSpace;
3506 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)))
3507 ((struct __ecereNameSpace__ecere__com__GlobalFunction *)link->data)->nameSpace = &((struct __ecereNameSpace__ecere__com__Module *)(((char *)app + 12)))->privateNameSpace;
3508 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)))
3509 ((struct __ecereNameSpace__ecere__com__GlobalFunction *)link->data)->nameSpace = &((struct __ecereNameSpace__ecere__com__Module *)(((char *)app + 12)))->publicNameSpace;
3510 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)))
3511 (*nameSpace).parent = &((struct __ecereNameSpace__ecere__com__Module *)(((char *)app + 12)))->privateNameSpace;
3512 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)))
3513 (*nameSpace).parent = &((struct __ecereNameSpace__ecere__com__Module *)(((char *)app + 12)))->publicNameSpace;
3514 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)))
3516 struct __ecereNameSpace__ecere__sys__OldLink * t;
3518 ((struct __ecereNameSpace__ecere__com__Class *)link->data)->nameSpace = &((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 300)))->systemNameSpace;
3519 for(t = ((struct __ecereNameSpace__ecere__com__Class *)link->data)->templatized.first; t; t = t->next)
3521 struct __ecereNameSpace__ecere__com__Class * template = t->data;
3523 template->nameSpace = ((struct __ecereNameSpace__ecere__com__Class *)link->data)->nameSpace;
3526 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)))
3527 ((struct __ecereNameSpace__ecere__com__DefinedExpression *)link->data)->nameSpace = &((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 300)))->systemNameSpace;
3528 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)))
3529 ((struct __ecereNameSpace__ecere__com__GlobalFunction *)link->data)->nameSpace = &((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 300)))->systemNameSpace;
3530 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)))
3531 ((struct __ecereNameSpace__ecere__com__GlobalFunction *)link->data)->nameSpace = &((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 300)))->systemNameSpace;
3532 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)))
3533 (*nameSpace).parent = &((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 300)))->systemNameSpace;
3534 for(_class = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)app + 12)))->classes.first; _class; _class = _class->next)
3536 struct __ecereNameSpace__ecere__sys__OldLink * templateLink;
3538 _class->module = (struct __ecereNameSpace__ecere__com__Instance *)app;
3539 for(templateLink = _class->templatized.first; templateLink; templateLink = templateLink->next)
3541 struct __ecereNameSpace__ecere__com__Class * template = templateLink->data;
3543 template->module = _class->module;
3546 for(module = ((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 300)))->allModules.first; module; module = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->next)
3548 for(_class = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->classes.first; _class; _class = _class->next)
3550 struct __ecereNameSpace__ecere__sys__OldLink * templateLink;
3552 _class->module = module;
3553 for(templateLink = _class->templatized.first; templateLink; templateLink = templateLink->next)
3555 struct __ecereNameSpace__ecere__com__Class * template = templateLink->data;
3557 template->module = _class->module;
3561 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)app + 12)))->application = app;
3564 struct __ecereNameSpace__ecere__com__Class * base;
3566 for(base = ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class; base && base->type == 0 && base->count; base = base->base)
3567 (base->templateClass ? base->templateClass : base)->count--;
3569 ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class = _class;
3570 ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_vTbl = _class->_vTbl;
3571 if(!__ecereNameSpace__ecere__com__ConstructInstance(instance, _class, fromClass))
3573 __ecereNameSpace__ecere__com___free(instance);
3574 *instancePtr = (((void *)0));
3579 void __ecereNameSpace__ecere__com__eInstance_Delete(struct __ecereNameSpace__ecere__com__Instance * instance)
3583 struct __ecereNameSpace__ecere__com__Class * _class, * base;
3584 unsigned int ownVtbl;
3586 ownVtbl = ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_vTbl != ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class->_vTbl;
3587 for(_class = ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class; _class; _class = base)
3589 if(_class->templateClass)
3590 _class = _class->templateClass;
3591 if(_class->destructionWatchOffset)
3593 struct __ecereNameSpace__ecere__sys__OldList * watchers = (struct __ecereNameSpace__ecere__sys__OldList *)((unsigned char *)instance + _class->destructionWatchOffset);
3594 struct __ecereNameSpace__ecere__com__Watcher * watcher, * next;
3596 for(watcher = (*watchers).first; watcher; watcher = next)
3598 next = watcher->next;
3599 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove((&*watchers), watcher);
3600 watcher->callback(watcher->object, instance);
3601 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete((&*watchers), watcher);
3604 base = _class->base;
3605 if(base && base->type == 1000)
3606 base = (((void *)0));
3607 if(_class->Destructor)
3608 _class->Destructor(instance);
3610 for(_class = ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class; _class; _class = base)
3612 if(_class->templateClass)
3613 _class = _class->templateClass;
3614 base = _class->base;
3615 (_class->templateClass ? _class->templateClass : _class)->count--;
3616 if(_class->type == 0 && !_class->count && !_class->module)
3618 __ecereNameSpace__ecere__com__eClass_Unregister(_class);
3623 (__ecereNameSpace__ecere__com__eSystem_Delete(((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_vTbl), ((struct __ecereNameSpace__ecere__com__Instance * )(char * )instance)->_vTbl = 0);
3625 __ecereNameSpace__ecere__com___free(instance);
3629 struct __ecereNameSpace__ecere__com__Property * __ecereNameSpace__ecere__com__eClass_FindProperty(struct __ecereNameSpace__ecere__com__Class * _class, char * name, struct __ecereNameSpace__ecere__com__Instance * module)
3633 for(; _class; _class = _class->base)
3635 struct __ecereNameSpace__ecere__com__BTNamedLink * link;
3637 if(_class->templateClass)
3638 _class = _class->templateClass;
3639 link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&_class->prop, name);
3642 struct __ecereNameSpace__ecere__com__Property * _property = (struct __ecereNameSpace__ecere__com__Property *)link->data;
3644 if(_property->memberAccess == 1 || _class->module == module || !_property->dataTypeString)
3646 if(!_property->dataTypeString)
3648 if(_class->module != module)
3650 if(_property->memberAccess == 1)
3651 module = _class->module;
3654 return (((void *)0));
3664 if(_class->inheritanceAccess == 2 && _class->module != module)
3668 return (((void *)0));
3671 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)
3673 struct __ecereNameSpace__ecere__com__BTNamedLink * link;
3674 struct __ecereNameSpace__ecere__com__DataMember * dataMember;
3676 link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(alist, name);
3679 dataMember = link->data;
3680 if(dataMember->type == 0 && (dataMember->memberAccess == 1 || searchPrivate || !dataMember->dataTypeString))
3683 *offset += dataMember->offset;
3685 *id = dataMember->id;
3688 return (((void *)0));
3690 for(dataMember = list->first; dataMember; dataMember = dataMember->next)
3692 if(!dataMember->isProperty && (dataMember->memberAccess == 1 || searchPrivate) && !dataMember->name && (dataMember->type == 1 || dataMember->type == 2))
3694 struct __ecereNameSpace__ecere__com__DataMember * childMember;
3696 if(subMemberStackPos)
3697 subMemberStack[(*subMemberStackPos)++] = dataMember;
3698 childMember = __ecereNameSpace__ecere__com__FindDataMember(&dataMember->members, &dataMember->membersAlpha, name, offset, id, searchPrivate, subMemberStack, subMemberStackPos);
3702 *offset += dataMember->offset;
3704 *id += dataMember->id;
3707 if(subMemberStackPos)
3708 (*subMemberStackPos)--;
3711 return (((void *)0));
3714 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)
3716 struct __ecereNameSpace__ecere__com__DataMember * dataMember = (((void *)0));
3718 if(subMemberStackPos)
3719 *subMemberStackPos = 0;
3722 for(; _class; _class = _class->base)
3724 if(_class->templateClass)
3725 _class = _class->templateClass;
3726 dataMember = __ecereNameSpace__ecere__com__FindDataMember(&_class->membersAndProperties, &_class->members, name, (((void *)0)), (((void *)0)), _class->module == module, subMemberStack, subMemberStackPos);
3729 if(!dataMember->dataTypeString)
3731 if(_class->module != module)
3733 if(dataMember->memberAccess == 1)
3734 module = _class->module;
3737 return (((void *)0));
3740 dataMember = (((void *)0));
3744 dataMember->_class = _class->templateClass ? _class->templateClass : _class;
3748 if(_class->inheritanceAccess == 2 && _class->module != module)
3755 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)
3757 struct __ecereNameSpace__ecere__com__DataMember * dataMember = (((void *)0));
3759 if(subMemberStackPos)
3760 *subMemberStackPos = 0;
3765 for(; _class; _class = _class->base)
3767 if(_class->templateClass)
3768 _class = _class->templateClass;
3769 dataMember = __ecereNameSpace__ecere__com__FindDataMember(&_class->membersAndProperties, &_class->members, name, offset, (((void *)0)), _class->module == module, subMemberStack, subMemberStackPos);
3772 if(!dataMember->dataTypeString)
3774 if(_class->module != module)
3776 if(dataMember->memberAccess == 1)
3777 module = _class->module;
3780 return (((void *)0));
3783 dataMember = (((void *)0));
3787 dataMember->_class = _class;
3791 if(_class->inheritanceAccess == 2 && _class->module != module)
3798 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)
3800 struct __ecereNameSpace__ecere__com__DataMember * dataMember = (((void *)0));
3802 if(subMemberStackPos)
3803 *subMemberStackPos = 0;
3806 for(; _class; _class = _class->base)
3808 if(_class->templateClass)
3809 _class = _class->templateClass;
3810 dataMember = __ecereNameSpace__ecere__com__FindDataMember(&_class->membersAndProperties, &_class->members, name, (((void *)0)), id, _class->module == module, subMemberStack, subMemberStackPos);
3813 if(!dataMember->dataTypeString)
3815 if(_class->module != module)
3817 if(dataMember->memberAccess == 1)
3818 module = _class->module;
3821 return (((void *)0));
3824 dataMember = (((void *)0));
3828 dataMember->_class = _class;
3832 if(_class->inheritanceAccess == 2 && _class->module != module)
3839 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)
3843 *curMember = (*curMember)->next;
3844 if(subMemberStackPos && *subMemberStackPos > 0 && subMemberStack[*subMemberStackPos - 1]->type == 1)
3846 *curMember = subMemberStack[--(*subMemberStackPos)];
3847 *curMember = (*curMember)->next;
3849 if(subMemberStackPos && *subMemberStackPos > 0)
3851 while(*curMember && ((*curMember)->memberAccess == 2))
3852 *curMember = (*curMember)->next;
3855 while(*curMember && (*curMember)->name)
3857 struct __ecereNameSpace__ecere__com__DataMember * dataMember = __ecereNameSpace__ecere__com__eClass_FindDataMember(_class, (*curMember)->name, (((void *)0)), (((void *)0)), (((void *)0)));
3860 dataMember = (struct __ecereNameSpace__ecere__com__DataMember *)__ecereNameSpace__ecere__com__eClass_FindProperty(_class, (*curMember)->name, (((void *)0)));
3861 if(dataMember && dataMember->memberAccess != 2)
3863 *curMember = dataMember;
3867 *curMember = (*curMember)->next;
3869 if(subMemberStackPos)
3871 while((*curMember) && !(*curMember)->isProperty && !(*curMember)->name && ((*curMember)->type == 2 || (*curMember)->type == 1))
3873 subMemberStack[(*subMemberStackPos)++] = *curMember;
3874 *curMember = (*curMember)->members.first;
3875 while(*curMember && ((*curMember)->memberAccess == 2))
3876 *curMember = (*curMember)->next;
3884 if(subMemberStackPos && *subMemberStackPos)
3886 *curMember = subMemberStack[--(*subMemberStackPos)];
3887 *curMember = (*curMember)->next;
3891 struct __ecereNameSpace__ecere__com__Class * lastCurClass = *curClass;
3893 if(*curClass == _class)
3895 for(*curClass = _class; (*curClass)->base != lastCurClass && (*curClass)->base->type != 1000 && (*curClass)->inheritanceAccess != 2; *curClass = (*curClass)->base)
3897 *curMember = (*curClass)->membersAndProperties.first;
3899 if(subMemberStackPos && *subMemberStackPos > 0)
3901 while(*curMember && ((*curMember)->memberAccess == 2))
3902 *curMember = (*curMember)->next;
3905 while(*curMember && (*curMember)->name)
3907 struct __ecereNameSpace__ecere__com__DataMember * dataMember = __ecereNameSpace__ecere__com__eClass_FindDataMember(_class, (*curMember)->name, (((void *)0)), (((void *)0)), (((void *)0)));
3910 dataMember = (struct __ecereNameSpace__ecere__com__DataMember *)__ecereNameSpace__ecere__com__eClass_FindProperty(_class, (*curMember)->name, (((void *)0)));
3911 if(dataMember && dataMember->memberAccess != 2)
3913 *curMember = dataMember;
3917 *curMember = (*curMember)->next;
3919 if(subMemberStackPos)
3921 while((*curMember) && !(*curMember)->isProperty && !(*curMember)->name && ((*curMember)->type == 2 || (*curMember)->type == 1))
3923 subMemberStack[(*subMemberStackPos)++] = *curMember;
3924 *curMember = (*curMember)->members.first;
3925 while(*curMember && (*curMember)->memberAccess == 2)
3926 *curMember = (*curMember)->next;
3933 void __ecereNameSpace__ecere__com__eInstance_SetMethod(struct __ecereNameSpace__ecere__com__Instance * instance, char * name, void * function)
3935 if(instance && name)
3937 struct __ecereNameSpace__ecere__com__Class * _class;
3939 for(_class = ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class; _class; _class = _class->base)
3941 struct __ecereNameSpace__ecere__com__Method * method = (struct __ecereNameSpace__ecere__com__Method *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&_class->methods, name);
3943 if(method && method->type == 1)
3945 if(((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_vTbl == ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class->_vTbl)
3947 ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_vTbl = __ecereNameSpace__ecere__com___malloc(sizeof(void *) * ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class->vTblSize);
3948 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);
3950 ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_vTbl[method->vid] = function ? function : __ecereNameSpace__ecere__com__DefaultFunction;
3956 unsigned int __ecereNameSpace__ecere__com__eInstance_IsDerived(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Class * from)
3960 struct __ecereNameSpace__ecere__com__Class * _class = ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class;
3962 for(; _class; _class = _class->base)
3971 void __ecereNameSpace__ecere__com__eInstance_IncRef(struct __ecereNameSpace__ecere__com__Instance * instance)
3974 ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_refCount++;
3977 void __ecereNameSpace__ecere__com__eInstance_DecRef(struct __ecereNameSpace__ecere__com__Instance * instance)
3981 ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_refCount--;
3982 if(((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_refCount <= 0)
3984 __ecereNameSpace__ecere__com__eInstance_Delete(instance);
3989 static void __ecereNameSpace__ecere__com__FixOffsets(struct __ecereNameSpace__ecere__com__Class * _class)
3991 struct __ecereNameSpace__ecere__sys__OldLink * deriv;
3993 _class->structSize += _class->base->structSize - _class->offset;
3994 _class->offset = _class->base->structSize;
3995 for(deriv = _class->derivatives.first; deriv; deriv = deriv->next)
3996 __ecereNameSpace__ecere__com__FixOffsets(deriv->data);
3999 void __ecereNameSpace__ecere__com__eClass_Resize(struct __ecereNameSpace__ecere__com__Class * _class, int newSize)
4001 struct __ecereNameSpace__ecere__sys__OldLink * deriv;
4003 _class->structSize = newSize;
4004 for(deriv = _class->derivatives.first; deriv; deriv = deriv->next)
4005 __ecereNameSpace__ecere__com__FixOffsets(deriv->data);
4008 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)
4010 void * __ecereTemp1;
4014 if(!__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&_class->members, name))
4016 struct __ecereNameSpace__ecere__com__DataMember * dataMember;
4020 int __simpleStruct0;
4022 _class->structAlignment = (__simpleStruct0 = _class->structAlignment, (__simpleStruct0 > alignment) ? __simpleStruct0 : alignment);
4023 if(_class->memberOffset % alignment)
4024 _class->memberOffset += alignment - (_class->memberOffset % alignment);
4026 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));
4027 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&_class->membersAndProperties, dataMember);
4028 _class->memberOffset += size;
4029 __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)));
4033 return (((void *)0));
4036 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)
4038 void * __ecereTemp1;
4040 if(name && !__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&member->membersAlpha, name))
4042 struct __ecereNameSpace__ecere__com__DataMember * dataMember;
4046 int __simpleStruct0;
4048 member->structAlignment = (__simpleStruct0 = member->structAlignment, (__simpleStruct0 > alignment) ? __simpleStruct0 : alignment);
4049 if(member->memberOffset % alignment)
4050 member->memberOffset += alignment - (member->memberOffset % alignment);
4052 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));
4053 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&member->members, dataMember);
4054 if(member->type == 1)
4056 if(size > member->memberOffset)
4057 member->memberOffset = size;
4060 member->memberOffset += size;
4061 __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)));
4064 return (((void *)0));
4067 struct __ecereNameSpace__ecere__com__DataMember * __ecereNameSpace__ecere__com__eMember_New(int type, int declMode)
4069 void * __ecereTemp1;
4071 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));
4074 static void __ecereNameSpace__ecere__com__SetMemberClass(struct __ecereNameSpace__ecere__com__DataMember * member, struct __ecereNameSpace__ecere__com__Class * _class)
4076 struct __ecereNameSpace__ecere__com__DataMember * dataMember;
4078 member->_class = _class;
4079 for(dataMember = member->members.first; dataMember; dataMember = dataMember->next)
4080 __ecereNameSpace__ecere__com__SetMemberClass(dataMember, _class);
4083 unsigned int __ecereNameSpace__ecere__com__eMember_AddMember(struct __ecereNameSpace__ecere__com__DataMember * addTo, struct __ecereNameSpace__ecere__com__DataMember * dataMember)
4085 void * __ecereTemp1;
4086 int __simpleStruct0, __simpleStruct1;
4088 if(dataMember->name && __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&addTo->membersAlpha, dataMember->name))
4090 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&addTo->members, dataMember);
4091 if(dataMember->name)
4092 __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)));
4093 dataMember->_class = addTo->_class;
4094 dataMember->id = addTo->memberID;
4095 if(dataMember->type == 1)
4096 addTo->memberID += 1;
4098 addTo->memberID += dataMember->memberID;
4099 addTo->structAlignment = (__simpleStruct0 = addTo->structAlignment, __simpleStruct1 = dataMember->structAlignment, (__simpleStruct0 > __simpleStruct1) ? __simpleStruct0 : __simpleStruct1);
4100 dataMember->offset = (addTo->type == 1) ? 0 : addTo->memberOffset;
4101 if(addTo->type == 1)
4103 if(dataMember->memberOffset > addTo->memberOffset)
4104 addTo->memberOffset = dataMember->memberOffset;
4107 addTo->memberOffset += dataMember->memberOffset;
4111 unsigned int __ecereNameSpace__ecere__com__eClass_AddMember(struct __ecereNameSpace__ecere__com__Class * _class, struct __ecereNameSpace__ecere__com__DataMember * dataMember)
4113 void * __ecereTemp1;
4114 int __simpleStruct0, __simpleStruct1;
4116 if(!_class || _class->comRedefinition || (dataMember->name && __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&_class->members, dataMember->name)))
4118 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&_class->membersAndProperties, dataMember);
4119 if(dataMember->name)
4120 __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)));
4121 __ecereNameSpace__ecere__com__SetMemberClass(dataMember, _class);
4122 dataMember->id = _class->memberID;
4123 _class->structAlignment = (__simpleStruct0 = _class->structAlignment, __simpleStruct1 = dataMember->structAlignment, (__simpleStruct0 > __simpleStruct1) ? __simpleStruct0 : __simpleStruct1);
4124 if(dataMember->type == 1)
4125 _class->memberID += 1;
4127 _class->memberID += dataMember->memberID;
4128 dataMember->offset = _class->memberOffset;
4129 _class->memberOffset += dataMember->memberOffset;
4133 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)
4135 void * __ecereTemp1;
4137 if(_class && name && !__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&_class->members, name))
4141 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);
4143 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&_class->membersAndProperties, bitMember);
4146 bitMember->pos = (bitPos == -1) ? _class->memberOffset : bitPos;
4147 bitMember->size = bitSize;
4148 _class->memberOffset = bitMember->pos + bitMember->size;
4149 for(c = 0; c < bitSize; c++)
4155 bitMember->mask = mask << bitMember->pos;
4157 __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)));
4160 return (((void *)0));
4163 static struct __ecereNameSpace__ecere__com__Instance * __ecereNameSpace__ecere__com__Module_Load(struct __ecereNameSpace__ecere__com__Instance * fromModule, char * name, int importAccess, unsigned int ensureCOM)
4165 void * __ecereTemp1;
4166 unsigned int (stdcall * Load)(struct __ecereNameSpace__ecere__com__Instance * module) = (((void *)0));
4167 unsigned int (stdcall * Unload)(struct __ecereNameSpace__ecere__com__Instance * module) = (((void *)0));
4168 struct __ecereNameSpace__ecere__com__Instance * module;
4170 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)
4172 if(!strcmp(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->name, name))
4175 if(ensureCOM && (!strcmp(name, "ecereCOM") || !strcmp(name, "ecere")))
4177 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)
4179 if(!strcmp(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->name, "ecere") || !strcmp(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->name, "ecereCOM"))
4185 void * library = (((void *)0));
4187 if(ensureCOM && !strcmp(name, "ecereCOM"))
4189 Load = __ecereDll_Load_ecere;
4190 Unload = __ecereDll_Unload_ecere;
4194 library = Instance_Module_Load(name, &Load, &Unload);
4198 module = (struct __ecereNameSpace__ecere__com__Instance *)__ecereNameSpace__ecere__com__eInstance_New(__ecereNameSpace__ecere__com__eSystem_FindClass(fromModule, "Module"));
4199 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)fromModule + 12)))->application;
4200 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->library = library;
4201 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->name = __ecereNameSpace__ecere__sys__CopyString(name);
4202 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->Unload = Unload;
4203 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->origImportType = 0;
4206 __ecereNameSpace__ecere__com__eInstance_Delete((struct __ecereNameSpace__ecere__com__Instance *)module);
4207 module = (((void *)0));
4210 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)fromModule + 12)))->application + 300)))->allModules, module);
4212 if(ensureCOM && !strcmp(name, "ecere") && module)
4214 name = !strcmp(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->name, "ecereCOM") ? "ecere" : "ecereCOM";
4215 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))
4217 struct __ecereNameSpace__ecere__com__Instance * module;
4219 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)
4221 if(!strcmp(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->name, name))
4226 Load = __ecereDll_Load_ecere;
4227 Unload = __ecereDll_Unload_ecere;
4228 module = (struct __ecereNameSpace__ecere__com__Instance *)__ecereNameSpace__ecere__com__eInstance_New(__ecereNameSpace__ecere__com__eSystem_FindClass(fromModule, "Module"));
4229 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)fromModule + 12)))->application;
4230 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->library = (((void *)0));
4231 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->name = __ecereNameSpace__ecere__sys__CopyString(name);
4232 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->Unload = Unload;
4235 __ecereNameSpace__ecere__com__eInstance_Delete((struct __ecereNameSpace__ecere__com__Instance *)module);
4236 module = (((void *)0));
4238 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)fromModule + 12)))->application + 300)))->allModules, module);
4244 __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)));
4246 module->_refCount++;
4254 __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)));
4256 module->_refCount++;
4261 struct __ecereNameSpace__ecere__com__Instance * __ecereNameSpace__ecere__com__eModule_Load(struct __ecereNameSpace__ecere__com__Instance * fromModule, char * name, int importAccess)
4263 return __ecereNameSpace__ecere__com__Module_Load(fromModule, name, importAccess, 0x1);
4266 struct __ecereNameSpace__ecere__com__Instance * __ecereNameSpace__ecere__com__eModule_LoadStrict(struct __ecereNameSpace__ecere__com__Instance * fromModule, char * name, int importAccess)
4268 return __ecereNameSpace__ecere__com__Module_Load(fromModule, name, importAccess, 0x0);
4271 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))
4273 void * __ecereTemp1;
4274 struct __ecereNameSpace__ecere__com__Instance * module;
4276 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)
4278 if(!strcmp(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->name, name))
4285 module = (struct __ecereNameSpace__ecere__com__Instance *)__ecereNameSpace__ecere__com__eInstance_New(__ecereNameSpace__ecere__com__eSystem_FindClass(fromModule, "Module"));
4286 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)fromModule + 12)))->application;
4287 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->name = __ecereNameSpace__ecere__sys__CopyString(name);
4288 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->origImportType = 1;
4289 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->Unload = (void *)Unload;
4292 __ecereNameSpace__ecere__com__eInstance_Delete((struct __ecereNameSpace__ecere__com__Instance *)module);
4293 module = (((void *)0));
4296 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)fromModule + 12)))->application + 300)))->allModules, module);
4302 __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)));
4304 module->_refCount++;
4309 void __ecereNameSpace__ecere__com__eModule_Unload(struct __ecereNameSpace__ecere__com__Instance * fromModule, struct __ecereNameSpace__ecere__com__Instance * module)
4311 struct __ecereNameSpace__ecere__sys__OldLink * m;
4313 for(m = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)fromModule + 12)))->modules.first; m; m = m->next)
4315 if(m->data == module)
4320 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)fromModule + 12)))->modules, m);
4321 (__ecereNameSpace__ecere__com__eInstance_DecRef(module), module = 0);
4325 void __ecereNameSpace__ecere__com__eEnum_AddFixedValue(struct __ecereNameSpace__ecere__com__Class * _class, char * string, int value)
4327 void * __ecereTemp1;
4329 if(_class && _class->type == 4)
4331 struct __ecereNameSpace__ecere__com__EnumClassData * data = (struct __ecereNameSpace__ecere__com__EnumClassData *)_class->data;
4332 struct __ecereNameSpace__ecere__sys__NamedLink * item;
4334 for(item = data->values.first; item; item = item->next)
4335 if(!strcmp(item->name, string))
4339 __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)));
4340 if(value > data->largest)
4341 data->largest = value;
4346 int __ecereNameSpace__ecere__com__eEnum_AddValue(struct __ecereNameSpace__ecere__com__Class * _class, char * string)
4348 void * __ecereTemp1;
4350 if(_class && _class->type == 4)
4352 struct __ecereNameSpace__ecere__com__EnumClassData * data = (struct __ecereNameSpace__ecere__com__EnumClassData *)_class->data;
4353 int value = data->largest + 1;
4354 struct __ecereNameSpace__ecere__sys__NamedLink * item;
4356 for(item = data->values.first; item; item = item->next)
4357 if(!strcmp(item->name, string))
4361 __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)));
4362 if(value > data->largest)
4363 data->largest = value;
4370 static void __ecereNameSpace__ecere__com__NameSpace_Free(struct __ecereNameSpace__ecere__com__NameSpace * parentNameSpace)
4372 struct __ecereNameSpace__ecere__com__NameSpace * nameSpace;
4374 (__ecereNameSpace__ecere__com__eSystem_Delete(parentNameSpace->name), parentNameSpace->name = 0);
4375 while((nameSpace = (struct __ecereNameSpace__ecere__com__NameSpace *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&parentNameSpace->nameSpaces)))
4377 __ecereNameSpace__ecere__com__NameSpace_Free(nameSpace);
4378 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&parentNameSpace->nameSpaces, (struct __ecereNameSpace__ecere__sys__BTNode *)nameSpace);
4382 static void __ecereNameSpace__ecere__com__Application_Destructor(struct __ecereNameSpace__ecere__com__Instance * app)
4384 if(((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 300)))->parsedCommand)
4386 (__ecereNameSpace__ecere__com__eSystem_Delete(((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 300)))->argv), ((struct __ecereNameSpace__ecere__com__Application * )(((char * )app + 300)))->argv = 0);
4387 (__ecereNameSpace__ecere__com__eSystem_Delete(((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 300)))->parsedCommand), ((struct __ecereNameSpace__ecere__com__Application * )(((char * )app + 300)))->parsedCommand = 0);
4391 static unsigned int __ecereNameSpace__ecere__com__Module_Constructor(struct __ecereNameSpace__ecere__com__Instance * module)
4393 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->privateNameSpace.classes.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
4394 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->privateNameSpace.defines.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
4395 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->privateNameSpace.functions.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
4396 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->privateNameSpace.nameSpaces.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
4397 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->publicNameSpace.classes.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
4398 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->publicNameSpace.defines.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
4399 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->publicNameSpace.functions.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
4400 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->publicNameSpace.nameSpaces.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
4404 static void __ecereNameSpace__ecere__com__Module_Destructor(struct __ecereNameSpace__ecere__com__Instance * module)
4406 struct __ecereNameSpace__ecere__com__Class * _class;
4407 struct __ecereNameSpace__ecere__com__DefinedExpression * def;
4408 struct __ecereNameSpace__ecere__com__GlobalFunction * function;
4409 struct __ecereNameSpace__ecere__com__Instance * m;
4410 struct __ecereNameSpace__ecere__com__SubModule * handle;
4412 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)
4414 struct __ecereNameSpace__ecere__com__SubModule * next;
4416 for(handle = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)m + 12)))->modules.first; handle; handle = next)
4418 next = handle->next;
4419 if(handle->module == module)
4420 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)m + 12)))->modules, handle);
4423 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->Unload)
4425 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->origImportType == 1)
4427 unsigned int (* Unload)(struct __ecereNameSpace__ecere__com__Instance * module) = (void *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->Unload;
4433 unsigned int (stdcall * Unload)(struct __ecereNameSpace__ecere__com__Instance * module) = (void *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->Unload;
4439 struct __ecereNameSpace__ecere__com__Instance * ourWorld = __ecereClass___ecereNameSpace__ecere__com__Class->module;
4440 void * ourHandle = (((void *)0));
4442 while((handle = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->modules.last))
4444 struct __ecereNameSpace__ecere__com__Instance * depModule = handle->module;
4446 if(depModule == ourWorld)
4448 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->modules, handle);
4453 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->modules, handle);
4454 (__ecereNameSpace__ecere__com__eInstance_DecRef(depModule), depModule = 0);
4459 (__ecereNameSpace__ecere__com__eSystem_Delete(ourHandle), ourHandle = 0);
4460 (__ecereNameSpace__ecere__com__eInstance_DecRef(ourWorld), ourWorld = 0);
4463 for(; (_class = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->classes.first); )
4465 if(_class->nameSpace)
4467 struct __ecereNameSpace__ecere__com__BTNamedLink * classLink = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&(*_class->nameSpace).classes, _class->name);
4468 struct __ecereNameSpace__ecere__sys__OldLink * t;
4470 for(t = _class->templatized.first; t; t = t->next)
4472 struct __ecereNameSpace__ecere__com__Class * template = t->data;
4473 struct __ecereNameSpace__ecere__com__BTNamedLink * link;
4475 link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&(*template->nameSpace).classes, template->name);
4476 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&(*template->nameSpace).classes, (struct __ecereNameSpace__ecere__sys__BTNode *)link);
4477 template->nameSpace = (((void *)0));
4479 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&(*_class->nameSpace).classes, (struct __ecereNameSpace__ecere__sys__BTNode *)classLink);
4480 _class->nameSpace = (((void *)0));
4482 _class->module = (((void *)0));
4483 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->classes, _class);
4484 if(!_class->count || _class->type != 0)
4485 __ecereNameSpace__ecere__com__eClass_Unregister(_class);
4490 for(; (def = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->defines.first); )
4494 struct __ecereNameSpace__ecere__com__BTNamedLink * defLink;
4496 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)))
4497 if(defLink->data == def)
4499 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&(*def->nameSpace).defines, (struct __ecereNameSpace__ecere__sys__BTNode *)defLink);
4503 (__ecereNameSpace__ecere__com__eSystem_Delete(def->name), def->name = 0);
4504 (__ecereNameSpace__ecere__com__eSystem_Delete(def->value), def->value = 0);
4505 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->defines, def);
4507 for(; (function = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->functions.first); )
4509 if(function->nameSpace)
4511 struct __ecereNameSpace__ecere__com__BTNamedLink * functionLink;
4513 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)))
4514 if(functionLink->data == function)
4516 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&(*function->nameSpace).functions, (struct __ecereNameSpace__ecere__sys__BTNode *)functionLink);
4520 (__ecereNameSpace__ecere__com__eSystem_Delete(function->name), function->name = 0);
4521 (__ecereNameSpace__ecere__com__eSystem_Delete(function->dataTypeString), function->dataTypeString = 0);
4522 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->functions, function);
4524 (__ecereNameSpace__ecere__com__eSystem_Delete(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->name), ((struct __ecereNameSpace__ecere__com__Module * )(((char * )module + 12)))->name = 0);
4525 __ecereNameSpace__ecere__com__NameSpace_Free(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->privateNameSpace);
4526 __ecereNameSpace__ecere__com__NameSpace_Free(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->publicNameSpace);
4527 if(module != ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application)
4528 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove(&((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application + 300)))->allModules, module);
4530 __ecereNameSpace__ecere__com__NameSpace_Free(&((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application + 300)))->systemNameSpace);
4531 Instance_Module_Free(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->library);
4534 static int __ecereNameSpace__ecere__com__GetEnumSize(struct __ecereNameSpace__ecere__com__Class * _class)
4536 struct __ecereNameSpace__ecere__com__EnumClassData * data = (struct __ecereNameSpace__ecere__com__EnumClassData *)_class->data;
4538 return data->largest + 1;
4541 char * strlwr(char * string)
4545 for(c = 0; string[c]; c++)
4546 if(string[c] >= 'A' && string[c] <= 'Z')
4547 string[c] += 'a' - 'A';
4551 char * strupr(char * string)
4555 for(c = 0; string[c]; c++)
4556 if(string[c] >= 'a' && string[c] <= 'z')
4557 string[c] -= 'a' - 'A';
4561 struct __ecereNameSpace__ecere__com__DefinedExpression * __ecereNameSpace__ecere__com__eSystem_RegisterDefine(char * name, char * value, struct __ecereNameSpace__ecere__com__Instance * module, int declMode)
4563 void * __ecereTemp1;
4564 struct __ecereNameSpace__ecere__com__NameSpace * nameSpace = (((void *)0));
4567 nameSpace = (declMode == 1) ? &((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->publicNameSpace : &((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->privateNameSpace;
4569 nameSpace = &((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application + 300)))->systemNameSpace;
4572 for(c = 0; name[c]; c++)
4574 if(name[c] == '.' || (name[c] == ':' && name[c + 1] == ':'))
4576 struct __ecereNameSpace__ecere__com__NameSpace * newSpace;
4577 char * spaceName = __ecereNameSpace__ecere__com___malloc(c - start + 1);
4579 strncpy(spaceName, name + start, c - start);
4580 spaceName[c - start] = '\0';
4581 newSpace = (struct __ecereNameSpace__ecere__com__NameSpace *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&(*nameSpace).nameSpaces, spaceName);
4584 newSpace = __ecereNameSpace__ecere__com__eSystem_New0(sizeof(struct __ecereNameSpace__ecere__com__NameSpace) * (1));
4585 (*newSpace).classes.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
4586 (*newSpace).defines.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
4587 (*newSpace).functions.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
4588 (*newSpace).nameSpaces.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
4589 (*newSpace).name = spaceName;
4590 (*newSpace).parent = nameSpace;
4591 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&(*nameSpace).nameSpaces, (struct __ecereNameSpace__ecere__sys__BTNode *)newSpace);
4594 (__ecereNameSpace__ecere__com__eSystem_Delete(spaceName), spaceName = 0);
4595 nameSpace = newSpace;
4604 if(c - start && !__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&(*nameSpace).defines, name + start))
4606 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);
4608 __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)));
4609 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->defines, def);
4612 return (((void *)0));
4615 struct __ecereNameSpace__ecere__com__GlobalFunction * __ecereNameSpace__ecere__com__eSystem_RegisterFunction(char * name, char * type, void * func, struct __ecereNameSpace__ecere__com__Instance * module, int declMode)
4617 void * __ecereTemp1;
4618 struct __ecereNameSpace__ecere__com__NameSpace * nameSpace = (((void *)0));
4621 nameSpace = (declMode == 1) ? &((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->publicNameSpace : &((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->privateNameSpace;
4623 nameSpace = &((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application + 300)))->systemNameSpace;
4626 for(c = 0; name[c]; c++)
4628 if(name[c] == '.' || (name[c] == ':' && name[c + 1] == ':'))
4630 struct __ecereNameSpace__ecere__com__NameSpace * newSpace;
4631 char * spaceName = __ecereNameSpace__ecere__com___malloc(c - start + 1);
4633 strncpy(spaceName, name + start, c - start);
4634 spaceName[c - start] = '\0';
4635 newSpace = (struct __ecereNameSpace__ecere__com__NameSpace *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&(*nameSpace).nameSpaces, spaceName);
4638 newSpace = __ecereNameSpace__ecere__com__eSystem_New0(sizeof(struct __ecereNameSpace__ecere__com__NameSpace) * (1));
4639 (*newSpace).classes.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
4640 (*newSpace).defines.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
4641 (*newSpace).functions.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
4642 (*newSpace).nameSpaces.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
4643 (*newSpace).name = spaceName;
4644 (*newSpace).parent = nameSpace;
4645 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&(*nameSpace).nameSpaces, (struct __ecereNameSpace__ecere__sys__BTNode *)newSpace);
4648 (__ecereNameSpace__ecere__com__eSystem_Delete(spaceName), spaceName = 0);
4649 nameSpace = newSpace;
4658 if(c - start && !__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&(*nameSpace).functions, name + start))
4660 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);
4662 __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)));
4663 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->functions, function);
4666 return (((void *)0));
4669 struct __ecereNameSpace__ecere__com__DefinedExpression * __ecereNameSpace__ecere__com__eSystem_FindDefine(struct __ecereNameSpace__ecere__com__Instance * module, char * name)
4673 struct __ecereNameSpace__ecere__com__BTNamedLink * link;
4675 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);
4678 link = __ecereNameSpace__ecere__com__SearchModule(module, name, &(*((struct __ecereNameSpace__ecere__com__NameSpace *)0)).defines, 0x1);
4682 return (((void *)0));
4685 struct __ecereNameSpace__ecere__com__GlobalFunction * __ecereNameSpace__ecere__com__eSystem_FindFunction(struct __ecereNameSpace__ecere__com__Instance * module, char * name)
4689 struct __ecereNameSpace__ecere__com__BTNamedLink * link;
4691 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);
4694 link = __ecereNameSpace__ecere__com__SearchModule(module, name, &(*((struct __ecereNameSpace__ecere__com__NameSpace *)0)).functions, 0x1);
4698 return (((void *)0));
4701 void * __ecereNameSpace__ecere__com__eSystem_Renew(void * memory, unsigned int size)
4703 return __ecereNameSpace__ecere__com___realloc(memory, size);
4706 void * __ecereNameSpace__ecere__com__eSystem_Renew0(void * memory, unsigned int size)
4708 return __ecereNameSpace__ecere__com___crealloc(memory, size);
4711 void * __ecereNameSpace__ecere__com__eSystem_New(unsigned int size)
4713 return __ecereNameSpace__ecere__com___malloc(size);
4716 void * __ecereNameSpace__ecere__com__eSystem_New0(unsigned int size)
4718 return __ecereNameSpace__ecere__com___calloc(1, size);
4721 void __ecereNameSpace__ecere__com__eSystem_Delete(void * memory)
4724 __ecereNameSpace__ecere__com___free(memory);
4727 void __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property)
4729 if(instance && _property && _property->selfWatchable)
4731 struct __ecereNameSpace__ecere__com__Class * _class;
4733 for(_class = ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class; _class; _class = _class->base)
4735 struct __ecereNameSpace__ecere__com__SelfWatcher * selfWatcher, * next;
4737 for(selfWatcher = _class->selfWatchers.first; selfWatcher; selfWatcher = next)
4739 next = selfWatcher->next;
4740 if(selfWatcher->_property == _property)
4741 selfWatcher->callback(instance);
4747 void __ecereNameSpace__ecere__com__eInstance_FireWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property)
4749 if(instance && _property && _property->isWatchable)
4751 struct __ecereNameSpace__ecere__sys__OldList * watchers = (struct __ecereNameSpace__ecere__sys__OldList *)((unsigned char *)instance + _property->watcherOffset);
4752 struct __ecereNameSpace__ecere__com__Watcher * watcher, * next;
4754 for(watcher = (*watchers).first; watcher; watcher = next)
4756 next = watcher->next;
4757 watcher->callback(watcher->object, instance);
4762 void __ecereNameSpace__ecere__com__eProperty_Watchable(struct __ecereNameSpace__ecere__com__Property * _property)
4764 if(!_property->isWatchable)
4766 struct __ecereNameSpace__ecere__com__Class * _class = _property->_class;
4768 if(!_class->computeSize)
4770 _property->watcherOffset = _class->structSize;
4771 _class->structSize += sizeof(struct __ecereNameSpace__ecere__sys__OldList);
4772 __ecereNameSpace__ecere__com__FixDerivativesBase(_class, _class);
4774 _property->isWatchable = 0x1;
4778 void __ecereNameSpace__ecere__com__eClass_DestructionWatchable(struct __ecereNameSpace__ecere__com__Class * _class)
4780 if(!_class->destructionWatchOffset)
4782 _class->destructionWatchOffset = _class->structSize;
4783 _class->structSize += sizeof(struct __ecereNameSpace__ecere__sys__OldList);
4784 __ecereNameSpace__ecere__com__FixDerivativesBase(_class, _class);
4788 void __ecereNameSpace__ecere__com__eProperty_SelfWatch(struct __ecereNameSpace__ecere__com__Class * _class, char * name, void (* callback)(void *))
4790 void * __ecereTemp1;
4794 struct __ecereNameSpace__ecere__com__Property * _property = __ecereNameSpace__ecere__com__eClass_FindProperty(_class, name, _class->module);
4797 _property = __ecereNameSpace__ecere__com__eClass_AddProperty(_class, name, (((void *)0)), (((void *)0)), (((void *)0)), 4);
4798 __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)));
4799 _property->selfWatchable = 0x1;
4803 void __ecereNameSpace__ecere__com__eInstance_Watch(void * instance, struct __ecereNameSpace__ecere__com__Property * _property, void * object, void (* callback)(void *, void *))
4805 void * __ecereTemp1;
4807 if(_property->isWatchable)
4809 struct __ecereNameSpace__ecere__sys__OldList * watchers = (struct __ecereNameSpace__ecere__sys__OldList *)((unsigned char *)instance + _property->watcherOffset);
4811 __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)));
4815 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 *))
4817 void * __ecereTemp1;
4818 struct __ecereNameSpace__ecere__sys__OldList * watchers = (struct __ecereNameSpace__ecere__sys__OldList *)((unsigned char *)instance + ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class->destructionWatchOffset);
4820 __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)));
4823 void __ecereNameSpace__ecere__com__eInstance_StopWatching(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, struct __ecereNameSpace__ecere__com__Instance * object)
4825 if(instance && (!_property || _property->isWatchable))
4829 struct __ecereNameSpace__ecere__sys__OldList * watchers = (struct __ecereNameSpace__ecere__sys__OldList *)((unsigned char *)instance + _property->watcherOffset);
4830 struct __ecereNameSpace__ecere__com__Watcher * watcher;
4832 for(watcher = (*watchers).first; watcher; watcher = watcher->next)
4833 if(watcher->object == object)
4835 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete((&*watchers), watcher);
4841 struct __ecereNameSpace__ecere__com__Class * _class, * base;
4843 for(_class = ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class; _class; _class = base)
4845 if(_class->destructionWatchOffset)
4847 struct __ecereNameSpace__ecere__sys__OldList * watchers = (struct __ecereNameSpace__ecere__sys__OldList *)((unsigned char *)instance + _class->destructionWatchOffset);
4848 struct __ecereNameSpace__ecere__com__Watcher * watcher;
4850 for(watcher = (*watchers).first; watcher; watcher = watcher->next)
4852 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete((&*watchers), watcher);
4856 for(_property = (struct __ecereNameSpace__ecere__com__Property *)_class->membersAndProperties.first; _property; _property = _property->next)
4858 if(_property->isProperty && _property->isWatchable)
4860 struct __ecereNameSpace__ecere__sys__OldList * watchers = (struct __ecereNameSpace__ecere__sys__OldList *)((unsigned char *)instance + _property->watcherOffset);
4861 struct __ecereNameSpace__ecere__com__Watcher * watcher;
4863 for(watcher = (*watchers).first; watcher; watcher = watcher->next)
4864 if(watcher->object == object)
4866 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete((&*watchers), watcher);
4871 base = _class->base;
4872 if(base && base->type == 1000)
4873 base = (((void *)0));
4879 struct __ecereNameSpace__ecere__com__Class * __ecereNameSpace__ecere__com__eClass_GetDesigner(struct __ecereNameSpace__ecere__com__Class * _class)
4881 for(; _class; _class = _class->base)
4883 if(_class->designerClass)
4884 return (struct __ecereNameSpace__ecere__com__Class *)__ecereNameSpace__ecere__com__eSystem_FindClass(_class->module, _class->designerClass);
4886 return (((void *)0));
4889 struct __ecereNameSpace__ecere__com__Class * __ecereNameSpace__ecere__com__eInstance_GetDesigner(struct __ecereNameSpace__ecere__com__Instance * instance)
4892 return __ecereNameSpace__ecere__com__eClass_GetDesigner(((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class);
4893 return (((void *)0));
4896 unsigned int __ecereNameSpace__ecere__com__LocateModule(char * name, char * fileName)
4898 return Instance_LocateModule(name, fileName);
4901 extern void __ecereNameSpace__ecere__com__InitializeDataTypes1(struct __ecereNameSpace__ecere__com__Instance * module);
4903 extern void __ecereNameSpace__ecere__com__InitializeDataTypes(struct __ecereNameSpace__ecere__com__Instance * module);
4905 extern double sin(struct __ecereNameSpace__ecere__com__Instance * number);
4907 extern double sinh(struct __ecereNameSpace__ecere__com__Instance * number);
4909 extern double cosh(struct __ecereNameSpace__ecere__com__Instance * number);
4911 extern double tanh(struct __ecereNameSpace__ecere__com__Instance * number);
4913 extern double sqrt(double number);
4915 extern double cos(struct __ecereNameSpace__ecere__com__Instance * number);
4917 extern double tan(struct __ecereNameSpace__ecere__com__Instance * number);
4919 extern struct __ecereNameSpace__ecere__com__Instance * atan2(double y, double x);
4921 extern struct __ecereNameSpace__ecere__com__Instance * asin(double number);
4923 extern struct __ecereNameSpace__ecere__com__Instance * acos(double number);
4925 extern struct __ecereNameSpace__ecere__com__Instance * atan(double number);
4927 extern double pow(double number, double number2);
4929 extern double fmod(double x, double y);
4931 extern double fabs(double number);
4933 extern double log(double number);
4935 extern double log10(double number);
4937 extern double ceil(double number);
4939 extern double floor(double number);
4941 extern double exp(double number);
4943 extern void qsort(void * , unsigned int, unsigned int, int (* )(void * , void * ));
4945 extern int system(const char * );
4947 extern int atoi(const char * );
4949 extern float atof(const char * );
4951 extern int tolower(int);
4953 extern int toupper(int);
4955 extern unsigned int isdigit(int);
4957 extern char * getenv(const char * name);
4959 extern int rename(const char * oldpath, const char * newpath);
4961 extern char * strncat(char * , const char * , int n);
4963 extern int strcasecmp(const char * , const char * );
4965 extern int strncasecmp(const char * , const char * , int n);
4967 extern int strncmp(const char * , const char * , int n);
4969 extern int vsprintf(char * , const char * , __builtin_va_list);
4971 extern int puts(char * );
4973 extern int fputs(char * , void * stream);
4975 extern int isalnum(int c);
4977 extern int isalpha(int c);
4979 extern int islower(int c);
4981 extern int isupper(int c);
4983 extern int isprint(int c);
4985 static void __ecereNameSpace__ecere__com__LoadCOM(struct __ecereNameSpace__ecere__com__Instance * module)
4987 unsigned int force64Bits = ((unsigned int)((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application + 300)))->isGUIApp & 2) ? 0x1 : 0x0;
4988 int pointerSize = force64Bits ? 8 : sizeof(void *);
4989 struct __ecereNameSpace__ecere__com__Class * applicationClass;
4990 struct __ecereNameSpace__ecere__com__Class * enumClass, * structClass, * boolClass;
4991 struct __ecereNameSpace__ecere__com__Class * moduleClass;
4992 struct __ecereNameSpace__ecere__com__Class * baseClass = __ecereNameSpace__ecere__com__eSystem_RegisterClass(0, "class", (((void *)0)), 0, 0, (((void *)0)), (((void *)0)), module, 4, 1);
4994 baseClass->type = 1000;
4995 baseClass->memberOffset = 0;
4996 baseClass->offset = 0;
4997 baseClass->structSize = 0;
4998 baseClass->typeSize = 0;
5000 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);
5002 instanceClass->type = 1000;
5003 instanceClass->fixed = 0x1;
5004 instanceClass->memberOffset = 0;
5005 instanceClass->offset = 0;
5006 instanceClass->memberID = -3;
5007 instanceClass->startMemberID = -3;
5008 __ecereNameSpace__ecere__com__eClass_AddDataMember(instanceClass, "_vTbl", "int (**)()", pointerSize, pointerSize, 1);
5009 __ecereNameSpace__ecere__com__eClass_AddDataMember(instanceClass, "_class", "ecere::com::Class", pointerSize, pointerSize, 1);
5010 __ecereNameSpace__ecere__com__eClass_AddDataMember(instanceClass, "_refCount", "int", sizeof(int), sizeof(int), 1);
5012 __ecereNameSpace__ecere__com__InitializeDataTypes1(module);
5013 enumClass = __ecereNameSpace__ecere__com__eSystem_RegisterClass(0, "enum", (((void *)0)), 0, force64Bits ? 32 : sizeof(struct __ecereNameSpace__ecere__com__EnumClassData), (((void *)0)), (((void *)0)), module, 4, 1);
5014 __ecereNameSpace__ecere__com__eClass_AddClassProperty(enumClass, "enumSize", "int", (((void *)0)), __ecereNameSpace__ecere__com__GetEnumSize)->constant = 0x1;
5015 enumClass->type = 1000;
5016 (__ecereNameSpace__ecere__com__eSystem_Delete(enumClass->dataTypeString), enumClass->dataTypeString = 0);
5017 enumClass->dataTypeString = __ecereNameSpace__ecere__sys__CopyString("int");
5018 structClass = __ecereNameSpace__ecere__com__eSystem_RegisterClass(0, "struct", (((void *)0)), 0, 0, (((void *)0)), (((void *)0)), module, 4, 1);
5019 structClass->type = 1000;
5020 structClass->memberOffset = 0;
5021 structClass->offset = 0;
5022 structClass->structSize = 0;
5023 structClass->typeSize = 0;
5024 __ecereNameSpace__ecere__com__InitializeDataTypes(module);
5025 boolClass = __ecereNameSpace__ecere__com__eSystem_RegisterClass(4, "bool", "uint", 0, 0, (((void *)0)), (((void *)0)), module, 4, 1);
5026 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(boolClass, "true", (unsigned int)0x1);
5027 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(boolClass, "false", (unsigned int)0x0);
5028 moduleClass = __ecereNameSpace__ecere__com__eSystem_RegisterClass(0, "ecere::com::Module", (((void *)0)), force64Bits ? 8 + 8 + 32 + 32 + 32 + 32 + 8 + 8 + 8 + 8 + 8 + 8 + (32 + 8 + 8 + 4 * 32) + (32 + 8 + 8 + 4 * 32) : sizeof(struct __ecereNameSpace__ecere__com__Module), 0, (void *)__ecereNameSpace__ecere__com__Module_Constructor, (void *)__ecereNameSpace__ecere__com__Module_Destructor, module, 4, 1);
5029 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(moduleClass, "OnLoad", "bool()", (((void *)0)), 1);
5030 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(moduleClass, "OnUnload", "void()", (((void *)0)), 1);
5031 __ecereNameSpace__ecere__com__eClass_AddMethod(moduleClass, "Load", "Module(char * name, AccessMode importAccess)", __ecereNameSpace__ecere__com__eModule_Load, 1);
5032 __ecereNameSpace__ecere__com__eClass_AddMethod(moduleClass, "Unload", "void(Module module)", __ecereNameSpace__ecere__com__eModule_Unload, 1);
5033 __ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "application", "Application", pointerSize, pointerSize, 1);
5034 __ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "classes", "OldList", force64Bits ? 32 : sizeof(struct __ecereNameSpace__ecere__sys__OldList), pointerSize, 1);
5035 __ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "defines", "OldList", force64Bits ? 32 : sizeof(struct __ecereNameSpace__ecere__sys__OldList), pointerSize, 1);
5036 __ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "functions", "OldList", force64Bits ? 32 : sizeof(struct __ecereNameSpace__ecere__sys__OldList), pointerSize, 1);
5037 __ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "modules", "OldList", force64Bits ? 32 : sizeof(struct __ecereNameSpace__ecere__sys__OldList), pointerSize, 1);
5038 __ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "prev", "Module", pointerSize, pointerSize, 1);
5039 __ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "next", "Module", pointerSize, pointerSize, 1);
5040 __ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "name", "char *", pointerSize, pointerSize, 1);
5041 __ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "library", "void *", pointerSize, pointerSize, 1);
5042 __ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "Unload", "void *", pointerSize, pointerSize, 1);
5043 __ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "importType", "ImportType", sizeof(int), 4, 1);
5044 __ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "origImportType", "ImportType", sizeof(int), 4, 1);
5045 __ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "privateNameSpace", "NameSpace", force64Bits ? (32 + 8 + 8 + 4 * 32) : sizeof(struct __ecereNameSpace__ecere__com__NameSpace), pointerSize, 1);
5046 __ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "publicNameSpace", "NameSpace", force64Bits ? (32 + 8 + 8 + 4 * 32) : sizeof(struct __ecereNameSpace__ecere__com__NameSpace), pointerSize, 1);
5047 moduleClass->fixed = 0x1;
5048 moduleClass->count++;
5049 applicationClass = __ecereNameSpace__ecere__com__eSystem_RegisterClass(0, "ecere::com::Application", "Module", force64Bits ? (8 + 8 + 8 + 8 + 32 + 8 + 176) : sizeof(struct __ecereNameSpace__ecere__com__Application), 0, (((void *)0)), (void *)__ecereNameSpace__ecere__com__Application_Destructor, module, 4, 1);
5050 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(applicationClass, "Main", "void()", (((void *)0)), 1);
5051 __ecereNameSpace__ecere__com__eClass_AddDataMember(applicationClass, "argc", "int", sizeof(int), 4, 1);
5052 __ecereNameSpace__ecere__com__eClass_AddDataMember(applicationClass, "argv", "char **", pointerSize, pointerSize, 1);
5053 __ecereNameSpace__ecere__com__eClass_AddDataMember(applicationClass, "exitCode", "int", sizeof(int), 4, 1);
5054 __ecereNameSpace__ecere__com__eClass_AddDataMember(applicationClass, "isGUIApp", "bool", sizeof(unsigned int), 4, 1);
5055 __ecereNameSpace__ecere__com__eClass_AddDataMember(applicationClass, "allModules", "OldList", force64Bits ? 32 : sizeof(struct __ecereNameSpace__ecere__sys__OldList), pointerSize, 1);
5056 __ecereNameSpace__ecere__com__eClass_AddDataMember(applicationClass, "parsedCommand", "char *", pointerSize, pointerSize, 1);
5057 __ecereNameSpace__ecere__com__eClass_AddDataMember(applicationClass, "systemNameSpace", "NameSpace", force64Bits ? (32 + 8 + 8 + 4 * 32) : sizeof(struct __ecereNameSpace__ecere__com__NameSpace), pointerSize, 1);
5058 applicationClass->fixed = 0x1;
5059 applicationClass->count++;
5060 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("sin", "double sin(Angle number)", sin, module, 4);
5061 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("sinh", "double sinh(Angle number)", sinh, module, 4);
5062 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("cosh", "double cosh(Angle number)", cosh, module, 4);
5063 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("tanh", "double tanh(Angle number)", tanh, module, 4);
5064 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("sqrt", "double sqrt(double number)", sqrt, module, 4);
5065 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("cos", "double cos(Angle number)", cos, module, 4);
5066 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("tan", "double tan(Angle number)", tan, module, 4);
5067 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("atan2", "Angle atan2(double y, double x)", atan2, module, 4);
5068 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("asin", "Angle asin(double number)", asin, module, 4);
5069 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("acos", "Angle acos(double number)", acos, module, 4);
5070 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("atan", "Angle atan(double number)", atan, module, 4);
5071 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("pow", "double pow(double number, double number2)", pow, module, 4);
5072 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("fmod", "double fmod(double x, double y)", fmod, module, 4);
5073 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("fabs", "double fabs(double number)", fabs, module, 4);
5074 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("log", "double log(double number)", log, module, 4);
5075 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("log10", "double log10(double number)", log10, module, 4);
5076 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ceil", "double ceil(double number)", ceil, module, 4);
5077 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("floor", "double floor(double number)", floor, module, 4);
5078 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("exp", "double exp(double number)", exp, module, 4);
5079 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("qsort", "void qsort(void *, uint, uint, int (*)(void *, void *))", qsort, module, 4);
5080 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strtod", "double strtod(char*, char**)", strtod, module, 4);
5081 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strtol", "int strtol(char*, char**, int base)", strtol, module, 4);
5082 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("system", "int system(const char*)", system, module, 4);
5083 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("atoi", "int atoi(const char*)", atoi, module, 4);
5084 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("atof", "float atof(const char*)", atof, module, 4);
5085 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("tolower", "int tolower(int)", tolower, module, 4);
5086 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("toupper", "int toupper(int)", toupper, module, 4);
5087 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("isdigit", "bool isdigit(int)", isdigit, module, 4);
5088 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("memset", "void memset(void * area, byte value, uint count)", memset, module, 4);
5089 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("getenv", "char * getenv(const char * name)", getenv, module, 4);
5090 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("rename", "int rename(const char *oldpath, const char *newpath)", rename, module, 4);
5091 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strlen", "int strlen(const char *)", strlen, module, 4);
5092 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strcat", "char * strcat(char *, const char *)", strcat, module, 4);
5093 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strncat", "char * strncat(char *, const char *, int n)", strncat, module, 4);
5094 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strchr", "char * strchr(char *, int)", strchr, module, 4);
5095 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strstr", "char * strstr(char *, const char *)", strstr, module, 4);
5096 __ecereNameSpace__ecere__com__eSystem_RegisterDefine("fstrcmp", "(GetRuntimePlatform() == win32) ? strcmpi : strcmp", module, 4);
5097 __ecereNameSpace__ecere__com__eSystem_RegisterDefine("strcmpi", "strcasecmp", module, 4);
5098 __ecereNameSpace__ecere__com__eSystem_RegisterDefine("strnicmp", "strncasecmp", module, 4);
5099 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strcasecmp", "int strcasecmp(const char *, const char *)", strcasecmp, module, 4);
5100 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strncasecmp", "int strncasecmp(const char *, const char *, int n)", strncasecmp, module, 4);
5101 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strcmp", "int strcmp(const char *, const char *)", strcmp, module, 4);
5102 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strncmp", "int strncmp(const char *, const char *, int n)", strncmp, module, 4);
5103 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strlwr", "char * strlwr(char *)", strlwr, module, 4);
5104 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strupr", "char * strupr(char *)", strupr, module, 4);
5105 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strcpy", "char * strcpy(char *, const char *)", strcpy, module, 4);
5106 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strncpy", "char * strncpy(char *, const char *, int n)", strncpy, module, 4);
5107 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("memcpy", "void * memcpy(void *, const void *, uint size)", memcpy, module, 4);
5108 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("memmove", "void * memmove(void *, const void *, uint size)", memmove, module, 4);
5109 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("sprintf", "int sprintf(char *, char *, ...)", sprintf, module, 4);
5110 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("snprintf", "int sprintf(char *, int, char *, ...)", snprintf, module, 4);
5111 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("printf", "int printf(char *, ...)", printf, module, 4);
5112 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("vsprintf", "int vsprintf(char*, const char*, __builtin_va_list)", vsprintf, module, 4);
5113 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("vsnprintf", "int vsnprintf(char*, int, const char*, __builtin_va_list)", vsnprintf, module, 4);
5114 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("puts", "int puts(char *)", puts, module, 4);
5115 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("fputs", "int fputs(char *, void * stream)", fputs, module, 4);
5116 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("isalnum", "int isalnum(int c)", isalnum, module, 4);
5117 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("isspace", "int isspace(int c)", isspace, module, 4);
5118 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("isalpha", "int isalpha(int c)", isalpha, module, 4);
5119 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("islower", "int islower(int c)", islower, module, 4);
5120 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("isupper", "int isupper(int c)", isupper, module, 4);
5121 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("isprint", "int isprint(int c)", isprint, module, 4);
5122 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strtoul", "unsigned long strtoul(const char * nptr, char ** endptr, int base)", strtoul, module, 4);
5125 struct __ecereNameSpace__ecere__com__Instance * __ecereNameSpace__ecere__com____ecere_COM_Initialize(unsigned int guiApp, int argc, char * argv[])
5127 struct __ecereNameSpace__ecere__com__Instance * app;
5129 app = __ecereNameSpace__ecere__com___calloc(1, 428);
5130 __ecereNameSpace__ecere__com__Module_Constructor(app);
5131 ((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 300)))->systemNameSpace.classes.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
5132 ((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 300)))->systemNameSpace.defines.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
5133 ((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 300)))->systemNameSpace.functions.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
5134 ((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 300)))->systemNameSpace.nameSpaces.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
5135 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);
5136 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)app + 12)))->application = app;
5137 ((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 300)))->allModules.offset = 12 + (unsigned int)&(*((struct __ecereNameSpace__ecere__com__Module *)0)).prev;
5138 ((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 300)))->isGUIApp = guiApp;
5139 __ecereNameSpace__ecere__com__LoadCOM(app);
5140 ((struct __ecereNameSpace__ecere__com__Instance *)(char *)app)->_class = __ecereNameSpace__ecere__com__eSystem_FindClass(app, "Application");
5144 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)
5146 void * __ecereTemp1;
5150 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param;
5152 for(param = _class->templateParams.first; param; param = param->next)
5154 if(!strcmp(param->name, name))
5157 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));
5158 if(defaultArg != (((void *)0)))
5160 param->defaultArg = *defaultArg;
5161 __ecereNameSpace__ecere__com__CopyTemplateArg(param, ¶m->defaultArg);
5163 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&_class->templateParams, param);
5166 return (((void *)0));
5169 void __ecereNameSpace__ecere__com__eClass_DoneAddingTemplateParameters(struct __ecereNameSpace__ecere__com__Class * base)
5173 struct __ecereNameSpace__ecere__sys__OldLink * derivative;
5174 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param;
5177 void * first = base->templateParams.first;
5178 int count = base->templateParams.count;
5180 base->templateParams.first = (((void *)0));
5181 base->templateParams.count = 0;
5182 __ecereNameSpace__ecere__com__FreeTemplateArgs(base);
5183 (__ecereNameSpace__ecere__com__eSystem_Delete(base->templateArgs), base->templateArgs = 0);
5184 __ecereNameSpace__ecere__com__FreeTemplatesDerivatives(base);
5185 base->templateParams.first = first;
5186 base->templateParams.count = count;
5188 for(param = base->templateParams.first; param; param = param->next)
5190 if(param->type == 1 && param->defaultArg.memberString)
5192 struct __ecereNameSpace__ecere__com__Class * memberClass = base;
5193 char * colon = strstr(param->defaultArg.memberString, "::");
5198 char className[1024];
5199 struct __ecereNameSpace__ecere__com__Class * sClass;
5201 memcpy(className, param->defaultArg.memberString, colon - param->defaultArg.memberString);
5202 className[colon - param->defaultArg.memberString] = '\0';
5203 memberName = colon + 2;
5204 for(sClass = base; sClass; sClass = sClass->base)
5206 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * cParam;
5207 struct __ecereNameSpace__ecere__com__Class * nextClass;
5210 for(nextClass = sClass->base; nextClass; nextClass = nextClass->base)
5211 id += nextClass->templateParams.count;
5212 if(sClass == base || base->templateArgs)
5214 for(cParam = sClass->templateParams.first; cParam; cParam = cParam->next)
5216 if(cParam->type == 0 && !strcmp(cParam->name, className))
5217 strcpy(className, (sClass == base) ? cParam->defaultArg.dataTypeString : base->templateArgs[id].dataTypeString);
5222 memberClass = __ecereNameSpace__ecere__com__eSystem_FindClass(base->module, className);
5224 memberClass = __ecereNameSpace__ecere__com__eSystem_FindClass(((struct __ecereNameSpace__ecere__com__Module *)(((char *)base->module + 12)))->application, className);
5227 memberName = param->defaultArg.memberString;
5230 switch(param->memberType)
5233 param->defaultArg.member = __ecereNameSpace__ecere__com__eClass_FindDataMember(memberClass, memberName, memberClass->module, (((void *)0)), (((void *)0)));
5236 param->defaultArg.method = __ecereNameSpace__ecere__com__eClass_FindMethod(memberClass, memberName, memberClass->module);
5239 param->defaultArg.prop = __ecereNameSpace__ecere__com__eClass_FindProperty(memberClass, memberName, memberClass->module);
5245 __ecereNameSpace__ecere__com__FixDerivativesBase(base, base);
5249 static void __ecereNameSpace__ecere__com__FreeTemplatesDerivatives(struct __ecereNameSpace__ecere__com__Class * base)
5251 struct __ecereNameSpace__ecere__sys__OldLink * derivative, * templateLink;
5253 for(derivative = base->derivatives.first; derivative; derivative = derivative->next)
5255 struct __ecereNameSpace__ecere__com__Class * _class = derivative->data;
5257 if(_class->templateArgs)
5259 __ecereNameSpace__ecere__com__FreeTemplateArgs(_class);
5260 (__ecereNameSpace__ecere__com__eSystem_Delete(_class->templateArgs), _class->templateArgs = 0);
5262 __ecereNameSpace__ecere__com__FreeTemplatesDerivatives(_class);
5264 for(templateLink = base->templatized.first; templateLink; templateLink = templateLink->next)
5266 struct __ecereNameSpace__ecere__com__Class * _class = templateLink->data;
5268 if(_class->templateArgs)
5270 __ecereNameSpace__ecere__com__FreeTemplateArgs(_class);
5271 (__ecereNameSpace__ecere__com__eSystem_Delete(_class->templateArgs), _class->templateArgs = 0);
5273 __ecereNameSpace__ecere__com__FreeTemplatesDerivatives(_class);
5277 static const char * __ecereNameSpace__ecere__com__platformNames[4] =
5279 "", "win32", "linux", "apple"
5282 static const int __ecereNameSpace__ecere__com__firstPlatform = 1;
5284 static struct __ecereNameSpace__ecere__com__Property * __ecereProp___ecereNameSpace__ecere__com__Platform_char__PTR_, * __ecerePropM___ecereNameSpace__ecere__com__Platform_char__PTR_;
5286 static const int __ecereNameSpace__ecere__com__lastPlatform = 3;
5288 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Platform;
5290 int __ecereVMethodID_class_OnGetString;
5292 char * __ecereProp___ecereNameSpace__ecere__com__Platform_Get_char__PTR_(int this)
5294 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)));
5297 int __ecereProp___ecereNameSpace__ecere__com__Platform_Set_char__PTR_(char * value)
5303 for(c = __ecereNameSpace__ecere__com__firstPlatform; c <= __ecereNameSpace__ecere__com__lastPlatform; c++)
5304 if(!strcasecmp(value, __ecereNameSpace__ecere__com__platformNames[c]))
5310 char * __ecereMethod___ecereNameSpace__ecere__com__Platform_OnGetString(struct __ecereNameSpace__ecere__com__Class * class, int * this, char * tempString, void * fieldData, unsigned int * needClass)
5312 if((*(this)) >= __ecereNameSpace__ecere__com__firstPlatform && (*(this)) <= __ecereNameSpace__ecere__com__lastPlatform)
5315 strcpy(tempString, __ecereNameSpace__ecere__com__platformNames[*(int *)this]);
5316 return __ecereNameSpace__ecere__com__platformNames[*(int *)this];
5318 if(tempString && tempString[0])
5319 tempString[0] = '\0';
5320 return (((void *)0));
5323 unsigned int __ecereMethod___ecereNameSpace__ecere__com__Platform_OnGetDataFromString(struct __ecereNameSpace__ecere__com__Class * class, int * this, char * string)
5325 (*(this)) = __ecereProp___ecereNameSpace__ecere__com__Platform_Set_char__PTR_(string);
5326 return (unsigned int)*(int *)this;
5329 extern int runtimePlatform;
5331 int __ecereNameSpace__ecere__com__GetRuntimePlatform()
5333 return runtimePlatform;
5336 struct __ecereNameSpace__ecere__com__ObjectInfo
5338 struct __ecereNameSpace__ecere__com__ObjectInfo * prev, * next;
5339 struct __ecereNameSpace__ecere__com__Instance * instance;
5341 struct __ecereNameSpace__ecere__com__Instance * instCode;
5342 unsigned int deleted;
5343 struct __ecereNameSpace__ecere__com__ObjectInfo * oClass;
5344 struct __ecereNameSpace__ecere__sys__OldList instances;
5345 struct __ecereNameSpace__ecere__com__Instance * classDefinition;
5346 unsigned int modified;
5347 } __attribute__ ((gcc_struct));
5349 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__ObjectInfo;
5351 static struct __ecereNameSpace__ecere__com__Property * __ecereProp___ecereNameSpace__ecere__com__DesignerBase_classDesigner, * __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_classDesigner;
5353 static struct __ecereNameSpace__ecere__com__Property * __ecereProp___ecereNameSpace__ecere__com__DesignerBase_objectClass, * __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_objectClass;
5355 static struct __ecereNameSpace__ecere__com__Property * __ecereProp___ecereNameSpace__ecere__com__DesignerBase_isDragging, * __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_isDragging;
5357 struct __ecereNameSpace__ecere__com__DesignerBase
5359 struct __ecereNameSpace__ecere__com__Instance * classDesigner;
5361 unsigned int isDragging;
5362 } __attribute__ ((gcc_struct));
5364 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__DesignerBase;
5366 struct __ecereNameSpace__ecere__com__Instance * __ecereProp___ecereNameSpace__ecere__com__DesignerBase_Get_classDesigner(struct __ecereNameSpace__ecere__com__Instance * this)
5368 struct __ecereNameSpace__ecere__com__DesignerBase * __ecerePointer___ecereNameSpace__ecere__com__DesignerBase = (struct __ecereNameSpace__ecere__com__DesignerBase *)(this ? (((char *)this) + __ecereClass___ecereNameSpace__ecere__com__DesignerBase->offset) : 0);
5370 return __ecerePointer___ecereNameSpace__ecere__com__DesignerBase->classDesigner;
5373 void __ecereProp___ecereNameSpace__ecere__com__DesignerBase_Set_classDesigner(struct __ecereNameSpace__ecere__com__Instance * this, struct __ecereNameSpace__ecere__com__Instance * value)
5375 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);
5377 __ecerePointer___ecereNameSpace__ecere__com__DesignerBase->classDesigner = value;
5378 __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(this, __ecereProp___ecereNameSpace__ecere__com__DesignerBase_classDesigner), __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(this, __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_classDesigner);
5381 char * __ecereProp___ecereNameSpace__ecere__com__DesignerBase_Get_objectClass(struct __ecereNameSpace__ecere__com__Instance * this)
5383 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);
5385 return __ecerePointer___ecereNameSpace__ecere__com__DesignerBase->objectClass;
5388 void __ecereProp___ecereNameSpace__ecere__com__DesignerBase_Set_objectClass(struct __ecereNameSpace__ecere__com__Instance * this, char * value)
5390 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);
5392 __ecerePointer___ecereNameSpace__ecere__com__DesignerBase->objectClass = value;
5393 __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(this, __ecereProp___ecereNameSpace__ecere__com__DesignerBase_objectClass), __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(this, __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_objectClass);
5396 unsigned int __ecereProp___ecereNameSpace__ecere__com__DesignerBase_Get_isDragging(struct __ecereNameSpace__ecere__com__Instance * this)
5398 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);
5400 return __ecerePointer___ecereNameSpace__ecere__com__DesignerBase->isDragging;
5403 void __ecereProp___ecereNameSpace__ecere__com__DesignerBase_Set_isDragging(struct __ecereNameSpace__ecere__com__Instance * this, unsigned int value)
5405 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);
5407 __ecerePointer___ecereNameSpace__ecere__com__DesignerBase->isDragging = value;
5408 __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(this, __ecereProp___ecereNameSpace__ecere__com__DesignerBase_isDragging), __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(this, __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_isDragging);
5411 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__ClassDesignerBase;
5413 struct __ecereNameSpace__ecere__com__Instance * __ecereNameSpace__ecere__com__activeDesigner;
5415 void __ecereNameSpace__ecere__com__SetActiveDesigner(struct __ecereNameSpace__ecere__com__Instance * designer)
5417 __ecereNameSpace__ecere__com__activeDesigner = designer;
5420 struct __ecereNameSpace__ecere__com__Instance * __ecereNameSpace__ecere__com__GetActiveDesigner()
5422 return __ecereNameSpace__ecere__com__activeDesigner;
5427 unsigned int __ecereNameSpace__ecere__sys__UTF8Validate(char * source)
5433 for(c = 0; source[c]; )
5435 unsigned char ch = source[c];
5436 unsigned int codePoint = 0;
5439 unsigned char mask = (unsigned char)0x7F;
5441 if(ch & (unsigned char)0x80)
5443 if(ch & (unsigned char)0x40)
5447 if(ch & (unsigned char)0x20)
5451 if(ch & (unsigned char)0x10)
5453 if(ch & (unsigned char)0x08)
5463 for(i = 0; i < numBytes && (ch = source[c]); i++, c++)
5466 codePoint |= ch & mask;
5467 mask = (unsigned char)0x3F;
5470 if(!(ch & (unsigned char)0x80) || (ch & (unsigned char)0x40))
5476 if(codePoint > 0x10FFFF || (codePoint >= 0xD800 && codePoint <= 0xDFFF) || (codePoint < 0x80 && numBytes > 1) || (codePoint < 0x800 && numBytes > 2) || (codePoint < 0x10000 && numBytes > 3))
5483 int __ecereNameSpace__ecere__sys__ISO8859_1toUTF8(char * source, char * dest, int max)
5488 for(c = 0; source[c]; c++)
5490 unsigned int ch = ((unsigned char *)source)[c];
5496 dest[d++] = (char)ch;
5502 dest[d++] = (unsigned char)0xC0 | (unsigned char)((ch & 0x7C0) >> 6);
5503 dest[d++] = (unsigned char)0x80 | (unsigned char)(ch & 0x03F);
5505 else if(ch < 0x10000)
5509 dest[d++] = (unsigned char)0xE0 | (unsigned char)((ch & 0xF000) >> 12);
5510 dest[d++] = (unsigned char)0x80 | (unsigned char)((ch & 0xFC0) >> 6);
5511 dest[d++] = (unsigned char)0x80 | (unsigned char)(ch & 0x03F);
5517 dest[d++] = (unsigned char)0xF0 | (unsigned char)((ch & 0x1C0000) >> 18);
5518 dest[d++] = (unsigned char)0x80 | (unsigned char)((ch & 0x3F000) >> 12);
5519 dest[d++] = (unsigned char)0x80 | (unsigned char)((ch & 0xFC0) >> 6);
5520 dest[d++] = (unsigned char)0x80 | (unsigned char)(ch & 0x03F);
5527 char * __ecereNameSpace__ecere__sys__UTF16toUTF8(unsigned short * source)
5534 unsigned int invert = 0x0;
5536 for(len = 0; source[len]; len++)
5538 dest = __ecereNameSpace__ecere__com__eSystem_New(sizeof(char) * (len * 3 + 1));
5539 for(c = 0; (u16 = source[c]); c++)
5543 if(!c && (u16 == (unsigned short)0xFFFE || u16 == (unsigned short)0xFEFF))
5545 if(u16 == (unsigned short)0xFFFE)
5551 u16 = ((u16 & (unsigned short)0xFF00) >> (unsigned short)8) | ((u16 & (unsigned short)0x00FF) << (unsigned short)8);
5553 if(u16 < (unsigned short)0xD800 || u16 > (unsigned short)0xDBFF)
5556 ch = (u16 << 10) + source[c++] + (0x10000 - (0xD800 << 10) - 0xDC00);
5559 dest[d++] = (char)ch;
5563 dest[d++] = (unsigned char)0xC0 | (unsigned char)((ch & 0x7C0) >> 6);
5564 dest[d++] = (unsigned char)0x80 | (unsigned char)(ch & 0x03F);
5566 else if(ch < 0x10000)
5568 dest[d++] = (unsigned char)0xE0 | (unsigned char)((ch & 0xF000) >> 12);
5569 dest[d++] = (unsigned char)0x80 | (unsigned char)((ch & 0xFC0) >> 6);
5570 dest[d++] = (unsigned char)0x80 | (unsigned char)(ch & 0x03F);
5574 dest[d++] = (unsigned char)0xF0 | (unsigned char)((ch & 0x1C0000) >> 18);
5575 dest[d++] = (unsigned char)0x80 | (unsigned char)((ch & 0x3F000) >> 12);
5576 dest[d++] = (unsigned char)0x80 | (unsigned char)((ch & 0xFC0) >> 6);
5577 dest[d++] = (unsigned char)0x80 | (unsigned char)(ch & 0x03F);
5581 dest = __ecereNameSpace__ecere__com__eSystem_Renew(dest, sizeof(char) * (d + 1));
5585 int __ecereNameSpace__ecere__sys__UTF16toUTF8Buffer(unsigned short * source, unsigned char * dest, int max)
5591 for(c = 0; (u16 = source[c]); c++)
5595 if(u16 < (unsigned short)0xD800 || u16 > (unsigned short)0xDBFF)
5598 ch = (u16 << 10) + source[c++] + (0x10000 - (0xD800 << 10) - 0xDC00);
5603 dest[d++] = (char)ch;
5609 dest[d++] = (unsigned char)0xC0 | (unsigned char)((ch & 0x7C0) >> 6);
5610 dest[d++] = (unsigned char)0x80 | (unsigned char)(ch & 0x03F);
5612 else if(ch < 0x10000)
5616 dest[d++] = (unsigned char)0xE0 | (unsigned char)((ch & 0xF000) >> 12);
5617 dest[d++] = (unsigned char)0x80 | (unsigned char)((ch & 0xFC0) >> 6);
5618 dest[d++] = (unsigned char)0x80 | (unsigned char)(ch & 0x03F);
5624 dest[d++] = (unsigned char)0xF0 | (unsigned char)((ch & 0x1C0000) >> 18);
5625 dest[d++] = (unsigned char)0x80 | (unsigned char)((ch & 0x3F000) >> 12);
5626 dest[d++] = (unsigned char)0x80 | (unsigned char)((ch & 0xFC0) >> 6);
5627 dest[d++] = (unsigned char)0x80 | (unsigned char)(ch & 0x03F);
5630 dest[d] = (unsigned char)0;
5634 unsigned int __ecereNameSpace__ecere__sys__UTF8GetChar(char * string, int * numBytes)
5637 unsigned char b = ((unsigned char *)string)[0];
5639 unsigned char mask = (unsigned char)0x7F;
5643 if(b & (unsigned char)0x80)
5645 if(b & (unsigned char)0x40)
5649 if(b & (unsigned char)0x20)
5653 if(b & (unsigned char)0x10)
5655 if(b & (unsigned char)0x08)
5667 for(i = 0; i < nb; i++)
5670 ch |= (b = ((unsigned char *)string)[i]) & mask;
5671 mask = (unsigned char)0x3F;
5672 if(i > 1 && (!(b & (unsigned char)0x80) || (b & (unsigned char)0x40)))
5678 if(i < nb || ch > 0x10FFFF || (ch >= 0xD800 && ch <= 0xDFFF) || (ch < 0x80 && nb > 1) || (ch < 0x800 && nb > 2) || (ch < 0x10000 && nb > 3))
5688 int __ecereNameSpace__ecere__sys__UTF8toUTF16Buffer(char * source, unsigned short * dest, int max)
5695 for(c = 0; source[c]; )
5697 unsigned char ch = source[c];
5698 unsigned int codePoint = 0;
5701 unsigned char mask = (unsigned char)0x7F;
5703 if(ch & (unsigned char)0x80 && ch & (unsigned char)0x40)
5707 if(ch & (unsigned char)0x20)
5711 if(ch & (unsigned char)0x10)
5718 for(i = 0; i < numBytes; i++)
5721 codePoint |= source[c++] & mask;
5722 mask = (unsigned char)0x3F;
5724 if(codePoint > 0xFFFF)
5726 unsigned short lead = (unsigned short)((0xD800 - (0x10000 >> 10)) + (codePoint >> 10));
5727 unsigned short trail = (unsigned short)0xDC00 + (unsigned short)(codePoint & 0x3FF);
5738 dest[d++] = (unsigned short)codePoint;
5741 dest[d] = (unsigned short)0;
5747 int __ecereNameSpace__ecere__sys__UTF32toUTF8Len(unsigned int * source, int count, unsigned char * dest, int max)
5753 for(c = 0; c < count && (ch = source[c]); c++)
5759 dest[d++] = (char)ch;
5765 dest[d++] = (unsigned char)0xC0 | (unsigned char)((ch & 0x7C0) >> 6);
5766 dest[d++] = (unsigned char)0x80 | (unsigned char)(ch & 0x03F);
5768 else if(ch < 0x10000)
5772 dest[d++] = (unsigned char)0xE0 | (unsigned char)((ch & 0xF000) >> 12);
5773 dest[d++] = (unsigned char)0x80 | (unsigned char)((ch & 0xFC0) >> 6);
5774 dest[d++] = (unsigned char)0x80 | (unsigned char)(ch & 0x03F);
5780 dest[d++] = (unsigned char)0xF0 | (unsigned char)((ch & 0x1C0000) >> 18);
5781 dest[d++] = (unsigned char)0x80 | (unsigned char)((ch & 0x3F000) >> 12);
5782 dest[d++] = (unsigned char)0x80 | (unsigned char)((ch & 0xFC0) >> 6);
5783 dest[d++] = (unsigned char)0x80 | (unsigned char)(ch & 0x03F);
5786 dest[d] = (unsigned char)0;
5790 unsigned short * __ecereNameSpace__ecere__sys__UTF8toUTF16(char * source, int * wordCount)
5794 int len = strlen(source);
5795 unsigned short * dest = __ecereNameSpace__ecere__com__eSystem_New(sizeof(unsigned short) * (len + 1));
5799 for(c = 0; source[c]; )
5801 unsigned char ch = source[c];
5802 unsigned int codePoint = 0;
5805 unsigned char mask = (unsigned char)0x7F;
5807 if(ch & (unsigned char)0x80 && ch & (unsigned char)0x40)
5811 if(ch & (unsigned char)0x20)
5815 if(ch & (unsigned char)0x10)
5822 for(i = 0; i < numBytes; i++)
5825 codePoint |= source[c++] & mask;
5826 mask = (unsigned char)0x3F;
5828 if(codePoint > 0xFFFF)
5830 unsigned short lead = (unsigned short)((0xD800 - (0x10000 >> 10)) + (codePoint >> 10));
5831 unsigned short trail = (unsigned short)0xDC00 + (unsigned short)(codePoint & 0x3FF);
5838 dest[d++] = (unsigned short)codePoint;
5841 dest[d] = (unsigned short)0;
5846 return (((void *)0));
5849 int __ecereVMethodID___ecereNameSpace__ecere__com__DesignerBase_FindObject;
5851 int __ecereVMethodID___ecereNameSpace__ecere__com__DesignerBase_RenameObject;
5853 int __ecereVMethodID___ecereNameSpace__ecere__com__DesignerBase_SelectObjectFromDesigner;
5855 int __ecereVMethodID___ecereNameSpace__ecere__com__DesignerBase_CodeAddObject;
5857 int __ecereVMethodID___ecereNameSpace__ecere__com__DesignerBase_SheetAddObject;
5859 int __ecereVMethodID___ecereNameSpace__ecere__com__DesignerBase_AddToolBoxClass;
5861 int __ecereVMethodID___ecereNameSpace__ecere__com__DesignerBase_AddDefaultMethod;
5863 int __ecereVMethodID___ecereNameSpace__ecere__com__DesignerBase_DeleteObject;
5865 int __ecereVMethodID___ecereNameSpace__ecere__com__DesignerBase_ObjectContainsCode;
5867 int __ecereVMethodID___ecereNameSpace__ecere__com__DesignerBase_ModifyCode;
5869 int __ecereVMethodID___ecereNameSpace__ecere__com__DesignerBase_UpdateProperties;
5871 int __ecereVMethodID___ecereNameSpace__ecere__com__ClassDesignerBase_Reset;
5873 int __ecereVMethodID___ecereNameSpace__ecere__com__ClassDesignerBase_AddObject;
5875 int __ecereVMethodID___ecereNameSpace__ecere__com__ClassDesignerBase_SelectObject;
5877 int __ecereVMethodID___ecereNameSpace__ecere__com__ClassDesignerBase_ListToolBoxClasses;
5879 int __ecereVMethodID___ecereNameSpace__ecere__com__ClassDesignerBase_PrepareTestObject;
5881 int __ecereVMethodID___ecereNameSpace__ecere__com__ClassDesignerBase_CreateObject;
5883 int __ecereVMethodID___ecereNameSpace__ecere__com__ClassDesignerBase_PostCreateObject;
5885 int __ecereVMethodID___ecereNameSpace__ecere__com__ClassDesignerBase_DroppedObject;
5887 int __ecereVMethodID___ecereNameSpace__ecere__com__ClassDesignerBase_DestroyObject;
5889 int __ecereVMethodID___ecereNameSpace__ecere__com__ClassDesignerBase_FixProperty;
5891 int __ecereVMethodID___ecereNameSpace__ecere__com__ClassDesignerBase_CreateNew;
5893 void __ecereRegisterModule_instance(struct __ecereNameSpace__ecere__com__Instance * module)
5895 struct __ecereNameSpace__ecere__com__Class * class;
5897 __ecereNameSpace__ecere__com__eSystem_RegisterDefine("ecere::com::null", "((void *)0)", module, 4);
5898 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(3, "ecere::com::unichar", "uint", 0, 0, 0, 0, module, 4, 1);
5899 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
5900 __ecereClass___ecereNameSpace__ecere__com__unichar = class;
5901 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "OnGetString", 0, __ecereMethod___ecereNameSpace__ecere__com__unichar_OnGetString, 1);
5902 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "OnGetDataFromString", 0, __ecereMethod___ecereNameSpace__ecere__com__unichar_OnGetDataFromString, 1);
5903 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::Property", 0, sizeof(struct __ecereNameSpace__ecere__com__Property), 0, 0, 0, module, 4, 1);
5904 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
5905 __ecereClass___ecereNameSpace__ecere__com__Property = class;
5906 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "prev", "ecere::com::Property", 4, 4, 1);
5907 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "next", "ecere::com::Property", 4, 4, 1);
5908 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "name", "char *", 4, 4, 1);
5909 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "isProperty", "bool", 4, 4, 1);
5910 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "memberAccess", "ecere::com::AccessMode", 4, 4, 1);
5911 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "id", "int", 4, 4, 1);
5912 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "_class", "ecere::com::Class", 4, 4, 1);
5913 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataTypeString", "char *", 4, 4, 1);
5914 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataTypeClass", "ecere::com::Class", 4, 4, 1);
5915 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataType", "Type", 4, 4, 1);
5916 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "Set", "void( *)()", 4, 4, 1);
5917 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "Get", "int( *)()", 4, 4, 1);
5918 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "IsSet", "bool( *)()", 4, 4, 1);
5919 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "data", "void *", 4, 4, 1);
5920 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "symbol", "void *", 4, 4, 1);
5921 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "vid", "int", 4, 4, 1);
5922 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "conversion", "bool", 4, 4, 1);
5923 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "watcherOffset", "uint", 4, 4, 1);
5924 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "category", "char *", 4, 4, 1);
5925 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "compiled", "bool", 4, 4, 1);
5926 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "selfWatchable", "bool", 4, 4, 1);
5927 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "isWatchable", "bool", 4, 4, 1);
5929 class->fixed = (unsigned int)1;
5931 class->noExpansion = (unsigned int)1;
5932 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::MemoryGuard_PushLoc", "void ecere::com::MemoryGuard_PushLoc(char * loc)", __ecereNameSpace__ecere__com__MemoryGuard_PushLoc, module, 4);
5933 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::MemoryGuard_PopLoc", "void ecere::com::MemoryGuard_PopLoc(void)", __ecereNameSpace__ecere__com__MemoryGuard_PopLoc, module, 4);
5934 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::BTNamedLink", 0, sizeof(struct __ecereNameSpace__ecere__com__BTNamedLink), 0, 0, 0, module, 4, 1);
5935 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
5936 __ecereClass___ecereNameSpace__ecere__com__BTNamedLink = class;
5937 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "name", "char *", 4, 4, 1);
5938 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "parent", "ecere::com::BTNamedLink", 4, 4, 1);
5939 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "left", "ecere::com::BTNamedLink", 4, 4, 1);
5940 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "right", "ecere::com::BTNamedLink", 4, 4, 1);
5941 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "depth", "int", 4, 4, 1);
5942 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "data", "void *", 4, 4, 1);
5944 class->fixed = (unsigned int)1;
5945 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::SelfWatcher", 0, sizeof(struct __ecereNameSpace__ecere__com__SelfWatcher), 0, 0, 0, module, 2, 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__SelfWatcher = class;
5949 class->fixed = (unsigned int)1;
5950 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(4, "ecere::com::AccessMode", 0, 0, 0, 0, 0, module, 4, 1);
5951 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
5952 __ecereClass___ecereNameSpace__ecere__com__AccessMode = class;
5953 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "defaultAccess", 0);
5954 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "publicAccess", 1);
5955 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "privateAccess", 2);
5956 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "staticAccess", 3);
5957 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "baseSystemAccess", 4);
5958 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::SubModule", 0, sizeof(struct __ecereNameSpace__ecere__com__SubModule), 0, 0, 0, module, 4, 1);
5959 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
5960 __ecereClass___ecereNameSpace__ecere__com__SubModule = class;
5961 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "prev", "ecere::com::SubModule", 4, 4, 1);
5962 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "next", "ecere::com::SubModule", 4, 4, 1);
5963 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "module", "ecere::com::Module", 4, 4, 1);
5964 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "importMode", "ecere::com::AccessMode", 4, 4, 1);
5965 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(4, "ecere::com::DataMemberType", 0, 0, 0, 0, 0, module, 4, 1);
5966 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
5967 __ecereClass___ecereNameSpace__ecere__com__DataMemberType = class;
5968 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "normalMember", 0);
5969 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "unionMember", 1);
5970 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "structMember", 2);
5971 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(4, "ecere::com::ClassType", 0, 0, 0, 0, 0, module, 4, 1);
5972 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
5973 __ecereClass___ecereNameSpace__ecere__com__ClassType = class;
5974 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "normalClass", 0);
5975 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "structClass", 1);
5976 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "bitClass", 2);
5977 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "unitClass", 3);
5978 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "enumClass", 4);
5979 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "noHeadClass", 5);
5980 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "unionClass", 6);
5981 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "systemClass", 1000);
5982 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::Class", 0, sizeof(struct __ecereNameSpace__ecere__com__Class), 0, 0, 0, module, 4, 1);
5983 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
5984 __ecereClass___ecereNameSpace__ecere__com__Class = class;
5985 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "OnFree", 0, __ecereMethod___ecereNameSpace__ecere__com__Class_OnFree, 1);
5986 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "OnGetString", 0, __ecereMethod___ecereNameSpace__ecere__com__Class_OnGetString, 1);
5987 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "OnGetDataFromString", 0, __ecereMethod___ecereNameSpace__ecere__com__Class_OnGetDataFromString, 1);
5988 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "OnSerialize", 0, __ecereMethod___ecereNameSpace__ecere__com__Class_OnSerialize, 1);
5989 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "OnUnserialize", 0, __ecereMethod___ecereNameSpace__ecere__com__Class_OnUnserialize, 1);
5990 __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);
5991 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "prev", "ecere::com::Class", 4, 4, 1);
5992 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "next", "ecere::com::Class", 4, 4, 1);
5993 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "name", "char *", 4, 4, 1);
5994 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "offset", "int", 4, 4, 1);
5995 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "structSize", "int", 4, 4, 1);
5996 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "_vTbl", "int( * *)()", 4, 4, 1);
5997 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "vTblSize", "int", 4, 4, 1);
5998 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "Constructor", "int( *)(ecere::com::Instance)", 4, 4, 1);
5999 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "Destructor", "void( *)(ecere::com::Instance)", 4, 4, 1);
6000 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "offsetClass", "int", 4, 4, 1);
6001 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "sizeClass", "int", 4, 4, 1);
6002 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "base", "ecere::com::Class", 4, 4, 1);
6003 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "methods", "ecere::sys::BinaryTree", 16, 4, 1);
6004 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "members", "ecere::sys::BinaryTree", 16, 4, 1);
6005 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "prop", "ecere::sys::BinaryTree", 16, 4, 1);
6006 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "membersAndProperties", "ecere::sys::OldList", 20, 4, 1);
6007 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "classProperties", "ecere::sys::BinaryTree", 16, 4, 1);
6008 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "derivatives", "ecere::sys::OldList", 20, 4, 1);
6009 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "memberID", "int", 4, 4, 1);
6010 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "startMemberID", "int", 4, 4, 1);
6011 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "type", "ecere::com::ClassType", 4, 4, 1);
6012 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "module", "ecere::com::Module", 4, 4, 1);
6013 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "nameSpace", "ecere::com::NameSpace *", 4, 4, 1);
6014 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataTypeString", "char *", 4, 4, 1);
6015 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataType", "Type", 4, 4, 1);
6016 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "typeSize", "int", 4, 4, 1);
6017 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "defaultAlignment", "int", 4, 4, 1);
6018 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "Initialize", "void( *)()", 4, 4, 1);
6019 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "memberOffset", "int", 4, 4, 1);
6020 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "selfWatchers", "ecere::sys::OldList", 20, 4, 1);
6021 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "designerClass", "char *", 4, 4, 1);
6022 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "noExpansion", "bool", 4, 4, 1);
6023 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "defaultProperty", "char *", 4, 4, 1);
6024 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "comRedefinition", "bool", 4, 4, 1);
6025 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "count", "int", 4, 4, 1);
6026 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "isRemote", "bool", 4, 4, 1);
6027 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "internalDecl", "bool", 4, 4, 1);
6028 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "data", "void *", 4, 4, 1);
6029 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "computeSize", "bool", 4, 4, 1);
6030 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "structAlignment", "int", 4, 4, 1);
6031 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "destructionWatchOffset", "int", 4, 4, 1);
6032 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "fixed", "bool", 4, 4, 1);
6033 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "delayedCPValues", "ecere::sys::OldList", 20, 4, 1);
6034 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "inheritanceAccess", "ecere::com::AccessMode", 4, 4, 1);
6035 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "fullName", "char *", 4, 4, 1);
6036 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "symbol", "void *", 4, 4, 1);
6037 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "conversions", "ecere::sys::OldList", 20, 4, 1);
6038 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "templateParams", "ecere::sys::OldList", 20, 4, 1);
6039 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "templateArgs", "ecere::com::ClassTemplateArgument *", 4, 4, 1);
6040 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "templateClass", "ecere::com::Class", 4, 4, 1);
6041 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "templatized", "ecere::sys::OldList", 20, 4, 1);
6042 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "numParams", "int", 4, 4, 1);
6044 class->fixed = (unsigned int)1;
6046 class->noExpansion = (unsigned int)1;
6047 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(4, "ecere::com::TemplateParameterType", 0, 0, 0, 0, 0, module, 4, 1);
6048 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6049 __ecereClass___ecereNameSpace__ecere__com__TemplateParameterType = class;
6050 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "type", 0);
6051 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "identifier", 1);
6052 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "expression", 2);
6053 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(4, "ecere::com::TemplateMemberType", 0, 0, 0, 0, 0, module, 4, 1);
6054 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6055 __ecereClass___ecereNameSpace__ecere__com__TemplateMemberType = class;
6056 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "dataMember", 0);
6057 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "method", 1);
6058 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "prop", 2);
6059 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(1, "ecere::com::ClassTemplateArgument", 0, sizeof(struct __ecereNameSpace__ecere__com__ClassTemplateArgument), 0, 0, 0, module, 4, 1);
6060 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6061 __ecereClass___ecereNameSpace__ecere__com__ClassTemplateArgument = class;
6063 struct __ecereNameSpace__ecere__com__DataMember * dataMember0 = __ecereNameSpace__ecere__com__eMember_New(1, 1);
6066 struct __ecereNameSpace__ecere__com__DataMember * dataMember1 = __ecereNameSpace__ecere__com__eMember_New(2, 1);
6068 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember1, "dataTypeString", "char *", 4, 4, 1);
6069 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember1, "dataTypeClass", "ecere::com::Class", 4, 4, 1);
6070 __ecereNameSpace__ecere__com__eMember_AddMember(dataMember0, dataMember1);
6072 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember0, "expression", "ecere::com::DataValue", 8, 8, 1);
6074 struct __ecereNameSpace__ecere__com__DataMember * dataMember1 = __ecereNameSpace__ecere__com__eMember_New(2, 1);
6076 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember1, "memberString", "char *", 4, 4, 1);
6078 struct __ecereNameSpace__ecere__com__DataMember * dataMember2 = __ecereNameSpace__ecere__com__eMember_New(1, 1);
6080 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember2, "member", "ecere::com::DataMember", 4, 4, 1);
6081 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember2, "prop", "ecere::com::Property", 4, 4, 1);
6082 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember2, "method", "ecere::com::Method", 4, 4, 1);
6083 __ecereNameSpace__ecere__com__eMember_AddMember(dataMember1, dataMember2);
6085 __ecereNameSpace__ecere__com__eMember_AddMember(dataMember0, dataMember1);
6087 __ecereNameSpace__ecere__com__eClass_AddMember(class, dataMember0);
6089 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::ClassTemplateParameter", 0, sizeof(struct __ecereNameSpace__ecere__com__ClassTemplateParameter), 0, 0, 0, module, 4, 1);
6090 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6091 __ecereClass___ecereNameSpace__ecere__com__ClassTemplateParameter = class;
6092 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "prev", "ecere::com::ClassTemplateParameter", 4, 4, 1);
6093 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "next", "ecere::com::ClassTemplateParameter", 4, 4, 1);
6094 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "name", "char *", 4, 4, 1);
6095 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "type", "ecere::com::TemplateParameterType", 4, 4, 1);
6097 struct __ecereNameSpace__ecere__com__DataMember * dataMember0 = __ecereNameSpace__ecere__com__eMember_New(1, 1);
6099 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember0, "dataTypeString", "char *", 4, 4, 1);
6100 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember0, "memberType", "ecere::com::TemplateMemberType", 4, 4, 1);
6101 __ecereNameSpace__ecere__com__eClass_AddMember(class, dataMember0);
6103 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "defaultArg", "ecere::com::ClassTemplateArgument", 8, 8, 1);
6104 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "param", "void *", 4, 4, 1);
6106 class->fixed = (unsigned int)1;
6107 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(4, "ecere::com::MethodType", 0, 0, 0, 0, 0, module, 4, 1);
6108 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6109 __ecereClass___ecereNameSpace__ecere__com__MethodType = class;
6110 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "normalMethod", 0);
6111 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "virtualMethod", 1);
6112 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::Method", 0, sizeof(struct __ecereNameSpace__ecere__com__Method), 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__Method = class;
6115 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "name", "char *", 4, 4, 1);
6116 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "parent", "ecere::com::Method", 4, 4, 1);
6117 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "left", "ecere::com::Method", 4, 4, 1);
6118 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "right", "ecere::com::Method", 4, 4, 1);
6119 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "depth", "int", 4, 4, 1);
6120 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "function", "int( *)()", 4, 4, 1);
6121 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "vid", "int", 4, 4, 1);
6122 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "type", "ecere::com::MethodType", 4, 4, 1);
6123 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "_class", "ecere::com::Class", 4, 4, 1);
6124 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "symbol", "void *", 4, 4, 1);
6125 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataTypeString", "char *", 4, 4, 1);
6126 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataType", "Type", 4, 4, 1);
6127 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "memberAccess", "ecere::com::AccessMode", 4, 4, 1);
6129 class->fixed = (unsigned int)1;
6130 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(4, "ecere::com::ImportType", 0, 0, 0, 0, 0, module, 4, 1);
6131 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6132 __ecereClass___ecereNameSpace__ecere__com__ImportType = class;
6133 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "normalImport", 0);
6134 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "staticImport", 1);
6135 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "remoteImport", 2);
6136 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "preDeclImport", 3);
6137 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "comCheckImport", 4);
6138 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(1, "ecere::com::NameSpace", 0, sizeof(struct __ecereNameSpace__ecere__com__NameSpace), 0, 0, 0, module, 4, 1);
6139 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6140 __ecereClass___ecereNameSpace__ecere__com__NameSpace = class;
6141 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "name", "char *", 4, 4, 1);
6142 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "btParent", "ecere::com::NameSpace *", 4, 4, 1);
6143 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "left", "ecere::com::NameSpace *", 4, 4, 1);
6144 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "right", "ecere::com::NameSpace *", 4, 4, 1);
6145 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "depth", "int", 4, 4, 1);
6146 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "parent", "ecere::com::NameSpace *", 4, 4, 1);
6147 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "nameSpaces", "ecere::sys::BinaryTree", 16, 4, 1);
6148 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "classes", "ecere::sys::BinaryTree", 16, 4, 1);
6149 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "defines", "ecere::sys::BinaryTree", 16, 4, 1);
6150 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "functions", "ecere::sys::BinaryTree", 16, 4, 1);
6151 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(1, "ecere::com::DataValue", 0, sizeof(struct __ecereNameSpace__ecere__com__DataValue), 0, 0, 0, module, 4, 1);
6152 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6153 __ecereClass___ecereNameSpace__ecere__com__DataValue = class;
6155 struct __ecereNameSpace__ecere__com__DataMember * dataMember0 = __ecereNameSpace__ecere__com__eMember_New(1, 1);
6157 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember0, "c", "char", 1, 1, 1);
6158 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember0, "uc", "byte", 1, 1, 1);
6159 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember0, "s", "short", 2, 2, 1);
6160 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember0, "us", "uint16", 2, 2, 1);
6161 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember0, "i", "int", 4, 4, 1);
6162 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember0, "ui", "uint", 4, 4, 1);
6163 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember0, "p", "void *", 4, 4, 1);
6164 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember0, "f", "float", 4, 4, 1);
6165 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember0, "d", "double", 8, 8, 1);
6166 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember0, "i64", "int64", 8, 8, 1);
6167 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember0, "ui64", "uint64", 8, 8, 1);
6168 __ecereNameSpace__ecere__com__eClass_AddMember(class, dataMember0);
6170 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::DataMember", 0, sizeof(struct __ecereNameSpace__ecere__com__DataMember), 0, 0, 0, module, 4, 1);
6171 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6172 __ecereClass___ecereNameSpace__ecere__com__DataMember = class;
6173 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "prev", "ecere::com::DataMember", 4, 4, 1);
6174 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "next", "ecere::com::DataMember", 4, 4, 1);
6175 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "name", "char *", 4, 4, 1);
6176 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "isProperty", "bool", 4, 4, 1);
6177 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "memberAccess", "ecere::com::AccessMode", 4, 4, 1);
6178 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "id", "int", 4, 4, 1);
6179 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "_class", "ecere::com::Class", 4, 4, 1);
6180 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataTypeString", "char *", 4, 4, 1);
6181 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataTypeClass", "ecere::com::Class", 4, 4, 1);
6182 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataType", "Type", 4, 4, 1);
6183 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "type", "ecere::com::DataMemberType", 4, 4, 1);
6184 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "offset", "int", 4, 4, 1);
6185 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "memberID", "int", 4, 4, 1);
6186 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "members", "ecere::sys::OldList", 20, 4, 1);
6187 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "membersAlpha", "ecere::sys::BinaryTree", 16, 4, 1);
6188 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "memberOffset", "int", 4, 4, 1);
6189 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "structAlignment", "int", 4, 4, 1);
6191 class->fixed = (unsigned int)1;
6192 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::BitMember", 0, sizeof(struct __ecereNameSpace__ecere__com__BitMember), 0, 0, 0, module, 4, 1);
6193 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6194 __ecereClass___ecereNameSpace__ecere__com__BitMember = class;
6195 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "prev", "ecere::com::BitMember", 4, 4, 1);
6196 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "next", "ecere::com::BitMember", 4, 4, 1);
6197 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "name", "char *", 4, 4, 1);
6198 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "isProperty", "bool", 4, 4, 1);
6199 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "memberAccess", "ecere::com::AccessMode", 4, 4, 1);
6200 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "id", "int", 4, 4, 1);
6201 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "_class", "ecere::com::Class", 4, 4, 1);
6202 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataTypeString", "char *", 4, 4, 1);
6203 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataTypeClass", "ecere::com::Class", 4, 4, 1);
6204 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataType", "Type", 4, 4, 1);
6205 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "type", "ecere::com::DataMemberType", 4, 4, 1);
6206 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "size", "int", 4, 4, 1);
6207 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "pos", "int", 4, 4, 1);
6208 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "mask", "uint64", 8, 8, 1);
6210 class->fixed = (unsigned int)1;
6211 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::ClassProperty", 0, sizeof(struct __ecereNameSpace__ecere__com__ClassProperty), 0, 0, 0, module, 4, 1);
6212 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6213 __ecereClass___ecereNameSpace__ecere__com__ClassProperty = class;
6214 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "name", "char *", 4, 4, 1);
6215 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "parent", "ecere::com::ClassProperty", 4, 4, 1);
6216 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "left", "ecere::com::ClassProperty", 4, 4, 1);
6217 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "right", "ecere::com::ClassProperty", 4, 4, 1);
6218 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "depth", "int", 4, 4, 1);
6219 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "Set", "void( *)(ecere::com::Class, int64)", 4, 4, 1);
6220 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "Get", "int64( *)(ecere::com::Class)", 4, 4, 1);
6221 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataTypeString", "char *", 4, 4, 1);
6222 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataType", "Type", 4, 4, 1);
6223 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "constant", "bool", 4, 4, 1);
6225 class->fixed = (unsigned int)1;
6226 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::DefinedExpression", 0, sizeof(struct __ecereNameSpace__ecere__com__DefinedExpression), 0, 0, 0, module, 4, 1);
6227 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6228 __ecereClass___ecereNameSpace__ecere__com__DefinedExpression = class;
6229 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "prev", "ecere::com::DefinedExpression", 4, 4, 1);
6230 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "next", "ecere::com::DefinedExpression", 4, 4, 1);
6231 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "name", "char *", 4, 4, 1);
6232 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "value", "char *", 4, 4, 1);
6233 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "nameSpace", "ecere::com::NameSpace *", 4, 4, 1);
6235 class->fixed = (unsigned int)1;
6236 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::GlobalFunction", 0, sizeof(struct __ecereNameSpace__ecere__com__GlobalFunction), 0, 0, 0, module, 4, 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__GlobalFunction = class;
6239 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "prev", "ecere::com::GlobalFunction", 4, 4, 1);
6240 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "next", "ecere::com::GlobalFunction", 4, 4, 1);
6241 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "name", "char *", 4, 4, 1);
6242 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "function", "int( *)()", 4, 4, 1);
6243 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "module", "ecere::com::Module", 4, 4, 1);
6244 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "nameSpace", "ecere::com::NameSpace *", 4, 4, 1);
6245 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataTypeString", "char *", 4, 4, 1);
6246 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataType", "Type", 4, 4, 1);
6247 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "symbol", "void *", 4, 4, 1);
6249 class->fixed = (unsigned int)1;
6250 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::EnumClassData", 0, sizeof(struct __ecereNameSpace__ecere__com__EnumClassData), 0, 0, 0, module, 4, 1);
6251 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6252 __ecereClass___ecereNameSpace__ecere__com__EnumClassData = class;
6253 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "values", "ecere::sys::OldList", 20, 4, 1);
6254 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "largest", "int", 4, 4, 1);
6256 class->fixed = (unsigned int)1;
6257 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::Watcher", 0, sizeof(struct __ecereNameSpace__ecere__com__Watcher), 0, 0, 0, module, 2, 1);
6258 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6259 __ecereClass___ecereNameSpace__ecere__com__Watcher = class;
6261 class->fixed = (unsigned int)1;
6262 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::MemBlock", 0, sizeof(struct __ecereNameSpace__ecere__com__MemBlock), 0, 0, 0, module, 2, 1);
6263 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6264 __ecereClass___ecereNameSpace__ecere__com__MemBlock = class;
6265 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::MemPart", 0, sizeof(struct __ecereNameSpace__ecere__com__MemPart), 0, 0, 0, module, 2, 1);
6266 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6267 __ecereClass___ecereNameSpace__ecere__com__MemPart = class;
6268 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(1, "ecere::com::BlockPool", 0, sizeof(struct __ecereNameSpace__ecere__com__BlockPool), 0, 0, 0, module, 2, 1);
6269 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6270 __ecereClass___ecereNameSpace__ecere__com__BlockPool = class;
6271 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "Add", "ecere::com::MemBlock Add()", __ecereMethod___ecereNameSpace__ecere__com__BlockPool_Add, 1);
6272 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "Expand", "bool Expand(unsigned int numBlocks)", __ecereMethod___ecereNameSpace__ecere__com__BlockPool_Expand, 1);
6273 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "Remove", "void Remove(ecere::com::MemBlock block)", __ecereMethod___ecereNameSpace__ecere__com__BlockPool_Remove, 1);
6274 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "first", "ecere::com::MemBlock", 4, 4, 1);
6275 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "last", "ecere::com::MemBlock", 4, 4, 1);
6276 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "free", "ecere::com::MemBlock", 4, 4, 1);
6277 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "blockSize", "uint", 4, 4, 1);
6278 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "blockSpace", "uint", 4, 4, 1);
6279 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "numParts", "int", 4, 4, 1);
6280 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "numBlocks", "int", 4, 4, 1);
6281 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "totalSize", "uint", 4, 4, 1);
6282 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "usedSpace", "uint", 4, 4, 1);
6283 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::log2i", "uint ecere::com::log2i(uint number)", __ecereNameSpace__ecere__com__log2i, module, 4);
6284 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::pow2i", "uint ecere::com::pow2i(uint number)", __ecereNameSpace__ecere__com__pow2i, module, 4);
6285 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::memswap", "void ecere::com::memswap(byte * a, byte * b, uint size)", __ecereNameSpace__ecere__com__memswap, module, 4);
6286 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::CheckMemory", "void ecere::com::CheckMemory(void)", __ecereNameSpace__ecere__com__CheckMemory, module, 4);
6287 __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);
6288 __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);
6289 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::_strtoi64", "int64 ecere::com::_strtoi64(char * string, char * * endString, int base)", __ecereNameSpace__ecere__com___strtoi64, module, 4);
6290 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::_strtoui64", "uint64 ecere::com::_strtoui64(char * string, char * * endString, int base)", __ecereNameSpace__ecere__com___strtoui64, module, 4);
6291 __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);
6292 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::DefaultFunction", "bool ecere::com::DefaultFunction(void)", __ecereNameSpace__ecere__com__DefaultFunction, module, 2);
6293 __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);
6294 __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);
6295 __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);
6296 __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);
6297 __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);
6298 __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);
6299 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eClass_GetProperty", "int64 ecere::com::eClass_GetProperty(ecere::com::Class _class, char * name)", __ecereNameSpace__ecere__com__eClass_GetProperty, module, 4);
6300 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eClass_SetProperty", "void ecere::com::eClass_SetProperty(ecere::com::Class _class, char * name, int64 value)", __ecereNameSpace__ecere__com__eClass_SetProperty, module, 4);
6301 __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);
6302 __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);
6303 __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);
6304 __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);
6305 __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);
6306 __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);
6307 __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);
6308 __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);
6309 __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);
6310 __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);
6311 __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);
6312 __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);
6313 __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);
6314 __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);
6315 __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);
6316 __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);
6317 __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);
6318 __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);
6319 __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);
6320 __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);
6321 __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);
6322 __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);
6323 __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);
6324 __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);
6325 __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);
6326 __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);
6327 __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);
6328 __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);
6329 __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);
6330 __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);
6331 __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);
6332 __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);
6333 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eSystem_New", "void * ecere::com::eSystem_New(uint size)", __ecereNameSpace__ecere__com__eSystem_New, module, 4);
6334 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eSystem_New0", "void * ecere::com::eSystem_New0(uint size)", __ecereNameSpace__ecere__com__eSystem_New0, module, 4);
6335 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eSystem_Delete", "void ecere::com::eSystem_Delete(void * memory)", __ecereNameSpace__ecere__com__eSystem_Delete, module, 4);
6336 __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);
6337 __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);
6338 __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);
6339 __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);
6340 __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);
6341 __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);
6342 __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);
6343 __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);
6344 __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);
6345 __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);
6346 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::LocateModule", "bool ecere::com::LocateModule(char * name, char * fileName)", __ecereNameSpace__ecere__com__LocateModule, module, 4);
6347 __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);
6348 __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);
6349 __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);
6350 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(4, "ecere::com::Platform", 0, 0, 0, 0, 0, module, 4, 1);
6351 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6352 __ecereClass___ecereNameSpace__ecere__com__Platform = class;
6353 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "OnGetString", 0, __ecereMethod___ecereNameSpace__ecere__com__Platform_OnGetString, 1);
6354 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "OnGetDataFromString", 0, __ecereMethod___ecereNameSpace__ecere__com__Platform_OnGetDataFromString, 1);
6355 __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);
6356 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "unknown", 0);
6357 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "win32", 1);
6358 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "tux", 2);
6359 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "apple", 3);
6360 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::GetRuntimePlatform", "ecere::com::Platform ecere::com::GetRuntimePlatform(void)", __ecereNameSpace__ecere__com__GetRuntimePlatform, module, 4);
6361 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::ObjectInfo", 0, sizeof(struct __ecereNameSpace__ecere__com__ObjectInfo), 0, 0, 0, module, 4, 1);
6362 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6363 __ecereClass___ecereNameSpace__ecere__com__ObjectInfo = class;
6364 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "prev", "ecere::com::ObjectInfo", 4, 4, 1);
6365 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "next", "ecere::com::ObjectInfo", 4, 4, 1);
6366 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "instance", "ecere::com::Instance", 4, 4, 1);
6367 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "name", "char *", 4, 4, 1);
6368 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "instCode", "Instantiation", 4, 4, 1);
6369 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "deleted", "bool", 4, 4, 1);
6370 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "oClass", "ecere::com::ObjectInfo", 4, 4, 1);
6371 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "instances", "ecere::sys::OldList", 20, 4, 1);
6372 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "classDefinition", "ClassDefinition", 4, 4, 1);
6373 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "modified", "bool", 4, 4, 1);
6374 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);
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__DesignerBase = class;
6377 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "FindObject", "bool FindObject(ecere::com::Instance * instance, char * string)", 0, 1);
6378 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "RenameObject", "void RenameObject(ecere::com::ObjectInfo object, char * name)", 0, 1);
6379 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "SelectObjectFromDesigner", "void SelectObjectFromDesigner(ecere::com::ObjectInfo object)", 0, 1);
6380 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "CodeAddObject", "void CodeAddObject(ecere::com::Instance instance, ecere::com::ObjectInfo * object)", 0, 1);
6381 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "SheetAddObject", "void SheetAddObject(ecere::com::ObjectInfo object)", 0, 1);
6382 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "AddToolBoxClass", "void AddToolBoxClass(ecere::com::Class _class)", 0, 1);
6383 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "AddDefaultMethod", "void AddDefaultMethod(ecere::com::Instance instance, ecere::com::Instance classInstance)", 0, 1);
6384 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "DeleteObject", "void DeleteObject(ecere::com::ObjectInfo object)", 0, 1);
6385 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "ObjectContainsCode", "bool ObjectContainsCode(ecere::com::ObjectInfo object)", 0, 1);
6386 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "ModifyCode", "void ModifyCode(void)", 0, 1);
6387 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "UpdateProperties", "void UpdateProperties(void)", 0, 1);
6388 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "classDesigner", "ecere::com::ClassDesignerBase", 4, 4, 1);
6389 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "objectClass", "char *", 4, 4, 1);
6390 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "isDragging", "bool", 4, 4, 1);
6391 __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);
6392 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application)
6393 __ecereProp___ecereNameSpace__ecere__com__DesignerBase_classDesigner = __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_classDesigner, __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_classDesigner = (void *)0;
6394 __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);
6395 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application)
6396 __ecereProp___ecereNameSpace__ecere__com__DesignerBase_objectClass = __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_objectClass, __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_objectClass = (void *)0;
6397 __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);
6398 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application)
6399 __ecereProp___ecereNameSpace__ecere__com__DesignerBase_isDragging = __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_isDragging, __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_isDragging = (void *)0;
6400 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(0, "ecere::com::ClassDesignerBase", "ecere::gui::Window", 0, 0, 0, 0, module, 4, 1);
6401 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6402 __ecereClass___ecereNameSpace__ecere__com__ClassDesignerBase = class;
6403 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "Reset", "void Reset(void)", 0, 1);
6404 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "AddObject", "void AddObject(void)", 0, 1);
6405 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "SelectObject", "void SelectObject(ecere::com::ObjectInfo object, ecere::com::Instance control)", 0, 1);
6406 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "ListToolBoxClasses", "void ListToolBoxClasses(ecere::com::DesignerBase designer)", 0, 1);
6407 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "PrepareTestObject", "void ::PrepareTestObject(ecere::com::DesignerBase designer, ecere::com::Instance test)", 0, 1);
6408 __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);
6409 __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);
6410 __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);
6411 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "DestroyObject", "void ::DestroyObject(ecere::com::Instance object)", 0, 1);
6412 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "FixProperty", "void ::FixProperty(ecere::com::Property prop, ecere::com::Instance object)", 0, 1);
6413 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "CreateNew", "void ::CreateNew(EditBox editBox, Size clientSize, char * name, char * inherit)", 0, 1);
6414 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::SetActiveDesigner", "void ecere::com::SetActiveDesigner(ecere::com::DesignerBase designer)", __ecereNameSpace__ecere__com__SetActiveDesigner, module, 4);
6415 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::GetActiveDesigner", "ecere::com::DesignerBase ecere::com::GetActiveDesigner(void)", __ecereNameSpace__ecere__com__GetActiveDesigner, module, 4);
6416 __ecereNameSpace__ecere__com__eSystem_RegisterDefine("ecere::sys::LEAD_OFFSET", "0xD800 - (0x10000 >> 10)", module, 2);
6417 __ecereNameSpace__ecere__com__eSystem_RegisterDefine("ecere::sys::SURROGATE_OFFSET", "0x10000 - (0xD800 << 10) - 0xDC00", module, 2);
6418 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::UTF8Validate", "bool ecere::sys::UTF8Validate(char * source)", __ecereNameSpace__ecere__sys__UTF8Validate, module, 4);
6419 __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);
6420 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::UTF16toUTF8", "char * ecere::sys::UTF16toUTF8(uint16 * source)", __ecereNameSpace__ecere__sys__UTF16toUTF8, module, 4);
6421 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::UTF16toUTF8Buffer", "int ecere::sys::UTF16toUTF8Buffer(uint16 * source, byte * dest, int max)", __ecereNameSpace__ecere__sys__UTF16toUTF8Buffer, module, 4);
6422 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::UTF8GetChar", "ecere::com::unichar ecere::sys::UTF8GetChar(char * string, int * numBytes)", __ecereNameSpace__ecere__sys__UTF8GetChar, module, 4);
6423 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::UTF8toUTF16Buffer", "int ecere::sys::UTF8toUTF16Buffer(char * source, uint16 * dest, int max)", __ecereNameSpace__ecere__sys__UTF8toUTF16Buffer, module, 4);
6424 __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);
6425 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::UTF8toUTF16", "uint16 * ecere::sys::UTF8toUTF16(char * source, int * wordCount)", __ecereNameSpace__ecere__sys__UTF8toUTF16, module, 4);
6428 void __ecereUnregisterModule_instance(struct __ecereNameSpace__ecere__com__Instance * module)
6431 __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_classDesigner = (void *)0;
6432 __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_objectClass = (void *)0;
6433 __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_isDragging = (void *)0;