2 typedef long long int64;
3 typedef unsigned long long uint64;
4 #elif defined(__TINYC__)
6 #define __builtin_va_list va_list
7 #define __builtin_va_start va_start
8 #define __builtin_va_end va_end
10 #define strcasecmp stricmp
11 #define strncasecmp strnicmp
12 #define __declspec(x) __attribute__((x))
14 typedef long long int64;
15 typedef unsigned long long uint64;
17 typedef __int64 int64;
18 typedef unsigned __int64 uint64;
21 #define __ENDIAN_PAD(x) (8 - (x))
23 #define __ENDIAN_PAD(x) 0
26 #define stdcall __attribute__((__stdcall__))
28 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__BTNode;
30 struct __ecereNameSpace__ecere__sys__BTNode;
32 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__BinaryTree;
34 struct __ecereNameSpace__ecere__sys__BinaryTree
36 struct __ecereNameSpace__ecere__sys__BTNode * root;
38 int (* CompareKey)(struct __ecereNameSpace__ecere__sys__BinaryTree * tree, unsigned int a, unsigned int b);
39 void (* FreeKey)(void * key);
42 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__OldList;
44 struct __ecereNameSpace__ecere__sys__OldList
53 struct __ecereNameSpace__ecere__com__Class
55 struct __ecereNameSpace__ecere__com__Class * prev, * next;
57 int offset, structSize;
60 int (* Constructor)(struct __ecereNameSpace__ecere__com__Instance *);
61 void (* Destructor)(struct __ecereNameSpace__ecere__com__Instance *);
62 int offsetClass, sizeClass;
63 struct __ecereNameSpace__ecere__com__Class * base;
64 struct __ecereNameSpace__ecere__sys__BinaryTree methods;
65 struct __ecereNameSpace__ecere__sys__BinaryTree members;
66 struct __ecereNameSpace__ecere__sys__BinaryTree prop;
67 struct __ecereNameSpace__ecere__sys__OldList membersAndProperties;
68 struct __ecereNameSpace__ecere__sys__BinaryTree classProperties;
69 struct __ecereNameSpace__ecere__sys__OldList derivatives;
70 int memberID, startMemberID;
72 struct __ecereNameSpace__ecere__com__Instance * module;
73 struct __ecereNameSpace__ecere__com__NameSpace * nameSpace;
74 char * dataTypeString;
75 struct __ecereNameSpace__ecere__com__Instance * dataType;
78 void (* Initialize)();
80 struct __ecereNameSpace__ecere__sys__OldList selfWatchers;
82 unsigned int noExpansion;
83 char * defaultProperty;
84 unsigned int comRedefinition;
86 unsigned int isRemote;
87 unsigned int internalDecl;
89 unsigned int computeSize;
91 int destructionWatchOffset;
93 struct __ecereNameSpace__ecere__sys__OldList delayedCPValues;
94 int inheritanceAccess;
97 struct __ecereNameSpace__ecere__sys__OldList conversions;
98 struct __ecereNameSpace__ecere__sys__OldList templateParams;
99 struct __ecereNameSpace__ecere__com__ClassTemplateArgument * templateArgs;
100 struct __ecereNameSpace__ecere__com__Class * templateClass;
101 struct __ecereNameSpace__ecere__sys__OldList templatized;
105 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Class;
107 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Instance;
109 struct __ecereNameSpace__ecere__com__Instance
112 struct __ecereNameSpace__ecere__com__Class * _class;
116 struct __ecereNameSpace__ecere__com__Property
118 struct __ecereNameSpace__ecere__com__Property * prev, * next;
120 unsigned int isProperty;
123 struct __ecereNameSpace__ecere__com__Class * _class;
124 char * dataTypeString;
125 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
126 struct __ecereNameSpace__ecere__com__Instance * dataType;
129 unsigned int (* IsSet)();
133 unsigned int conversion;
134 unsigned int watcherOffset;
136 unsigned int compiled;
137 unsigned int selfWatchable, isWatchable;
140 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Property;
142 struct __ecereNameSpace__ecere__com__DataMember
144 struct __ecereNameSpace__ecere__com__DataMember * prev, * next;
146 unsigned int isProperty;
149 struct __ecereNameSpace__ecere__com__Class * _class;
150 char * dataTypeString;
151 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
152 struct __ecereNameSpace__ecere__com__Instance * dataType;
156 struct __ecereNameSpace__ecere__sys__OldList members;
157 struct __ecereNameSpace__ecere__sys__BinaryTree membersAlpha;
162 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__DataMember;
164 struct __ecereNameSpace__ecere__com__Method
167 struct __ecereNameSpace__ecere__com__Method * parent, * left, * right;
172 struct __ecereNameSpace__ecere__com__Class * _class;
174 char * dataTypeString;
175 struct __ecereNameSpace__ecere__com__Instance * dataType;
179 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Method;
181 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__SerialBuffer;
183 struct __ecereNameSpace__ecere__com__SerialBuffer
185 unsigned char * _buffer;
191 struct __ecereNameSpace__ecere__com__DataValue
209 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__DataValue;
211 struct __ecereNameSpace__ecere__com__ClassTemplateArgument
217 char * dataTypeString;
218 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
220 struct __ecereNameSpace__ecere__com__DataValue expression;
226 struct __ecereNameSpace__ecere__com__DataMember * member;
227 struct __ecereNameSpace__ecere__com__Property * prop;
228 struct __ecereNameSpace__ecere__com__Method * method;
234 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__ClassTemplateArgument;
236 typedef unsigned int size_t;
238 void exit(int status);
240 void * calloc(size_t nmemb, size_t size);
242 void free(void * ptr);
244 void * malloc(size_t size);
246 void * realloc(void * ptr, size_t size);
248 long int strtol(const char * nptr, char ** endptr, int base);
250 long long int strtoll(const char * nptr, char ** endptr, int base);
252 unsigned long long int strtoull(const char * nptr, char ** endptr, int base);
254 typedef __builtin_va_list __gnuc_va_list;
256 typedef __gnuc_va_list va_list;
260 FILE * bsl_stdin(void);
262 FILE * bsl_stdout(void);
264 FILE * bsl_stderr(void);
266 char * fgets(char * s, int size, FILE * stream);
268 FILE * fopen(const char * path, const char * mode);
270 int fclose(FILE * fp);
272 int fflush(FILE * stream);
274 int fgetc(FILE * stream);
276 int fprintf(FILE * stream, const char * format, ...);
278 int fputc(int c, FILE * stream);
280 size_t fread(void * ptr, size_t size, size_t nmemb, FILE * stream);
282 size_t fwrite(const void * ptr, size_t size, size_t nmemb, FILE * stream);
284 int fseek(FILE * stream, long offset, int whence);
286 long ftell(FILE * stream);
288 int feof(FILE * stream);
290 int ferror(FILE * stream);
292 int fileno(FILE * stream);
295 struct __ecereNameSpace__ecere__com__Class * __ecereNameSpace__ecere__com__eSystem_FindClass(struct __ecereNameSpace__ecere__com__Instance * module, char * name);
297 void * __ecereNameSpace__ecere__com__eSystem_Renew(void * memory, unsigned int size);
299 void * __ecereNameSpace__ecere__com__eSystem_Renew0(void * memory, unsigned int size);
301 void * __ecereNameSpace__ecere__com__eSystem_New(unsigned int size);
303 void * __ecereNameSpace__ecere__com__eSystem_New0(unsigned int size);
305 void __ecereNameSpace__ecere__com__eSystem_Delete(void * memory);
307 void * __ecereNameSpace__ecere__com__eInstance_New(struct __ecereNameSpace__ecere__com__Class * _class);
309 extern int __ecereVMethodID_class_OnGetDataFromString;
311 unsigned int Instance_LocateModule(char * name, char * fileName);
313 void Instance_COM_Initialize(int argc, char ** argv, char ** parsedCommand, int * argcPtr, char *** argvPtr);
315 void * Instance_Module_Load(char * name, void ** Load, void ** Unload);
317 void Instance_Module_Free(void * library);
319 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__unichar;
321 int __ecereNameSpace__ecere__sys__UTF32toUTF8Len(unsigned int * source, int count, unsigned char * dest, int max);
323 char * __ecereMethod___ecereNameSpace__ecere__com__unichar_OnGetString(struct __ecereNameSpace__ecere__com__Class * class, unsigned int * this, char * tempString, void * fieldData, unsigned int * needClass)
325 __ecereNameSpace__ecere__sys__UTF32toUTF8Len(&(*(this)), 1, tempString, 5);
329 unsigned int __ecereNameSpace__ecere__sys__UTF8GetChar(char * string, int * numBytes);
331 unsigned int __ecereMethod___ecereNameSpace__ecere__com__unichar_OnGetDataFromString(struct __ecereNameSpace__ecere__com__Class * class, unsigned int * this, char * string)
335 (*(this)) = __ecereNameSpace__ecere__sys__UTF8GetChar(string, &nb);
339 void __ecereNameSpace__ecere__com__eInstance_FireWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property);
341 void __ecereNameSpace__ecere__com__MemoryGuard_PushLoc(char * loc)
345 void __ecereNameSpace__ecere__com__MemoryGuard_PopLoc()
349 extern unsigned int stdcall __ecereDll_Load_ecere(struct __ecereNameSpace__ecere__com__Instance * module);
351 extern void stdcall __ecereDll_Unload_ecere(struct __ecereNameSpace__ecere__com__Instance * module);
353 struct __ecereNameSpace__ecere__com__BTNamedLink
356 struct __ecereNameSpace__ecere__com__BTNamedLink * parent, * left, * right;
361 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__BTNamedLink;
363 struct __ecereNameSpace__ecere__com__SelfWatcher
365 struct __ecereNameSpace__ecere__com__SelfWatcher * prev, * next;
366 void (* callback)(struct __ecereNameSpace__ecere__com__Instance *);
367 struct __ecereNameSpace__ecere__com__Property * _property;
370 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__SelfWatcher;
372 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__AccessMode;
374 struct __ecereNameSpace__ecere__com__SubModule
376 struct __ecereNameSpace__ecere__com__SubModule * prev, * next;
377 struct __ecereNameSpace__ecere__com__Instance * module;
381 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__SubModule;
383 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__DataMemberType;
385 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__ClassType;
387 static struct __ecereNameSpace__ecere__com__Property * __ecereProp___ecereNameSpace__ecere__com__Class_char__PTR_, * __ecerePropM___ecereNameSpace__ecere__com__Class_char__PTR_;
389 char * __ecereProp___ecereNameSpace__ecere__com__Class_Get_char__PTR_(struct __ecereNameSpace__ecere__com__Class * this)
394 extern struct __ecereNameSpace__ecere__com__Instance * __thisModule;
396 struct __ecereNameSpace__ecere__com__Class * __ecereProp___ecereNameSpace__ecere__com__Class_Set_char__PTR_(char * value)
398 struct __ecereNameSpace__ecere__com__Class * theClass = __ecereNameSpace__ecere__com__eSystem_FindClass(__thisModule, value);
403 char * __ecereMethod___ecereNameSpace__ecere__com__Class_OnGetString(struct __ecereNameSpace__ecere__com__Class * class, struct __ecereNameSpace__ecere__com__Class * this, char * tempString, void * fieldData, unsigned int * needClass)
408 struct __ecereNameSpace__ecere__com__NameSpace
411 struct __ecereNameSpace__ecere__com__NameSpace * btParent, * left, * right;
413 struct __ecereNameSpace__ecere__com__NameSpace * parent;
414 struct __ecereNameSpace__ecere__sys__BinaryTree nameSpaces;
415 struct __ecereNameSpace__ecere__sys__BinaryTree classes;
416 struct __ecereNameSpace__ecere__sys__BinaryTree defines;
417 struct __ecereNameSpace__ecere__sys__BinaryTree functions;
420 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__NameSpace;
422 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Module;
424 struct __ecereNameSpace__ecere__com__Module
426 struct __ecereNameSpace__ecere__com__Instance * application;
427 struct __ecereNameSpace__ecere__sys__OldList classes;
428 struct __ecereNameSpace__ecere__sys__OldList defines;
429 struct __ecereNameSpace__ecere__sys__OldList functions;
430 struct __ecereNameSpace__ecere__sys__OldList modules;
431 struct __ecereNameSpace__ecere__com__Instance * prev;
432 struct __ecereNameSpace__ecere__com__Instance * next;
437 struct __ecereNameSpace__ecere__com__NameSpace privateNameSpace;
438 struct __ecereNameSpace__ecere__com__NameSpace publicNameSpace;
441 unsigned int __ecereMethod___ecereNameSpace__ecere__com__Class_OnGetDataFromString(struct __ecereNameSpace__ecere__com__Class * class, struct __ecereNameSpace__ecere__com__Class ** this, char * string)
443 struct __ecereNameSpace__ecere__com__Class * theClass;
445 theClass = __ecereNameSpace__ecere__com__eSystem_FindClass(__thisModule, string);
447 theClass = __ecereNameSpace__ecere__com__eSystem_FindClass(((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application, string);
448 (*(this)) = (void *)theClass;
449 return theClass != (((void *)0));
452 void __ecereMethod___ecereNameSpace__ecere__com__IOChannel_Serialize(struct __ecereNameSpace__ecere__com__Instance * this, struct __ecereNameSpace__ecere__com__Class * class, void * data);
454 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_char__PTR_;
456 void __ecereMethod___ecereNameSpace__ecere__com__Class_OnSerialize(struct __ecereNameSpace__ecere__com__Class * class, struct __ecereNameSpace__ecere__com__Class * this, struct __ecereNameSpace__ecere__com__Instance * channel)
458 __ecereMethod___ecereNameSpace__ecere__com__IOChannel_Serialize(channel, __ecereClass_char__PTR_, this->fullName);
461 void __ecereMethod___ecereNameSpace__ecere__com__Class_OnFree(struct __ecereNameSpace__ecere__com__Class * class, struct __ecereNameSpace__ecere__com__Class * this)
465 void __ecereMethod___ecereNameSpace__ecere__com__IOChannel_Unserialize(struct __ecereNameSpace__ecere__com__Instance * this, struct __ecereNameSpace__ecere__com__Class * class, void * * data);
467 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_String;
469 void __ecereMethod___ecereNameSpace__ecere__com__Class_OnUnserialize(struct __ecereNameSpace__ecere__com__Class * class, struct __ecereNameSpace__ecere__com__Class ** this, struct __ecereNameSpace__ecere__com__Instance * channel)
471 struct __ecereNameSpace__ecere__com__Class * theClass;
474 __ecereMethod___ecereNameSpace__ecere__com__IOChannel_Unserialize(channel, __ecereClass_String, &string);
475 theClass = __ecereNameSpace__ecere__com__eSystem_FindClass(__thisModule, string);
477 theClass = __ecereNameSpace__ecere__com__eSystem_FindClass(((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application, string);
478 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
479 (*(this)) = (void *)theClass;
482 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__TemplateParameterType;
484 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__TemplateMemberType;
486 struct __ecereNameSpace__ecere__com__ClassTemplateParameter
488 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * prev, * next;
493 char * dataTypeString;
496 struct __ecereNameSpace__ecere__com__ClassTemplateArgument defaultArg;
500 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__ClassTemplateParameter;
502 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__MethodType;
504 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__ImportType;
506 struct __ecereNameSpace__ecere__com__BitMember
508 struct __ecereNameSpace__ecere__com__BitMember * prev, * next;
510 unsigned int isProperty;
513 struct __ecereNameSpace__ecere__com__Class * _class;
514 char * dataTypeString;
515 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
516 struct __ecereNameSpace__ecere__com__Instance * dataType;
523 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__BitMember;
525 struct __ecereNameSpace__ecere__com__ClassProperty
528 struct __ecereNameSpace__ecere__com__ClassProperty * parent, * left, * right;
530 void (* Set)(struct __ecereNameSpace__ecere__com__Class *, int);
531 int (* Get)(struct __ecereNameSpace__ecere__com__Class *);
532 char * dataTypeString;
533 struct __ecereNameSpace__ecere__com__Instance * dataType;
534 unsigned int constant;
537 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__ClassProperty;
539 struct __ecereNameSpace__ecere__com__DefinedExpression
541 struct __ecereNameSpace__ecere__com__DefinedExpression * prev, * next;
544 struct __ecereNameSpace__ecere__com__NameSpace * nameSpace;
547 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__DefinedExpression;
549 struct __ecereNameSpace__ecere__com__GlobalFunction
551 struct __ecereNameSpace__ecere__com__GlobalFunction * prev, * next;
554 struct __ecereNameSpace__ecere__com__Instance * module;
555 struct __ecereNameSpace__ecere__com__NameSpace * nameSpace;
556 char * dataTypeString;
557 struct __ecereNameSpace__ecere__com__Instance * dataType;
561 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__GlobalFunction;
563 struct __ecereNameSpace__ecere__com__EnumClassData
565 struct __ecereNameSpace__ecere__sys__OldList values;
569 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__EnumClassData;
571 struct __ecereNameSpace__ecere__com__Watcher
573 struct __ecereNameSpace__ecere__com__Watcher * prev, * next;
574 void (* callback)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__Instance *);
575 struct __ecereNameSpace__ecere__com__Instance * object;
578 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Watcher;
580 static unsigned int __ecereNameSpace__ecere__com__TOTAL_MEM = 0;
582 static unsigned int __ecereNameSpace__ecere__com__OUTSIDE_MEM = 0;
584 struct __ecereNameSpace__ecere__com__MemBlock
586 struct __ecereNameSpace__ecere__com__MemBlock * prev, * next;
587 struct __ecereNameSpace__ecere__com__MemPart * part;
591 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__MemBlock;
593 struct __ecereNameSpace__ecere__com__MemPart
598 struct __ecereNameSpace__ecere__com__BlockPool * pool;
601 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__MemPart;
603 static int __ecereNameSpace__ecere__com__power15[] =
605 4, 8, 12, 16, 24, 32, 48, 64, 96, 144, 224, 320, 480, 720, 1072, 1600, 2400, 6900, 5408, 8096, 12144, 18208, 27312, 40976, 61456, 92176, 138256, 207392, 311088, 466624, 699920
608 struct __ecereNameSpace__ecere__com__BlockPool
610 struct __ecereNameSpace__ecere__com__MemBlock * first, * last;
611 struct __ecereNameSpace__ecere__com__MemBlock * free;
612 unsigned int blockSize;
613 unsigned int blockSpace;
616 unsigned int totalSize;
617 unsigned int usedSpace;
620 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__BlockPool;
622 unsigned int __ecereMethod___ecereNameSpace__ecere__com__BlockPool_Expand(struct __ecereNameSpace__ecere__com__BlockPool * this, unsigned int numBlocks)
624 unsigned char * memory = malloc(numBlocks * this->blockSpace);
626 __ecereNameSpace__ecere__com__TOTAL_MEM += numBlocks * this->blockSpace;
630 struct __ecereNameSpace__ecere__com__MemBlock * block = (struct __ecereNameSpace__ecere__com__MemBlock *)memory;
631 struct __ecereNameSpace__ecere__com__MemPart * part = calloc(1, sizeof(struct __ecereNameSpace__ecere__com__MemPart));
633 __ecereNameSpace__ecere__com__TOTAL_MEM += sizeof(struct __ecereNameSpace__ecere__com__MemPart);
635 for(c = 0; c < numBlocks - 1; c++)
638 block->prev = (((void *)0));
639 block->next = (struct __ecereNameSpace__ecere__com__MemBlock *)((unsigned char *)block + this->blockSpace);
642 part->blocksUsed = 0;
644 part->memory = memory;
645 part->size = numBlocks;
647 block->prev = (((void *)0));
648 block->next = (((void *)0));
649 this->totalSize += numBlocks;
656 struct __ecereNameSpace__ecere__com__MemBlock * __ecereMethod___ecereNameSpace__ecere__com__BlockPool_Add(struct __ecereNameSpace__ecere__com__BlockPool * this)
659 struct __ecereNameSpace__ecere__com__MemBlock * block = (((void *)0));
662 __ecereMethod___ecereNameSpace__ecere__com__BlockPool_Expand(this, (__simpleStruct0 = this->numBlocks / 2, (1 > __simpleStruct0) ? 1 : __simpleStruct0));
666 block->prev = this->last;
668 block->prev->next = block;
672 this->free = block->next;
673 block->next = (((void *)0));
674 block->part->blocksUsed++;
680 void __ecereMethod___ecereNameSpace__ecere__com__BlockPool_Remove(struct __ecereNameSpace__ecere__com__BlockPool * this, struct __ecereNameSpace__ecere__com__MemBlock * block)
683 block->prev->next = block->next;
685 block->next->prev = block->prev;
686 if(this->first == block)
687 this->first = block->next;
688 if(this->last == block)
689 this->last = block->prev;
690 block->next = this->free;
692 block->part->blocksUsed--;
694 (*block->part->pool).usedSpace -= block->size;
695 if(!block->part->blocksUsed && this->numBlocks && this->totalSize > this->numBlocks + this->numBlocks / 2)
697 struct __ecereNameSpace__ecere__com__MemBlock * next = this->free, * prev = (((void *)0));
698 struct __ecereNameSpace__ecere__com__MemPart * part = block->part;
700 this->free = (((void *)0));
701 this->totalSize -= part->size;
704 if(next->part != part)
716 prev->next = (((void *)0));
717 __ecereNameSpace__ecere__com__TOTAL_MEM -= part->size * this->blockSpace;
718 __ecereNameSpace__ecere__com__TOTAL_MEM -= sizeof(struct __ecereNameSpace__ecere__com__MemPart);
725 static struct __ecereNameSpace__ecere__com__BlockPool * __ecereNameSpace__ecere__com__pools;
727 static unsigned int __ecereNameSpace__ecere__com__PosFibonacci(unsigned int number)
730 unsigned int last = 1, prev = 0;
731 unsigned int current = 1;
733 for(pos = 0; ; pos++)
738 if(current >= number)
744 static unsigned int __ecereNameSpace__ecere__com__NthFibonacci(unsigned int number)
747 unsigned int last = 1, prev = 0;
748 unsigned int current = 1;
750 for(pos = 0; pos <= number; pos++)
759 static unsigned int __ecereNameSpace__ecere__com__NextFibonacci(unsigned int number)
762 unsigned int last = 1, prev = 0;
763 unsigned int current = 1;
765 for(pos = 0; ; pos++)
770 if(current >= number)
775 static unsigned int __ecereNameSpace__ecere__com__log1_5i(unsigned int number)
780 for(pos = 0; pos < 31; pos++)
782 if(current >= number)
784 current = current * 3 / 2;
791 static unsigned int __ecereNameSpace__ecere__com__pow1_5(unsigned int number)
796 for(pos = 0; pos < number; pos++)
798 current = current * 3 / 2;
802 return (unsigned int)current;
805 static unsigned int __ecereNameSpace__ecere__com__pow1_5i(unsigned int number)
810 for(pos = 0; pos < 31; pos++)
812 if(current >= number)
813 return (unsigned int)current;
814 current = current * 3 / 2;
818 return (unsigned int)current;
821 unsigned int __ecereNameSpace__ecere__com__log2i(unsigned int number)
825 for(power = 0; power < 32; power++)
826 if((1L << power) >= number)
831 unsigned int __ecereNameSpace__ecere__com__pow2i(unsigned int number)
833 return 1 << __ecereNameSpace__ecere__com__log2i(number);
836 static unsigned int __ecereNameSpace__ecere__com__memoryInitialized = 0x0;
838 static void __ecereNameSpace__ecere__com__InitMemory()
842 __ecereNameSpace__ecere__com__memoryInitialized = 0x1;
843 __ecereNameSpace__ecere__com__pools = calloc(1, sizeof(struct __ecereNameSpace__ecere__com__BlockPool) * 31);
844 for(c = 0; c < 31; c++)
848 __ecereNameSpace__ecere__com__pools[c].blockSize = __ecereNameSpace__ecere__com__pow1_5(c);
849 if(__ecereNameSpace__ecere__com__pools[c].blockSize % 4)
850 __ecereNameSpace__ecere__com__pools[c].blockSize += 4 - (__ecereNameSpace__ecere__com__pools[c].blockSize % 4);
851 __ecereNameSpace__ecere__com__pools[c].blockSpace = __ecereNameSpace__ecere__com__pools[c].blockSize;
852 __ecereNameSpace__ecere__com__pools[c].blockSpace += sizeof(struct __ecereNameSpace__ecere__com__MemBlock);
853 expansion = (__ecereNameSpace__ecere__com__pools[c].blockSize < 128) ? 1024 : (131072 / __ecereNameSpace__ecere__com__pools[c].blockSize);
855 __ecereMethod___ecereNameSpace__ecere__com__BlockPool_Expand(&__ecereNameSpace__ecere__com__pools[c], ((1 > expansion) ? 1 : expansion));
859 static void * __ecereNameSpace__ecere__com___mymalloc(unsigned int size)
861 struct __ecereNameSpace__ecere__com__MemBlock * block = (((void *)0));
865 unsigned int p = __ecereNameSpace__ecere__com__log1_5i(size);
867 if(!__ecereNameSpace__ecere__com__memoryInitialized)
868 __ecereNameSpace__ecere__com__InitMemory();
871 block = __ecereMethod___ecereNameSpace__ecere__com__BlockPool_Add(&__ecereNameSpace__ecere__com__pools[p]);
875 __ecereNameSpace__ecere__com__pools[p].usedSpace += size;
880 block = malloc(sizeof(struct __ecereNameSpace__ecere__com__MemBlock) + size);
883 __ecereNameSpace__ecere__com__TOTAL_MEM += sizeof(struct __ecereNameSpace__ecere__com__MemBlock) + size;
884 __ecereNameSpace__ecere__com__OUTSIDE_MEM += sizeof(struct __ecereNameSpace__ecere__com__MemBlock) + size;
885 block->part = (((void *)0));
889 return block ? ((struct __ecereNameSpace__ecere__com__MemBlock *)block + 1) : (((void *)0));
892 extern void memset(void * area, unsigned char value, unsigned int count);
894 static void * __ecereNameSpace__ecere__com___mycalloc(int n, unsigned int size)
896 void * pointer = __ecereNameSpace__ecere__com___mymalloc(size);
899 memset(pointer, (unsigned char)0, size);
903 static void __ecereNameSpace__ecere__com___myfree(void * pointer)
907 struct __ecereNameSpace__ecere__com__MemBlock * block = (struct __ecereNameSpace__ecere__com__MemBlock *)((unsigned char *)pointer - sizeof(struct __ecereNameSpace__ecere__com__MemBlock));
908 struct __ecereNameSpace__ecere__com__MemPart * part = block->part;
909 struct __ecereNameSpace__ecere__com__BlockPool * pool = part ? part->pool : (((void *)0));
912 __ecereMethod___ecereNameSpace__ecere__com__BlockPool_Remove((&*pool), block);
915 __ecereNameSpace__ecere__com__TOTAL_MEM -= sizeof(struct __ecereNameSpace__ecere__com__MemBlock) + block->size;
916 __ecereNameSpace__ecere__com__OUTSIDE_MEM -= sizeof(struct __ecereNameSpace__ecere__com__MemBlock) + block->size;
922 extern void * memcpy(void * , const void * , unsigned int size);
924 static void * __ecereNameSpace__ecere__com___myrealloc(void * pointer, unsigned int size)
926 struct __ecereNameSpace__ecere__com__MemBlock * block = pointer ? ((struct __ecereNameSpace__ecere__com__MemBlock *)((unsigned char *)pointer - sizeof(struct __ecereNameSpace__ecere__com__MemBlock))) : (((void *)0));
927 void * newPointer = (((void *)0));
928 struct __ecereNameSpace__ecere__com__MemPart * part = block ? block->part : (((void *)0));
929 struct __ecereNameSpace__ecere__com__BlockPool * pool = part ? part->pool : (((void *)0));
935 if(__ecereNameSpace__ecere__com__pow1_5i(size) == (*pool).blockSize)
937 newPointer = pointer;
938 (*pool).usedSpace += size - block->size;
944 struct __ecereNameSpace__ecere__com__MemBlock * newBlock = realloc(block, sizeof(struct __ecereNameSpace__ecere__com__MemBlock) + size);
948 __ecereNameSpace__ecere__com__TOTAL_MEM += size - newBlock->size;
949 __ecereNameSpace__ecere__com__OUTSIDE_MEM += size - newBlock->size;
950 newPointer = ((struct __ecereNameSpace__ecere__com__MemBlock *)newBlock + 1);
956 newPointer = __ecereNameSpace__ecere__com___mymalloc(size);
957 if(pointer && newPointer)
959 unsigned int __simpleStruct0;
961 memcpy(newPointer, pointer, (__simpleStruct0 = block->size, (size < __simpleStruct0) ? size : __simpleStruct0));
962 __ecereNameSpace__ecere__com___myfree(pointer);
968 static void * __ecereNameSpace__ecere__com___mycrealloc(void * pointer, unsigned int size)
970 struct __ecereNameSpace__ecere__com__MemBlock * block = pointer ? ((struct __ecereNameSpace__ecere__com__MemBlock *)((unsigned char *)pointer - sizeof(struct __ecereNameSpace__ecere__com__MemBlock))) : (((void *)0));
971 void * newPointer = (((void *)0));
972 struct __ecereNameSpace__ecere__com__MemPart * part = block ? block->part : (((void *)0));
973 struct __ecereNameSpace__ecere__com__BlockPool * pool = part ? part->pool : (((void *)0));
979 if(__ecereNameSpace__ecere__com__pow1_5i(size) == (*pool).blockSize)
981 int extra = size - block->size;
983 newPointer = pointer;
984 (*pool).usedSpace += extra;
986 memset((unsigned char *)pointer + block->size, (unsigned char)0, extra);
992 struct __ecereNameSpace__ecere__com__MemBlock * newBlock = realloc(block, sizeof(struct __ecereNameSpace__ecere__com__MemBlock) + size);
996 int extra = size - newBlock->size;
998 __ecereNameSpace__ecere__com__TOTAL_MEM += extra;
999 __ecereNameSpace__ecere__com__OUTSIDE_MEM += extra;
1000 newPointer = ((struct __ecereNameSpace__ecere__com__MemBlock *)newBlock + 1);
1002 memset((unsigned char *)newPointer + newBlock->size, (unsigned char)0, extra);
1003 newBlock->size = size;
1009 newPointer = __ecereNameSpace__ecere__com___mymalloc(size);
1014 unsigned int __simpleStruct0;
1016 memcpy(newPointer, pointer, (__simpleStruct0 = block->size, (size < __simpleStruct0) ? size : __simpleStruct0));
1017 if(size > block->size)
1018 memset((unsigned char *)newPointer + block->size, (unsigned char)0, size - block->size);
1019 __ecereNameSpace__ecere__com___myfree(pointer);
1022 memset((unsigned char *)newPointer, (unsigned char)0, size);
1028 static void * __ecereNameSpace__ecere__com___malloc(unsigned int size)
1032 pointer = __ecereNameSpace__ecere__com___mymalloc(size + 2 * 0);
1033 return (unsigned char *)pointer + 0;
1036 static void * __ecereNameSpace__ecere__com___calloc(int n, unsigned int size)
1040 pointer = __ecereNameSpace__ecere__com___mycalloc(n, size + 2 * 0);
1041 return (unsigned char *)pointer + 0;
1044 static void __ecereNameSpace__ecere__com___free(void * pointer);
1046 static void * __ecereNameSpace__ecere__com___realloc(void * pointer, unsigned int size)
1050 __ecereNameSpace__ecere__com___free(pointer);
1051 return (((void *)0));
1053 pointer = __ecereNameSpace__ecere__com___myrealloc(pointer, size);
1054 return (unsigned char *)pointer + 0;
1057 static void * __ecereNameSpace__ecere__com___crealloc(void * pointer, unsigned int size)
1060 return (((void *)0));
1061 pointer = __ecereNameSpace__ecere__com___mycrealloc(pointer, size);
1062 return (unsigned char *)pointer + 0;
1065 static void __ecereNameSpace__ecere__com___free(void * pointer)
1069 __ecereNameSpace__ecere__com___myfree(pointer);
1073 void __ecereNameSpace__ecere__com__memswap(unsigned char * a, unsigned char * b, unsigned int size)
1076 unsigned char buffer[1024];
1078 for(c = 0; c < size; )
1080 int s = sizeof buffer;
1084 memcpy(buffer, a + c, s);
1085 memcpy(a + c, b + c, s);
1086 memcpy(b + c, buffer, s);
1091 void __ecereNameSpace__ecere__com__CheckMemory()
1095 static void __ecereNameSpace__ecere__com__ComputeClassParameters(struct __ecereNameSpace__ecere__com__Class * templatedClass, char * templateParams, struct __ecereNameSpace__ecere__com__Instance * findModule);
1097 extern char * strchr(char * , int);
1099 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__OldLink;
1101 struct __ecereNameSpace__ecere__sys__OldLink
1103 struct __ecereNameSpace__ecere__sys__OldLink * prev;
1104 struct __ecereNameSpace__ecere__sys__OldLink * next;
1108 extern char * __ecereNameSpace__ecere__sys__CopyString(char * string);
1110 extern void * memmove(void * , const void * , unsigned int size);
1112 static void __ecereNameSpace__ecere__com__SetDelayedCPValues(struct __ecereNameSpace__ecere__com__Class * _class, struct __ecereNameSpace__ecere__com__ClassProperty * _property);
1114 struct __ecereNameSpace__ecere__sys__BTNode * __ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(struct __ecereNameSpace__ecere__sys__BinaryTree * this);
1116 extern struct __ecereNameSpace__ecere__com__Property ** __ecereProp___ecereNameSpace__ecere__sys__BinaryTree_first;
1118 struct __ecereNameSpace__ecere__sys__BTNode * __ecereProp___ecereNameSpace__ecere__sys__BTNode_Get_next(struct __ecereNameSpace__ecere__sys__BTNode * this);
1120 extern struct __ecereNameSpace__ecere__com__Property ** __ecereProp___ecereNameSpace__ecere__sys__BTNode_next;
1122 struct __ecereNameSpace__ecere__sys__BTNode * __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(struct __ecereNameSpace__ecere__sys__BinaryTree * this, char * key);
1124 void __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(struct __ecereNameSpace__ecere__sys__BinaryTree * this, struct __ecereNameSpace__ecere__sys__BTNode * node);
1126 void __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(struct __ecereNameSpace__ecere__sys__OldList * this, void * item);
1128 static void __ecereNameSpace__ecere__com__FixDerivativesBase(struct __ecereNameSpace__ecere__com__Class * base, struct __ecereNameSpace__ecere__com__Class * mod)
1130 struct __ecereNameSpace__ecere__sys__OldLink * derivative;
1131 struct __ecereNameSpace__ecere__sys__OldLink * templateLink;
1133 __ecereNameSpace__ecere__com__ComputeClassParameters(base, strchr(base->name, '<'), (((void *)0)));
1134 for(derivative = base->derivatives.first; derivative; derivative = derivative->next)
1136 struct __ecereNameSpace__ecere__com__Class * _class = derivative->data;
1137 int type = _class->type;
1138 int size = _class->structSize - _class->offset;
1139 int oldSizeClass = _class->sizeClass;
1140 int sizeClass = _class->sizeClass - _class->offsetClass;
1141 struct __ecereNameSpace__ecere__com__Class * enumBase = (((void *)0));
1142 char * dataTypeString = (((void *)0));
1143 struct __ecereNameSpace__ecere__com__Class * baseClass;
1144 int offsetClass, totalSizeClass;
1146 for(baseClass = base; baseClass->base; baseClass = baseClass->base)
1148 if(base && !base->internalDecl && (base->type == 5 || base->type == 1 || base->type == 0))
1155 base = __ecereNameSpace__ecere__com__eSystem_FindClass(_class->module, "enum");
1158 dataTypeString = enumBase ? enumBase->dataTypeString : base->dataTypeString;
1159 offsetClass = base ? (base->templateClass ? base->templateClass->sizeClass : base->sizeClass) : (type == 5 ? 0 : 0);
1160 totalSizeClass = offsetClass + sizeClass;
1161 if(type == 0 || type == 5)
1162 _class->offset = (base && (base->templateClass ? base->templateClass->structSize : base->structSize) && base->type != 1000) ? (base->templateClass ? base->templateClass->structSize : base->structSize) : ((type == 5) ? 0 : 12);
1165 _class->memberOffset = (base && (base->templateClass ? base->templateClass->structSize : base->structSize) && base->type != 1000) ? (base->templateClass ? base->templateClass->structSize : base->structSize) : 0;
1166 _class->typeSize = _class->structSize = _class->memberOffset + size;
1168 else if(type == 2 || type == 4 || type == 3)
1170 struct __ecereNameSpace__ecere__com__Class * dataTypeClass = __ecereNameSpace__ecere__com__eSystem_FindClass(_class->module, dataTypeString);
1173 _class->typeSize = dataTypeClass->typeSize;
1174 _class->structSize = 0;
1176 else if(type == 0 || type == 5)
1178 _class->structSize = _class->offset + size;
1179 _class->typeSize = sizeof(void *);
1181 if(_class->type != 1000)
1182 _class->type = type;
1183 (__ecereNameSpace__ecere__com__eSystem_Delete(_class->dataTypeString), _class->dataTypeString = 0);
1184 _class->dataTypeString = __ecereNameSpace__ecere__sys__CopyString(dataTypeString);
1185 if(totalSizeClass != oldSizeClass)
1187 _class->data = __ecereNameSpace__ecere__com__eSystem_Renew(_class->data, sizeof(unsigned char) * (totalSizeClass));
1188 memmove((unsigned char *)_class->data + mod->offsetClass, (unsigned char *)_class->data, totalSizeClass - mod->sizeClass);
1189 if(base->type != 1000 && base->type != 4)
1190 memcpy((unsigned char *)_class->data, (unsigned char *)base->data, totalSizeClass - _class->sizeClass);
1192 memset((unsigned char *)_class->data, (unsigned char)0, totalSizeClass - _class->sizeClass);
1194 _class->offsetClass = offsetClass;
1195 _class->sizeClass = totalSizeClass;
1196 if(mod->base && mod->base->base && mod->base->vTblSize > baseClass->vTblSize && (mod != (base->templateClass ? base->templateClass : base) || _class->vTblSize != mod->vTblSize))
1198 struct __ecereNameSpace__ecere__com__Method * method, * next;
1199 struct __ecereNameSpace__ecere__com__Class * b;
1201 _class->vTblSize += mod->base->vTblSize - baseClass->vTblSize;
1202 _class->_vTbl = __ecereNameSpace__ecere__com__eSystem_Renew(_class->_vTbl, sizeof(void *) * (_class->vTblSize));
1203 memmove(_class->_vTbl + mod->base->vTblSize, _class->_vTbl + baseClass->vTblSize, (_class->vTblSize - mod->vTblSize) * sizeof(void *));
1204 for(method = (struct __ecereNameSpace__ecere__com__Method *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&_class->methods); method; method = next)
1206 next = (struct __ecereNameSpace__ecere__com__Method *)__ecereProp___ecereNameSpace__ecere__sys__BTNode_Get_next(((struct __ecereNameSpace__ecere__sys__BTNode *)method));
1207 if(method->type == 1)
1208 method->vid += mod->base->vTblSize - baseClass->vTblSize;
1210 for(b = mod->base; b && b != (((void *)0)); b = b->base)
1212 struct __ecereNameSpace__ecere__com__Method * vMethod;
1214 for(vMethod = (struct __ecereNameSpace__ecere__com__Method *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&b->methods); vMethod; vMethod = (struct __ecereNameSpace__ecere__com__Method *)__ecereProp___ecereNameSpace__ecere__sys__BTNode_Get_next(((struct __ecereNameSpace__ecere__sys__BTNode *)vMethod)))
1216 if(vMethod->type == 1)
1218 method = (struct __ecereNameSpace__ecere__com__Method *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&_class->methods, vMethod->name);
1221 if(method->function)
1222 _class->_vTbl[vMethod->vid] = method->function;
1223 (__ecereNameSpace__ecere__com__eSystem_Delete(method->name), method->name = 0);
1224 (__ecereNameSpace__ecere__com__eSystem_Delete(method->dataTypeString), method->dataTypeString = 0);
1225 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&_class->methods, (struct __ecereNameSpace__ecere__sys__BTNode *)method);
1228 _class->_vTbl[vMethod->vid] = _class->base->_vTbl[vMethod->vid];
1233 if(type == 0 || type == 5 || type == 1)
1235 struct __ecereNameSpace__ecere__com__Property * prop;
1236 struct __ecereNameSpace__ecere__com__DataMember * member;
1237 struct __ecereNameSpace__ecere__com__Class * c;
1239 for(c = mod->base; c; c = c->base)
1241 struct __ecereNameSpace__ecere__com__Property * _property;
1243 for(_property = c->membersAndProperties.first; _property; _property = _property->next)
1245 if(_property->isProperty)
1247 struct __ecereNameSpace__ecere__com__BTNamedLink * link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&_class->prop, _property->name);
1252 if(!prop->Set && !prop->Get && prop->memberAccess == 4)
1254 struct __ecereNameSpace__ecere__com__SelfWatcher * watcher;
1256 for(watcher = _class->selfWatchers.first; watcher; watcher = watcher->next)
1258 if(watcher->_property == prop)
1259 watcher->_property = _property;
1261 _property->selfWatchable = 0x1;
1262 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&_class->prop, (struct __ecereNameSpace__ecere__sys__BTNode *)link);
1263 (__ecereNameSpace__ecere__com__eSystem_Delete(prop->name), prop->name = 0);
1264 (__ecereNameSpace__ecere__com__eSystem_Delete(prop->dataTypeString), prop->dataTypeString = 0);
1265 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&_class->membersAndProperties, prop);
1271 if(mod->base->memberID)
1273 for(member = _class->membersAndProperties.first; member; member = member->next)
1274 member->id += mod->base->memberID;
1275 _class->memberID += mod->base->memberID;
1276 _class->startMemberID += mod->base->memberID;
1280 struct __ecereNameSpace__ecere__com__Class * c;
1282 for(c = mod->base; c; c = c->base)
1284 struct __ecereNameSpace__ecere__com__ClassProperty * _property;
1286 for(_property = (struct __ecereNameSpace__ecere__com__ClassProperty *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&c->classProperties); _property; _property = (struct __ecereNameSpace__ecere__com__ClassProperty *)__ecereProp___ecereNameSpace__ecere__sys__BTNode_Get_next(((struct __ecereNameSpace__ecere__sys__BTNode *)_property)))
1288 __ecereNameSpace__ecere__com__SetDelayedCPValues(_class, _property);
1292 __ecereNameSpace__ecere__com__FixDerivativesBase(_class, mod);
1295 struct __ecereNameSpace__ecere__sys__OldLink * templateLink;
1297 for(templateLink = base->templatized.first; templateLink; templateLink = templateLink->next)
1299 struct __ecereNameSpace__ecere__com__Class * template = templateLink->data;
1300 char * templateParams = strchr(template->name, '<');
1302 template->base = base->base;
1303 template->_vTbl = base->_vTbl;
1304 template->data = base->data;
1305 template->offset = base->offset;
1306 template->offsetClass = base->offsetClass;
1307 template->sizeClass = base->sizeClass;
1308 template->structSize = base->structSize;
1309 template->vTblSize = base->vTblSize;
1310 __ecereNameSpace__ecere__com__FixDerivativesBase(template, mod);
1315 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Application;
1317 struct __ecereNameSpace__ecere__com__Application
1322 unsigned int isGUIApp;
1323 struct __ecereNameSpace__ecere__sys__OldList allModules;
1324 char * parsedCommand;
1325 struct __ecereNameSpace__ecere__com__NameSpace systemNameSpace;
1328 extern char * strncpy(char * , const char * , int n);
1330 extern int strcmp(const char * , const char * );
1332 static void __ecereNameSpace__ecere__com__FreeTemplatesDerivatives(struct __ecereNameSpace__ecere__com__Class * base);
1334 extern int printf(char * , ...);
1336 static void __ecereNameSpace__ecere__com__NameSpace_Free(struct __ecereNameSpace__ecere__com__NameSpace * parentNameSpace);
1338 static struct __ecereNameSpace__ecere__com__BTNamedLink * __ecereNameSpace__ecere__com__SearchNameSpace(struct __ecereNameSpace__ecere__com__NameSpace * nameSpace, char * name, void * listOffset);
1340 extern char * strcpy(char * , const char * );
1342 static void __ecereNameSpace__ecere__com__FreeTemplateArgs(struct __ecereNameSpace__ecere__com__Class * template);
1344 static void __ecereNameSpace__ecere__com__CopyTemplateArg(struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param, struct __ecereNameSpace__ecere__com__ClassTemplateArgument * arg);
1346 int __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString(struct __ecereNameSpace__ecere__sys__BinaryTree * this, char * a, char * b);
1348 unsigned int __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(struct __ecereNameSpace__ecere__sys__BinaryTree * this, struct __ecereNameSpace__ecere__sys__BTNode * node);
1350 void __ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove(struct __ecereNameSpace__ecere__sys__OldList * this, void * item);
1352 struct __ecereNameSpace__ecere__sys__OldLink * __ecereMethod___ecereNameSpace__ecere__sys__OldList_FindLink(struct __ecereNameSpace__ecere__sys__OldList * this, void * data);
1354 void __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(struct __ecereNameSpace__ecere__sys__OldList * this, void * item);
1356 struct __ecereNameSpace__ecere__com__Class * __ecereNameSpace__ecere__com__eSystem_RegisterClass(int type, char * name, char * baseName, int size, int sizeClass, unsigned int (* Constructor)(void *), void (* Destructor)(void *), struct __ecereNameSpace__ecere__com__Instance * module, int declMode, int inheritanceAccess)
1358 void * __ecereTemp1;
1360 struct __ecereNameSpace__ecere__com__NameSpace * nameSpace = (((void *)0));
1363 nameSpace = (declMode == 1) ? &((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->publicNameSpace : &((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->privateNameSpace;
1365 nameSpace = &((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application + 296)))->systemNameSpace;
1367 for(c = 0; name[c]; c++)
1369 if(name[c] == '.' || (name[c] == ':' && name[c + 1] == ':'))
1371 struct __ecereNameSpace__ecere__com__NameSpace * newSpace;
1372 char * spaceName = __ecereNameSpace__ecere__com___malloc(c - start + 1);
1374 strncpy(spaceName, name + start, c - start);
1375 spaceName[c - start] = '\0';
1376 newSpace = (struct __ecereNameSpace__ecere__com__NameSpace *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&(*nameSpace).nameSpaces, spaceName);
1379 newSpace = __ecereNameSpace__ecere__com__eSystem_New0(sizeof(struct __ecereNameSpace__ecere__com__NameSpace) * (1));
1380 (*newSpace).classes.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
1381 (*newSpace).defines.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
1382 (*newSpace).functions.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
1383 (*newSpace).nameSpaces.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
1384 (*newSpace).name = spaceName;
1385 (*newSpace).parent = nameSpace;
1386 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&(*nameSpace).nameSpaces, (struct __ecereNameSpace__ecere__sys__BTNode *)newSpace);
1389 (__ecereNameSpace__ecere__com__eSystem_Delete(spaceName), spaceName = 0);
1390 nameSpace = newSpace;
1402 struct __ecereNameSpace__ecere__com__BTNamedLink * classLink = (((void *)0));
1403 struct __ecereNameSpace__ecere__com__Class * _class = (((void *)0));
1404 char * dataTypeString = (((void *)0));
1405 struct __ecereNameSpace__ecere__com__Class * enumBase = (((void *)0));
1406 struct __ecereNameSpace__ecere__com__Class * base = (baseName && baseName[0]) ? __ecereNameSpace__ecere__com__eSystem_FindClass(module, baseName) : (((void *)0));
1407 unsigned int refine = 0x0;
1409 if(base && !base->internalDecl && (base->type == 5 || base->type == 1 || base->type == 0))
1411 if(base->type == 1 && type == 0)
1416 if(base && (type == 0 || type == 5 || type == 1) && (base->type == 3 || base->type == 2 || base->type == 4))
1420 if(!base || base->type == 1000)
1424 if(base || !baseName || !baseName[0] || !strcmp(baseName, "unsigned int") || !strcmp(baseName, "uint") || !strcmp(baseName, "unsigned int64") || !strcmp(baseName, "uint64") || !strcmp(baseName, "int64") || !strcmp(baseName, "unsigned short") || !strcmp(baseName, "short") || !strcmp(baseName, "unsigned char") || !strcmp(baseName, "byte") || !strcmp(baseName, "char") || !strcmp(baseName, "uint32") || !strcmp(baseName, "uint16"))
1426 base = __ecereNameSpace__ecere__com__eSystem_FindClass(module, "enum");
1427 dataTypeString = (baseName && baseName[0]) ? baseName : "int";
1431 base = __ecereNameSpace__ecere__com__eSystem_RegisterClass((int)0, baseName, (((void *)0)), 0, 0, (((void *)0)), (((void *)0)), module, declMode, 1);
1432 base->internalDecl = 0x1;
1434 base = __ecereNameSpace__ecere__com__eSystem_FindClass(module, "enum");
1437 else if(type == 1 && (!baseName || !baseName[0]))
1439 base = __ecereNameSpace__ecere__com__eSystem_FindClass(module, "struct");
1440 dataTypeString = name + start;
1445 dataTypeString = "struct __ecereNameSpace__ecere__com__Instance";
1447 dataTypeString = "void *";
1449 dataTypeString = (baseName && baseName[0]) ? baseName : "unsigned int";
1451 dataTypeString = (baseName && baseName[0]) ? baseName : "int";
1453 dataTypeString = name + start;
1454 if(base || (!baseName || !baseName[0]) || type == 2 || type == 3)
1456 if(base || !baseName || !baseName[0] || !strcmp(baseName, "unsigned int") || !strcmp(baseName, "uint") || !strcmp(baseName, "unsigned int64") || !strcmp(baseName, "uint64") || !strcmp(baseName, "int64") || !strcmp(baseName, "unsigned short") || !strcmp(baseName, "short") || !strcmp(baseName, "unsigned char") || !strcmp(baseName, "byte") || !strcmp(baseName, "char") || !strcmp(baseName, "uint32") || !strcmp(baseName, "uint16"))
1458 if(type == 0 && strcmp(name, "ecere::com::Instance") && strcmp(name, "enum") && strcmp(name, "struct"))
1459 base = __ecereNameSpace__ecere__com__eSystem_FindClass(module, "ecere::com::Instance");
1461 base = __ecereNameSpace__ecere__com__eSystem_FindClass(module, "class");
1476 base = __ecereNameSpace__ecere__com__eSystem_FindClass(module, "enum");
1479 dataTypeString = enumBase ? enumBase->dataTypeString : base->dataTypeString;
1481 offsetClass = base ? base->sizeClass : (type == 5 ? 0 : 0);
1482 totalSizeClass = offsetClass + sizeClass;
1483 if((_class = __ecereNameSpace__ecere__com__eSystem_FindClass(module, name)))
1485 __ecereNameSpace__ecere__com__FreeTemplatesDerivatives(_class);
1486 if(!_class->internalDecl)
1489 printf("error: Redefinition of class %s\n", name);
1492 _class->comRedefinition = 0x1;
1495 return (((void *)0));
1497 classLink = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&(*_class->nameSpace).classes, name + start);
1498 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&(*_class->nameSpace).classes, (struct __ecereNameSpace__ecere__sys__BTNode *)classLink);
1500 struct __ecereNameSpace__ecere__sys__OldLink * t;
1502 for(t = _class->templatized.first; t; t = t->next)
1504 struct __ecereNameSpace__ecere__com__Class * template = t->data;
1506 classLink = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&(*_class->nameSpace).classes, template->name);
1507 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&(*_class->nameSpace).classes, (struct __ecereNameSpace__ecere__sys__BTNode *)classLink);
1511 struct __ecereNameSpace__ecere__com__NameSpace * ns = _class->nameSpace;
1513 while((*ns).parent && !__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&(*ns).classes) && !__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&(*ns).functions) && !__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&(*ns).defines) && !__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&(*ns).nameSpaces))
1515 struct __ecereNameSpace__ecere__com__NameSpace * parent = (*ns).parent;
1517 __ecereNameSpace__ecere__com__NameSpace_Free(ns);
1518 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&(*parent).nameSpaces, (struct __ecereNameSpace__ecere__sys__BTNode *)ns);
1526 classLink = __ecereNameSpace__ecere__com__SearchNameSpace(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application + 12)))->privateNameSpace, name, &(*((struct __ecereNameSpace__ecere__com__NameSpace *)0)).classes);
1528 classLink = __ecereNameSpace__ecere__com__SearchNameSpace(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application + 12)))->publicNameSpace, name, &(*((struct __ecereNameSpace__ecere__com__NameSpace *)0)).classes);
1530 classLink = __ecereNameSpace__ecere__com__SearchNameSpace(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application + 12)))->privateNameSpace, name + start, &(*((struct __ecereNameSpace__ecere__com__NameSpace *)0)).classes);
1532 classLink = __ecereNameSpace__ecere__com__SearchNameSpace(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application + 12)))->publicNameSpace, name + start, &(*((struct __ecereNameSpace__ecere__com__NameSpace *)0)).classes);
1534 _class = classLink->data;
1535 if(_class && _class->internalDecl)
1537 __ecereNameSpace__ecere__com__FreeTemplatesDerivatives(_class);
1538 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&(*_class->nameSpace).classes, (struct __ecereNameSpace__ecere__sys__BTNode *)classLink);
1540 struct __ecereNameSpace__ecere__sys__OldLink * t;
1542 for(t = _class->templatized.first; t; t = t->next)
1544 struct __ecereNameSpace__ecere__com__Class * template = t->data;
1546 classLink = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&(*_class->nameSpace).classes, template->name);
1547 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&(*_class->nameSpace).classes, (struct __ecereNameSpace__ecere__sys__BTNode *)classLink);
1551 (__ecereNameSpace__ecere__com__eSystem_Delete(_class->fullName), _class->fullName = 0);
1552 _class->fullName = __ecereNameSpace__ecere__sys__CopyString(name);
1556 _class = __ecereNameSpace__ecere__com___calloc(1, sizeof(struct __ecereNameSpace__ecere__com__Class));
1557 _class->methods.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
1558 _class->members.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
1559 _class->prop.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
1560 _class->classProperties.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
1561 _class->name = __ecereNameSpace__ecere__sys__CopyString(name + start);
1562 _class->fullName = __ecereNameSpace__ecere__sys__CopyString(name);
1567 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&(*nameSpace).classes, (struct __ecereNameSpace__ecere__sys__BTNode *)(__ecereTemp1 = __ecereNameSpace__ecere__com__eSystem_New0(24), ((struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereTemp1)->name = _class->name, ((struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereTemp1)->data = _class, ((struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereTemp1)));
1569 struct __ecereNameSpace__ecere__sys__OldLink * t;
1571 for(t = _class->templatized.first; t; t = t->next)
1573 struct __ecereNameSpace__ecere__com__Class * template = t->data;
1575 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&(*nameSpace).classes, (struct __ecereNameSpace__ecere__sys__BTNode *)(__ecereTemp1 = __ecereNameSpace__ecere__com__eSystem_New0(24), ((struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereTemp1)->name = template->name, ((struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereTemp1)->data = template, ((struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereTemp1)));
1581 if(!base && baseName && strcmp(baseName, name))
1583 if(strchr(baseName, '<'))
1585 char templateClassName[1024];
1586 struct __ecereNameSpace__ecere__com__Class * templateBase;
1588 strcpy(templateClassName, baseName);
1589 *strchr(templateClassName, '<') = '\0';
1590 templateBase = __ecereNameSpace__ecere__com__eSystem_FindClass(module, templateClassName);
1593 templateBase = __ecereNameSpace__ecere__com__eSystem_RegisterClass((int)0, templateClassName, (((void *)0)), 0, 0, (((void *)0)), (((void *)0)), module, declMode, 1);
1594 templateBase->internalDecl = 0x1;
1596 base = __ecereNameSpace__ecere__com__eSystem_FindClass(module, baseName);
1600 base = __ecereNameSpace__ecere__com__eSystem_RegisterClass((int)0, baseName, (((void *)0)), 0, 0, (((void *)0)), (((void *)0)), module, declMode, 1);
1601 base->internalDecl = 0x1;
1605 _class->internalDecl = 0x0;
1608 _class->data = __ecereNameSpace__ecere__com__eSystem_Renew(_class->data, sizeof(unsigned char) * (totalSizeClass));
1609 if(base && base->type != 1000 && base->type != 4)
1610 memcpy(_class->data, base->data, offsetClass);
1612 memset(_class->data, (unsigned char)0, offsetClass);
1613 memset((unsigned char *)_class->data + offsetClass, (unsigned char)0, sizeClass);
1615 (__ecereNameSpace__ecere__com__eSystem_Delete(_class->dataTypeString), _class->dataTypeString = 0);
1616 _class->dataTypeString = __ecereNameSpace__ecere__sys__CopyString(dataTypeString);
1617 _class->defaultAlignment = base ? base->defaultAlignment : 0;
1620 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)_class->module + 12)))->classes, _class);
1624 struct __ecereNameSpace__ecere__com__Class * base = _class->base;
1625 struct __ecereNameSpace__ecere__sys__OldLink * deriv = __ecereMethod___ecereNameSpace__ecere__sys__OldList_FindLink(&base->derivatives, _class);
1627 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&base->derivatives, deriv);
1631 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->classes, _class);
1633 _class->nameSpace = nameSpace;
1635 struct __ecereNameSpace__ecere__sys__OldLink * t;
1637 for(t = _class->templatized.first; t; t = t->next)
1639 struct __ecereNameSpace__ecere__com__Class * template = t->data;
1641 template->nameSpace = nameSpace;
1644 _class->module = module;
1645 _class->base = base;
1649 struct __ecereNameSpace__ecere__com__Class * sClass;
1651 for(sClass = base; sClass; sClass = sClass->base)
1653 if(sClass->templateClass)
1654 sClass = sClass->templateClass;
1655 numParams += sClass->templateParams.count;
1659 if(_class->templateArgs)
1661 __ecereNameSpace__ecere__com__FreeTemplateArgs(_class);
1663 (__ecereNameSpace__ecere__com__eSystem_Delete(_class->templateArgs), _class->templateArgs = 0);
1664 _class->templateArgs = __ecereNameSpace__ecere__com__eSystem_New0(sizeof(struct __ecereNameSpace__ecere__com__ClassTemplateArgument) * (numParams));
1665 _class->numParams = numParams;
1666 for(sClass = _class; sClass; sClass = sClass->base)
1668 struct __ecereNameSpace__ecere__com__Class * prevClass;
1669 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param;
1672 if(sClass->templateClass)
1673 sClass = sClass->templateClass;
1674 for(prevClass = sClass->base; prevClass; prevClass = prevClass->base)
1676 if(prevClass->templateClass)
1677 prevClass = prevClass->templateClass;
1678 id += prevClass->templateParams.count;
1680 if(base->templateArgs)
1682 for(param = sClass->templateParams.first; param; param = param->next)
1684 _class->templateArgs[id] = base->templateArgs[id];
1685 __ecereNameSpace__ecere__com__CopyTemplateArg(param, &_class->templateArgs[id]);
1692 _class->memberID = _class->startMemberID = (base && (type == 0 || type == 5 || type == 1)) ? base->memberID : 0;
1693 if(type == 0 || type == 5)
1694 _class->offset = (base && base->structSize && base->type != 1000) ? base->structSize : ((type == 5) ? 0 : 12);
1697 _class->memberOffset = (base && base->structSize && base->type != 1000) ? base->structSize : 0;
1698 _class->typeSize = _class->structSize = _class->memberOffset + size;
1700 else if(type == 2 || type == 4 || type == 3)
1702 struct __ecereNameSpace__ecere__com__Class * dataTypeClass = __ecereNameSpace__ecere__com__eSystem_FindClass(_class->module, dataTypeString);
1705 _class->typeSize = dataTypeClass->typeSize;
1706 _class->structSize = 0;
1708 else if(type == 0 || type == 5)
1710 _class->structSize = _class->offset + size;
1711 _class->typeSize = sizeof(void *);
1713 _class->offsetClass = offsetClass;
1714 _class->sizeClass = totalSizeClass;
1715 _class->Constructor = (void *)Constructor;
1716 _class->Destructor = Destructor;
1717 if(_class->type != 1000)
1718 _class->type = type;
1720 _class->computeSize = 0x1;
1722 _class->computeSize = 0x0;
1723 _class->inheritanceAccess = inheritanceAccess;
1727 _class->base = base = enumBase;
1729 struct __ecereNameSpace__ecere__com__EnumClassData * data = (struct __ecereNameSpace__ecere__com__EnumClassData *)_class->data;
1731 if(base && base->type != 4)
1734 data->largest = ((struct __ecereNameSpace__ecere__com__EnumClassData *)base->data)->largest;
1737 if(base && base->vTblSize)
1739 _class->vTblSize = base->vTblSize;
1740 (__ecereNameSpace__ecere__com__eSystem_Delete(_class->_vTbl), _class->_vTbl = 0);
1741 _class->_vTbl = __ecereNameSpace__ecere__com___malloc(sizeof(int (*)()) * _class->vTblSize);
1742 memcpy(_class->_vTbl, base->_vTbl, sizeof(int (*)()) * _class->vTblSize);
1746 struct __ecereNameSpace__ecere__sys__OldLink * link = (link = __ecereNameSpace__ecere__com__eSystem_New0(12), link->data = _class, link);
1748 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&_class->base->derivatives, link);
1750 __ecereNameSpace__ecere__com__FixDerivativesBase(_class, _class);
1754 return (((void *)0));
1757 static void __ecereNameSpace__ecere__com__DataMember_Free(struct __ecereNameSpace__ecere__com__DataMember * parentMember)
1759 struct __ecereNameSpace__ecere__com__DataMember * member;
1760 struct __ecereNameSpace__ecere__com__BTNamedLink * namedLink;
1762 (__ecereNameSpace__ecere__com__eSystem_Delete(parentMember->name), parentMember->name = 0);
1763 (__ecereNameSpace__ecere__com__eSystem_Delete(parentMember->dataTypeString), parentMember->dataTypeString = 0);
1764 while((member = parentMember->members.first))
1766 __ecereNameSpace__ecere__com__DataMember_Free(member);
1767 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&parentMember->members, member);
1769 while((namedLink = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&parentMember->membersAlpha)))
1771 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&parentMember->membersAlpha, (struct __ecereNameSpace__ecere__sys__BTNode *)namedLink);
1775 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__NamedLink;
1777 struct __ecereNameSpace__ecere__sys__NamedLink
1779 struct __ecereNameSpace__ecere__sys__NamedLink * prev;
1780 struct __ecereNameSpace__ecere__sys__NamedLink * next;
1785 static void __ecereNameSpace__ecere__com__FreeEnumValue(struct __ecereNameSpace__ecere__sys__NamedLink * value)
1787 (__ecereNameSpace__ecere__com__eSystem_Delete(value->name), value->name = 0);
1790 static void __ecereNameSpace__ecere__com__FreeTemplateArg(struct __ecereNameSpace__ecere__com__Class * template, struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param, int id)
1795 (__ecereNameSpace__ecere__com__eSystem_Delete(template->templateArgs[id].dataTypeString), template->templateArgs[id].dataTypeString = 0);
1798 (__ecereNameSpace__ecere__com__eSystem_Delete(template->templateArgs[id].memberString), template->templateArgs[id].memberString = 0);
1805 static void __ecereNameSpace__ecere__com__FreeTemplateArgs(struct __ecereNameSpace__ecere__com__Class * template)
1807 if(template->templateArgs)
1809 struct __ecereNameSpace__ecere__com__Class * _class;
1811 for(_class = template; _class; _class = _class->base)
1813 struct __ecereNameSpace__ecere__com__Class * prevClass;
1814 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param;
1817 if(_class->templateClass)
1818 _class = _class->templateClass;
1819 for(prevClass = _class->base; prevClass; prevClass = prevClass->base)
1821 if(prevClass->templateClass)
1822 prevClass = prevClass->templateClass;
1823 id += prevClass->templateParams.count;
1825 if(id < template->numParams)
1827 for(param = _class->templateParams.first; param; param = param->next)
1832 (__ecereNameSpace__ecere__com__eSystem_Delete(template->templateArgs[id].dataTypeString), template->templateArgs[id].dataTypeString = 0);
1835 (__ecereNameSpace__ecere__com__eSystem_Delete(template->templateArgs[id].memberString), template->templateArgs[id].memberString = 0);
1847 static void __ecereNameSpace__ecere__com__FreeTemplate(struct __ecereNameSpace__ecere__com__Class * template)
1849 struct __ecereNameSpace__ecere__sys__OldLink * deriv;
1851 if(template->nameSpace)
1853 struct __ecereNameSpace__ecere__com__BTNamedLink * link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&(*template->nameSpace).classes, template->name);
1855 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&(*template->nameSpace).classes, (struct __ecereNameSpace__ecere__sys__BTNode *)link);
1857 __ecereNameSpace__ecere__com__FreeTemplateArgs(template);
1858 (__ecereNameSpace__ecere__com__eSystem_Delete(template->fullName), template->fullName = 0);
1859 (__ecereNameSpace__ecere__com__eSystem_Delete(template->name), template->name = 0);
1860 (__ecereNameSpace__ecere__com__eSystem_Delete(template->templateArgs), template->templateArgs = 0);
1861 while((deriv = template->derivatives.first))
1863 ((struct __ecereNameSpace__ecere__com__Class *)deriv->data)->base = (((void *)0));
1864 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&template->derivatives, deriv);
1866 __ecereNameSpace__ecere__com___free(template);
1869 static void __ecereNameSpace__ecere__com__FreeTemplates(struct __ecereNameSpace__ecere__com__Class * _class)
1871 struct __ecereNameSpace__ecere__sys__OldLink * deriv, * template;
1873 for(deriv = _class->derivatives.first; deriv; deriv = deriv->next)
1875 __ecereNameSpace__ecere__com__FreeTemplates(deriv->data);
1877 __ecereNameSpace__ecere__com__FreeTemplateArgs(_class);
1878 (__ecereNameSpace__ecere__com__eSystem_Delete(_class->templateArgs), _class->templateArgs = 0);
1879 while((template = _class->templatized.first))
1881 __ecereNameSpace__ecere__com__FreeTemplates(template->data);
1882 __ecereNameSpace__ecere__com__FreeTemplate(template->data);
1883 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&_class->templatized, template);
1887 void __ecereMethod___ecereNameSpace__ecere__sys__OldList_Free(struct __ecereNameSpace__ecere__sys__OldList * this, void (* freeFn)(void * ));
1889 void __ecereNameSpace__ecere__com__eClass_Unregister(struct __ecereNameSpace__ecere__com__Class * _class)
1891 struct __ecereNameSpace__ecere__com__BTNamedLink * namedLink;
1892 struct __ecereNameSpace__ecere__com__DataMember * member;
1893 struct __ecereNameSpace__ecere__com__Method * method;
1894 struct __ecereNameSpace__ecere__sys__OldLink * deriv, * template;
1895 struct __ecereNameSpace__ecere__com__ClassProperty * classProp;
1896 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param;
1898 (__ecereNameSpace__ecere__com__eSystem_Delete(_class->_vTbl), _class->_vTbl = 0);
1899 __ecereNameSpace__ecere__com__FreeTemplates(_class);
1900 __ecereNameSpace__ecere__com__FreeTemplateArgs(_class);
1901 (__ecereNameSpace__ecere__com__eSystem_Delete(_class->templateArgs), _class->templateArgs = 0);
1902 while((template = _class->templatized.first))
1904 __ecereNameSpace__ecere__com__FreeTemplate(template->data);
1905 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&_class->templatized, template);
1907 while((member = _class->membersAndProperties.first))
1909 if(!member->isProperty && (member->type == 1 || member->type == 2))
1910 __ecereNameSpace__ecere__com__DataMember_Free(member);
1911 (__ecereNameSpace__ecere__com__eSystem_Delete(member->name), member->name = 0);
1912 (__ecereNameSpace__ecere__com__eSystem_Delete(member->dataTypeString), member->dataTypeString = 0);
1913 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&_class->membersAndProperties, member);
1915 while((member = _class->conversions.first))
1917 (__ecereNameSpace__ecere__com__eSystem_Delete(member->name), member->name = 0);
1918 (__ecereNameSpace__ecere__com__eSystem_Delete(member->dataTypeString), member->dataTypeString = 0);
1919 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&_class->conversions, member);
1921 while((namedLink = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&_class->prop)))
1923 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&_class->prop, (struct __ecereNameSpace__ecere__sys__BTNode *)namedLink);
1925 while((namedLink = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&_class->members)))
1927 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&_class->members, (struct __ecereNameSpace__ecere__sys__BTNode *)namedLink);
1929 while((classProp = (struct __ecereNameSpace__ecere__com__ClassProperty *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&_class->classProperties)))
1931 (__ecereNameSpace__ecere__com__eSystem_Delete(classProp->name), classProp->name = 0);
1932 (__ecereNameSpace__ecere__com__eSystem_Delete(classProp->dataTypeString), classProp->dataTypeString = 0);
1933 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&_class->classProperties, (struct __ecereNameSpace__ecere__sys__BTNode *)classProp);
1935 while((method = (struct __ecereNameSpace__ecere__com__Method *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&_class->methods)))
1937 (__ecereNameSpace__ecere__com__eSystem_Delete(method->name), method->name = 0);
1938 (__ecereNameSpace__ecere__com__eSystem_Delete(method->dataTypeString), method->dataTypeString = 0);
1939 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&_class->methods, (struct __ecereNameSpace__ecere__sys__BTNode *)method);
1941 if(_class->type == 4)
1943 struct __ecereNameSpace__ecere__com__EnumClassData * data = (struct __ecereNameSpace__ecere__com__EnumClassData *)_class->data;
1945 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Free(&data->values, (void *)__ecereNameSpace__ecere__com__FreeEnumValue);
1947 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Free(&_class->delayedCPValues, (((void *)0)));
1948 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Free(&_class->selfWatchers, (((void *)0)));
1951 struct __ecereNameSpace__ecere__com__Class * base = _class->base;
1953 for(deriv = base->derivatives.first; deriv; deriv = deriv->next)
1955 if(deriv->data == _class)
1959 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&base->derivatives, deriv);
1961 while((deriv = _class->derivatives.first))
1963 ((struct __ecereNameSpace__ecere__com__Class *)deriv->data)->base = (((void *)0));
1964 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&_class->derivatives, deriv);
1966 if(_class->nameSpace)
1968 struct __ecereNameSpace__ecere__com__BTNamedLink * link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&(*_class->nameSpace).classes, _class->name);
1970 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&(*_class->nameSpace).classes, (struct __ecereNameSpace__ecere__sys__BTNode *)link);
1972 (__ecereNameSpace__ecere__com__eSystem_Delete(_class->name), _class->name = 0);
1973 (__ecereNameSpace__ecere__com__eSystem_Delete(_class->fullName), _class->fullName = 0);
1974 (__ecereNameSpace__ecere__com__eSystem_Delete(_class->dataTypeString), _class->dataTypeString = 0);
1975 (__ecereNameSpace__ecere__com__eSystem_Delete(_class->data), _class->data = 0);
1976 while((param = _class->templateParams.first))
1981 (__ecereNameSpace__ecere__com__eSystem_Delete(param->defaultArg.dataTypeString), param->defaultArg.dataTypeString = 0);
1984 (__ecereNameSpace__ecere__com__eSystem_Delete(param->defaultArg.memberString), param->defaultArg.memberString = 0);
1989 if(param->type != 1)
1990 (__ecereNameSpace__ecere__com__eSystem_Delete(param->dataTypeString), param->dataTypeString = 0);
1991 (__ecereNameSpace__ecere__com__eSystem_Delete(param->name), param->name = 0);
1992 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&_class->templateParams, param);
1994 __ecereNameSpace__ecere__com___free(_class);
1997 struct __ecereNameSpace__ecere__sys__BTNode * __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Find(struct __ecereNameSpace__ecere__sys__BinaryTree * this, unsigned int key);
1999 static struct __ecereNameSpace__ecere__com__BTNamedLink * __ecereNameSpace__ecere__com__ScanNameSpace(struct __ecereNameSpace__ecere__com__NameSpace * nameSpace, char * name, void * listOffset)
2001 struct __ecereNameSpace__ecere__sys__BinaryTree * tree = (struct __ecereNameSpace__ecere__sys__BinaryTree *)((unsigned char *)nameSpace + (unsigned int)listOffset);
2002 struct __ecereNameSpace__ecere__com__BTNamedLink * link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Find((&*tree), (unsigned int)name);
2003 struct __ecereNameSpace__ecere__com__NameSpace * child;
2007 for(child = (struct __ecereNameSpace__ecere__com__NameSpace *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&nameSpace->nameSpaces); child; child = (struct __ecereNameSpace__ecere__com__NameSpace *)__ecereProp___ecereNameSpace__ecere__sys__BTNode_Get_next(((struct __ecereNameSpace__ecere__sys__BTNode *)child)))
2009 link = __ecereNameSpace__ecere__com__ScanNameSpace(child, name, listOffset);
2017 static struct __ecereNameSpace__ecere__com__BTNamedLink * __ecereNameSpace__ecere__com__SearchNameSpace(struct __ecereNameSpace__ecere__com__NameSpace * nameSpace, char * name, void * listOffset)
2023 for(c = 0; (ch = name[c]); c++)
2029 if(level == 0 && (ch == '.' || (ch == ':' && name[c + 1] == ':')))
2031 struct __ecereNameSpace__ecere__com__NameSpace * newSpace;
2032 char * spaceName = __ecereNameSpace__ecere__com___malloc(c - start + 1);
2034 memcpy(spaceName, name + start, c - start);
2035 spaceName[c - start] = '\0';
2036 newSpace = (struct __ecereNameSpace__ecere__com__NameSpace *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&nameSpace->nameSpaces, spaceName);
2037 __ecereNameSpace__ecere__com___free(spaceName);
2039 return (((void *)0));
2040 nameSpace = newSpace;
2041 if(level == 0 && ch == ':')
2048 return __ecereNameSpace__ecere__com__ScanNameSpace(nameSpace, name + start, listOffset);
2050 return (((void *)0));
2053 static struct __ecereNameSpace__ecere__com__BTNamedLink * __ecereNameSpace__ecere__com__SearchModule(struct __ecereNameSpace__ecere__com__Instance * module, char * name, void * listOffset, unsigned int searchPrivate)
2055 struct __ecereNameSpace__ecere__com__SubModule * subModule;
2056 struct __ecereNameSpace__ecere__com__BTNamedLink * link;
2060 link = __ecereNameSpace__ecere__com__SearchNameSpace(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->privateNameSpace, name, listOffset);
2064 link = __ecereNameSpace__ecere__com__SearchNameSpace(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->publicNameSpace, name, listOffset);
2067 for(subModule = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->modules.first; subModule; subModule = subModule->next)
2069 if(searchPrivate || subModule->importMode == 1)
2071 link = __ecereNameSpace__ecere__com__SearchModule(subModule->module, name, listOffset, 0x0);
2076 return (((void *)0));
2079 extern int isspace(int c);
2081 long long __ecereNameSpace__ecere__com___strtoi64(char * string, char ** endString, int base)
2083 long long value = 0;
2088 for(c = 0; (ch = string[c]) && isspace(ch); c++)
2100 if(ch == (char)0 && string[c + 1] == 'x')
2113 for(; (ch = string[c]); c++)
2117 else if(ch >= '1' && ch <= '9')
2119 else if(ch >= 'a' && ch <= 'z')
2121 else if(ch >= 'A' && ch <= 'Z')
2125 *endString = string + c;
2135 *endString = string + c;
2139 return sign * value;
2142 uint64 __ecereNameSpace__ecere__com___strtoui64(char * string, char ** endString, int base)
2149 for(c = 0; (ch = string[c]) && isspace(ch); c++)
2161 if(ch == (char)0 && string[c + 1] == 'x')
2174 for(; (ch = string[c]); c++)
2178 else if(ch >= '1' && ch <= '9')
2180 else if(ch >= 'a' && ch <= 'z')
2182 else if(ch >= 'A' && ch <= 'Z')
2186 *endString = string + c;
2196 *endString = string + c;
2200 return sign * value;
2203 extern char * strcat(char * , const char * );
2205 extern int strlen(const char * );
2207 struct __ecereNameSpace__ecere__com__Class * __ecereNameSpace__ecere__com__eSystem_FindClass(struct __ecereNameSpace__ecere__com__Instance * module, char * name)
2209 void * __ecereTemp1;
2213 struct __ecereNameSpace__ecere__com__BTNamedLink * link;
2215 link = __ecereNameSpace__ecere__com__SearchNameSpace(&((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application + 296)))->systemNameSpace, name, &(*((struct __ecereNameSpace__ecere__com__NameSpace *)0)).classes);
2218 link = __ecereNameSpace__ecere__com__SearchModule(module, name, &(*((struct __ecereNameSpace__ecere__com__NameSpace *)0)).classes, 0x1);
2222 char noTemplateName[1024];
2223 char * templateParams = strchr(name, '<');
2227 strncpy(noTemplateName, name, templateParams - name);
2228 noTemplateName[templateParams - name] = '\0';
2231 strcpy(noTemplateName, name);
2232 link = __ecereNameSpace__ecere__com__SearchNameSpace(&((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application + 296)))->systemNameSpace, noTemplateName, &(*((struct __ecereNameSpace__ecere__com__NameSpace *)0)).classes);
2234 link = __ecereNameSpace__ecere__com__SearchModule(module, noTemplateName, &(*((struct __ecereNameSpace__ecere__com__NameSpace *)0)).classes, 0x1);
2237 struct __ecereNameSpace__ecere__com__Class * _class = link->data;
2238 struct __ecereNameSpace__ecere__com__Class * templatedClass = (((void *)0));
2239 char className[1024];
2241 strcpy(className, _class->fullName);
2242 strcat(className, templateParams);
2243 link = __ecereNameSpace__ecere__com__SearchNameSpace(&((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application + 296)))->systemNameSpace, className, &(*((struct __ecereNameSpace__ecere__com__NameSpace *)0)).classes);
2246 link = __ecereNameSpace__ecere__com__SearchModule(module, className, &(*((struct __ecereNameSpace__ecere__com__NameSpace *)0)).classes, 0x1);
2249 if(_class && templateParams)
2251 struct __ecereNameSpace__ecere__sys__OldList __simpleStruct1 =
2255 struct __ecereNameSpace__ecere__sys__OldList __simpleStruct0 =
2260 templatedClass = __ecereNameSpace__ecere__com__eSystem_New0(368);
2261 *templatedClass = *_class;
2262 templatedClass->templateClass = _class;
2263 templatedClass->fullName = __ecereNameSpace__ecere__sys__CopyString(className);
2264 templatedClass->name = __ecereNameSpace__ecere__sys__CopyString(templatedClass->fullName + strlen(_class->fullName) - strlen(_class->name));
2265 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&(*templatedClass->nameSpace).classes, (struct __ecereNameSpace__ecere__sys__BTNode *)(__ecereTemp1 = __ecereNameSpace__ecere__com__eSystem_New0(24), ((struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereTemp1)->name = templatedClass->name, ((struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereTemp1)->data = templatedClass, ((struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereTemp1)));
2266 templatedClass->templateArgs = (((void *)0));
2267 templatedClass->numParams = 0;
2268 templatedClass->derivatives = __simpleStruct0;
2269 templatedClass->templatized = __simpleStruct1;
2270 __ecereNameSpace__ecere__com__ComputeClassParameters(templatedClass, templateParams, module);
2271 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&_class->templatized, (__ecereTemp1 = __ecereNameSpace__ecere__com__eSystem_New0(12), ((struct __ecereNameSpace__ecere__sys__OldLink *)__ecereTemp1)->data = templatedClass, ((struct __ecereNameSpace__ecere__sys__OldLink *)__ecereTemp1)));
2273 return templatedClass;
2277 return (((void *)0));
2280 static void __ecereNameSpace__ecere__com__CopyTemplateArg(struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param, struct __ecereNameSpace__ecere__com__ClassTemplateArgument * arg)
2285 arg->dataTypeString = __ecereNameSpace__ecere__sys__CopyString(arg->dataTypeString);
2290 arg->memberString = __ecereNameSpace__ecere__sys__CopyString(arg->memberString);
2295 extern char * __ecereNameSpace__ecere__sys__TrimRSpaces(char * string, char * output);
2297 extern unsigned long strtoul(const char * nptr, char * * endptr, int base);
2299 extern double strtod(char * , char * * );
2301 extern int sprintf(char * , char * , ...);
2303 extern char * strstr(char * , const char * );
2305 struct __ecereNameSpace__ecere__com__DataMember * __ecereNameSpace__ecere__com__eClass_FindDataMember(struct __ecereNameSpace__ecere__com__Class * _class, char * name, struct __ecereNameSpace__ecere__com__Instance * module, struct __ecereNameSpace__ecere__com__DataMember ** subMemberStack, int * subMemberStackPos);
2307 struct __ecereNameSpace__ecere__com__Method * __ecereNameSpace__ecere__com__eClass_FindMethod(struct __ecereNameSpace__ecere__com__Class * _class, char * name, struct __ecereNameSpace__ecere__com__Instance * module);
2309 struct __ecereNameSpace__ecere__com__Property * __ecereNameSpace__ecere__com__eClass_FindProperty(struct __ecereNameSpace__ecere__com__Class * _class, char * name, struct __ecereNameSpace__ecere__com__Instance * module);
2311 static void __ecereNameSpace__ecere__com__ComputeClassParameters(struct __ecereNameSpace__ecere__com__Class * templatedClass, char * templateParams, struct __ecereNameSpace__ecere__com__Instance * findModule)
2314 char * nextParamStart = templateParams ? (templateParams + 1) : (((void *)0));
2315 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * curParam = (((void *)0));
2316 struct __ecereNameSpace__ecere__com__Class * lastClass = (((void *)0)), * sClass;
2319 struct __ecereNameSpace__ecere__com__Class * _class = templatedClass->templateClass ? templatedClass->templateClass : templatedClass;
2321 for(sClass = _class; sClass; sClass = sClass->base)
2323 if(sClass->templateClass)
2324 sClass = sClass->templateClass;
2325 numParams += sClass->templateParams.count;
2327 if(templatedClass->templateArgs)
2328 __ecereNameSpace__ecere__com__FreeTemplateArgs(templatedClass);
2329 (__ecereNameSpace__ecere__com__eSystem_Delete(templatedClass->templateArgs), templatedClass->templateArgs = 0);
2330 templatedClass->templateArgs = __ecereNameSpace__ecere__com__eSystem_New0(sizeof(struct __ecereNameSpace__ecere__com__ClassTemplateArgument) * (numParams));
2331 templatedClass->numParams = numParams;
2332 if(_class != templatedClass)
2335 if(templatedClass->base && templatedClass->base->templateArgs && _class == templatedClass)
2337 struct __ecereNameSpace__ecere__com__Class * sClass;
2339 memcpy(templatedClass->templateArgs, templatedClass->base->templateArgs, sizeof(struct __ecereNameSpace__ecere__com__ClassTemplateArgument) * (numParams - templatedClass->templateParams.count));
2340 for(sClass = templatedClass->base; sClass; sClass = sClass->base)
2342 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param;
2343 struct __ecereNameSpace__ecere__com__Class * prevClass;
2346 for(prevClass = sClass->base; prevClass; prevClass = prevClass->base)
2348 if(prevClass->templateClass)
2349 prevClass = prevClass->templateClass;
2350 id += prevClass->templateParams.count;
2352 if(sClass->templateClass)
2353 sClass = sClass->templateClass;
2354 for(param = sClass->templateParams.first; param; param = param->next)
2355 __ecereNameSpace__ecere__com__CopyTemplateArg(param, &templatedClass->templateArgs[id++]);
2358 while(nextParamStart)
2360 char * paramStart = nextParamStart;
2364 while(*paramStart == ' ')
2366 paramEnd = paramStart;
2367 while((ch = *paramEnd, ch && (level > 0 || (ch != '>' && ch != ','))))
2375 nextParamStart = (ch == ',') ? (paramEnd + 1) : (((void *)0));
2376 while(*paramEnd == ' ')
2378 if(paramEnd > paramStart)
2380 char * ptr, * equal = (((void *)0));
2382 for(ptr = paramStart; ptr <= paramEnd; ptr++)
2392 char * end = equal - 1;
2397 strncpy(ident, paramStart, end + 1 - paramStart);
2398 ident[end + 1 - paramStart] = (char)0;
2399 for(sClass = _class; sClass; sClass = sClass->base)
2401 if(sClass->templateClass)
2402 sClass = sClass->templateClass;
2403 for(curParam = sClass->templateParams.first; curParam; curParam = curParam->next)
2405 if(!strcmp(curParam->name, ident))
2410 struct __ecereNameSpace__ecere__com__Class * nextClass;
2411 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * prevParam;
2414 for(prevParam = curParam->prev; prevParam; prevParam = prevParam->prev)
2416 for(nextClass = sClass->base; nextClass; nextClass = nextClass->base)
2418 if(nextClass->templateClass)
2419 nextClass = nextClass->templateClass;
2420 curParamID += nextClass->templateParams.count;
2431 curParam = curParam->next;
2436 for(sClass = lastClass ? lastClass->base : _class; sClass; sClass = sClass->base)
2438 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param;
2441 if(sClass->templateClass)
2442 sClass = sClass->templateClass;
2443 for(param = sClass->templateParams.first; param; param = param->next, curParamID++)
2450 struct __ecereNameSpace__ecere__com__Class * nextClass;
2452 for(nextClass = sClass->base; nextClass; nextClass = nextClass->base)
2454 if(nextClass->templateClass)
2455 nextClass = nextClass->templateClass;
2456 curParamID += nextClass->templateParams.count;
2466 struct __ecereNameSpace__ecere__com__ClassTemplateArgument argument =
2475 while(*equal == ' ')
2477 memcpy(value, equal, paramEnd - equal);
2478 value[paramEnd - equal] = (char)0;
2482 memcpy(value, paramStart, paramEnd - paramStart);
2483 value[paramEnd - paramStart] = (char)0;
2485 __ecereNameSpace__ecere__sys__TrimRSpaces(value, value);
2486 switch(curParam->type)
2489 argument.dataTypeString = __ecereNameSpace__ecere__sys__CopyString(value);
2490 argument.dataTypeClass = __ecereNameSpace__ecere__com__eSystem_FindClass(_class->module, value);
2491 if(!argument.dataTypeClass)
2492 argument.dataTypeClass = __ecereNameSpace__ecere__com__eSystem_FindClass(((struct __ecereNameSpace__ecere__com__Module *)(((char *)_class->module + 12)))->application, value);
2493 if(!argument.dataTypeClass)
2494 argument.dataTypeClass = __ecereNameSpace__ecere__com__eSystem_FindClass(findModule, value);
2498 struct __ecereNameSpace__ecere__com__Class * expClass = __ecereNameSpace__ecere__com__eSystem_FindClass(_class->module, curParam->dataTypeString);
2501 expClass = __ecereNameSpace__ecere__com__eSystem_FindClass(((struct __ecereNameSpace__ecere__com__Module *)(((char *)_class->module + 12)))->application, curParam->dataTypeString);
2504 expClass->_vTbl[__ecereVMethodID_class_OnGetDataFromString](expClass, &argument.expression, value);
2506 else if(value[0] == '\"')
2508 char * endQuote = value + strlen(value) - 1;
2510 if(*endQuote != '\"')
2513 argument.expression.p = __ecereNameSpace__ecere__sys__CopyString(value + 1);
2515 else if(value[0] == '\'')
2518 unsigned int ch = __ecereNameSpace__ecere__sys__UTF8GetChar(value + 1, &nb);
2520 argument.expression.ui = ch;
2522 else if(!strcmp(curParam->dataTypeString, "uint"))
2524 argument.expression.ui = strtoul(value, (((void *)0)), 0);
2526 else if(!strcmp(curParam->dataTypeString, "char"))
2528 argument.expression.c = (char)strtol(value, (((void *)0)), 0);
2530 else if(!strcmp(curParam->dataTypeString, "byte"))
2532 argument.expression.uc = (unsigned char)strtoul(value, (((void *)0)), 0);
2534 else if(!strcmp(curParam->dataTypeString, "short"))
2536 argument.expression.s = (short)strtol(value, (((void *)0)), 0);
2538 else if(!strcmp(curParam->dataTypeString, "uint16"))
2540 argument.expression.us = (unsigned short)strtoul(value, (((void *)0)), 0);
2542 else if(!strcmp(curParam->dataTypeString, "int64"))
2544 argument.expression.i64 = __ecereNameSpace__ecere__com___strtoi64(value, (((void *)0)), 0);
2546 else if(!strcmp(curParam->dataTypeString, "uint64"))
2548 argument.expression.ui64 = __ecereNameSpace__ecere__com___strtoui64(value, (((void *)0)), 0);
2550 else if(!strcmp(curParam->dataTypeString, "float"))
2552 argument.expression.f = (float)strtod(value, (((void *)0)));
2554 else if(!strcmp(curParam->dataTypeString, "double"))
2556 argument.expression.d = strtod(value, (((void *)0)));
2560 argument.expression.i = strtol(value, (((void *)0)), 0);
2565 argument.memberString = __ecereNameSpace__ecere__sys__CopyString(value);
2568 __ecereNameSpace__ecere__com__FreeTemplateArg(templatedClass, curParam, curParamID);
2569 templatedClass->templateArgs[curParamID] = argument;
2573 if(templatedClass == _class)
2575 struct __ecereNameSpace__ecere__com__Class * sClass = _class;
2577 struct __ecereNameSpace__ecere__com__Class * nextClass;
2578 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param;
2580 for(nextClass = sClass->base; nextClass; nextClass = nextClass->base)
2582 if(nextClass->templateClass)
2583 nextClass = nextClass->templateClass;
2584 curParamID += nextClass->templateParams.count;
2586 for(param = sClass->templateParams.first; param; param = param->next)
2588 if(!templatedClass->templateArgs[curParamID].dataTypeString)
2590 templatedClass->templateArgs[curParamID] = param->defaultArg;
2591 __ecereNameSpace__ecere__com__CopyTemplateArg(param, &templatedClass->templateArgs[curParamID]);
2592 if(param->type == 0 && param->defaultArg.dataTypeString)
2594 templatedClass->templateArgs[curParamID].dataTypeClass = __ecereNameSpace__ecere__com__eSystem_FindClass(templatedClass->module, param->defaultArg.dataTypeString);
2595 if(!templatedClass->templateArgs[curParamID].dataTypeClass)
2596 templatedClass->templateArgs[curParamID].dataTypeClass = __ecereNameSpace__ecere__com__eSystem_FindClass(((struct __ecereNameSpace__ecere__com__Module *)(((char *)templatedClass->module + 12)))->application, param->defaultArg.dataTypeString);
2597 if(!templatedClass->templateArgs[curParamID].dataTypeClass)
2598 templatedClass->templateArgs[curParamID].dataTypeClass = __ecereNameSpace__ecere__com__eSystem_FindClass(findModule, param->defaultArg.dataTypeString);
2604 if(templatedClass->base && templatedClass->base->templateArgs && numParams - _class->templateParams.count)
2606 int c = numParams - _class->templateParams.count - 1;
2608 for(sClass = _class->base; sClass; sClass = sClass->base)
2610 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param;
2612 if(sClass->templateClass)
2613 sClass = sClass->templateClass;
2614 for(param = sClass->templateParams.last; param; param = param->prev)
2616 struct __ecereNameSpace__ecere__com__ClassTemplateArgument * arg = &templatedClass->templateArgs[c];
2617 struct __ecereNameSpace__ecere__com__ClassTemplateArgument * baseArg = &templatedClass->base->templateArgs[c];
2619 if(!(*arg).dataTypeString)
2621 *arg = templatedClass->base->templateArgs[c];
2622 __ecereNameSpace__ecere__com__CopyTemplateArg(param, arg);
2623 if(param->type == 0)
2625 if((*arg).dataTypeClass && strchr((*arg).dataTypeString, '<') && (*arg).dataTypeClass->templateArgs)
2627 struct __ecereNameSpace__ecere__com__Class * expClass = (*arg).dataTypeClass;
2628 struct __ecereNameSpace__ecere__com__Class * cClass = (((void *)0));
2631 char templateString[1024];
2633 sprintf(templateString, "%s<", expClass->templateClass->fullName);
2634 for(cClass = expClass; cClass; cClass = cClass->base)
2637 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param;
2639 for(param = cClass->templateParams.first; param; param = param->next)
2642 struct __ecereNameSpace__ecere__com__Class * sClass;
2643 struct __ecereNameSpace__ecere__com__ClassTemplateArgument arg;
2645 for(sClass = expClass->base; sClass; sClass = sClass->base)
2646 id += sClass->templateParams.count;
2647 arg = expClass->templateArgs[id];
2649 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * cParam;
2650 int p = numParams - _class->templateParams.count;
2652 for(cParam = _class->templateParams.first; cParam; cParam = cParam->next, p++)
2654 if(cParam->type == 0 && arg.dataTypeString && !strcmp(cParam->name, arg.dataTypeString))
2656 arg.dataTypeString = templatedClass->templateArgs[p].dataTypeString;
2657 arg.dataTypeClass = templatedClass->templateArgs[p].dataTypeClass;
2674 strcat(argument, arg.member->name);
2679 if(arg.dataTypeString)
2680 strcat(argument, arg.dataTypeString);
2687 strcat(templateString, ", ");
2688 if(lastParam != p - 1)
2690 strcat(templateString, param->name);
2691 strcat(templateString, " = ");
2693 strcat(templateString, argument);
2702 int len = strlen(templateString);
2704 if(templateString[len - 1] == '>')
2705 templateString[len++] = ' ';
2706 templateString[len++] = '>';
2707 templateString[len++] = '\0';
2709 __ecereNameSpace__ecere__com__FreeTemplateArg(templatedClass, param, c);
2710 (*arg).dataTypeString = __ecereNameSpace__ecere__sys__CopyString(templateString);
2711 (*arg).dataTypeClass = __ecereNameSpace__ecere__com__eSystem_FindClass(templatedClass->module, templateString);
2712 if(!(*arg).dataTypeClass)
2713 (*arg).dataTypeClass = __ecereNameSpace__ecere__com__eSystem_FindClass(((struct __ecereNameSpace__ecere__com__Module *)(((char *)templatedClass->module + 12)))->application, templateString);
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 && (*baseArg).dataTypeString && !strcmp(cParam->name, (*baseArg).dataTypeString))
2724 __ecereNameSpace__ecere__com__FreeTemplateArg(templatedClass, param, c);
2725 (*arg).dataTypeString = templatedClass->templateArgs[p].dataTypeString;
2726 (*arg).dataTypeClass = templatedClass->templateArgs[p].dataTypeClass;
2727 __ecereNameSpace__ecere__com__CopyTemplateArg(cParam, arg);
2739 struct __ecereNameSpace__ecere__com__Class * sClass;
2741 for(sClass = _class; sClass; sClass = sClass->base)
2744 struct __ecereNameSpace__ecere__com__Class * nextClass;
2745 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param;
2747 if(sClass->templateClass)
2748 sClass = sClass->templateClass;
2749 for(nextClass = sClass->base; nextClass; nextClass = nextClass->base)
2751 if(nextClass->templateClass)
2752 nextClass = nextClass->templateClass;
2753 curParamID += nextClass->templateParams.count;
2755 for(param = sClass->templateParams.first; param; param = param->next)
2757 if(!templatedClass->templateArgs[curParamID].dataTypeString)
2759 templatedClass->templateArgs[curParamID] = param->defaultArg;
2760 __ecereNameSpace__ecere__com__CopyTemplateArg(param, &templatedClass->templateArgs[curParamID]);
2761 if(param->type == 0 && param->defaultArg.dataTypeString)
2763 templatedClass->templateArgs[curParamID].dataTypeClass = __ecereNameSpace__ecere__com__eSystem_FindClass(templatedClass->module, param->defaultArg.dataTypeString);
2764 if(!templatedClass->templateArgs[curParamID].dataTypeClass)
2765 templatedClass->templateArgs[curParamID].dataTypeClass = __ecereNameSpace__ecere__com__eSystem_FindClass(((struct __ecereNameSpace__ecere__com__Module *)(((char *)templatedClass->module + 12)))->application, param->defaultArg.dataTypeString);
2766 if(!templatedClass->templateArgs[curParamID].dataTypeClass)
2767 templatedClass->templateArgs[curParamID].dataTypeClass = __ecereNameSpace__ecere__com__eSystem_FindClass(findModule, param->defaultArg.dataTypeString);
2775 int c = numParams - 1;
2777 for(sClass = _class; sClass; sClass = sClass->base)
2779 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param;
2781 if(sClass->templateClass)
2782 sClass = sClass->templateClass;
2783 for(param = sClass->templateParams.last; param; param = param->prev)
2785 if(param->type == 0)
2787 struct __ecereNameSpace__ecere__com__ClassTemplateArgument * arg = &templatedClass->templateArgs[c];
2788 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * cParam;
2789 struct __ecereNameSpace__ecere__com__Class * dClass;
2790 int p = numParams - 1;
2792 for(dClass = _class; dClass; dClass = dClass->base)
2794 if(dClass->templateClass)
2795 dClass = dClass->templateClass;
2796 for(cParam = dClass->templateParams.last; cParam; cParam = cParam->prev, p--)
2798 if(cParam->type == 0 && (*arg).dataTypeString && !strcmp(cParam->name, (*arg).dataTypeString))
2800 if(templatedClass->templateArgs[p].dataTypeString && c != p)
2802 __ecereNameSpace__ecere__com__FreeTemplateArg(templatedClass, param, c);
2803 (*arg).dataTypeString = templatedClass->templateArgs[p].dataTypeString;
2804 (*arg).dataTypeClass = templatedClass->templateArgs[p].dataTypeClass;
2805 __ecereNameSpace__ecere__com__CopyTemplateArg(cParam, arg);
2816 struct __ecereNameSpace__ecere__com__Class * tClass;
2817 int c = numParams - 1;
2819 for(tClass = _class; tClass; tClass = tClass->base)
2821 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param;
2823 if(tClass->templateClass)
2824 tClass = tClass->templateClass;
2825 for(param = tClass->templateParams.last; param; param = param->prev)
2827 struct __ecereNameSpace__ecere__com__ClassTemplateArgument * arg = &templatedClass->templateArgs[c];
2829 if(param->type == 1 && (*arg).memberString)
2831 struct __ecereNameSpace__ecere__com__Class * memberClass = templatedClass;
2832 char * memberString = (*arg).memberString;
2833 char * colon = strstr(memberString, "::");
2834 char * memberName = memberString;
2837 memberName = colon + 2;
2840 memberString = param->defaultArg.memberString;
2841 colon = memberString ? strstr(memberString, "::") : (((void *)0));
2845 char className[1024];
2846 struct __ecereNameSpace__ecere__com__Class * sClass;
2848 memcpy(className, memberString, colon - memberString);
2849 className[colon - memberString] = '\0';
2850 for(sClass = _class; sClass; sClass = sClass->base)
2852 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * cParam;
2853 struct __ecereNameSpace__ecere__com__Class * nextClass;
2856 if(sClass->templateClass)
2857 sClass = sClass->templateClass;
2858 for(nextClass = sClass->base; nextClass; nextClass = nextClass->base)
2860 if(nextClass->templateClass)
2861 nextClass = nextClass->templateClass;
2862 id += nextClass->templateParams.count;
2864 for(cParam = sClass->templateParams.first; cParam; cParam = cParam->next)
2866 if(cParam->type == 0 && !strcmp(cParam->name, className) && templatedClass->templateArgs[id].dataTypeString)
2868 strcpy(className, templatedClass->templateArgs[id].dataTypeString);
2873 memberClass = __ecereNameSpace__ecere__com__eSystem_FindClass(templatedClass->module, className);
2875 memberClass = __ecereNameSpace__ecere__com__eSystem_FindClass(findModule, className);
2877 memberClass = __ecereNameSpace__ecere__com__eSystem_FindClass(((struct __ecereNameSpace__ecere__com__Module *)(((char *)templatedClass->module + 12)))->application, className);
2881 switch(param->memberType)
2884 (*arg).member = __ecereNameSpace__ecere__com__eClass_FindDataMember(memberClass, memberName, memberClass->module, (((void *)0)), (((void *)0)));
2887 (*arg).method = __ecereNameSpace__ecere__com__eClass_FindMethod(memberClass, memberName, memberClass->module);
2890 (*arg).prop = __ecereNameSpace__ecere__com__eClass_FindProperty(memberClass, memberName, memberClass->module);
2901 unsigned int __ecereNameSpace__ecere__com__DefaultFunction()
2906 unsigned int __ecereNameSpace__ecere__com__eClass_IsDerived(struct __ecereNameSpace__ecere__com__Class * _class, struct __ecereNameSpace__ecere__com__Class * from)
2908 if(!_class && !from)
2910 if(_class && from && (_class->templateClass || from->templateClass))
2912 if(__ecereNameSpace__ecere__com__eClass_IsDerived(_class->templateClass ? _class->templateClass : _class, from->templateClass ? from->templateClass : from))
2914 if(!from->templateClass)
2916 else if(!_class->templateClass && _class == from->templateClass)
2920 struct __ecereNameSpace__ecere__com__Class * sClass;
2922 for(sClass = from; sClass; sClass = sClass->base)
2924 if(sClass->templateParams.first)
2926 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param;
2927 struct __ecereNameSpace__ecere__com__Class * nextClass;
2930 for(nextClass = sClass->base; nextClass; nextClass = nextClass->base)
2931 p += nextClass->templateParams.count;
2932 for(param = sClass->templateParams.first; param; param = param->next, p++)
2934 struct __ecereNameSpace__ecere__com__ClassTemplateArgument * arg = &_class->templateArgs[p];
2935 struct __ecereNameSpace__ecere__com__ClassTemplateArgument * fArg = &from->templateArgs[p];
2937 if(param->type == 0)
2939 if((*arg).dataTypeString != (*fArg).dataTypeString && (*arg).dataTypeString && (*fArg).dataTypeString && strcmp((*arg).dataTypeString, (*fArg).dataTypeString))
2942 else if(param->type == 1)
2944 if((*arg).member != (*fArg).member)
2947 else if(param->type == 2)
2949 if((*arg).expression.ui64 != (*fArg).expression.ui64)
2963 for(; _class && from; _class = _class->base)
2965 if(_class == from || _class->templateClass == from || (_class->type == 1000 && from->name && !strcmp(_class->name, from->name)))
2972 static void __ecereNameSpace__ecere__com__FixDerivativeVirtualMethod(struct __ecereNameSpace__ecere__com__Class * base, char * name, int vid, void * origFunction)
2974 struct __ecereNameSpace__ecere__sys__OldLink * derivative;
2976 for(derivative = base->derivatives.first; derivative; derivative = derivative->next)
2978 struct __ecereNameSpace__ecere__com__Class * _class = derivative->data;
2979 struct __ecereNameSpace__ecere__com__Method * method, * next;
2980 void * function = origFunction;
2983 _class->_vTbl = __ecereNameSpace__ecere__com__eSystem_Renew(_class->_vTbl, sizeof(void *) * (_class->vTblSize));
2984 memmove(_class->_vTbl + vid + 1, _class->_vTbl + vid, (_class->vTblSize - vid - 1) * sizeof(void *));
2985 method = (struct __ecereNameSpace__ecere__com__Method *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&_class->methods, name);
2988 if(method->function)
2989 function = method->function;
2990 (__ecereNameSpace__ecere__com__eSystem_Delete(method->name), method->name = 0);
2991 (__ecereNameSpace__ecere__com__eSystem_Delete(method->dataTypeString), method->dataTypeString = 0);
2992 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&_class->methods, (struct __ecereNameSpace__ecere__sys__BTNode *)method);
2994 for(method = (struct __ecereNameSpace__ecere__com__Method *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&_class->methods); method; method = next)
2996 next = (struct __ecereNameSpace__ecere__com__Method *)__ecereProp___ecereNameSpace__ecere__sys__BTNode_Get_next(((struct __ecereNameSpace__ecere__sys__BTNode *)method));
2997 if(method->type == 1)
3000 _class->_vTbl[vid] = function;
3002 struct __ecereNameSpace__ecere__sys__OldLink * templateLink;
3004 for(templateLink = _class->templatized.first; templateLink; templateLink = templateLink->next)
3006 struct __ecereNameSpace__ecere__com__Class * template = templateLink->data;
3008 template->_vTbl = _class->_vTbl;
3011 if(_class->derivatives.first || _class->templatized.first)
3012 __ecereNameSpace__ecere__com__FixDerivativeVirtualMethod(_class, name, vid, function);
3015 struct __ecereNameSpace__ecere__sys__OldLink * templateLink;
3017 for(templateLink = base->templatized.first; templateLink; templateLink = templateLink->next)
3019 struct __ecereNameSpace__ecere__com__Class * template = templateLink->data;
3021 template->_vTbl = base->_vTbl;
3022 __ecereNameSpace__ecere__com__FixDerivativeVirtualMethod(template, name, vid, origFunction);
3027 struct __ecereNameSpace__ecere__com__Method * __ecereNameSpace__ecere__com__eClass_AddMethod(struct __ecereNameSpace__ecere__com__Class * _class, char * name, char * type, void * function, int declMode)
3031 struct __ecereNameSpace__ecere__com__Class * base;
3033 for(base = _class; base; base = base->base)
3035 struct __ecereNameSpace__ecere__com__Method * method = (struct __ecereNameSpace__ecere__com__Method *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&base->methods, name);
3039 if(method->type == 1)
3041 struct __ecereNameSpace__ecere__sys__OldLink * deriv;
3042 void * oldFunction = _class->_vTbl[method->vid];
3044 if(method->vid > _class->vTblSize)
3047 _class->_vTbl[method->vid] = function ? function : __ecereNameSpace__ecere__com__DefaultFunction;
3048 for(deriv = _class->derivatives.first; deriv; deriv = deriv->next)
3050 struct __ecereNameSpace__ecere__com__Class * derivClass = deriv->data;
3052 if(derivClass->_vTbl[method->vid] == oldFunction)
3053 __ecereNameSpace__ecere__com__eClass_AddMethod(derivClass, name, type, function, declMode);
3056 struct __ecereNameSpace__ecere__sys__OldLink * templateLink;
3058 for(templateLink = _class->templatized.first; templateLink; templateLink = templateLink->next)
3060 struct __ecereNameSpace__ecere__com__Class * template = templateLink->data;
3062 for(deriv = template->derivatives.first; deriv; deriv = deriv->next)
3064 struct __ecereNameSpace__ecere__com__Class * derivClass = deriv->data;
3066 if(derivClass->_vTbl[method->vid] == oldFunction)
3067 __ecereNameSpace__ecere__com__eClass_AddMethod(derivClass, name, type, function, declMode);
3078 base = (((void *)0));
3086 struct __ecereNameSpace__ecere__com__Method * method = (method = __ecereNameSpace__ecere__com__eSystem_New0(52), method->name = __ecereNameSpace__ecere__sys__CopyString(name), method->function = function ? function : __ecereNameSpace__ecere__com__DefaultFunction, method->_class = _class, method->dataTypeString = __ecereNameSpace__ecere__sys__CopyString(type), method->memberAccess = declMode, method);
3088 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&_class->methods, (struct __ecereNameSpace__ecere__sys__BTNode *)method);
3092 return (((void *)0));
3095 struct __ecereNameSpace__ecere__com__Method * __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(struct __ecereNameSpace__ecere__com__Class * _class, char * name, char * type, void * function, int declMode)
3099 struct __ecereNameSpace__ecere__com__Class * base;
3101 for(base = _class; base; base = base->base)
3103 struct __ecereNameSpace__ecere__com__Method * method = (struct __ecereNameSpace__ecere__com__Method *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&base->methods, name);
3107 if(method->type == 1)
3108 _class->_vTbl[method->vid] = function ? function : __ecereNameSpace__ecere__com__DefaultFunction;
3110 base = (((void *)0));
3116 struct __ecereNameSpace__ecere__com__Method * method = (method = __ecereNameSpace__ecere__com__eSystem_New0(52), method->name = __ecereNameSpace__ecere__sys__CopyString(name), method->function = function ? function : __ecereNameSpace__ecere__com__DefaultFunction, method->type = 1, method->_class = _class, method->vid = _class->vTblSize++, method->dataTypeString = __ecereNameSpace__ecere__sys__CopyString(type), method->memberAccess = declMode, method);
3118 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&_class->methods, (struct __ecereNameSpace__ecere__sys__BTNode *)method);
3119 _class->_vTbl = __ecereNameSpace__ecere__com__eSystem_Renew(_class->_vTbl, sizeof(void *) * (_class->vTblSize));
3120 _class->_vTbl[method->vid] = function ? function : __ecereNameSpace__ecere__com__DefaultFunction;
3121 if(_class->derivatives.first || _class->templatized.first)
3122 __ecereNameSpace__ecere__com__FixDerivativeVirtualMethod(_class, name, method->vid, function ? function : (void *)__ecereNameSpace__ecere__com__DefaultFunction);
3126 return (((void *)0));
3129 static void __ecereNameSpace__ecere__com__FixDerivativeProperty(struct __ecereNameSpace__ecere__com__Class * base, struct __ecereNameSpace__ecere__com__Property * _property)
3131 struct __ecereNameSpace__ecere__sys__OldLink * derivative;
3133 for(derivative = base->derivatives.first; derivative; derivative = derivative->next)
3135 struct __ecereNameSpace__ecere__com__Class * _class = derivative->data;
3136 struct __ecereNameSpace__ecere__com__Property * prop;
3137 struct __ecereNameSpace__ecere__com__BTNamedLink * link;
3139 link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&_class->prop, _property->name);
3143 if(!prop->Set && !prop->Get && prop->memberAccess == 4)
3145 struct __ecereNameSpace__ecere__com__SelfWatcher * watcher;
3147 for(watcher = _class->selfWatchers.first; watcher; watcher = watcher->next)
3149 if(watcher->_property == prop)
3150 watcher->_property = _property;
3152 _property->selfWatchable = 0x1;
3153 (__ecereNameSpace__ecere__com__eSystem_Delete(prop->name), prop->name = 0);
3154 (__ecereNameSpace__ecere__com__eSystem_Delete(prop->dataTypeString), prop->dataTypeString = 0);
3155 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&_class->membersAndProperties, prop);
3156 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&_class->prop, (struct __ecereNameSpace__ecere__sys__BTNode *)link);
3159 for(prop = _class->membersAndProperties.first; prop; prop = prop->next)
3162 _class->startMemberID++;
3163 __ecereNameSpace__ecere__com__FixDerivativeProperty(_class, _property);
3167 struct __ecereNameSpace__ecere__com__Property * __ecereNameSpace__ecere__com__eClass_AddProperty(struct __ecereNameSpace__ecere__com__Class * _class, char * name, char * dataType, void * setStmt, void * getStmt, int declMode)
3169 void * __ecereTemp1;
3170 struct __ecereNameSpace__ecere__com__Property * _property = (((void *)0));
3174 if(!__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&_class->prop, (name ? name : dataType)))
3176 _property = (__ecereTemp1 = __ecereNameSpace__ecere__com__eSystem_New0(88), ((struct __ecereNameSpace__ecere__com__Property *)__ecereTemp1)->isProperty = 0x1, ((struct __ecereNameSpace__ecere__com__Property *)__ecereTemp1)->name = __ecereNameSpace__ecere__sys__CopyString(name ? name : dataType), ((struct __ecereNameSpace__ecere__com__Property *)__ecereTemp1)->id = (name && (setStmt || getStmt || dataType)) ? _class->memberID++ : 0, ((struct __ecereNameSpace__ecere__com__Property *)__ecereTemp1)->Set = setStmt, ((struct __ecereNameSpace__ecere__com__Property *)__ecereTemp1)->Get = getStmt, ((struct __ecereNameSpace__ecere__com__Property *)__ecereTemp1)->dataTypeString = __ecereNameSpace__ecere__sys__CopyString(dataType), ((struct __ecereNameSpace__ecere__com__Property *)__ecereTemp1)->_class = _class, ((struct __ecereNameSpace__ecere__com__Property *)__ecereTemp1)->compiled = 0x1, ((struct __ecereNameSpace__ecere__com__Property *)__ecereTemp1)->conversion = name ? 0x0 : 0x1, ((struct __ecereNameSpace__ecere__com__Property *)__ecereTemp1)->memberAccess = declMode, ((struct __ecereNameSpace__ecere__com__Property *)__ecereTemp1));
3178 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&_class->membersAndProperties, _property);
3180 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&_class->conversions, _property);
3181 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&_class->prop, (struct __ecereNameSpace__ecere__sys__BTNode *)(__ecereTemp1 = __ecereNameSpace__ecere__com__eSystem_New0(24), ((struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereTemp1)->name = _property->name, ((struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereTemp1)->data = _property, ((struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereTemp1)));
3182 if(!_property->conversion)
3184 __ecereNameSpace__ecere__com__FixDerivativeProperty(_class, _property);
3191 static void __ecereNameSpace__ecere__com__SetDelayedCPValues(struct __ecereNameSpace__ecere__com__Class * _class, struct __ecereNameSpace__ecere__com__ClassProperty * _property)
3193 struct __ecereNameSpace__ecere__sys__OldLink * deriv;
3194 struct __ecereNameSpace__ecere__sys__NamedLink * value, * next;
3196 for(value = _class->delayedCPValues.first; value; value = next)
3199 if(!strcmp(value->name, _property->name))
3201 _property->Set(_class, (int)value->data);
3202 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&_class->delayedCPValues, value);
3205 for(deriv = _class->derivatives.first; deriv; deriv = deriv->next)
3207 __ecereNameSpace__ecere__com__SetDelayedCPValues(deriv->data, _property);
3211 struct __ecereNameSpace__ecere__com__ClassProperty * __ecereNameSpace__ecere__com__eClass_AddClassProperty(struct __ecereNameSpace__ecere__com__Class * _class, char * name, char * dataType, void * setStmt, void * getStmt)
3213 if(name && !__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&_class->classProperties, name))
3215 struct __ecereNameSpace__ecere__com__ClassProperty * _property = (_property = __ecereNameSpace__ecere__com__eSystem_New0(40), _property->name = __ecereNameSpace__ecere__sys__CopyString(name), _property->Set = setStmt, _property->Get = getStmt, _property->dataTypeString = __ecereNameSpace__ecere__sys__CopyString(dataType), _property);
3217 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&_class->classProperties, (struct __ecereNameSpace__ecere__sys__BTNode *)_property);
3218 __ecereNameSpace__ecere__com__SetDelayedCPValues(_class, _property);
3221 return (((void *)0));
3224 struct __ecereNameSpace__ecere__com__ClassProperty * __ecereNameSpace__ecere__com__eClass_FindClassProperty(struct __ecereNameSpace__ecere__com__Class * _class, char * name)
3226 struct __ecereNameSpace__ecere__com__ClassProperty * _property = (((void *)0));
3230 struct __ecereNameSpace__ecere__com__Class * origClass = _class;
3232 for(; _class; _class = _class->base)
3234 _property = (struct __ecereNameSpace__ecere__com__ClassProperty *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&_class->classProperties, name);
3238 if(!_property && origClass->type == 4)
3240 struct __ecereNameSpace__ecere__com__Class * enumClass = __ecereNameSpace__ecere__com__eSystem_FindClass(origClass->module, "enum");
3242 _property = __ecereNameSpace__ecere__com__eClass_FindClassProperty(enumClass, name);
3248 int __ecereNameSpace__ecere__com__eClass_GetProperty(struct __ecereNameSpace__ecere__com__Class * _class, char * name)
3250 struct __ecereNameSpace__ecere__com__ClassProperty * _property = __ecereNameSpace__ecere__com__eClass_FindClassProperty(_class, name);
3252 if(_property && _property->Get && _property->Get != (void *)1)
3254 int result = _property->Get(_class);
3261 void __ecereNameSpace__ecere__com__eClass_SetProperty(struct __ecereNameSpace__ecere__com__Class * _class, char * name, int value)
3263 void * __ecereTemp1;
3264 struct __ecereNameSpace__ecere__com__ClassProperty * _property = __ecereNameSpace__ecere__com__eClass_FindClassProperty(_class, name);
3269 _property->Set(_class, value);
3273 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&_class->delayedCPValues, (__ecereTemp1 = __ecereNameSpace__ecere__com__eSystem_New0(16), ((struct __ecereNameSpace__ecere__sys__NamedLink *)__ecereTemp1)->name = name, ((struct __ecereNameSpace__ecere__sys__NamedLink *)__ecereTemp1)->data = (void *)value, ((struct __ecereNameSpace__ecere__sys__NamedLink *)__ecereTemp1)));
3277 struct __ecereNameSpace__ecere__com__Method * __ecereNameSpace__ecere__com__eClass_FindMethod(struct __ecereNameSpace__ecere__com__Class * _class, char * name, struct __ecereNameSpace__ecere__com__Instance * module)
3281 for(; _class; _class = _class->base)
3283 struct __ecereNameSpace__ecere__com__Method * method;
3285 if(_class->templateClass)
3286 _class = _class->templateClass;
3287 method = (struct __ecereNameSpace__ecere__com__Method *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&_class->methods, name);
3288 if(method && (method->memberAccess == 1 || _class->module == module || !method->dataTypeString))
3290 if(!method->dataTypeString)
3292 if(_class->module != module)
3294 if(method->memberAccess == 1)
3295 module = _class->module;
3298 return (((void *)0));
3307 if(_class->inheritanceAccess == 2 && _class->module != module)
3311 return (((void *)0));
3314 static unsigned int __ecereNameSpace__ecere__com__ConstructInstance(void * instance, struct __ecereNameSpace__ecere__com__Class * _class)
3316 if(_class->templateClass)
3317 _class = _class->templateClass;
3320 if(!__ecereNameSpace__ecere__com__ConstructInstance(instance, _class->base))
3323 if(_class->Initialize)
3325 void (* Initialize)(struct __ecereNameSpace__ecere__com__Instance * module) = (void *)_class->Initialize;
3327 _class->Initialize = (((void *)0));
3328 Initialize(_class->module);
3330 if(_class->Constructor)
3332 if(!_class->Constructor(instance))
3334 for(; _class; _class = _class->base)
3336 if(_class->templateClass)
3337 _class = _class->templateClass;
3338 if(_class->Destructor)
3339 _class->Destructor(instance);
3344 (_class->templateClass ? _class->templateClass : _class)->count++;
3348 void * __ecereNameSpace__ecere__com__eInstance_New(struct __ecereNameSpace__ecere__com__Class * _class)
3350 struct __ecereNameSpace__ecere__com__Instance * instance = (((void *)0));
3354 instance = __ecereNameSpace__ecere__com___calloc(1, _class->structSize);
3355 if(_class->type == 0)
3357 ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class = _class;
3358 ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_vTbl = _class->_vTbl;
3360 if(!__ecereNameSpace__ecere__com__ConstructInstance(instance, _class))
3362 __ecereNameSpace__ecere__com___free(instance);
3363 instance = (((void *)0));
3369 void __ecereNameSpace__ecere__com__eInstance_Evolve(struct __ecereNameSpace__ecere__com__Instance ** instancePtr, struct __ecereNameSpace__ecere__com__Class * _class)
3371 if(_class && instancePtr && *instancePtr)
3373 struct __ecereNameSpace__ecere__com__Instance * instance = (struct __ecereNameSpace__ecere__com__Instance *)__ecereNameSpace__ecere__com__eSystem_Renew(*instancePtr, sizeof(unsigned char) * (_class->structSize));
3375 *instancePtr = instance;
3376 memset(((unsigned char *)instance) + ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class->structSize, (unsigned char)0, _class->structSize - ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class->structSize);
3377 if(!strcmp(((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class->name, "Application"))
3379 struct __ecereNameSpace__ecere__com__Instance * module;
3380 struct __ecereNameSpace__ecere__com__Instance * app = (struct __ecereNameSpace__ecere__com__Instance *)instance;
3381 struct __ecereNameSpace__ecere__com__BTNamedLink * link;
3382 struct __ecereNameSpace__ecere__com__Class * _class;
3383 struct __ecereNameSpace__ecere__com__NameSpace * nameSpace;
3385 for(module = ((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 296)))->allModules.first; module; module = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->next)
3386 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application = app;
3387 for(link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)app + 12)))->privateNameSpace.classes); link; link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereProp___ecereNameSpace__ecere__sys__BTNode_Get_next(((struct __ecereNameSpace__ecere__sys__BTNode *)link)))
3389 struct __ecereNameSpace__ecere__sys__OldLink * t;
3391 ((struct __ecereNameSpace__ecere__com__Class *)link->data)->nameSpace = &((struct __ecereNameSpace__ecere__com__Module *)(((char *)app + 12)))->privateNameSpace;
3392 for(t = ((struct __ecereNameSpace__ecere__com__Class *)link->data)->templatized.first; t; t = t->next)
3394 struct __ecereNameSpace__ecere__com__Class * template = t->data;
3396 template->nameSpace = ((struct __ecereNameSpace__ecere__com__Class *)link->data)->nameSpace;
3399 for(link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)app + 12)))->publicNameSpace.classes); link; link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereProp___ecereNameSpace__ecere__sys__BTNode_Get_next(((struct __ecereNameSpace__ecere__sys__BTNode *)link)))
3401 struct __ecereNameSpace__ecere__sys__OldLink * t;
3403 ((struct __ecereNameSpace__ecere__com__Class *)link->data)->nameSpace = &((struct __ecereNameSpace__ecere__com__Module *)(((char *)app + 12)))->publicNameSpace;
3404 for(t = ((struct __ecereNameSpace__ecere__com__Class *)link->data)->templatized.first; t; t = t->next)
3406 struct __ecereNameSpace__ecere__com__Class * template = t->data;
3408 template->nameSpace = ((struct __ecereNameSpace__ecere__com__Class *)link->data)->nameSpace;
3411 for(link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)app + 12)))->privateNameSpace.defines); link; link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereProp___ecereNameSpace__ecere__sys__BTNode_Get_next(((struct __ecereNameSpace__ecere__sys__BTNode *)link)))
3412 ((struct __ecereNameSpace__ecere__com__DefinedExpression *)link->data)->nameSpace = &((struct __ecereNameSpace__ecere__com__Module *)(((char *)app + 12)))->privateNameSpace;
3413 for(link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)app + 12)))->publicNameSpace.defines); link; link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereProp___ecereNameSpace__ecere__sys__BTNode_Get_next(((struct __ecereNameSpace__ecere__sys__BTNode *)link)))
3414 ((struct __ecereNameSpace__ecere__com__DefinedExpression *)link->data)->nameSpace = &((struct __ecereNameSpace__ecere__com__Module *)(((char *)app + 12)))->publicNameSpace;
3415 for(link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)app + 12)))->privateNameSpace.functions); link; link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereProp___ecereNameSpace__ecere__sys__BTNode_Get_next(((struct __ecereNameSpace__ecere__sys__BTNode *)link)))
3416 ((struct __ecereNameSpace__ecere__com__GlobalFunction *)link->data)->nameSpace = &((struct __ecereNameSpace__ecere__com__Module *)(((char *)app + 12)))->privateNameSpace;
3417 for(link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)app + 12)))->publicNameSpace.functions); link; link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereProp___ecereNameSpace__ecere__sys__BTNode_Get_next(((struct __ecereNameSpace__ecere__sys__BTNode *)link)))
3418 ((struct __ecereNameSpace__ecere__com__GlobalFunction *)link->data)->nameSpace = &((struct __ecereNameSpace__ecere__com__Module *)(((char *)app + 12)))->publicNameSpace;
3419 for(nameSpace = (struct __ecereNameSpace__ecere__com__NameSpace *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)app + 12)))->privateNameSpace.nameSpaces); nameSpace; nameSpace = (struct __ecereNameSpace__ecere__com__NameSpace *)__ecereProp___ecereNameSpace__ecere__sys__BTNode_Get_next(((struct __ecereNameSpace__ecere__sys__BTNode *)nameSpace)))
3420 (*nameSpace).parent = &((struct __ecereNameSpace__ecere__com__Module *)(((char *)app + 12)))->privateNameSpace;
3421 for(nameSpace = (struct __ecereNameSpace__ecere__com__NameSpace *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)app + 12)))->publicNameSpace.nameSpaces); nameSpace; nameSpace = (struct __ecereNameSpace__ecere__com__NameSpace *)__ecereProp___ecereNameSpace__ecere__sys__BTNode_Get_next(((struct __ecereNameSpace__ecere__sys__BTNode *)nameSpace)))
3422 (*nameSpace).parent = &((struct __ecereNameSpace__ecere__com__Module *)(((char *)app + 12)))->publicNameSpace;
3423 for(link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 296)))->systemNameSpace.classes); link; link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereProp___ecereNameSpace__ecere__sys__BTNode_Get_next(((struct __ecereNameSpace__ecere__sys__BTNode *)link)))
3425 struct __ecereNameSpace__ecere__sys__OldLink * t;
3427 ((struct __ecereNameSpace__ecere__com__Class *)link->data)->nameSpace = &((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 296)))->systemNameSpace;
3428 for(t = ((struct __ecereNameSpace__ecere__com__Class *)link->data)->templatized.first; t; t = t->next)
3430 struct __ecereNameSpace__ecere__com__Class * template = t->data;
3432 template->nameSpace = ((struct __ecereNameSpace__ecere__com__Class *)link->data)->nameSpace;
3435 for(link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 296)))->systemNameSpace.defines); link; link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereProp___ecereNameSpace__ecere__sys__BTNode_Get_next(((struct __ecereNameSpace__ecere__sys__BTNode *)link)))
3436 ((struct __ecereNameSpace__ecere__com__DefinedExpression *)link->data)->nameSpace = &((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 296)))->systemNameSpace;
3437 for(link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 296)))->systemNameSpace.functions); link; link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereProp___ecereNameSpace__ecere__sys__BTNode_Get_next(((struct __ecereNameSpace__ecere__sys__BTNode *)link)))
3438 ((struct __ecereNameSpace__ecere__com__GlobalFunction *)link->data)->nameSpace = &((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 296)))->systemNameSpace;
3439 for(link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 296)))->systemNameSpace.functions); link; link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereProp___ecereNameSpace__ecere__sys__BTNode_Get_next(((struct __ecereNameSpace__ecere__sys__BTNode *)link)))
3440 ((struct __ecereNameSpace__ecere__com__GlobalFunction *)link->data)->nameSpace = &((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 296)))->systemNameSpace;
3441 for(nameSpace = (struct __ecereNameSpace__ecere__com__NameSpace *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 296)))->systemNameSpace.nameSpaces); nameSpace; nameSpace = (struct __ecereNameSpace__ecere__com__NameSpace *)__ecereProp___ecereNameSpace__ecere__sys__BTNode_Get_next(((struct __ecereNameSpace__ecere__sys__BTNode *)nameSpace)))
3442 (*nameSpace).parent = &((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 296)))->systemNameSpace;
3443 for(_class = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)app + 12)))->classes.first; _class; _class = _class->next)
3445 struct __ecereNameSpace__ecere__sys__OldLink * templateLink;
3447 _class->module = (struct __ecereNameSpace__ecere__com__Instance *)app;
3448 for(templateLink = _class->templatized.first; templateLink; templateLink = templateLink->next)
3450 struct __ecereNameSpace__ecere__com__Class * template = templateLink->data;
3452 template->module = _class->module;
3455 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)app + 12)))->application = app;
3458 struct __ecereNameSpace__ecere__com__Class * base;
3460 for(base = ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class; base && base->type == 0 && base->count; base = base->base)
3461 (base->templateClass ? base->templateClass : base)->count--;
3463 ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class = _class;
3464 ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_vTbl = _class->_vTbl;
3465 if(!__ecereNameSpace__ecere__com__ConstructInstance(instance, _class))
3467 __ecereNameSpace__ecere__com___free(instance);
3468 *instancePtr = (((void *)0));
3473 void __ecereNameSpace__ecere__com__eInstance_Delete(struct __ecereNameSpace__ecere__com__Instance * instance)
3477 struct __ecereNameSpace__ecere__com__Class * _class, * base;
3478 unsigned int ownVtbl = ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_vTbl != ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class->_vTbl;
3480 for(_class = ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class; _class; _class = base)
3482 if(_class->templateClass)
3483 _class = _class->templateClass;
3484 if(_class->destructionWatchOffset)
3486 struct __ecereNameSpace__ecere__sys__OldList * watchers = (struct __ecereNameSpace__ecere__sys__OldList *)((unsigned char *)instance + _class->destructionWatchOffset);
3487 struct __ecereNameSpace__ecere__com__Watcher * watcher, * next;
3489 for(watcher = (*watchers).first; watcher; watcher = next)
3491 next = watcher->next;
3492 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove((&*watchers), watcher);
3493 watcher->callback(watcher->object, instance);
3494 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete((&*watchers), watcher);
3497 base = _class->base;
3498 if(base && base->type == 1000)
3499 base = (((void *)0));
3500 if(_class->Destructor)
3501 _class->Destructor(instance);
3503 for(_class = ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class; _class; _class = base)
3505 if(_class->templateClass)
3506 _class = _class->templateClass;
3507 base = _class->base;
3508 (_class->templateClass ? _class->templateClass : _class)->count--;
3509 if(_class->type == 0 && !_class->count && !_class->module)
3511 __ecereNameSpace__ecere__com__eClass_Unregister(_class);
3516 (__ecereNameSpace__ecere__com__eSystem_Delete(((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_vTbl), ((struct __ecereNameSpace__ecere__com__Instance * )(char * )instance)->_vTbl = 0);
3518 __ecereNameSpace__ecere__com___free(instance);
3522 struct __ecereNameSpace__ecere__com__Property * __ecereNameSpace__ecere__com__eClass_FindProperty(struct __ecereNameSpace__ecere__com__Class * _class, char * name, struct __ecereNameSpace__ecere__com__Instance * module)
3526 for(; _class; _class = _class->base)
3528 struct __ecereNameSpace__ecere__com__BTNamedLink * link;
3530 if(_class->templateClass)
3531 _class = _class->templateClass;
3532 link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&_class->prop, name);
3535 struct __ecereNameSpace__ecere__com__Property * _property = (struct __ecereNameSpace__ecere__com__Property *)link->data;
3537 if(_property->memberAccess == 1 || _class->module == module || !_property->dataTypeString)
3539 if(!_property->dataTypeString)
3541 if(_class->module != module)
3543 if(_property->memberAccess == 1)
3544 module = _class->module;
3547 return (((void *)0));
3557 if(_class->inheritanceAccess == 2 && _class->module != module)
3561 return (((void *)0));
3564 static struct __ecereNameSpace__ecere__com__DataMember * __ecereNameSpace__ecere__com__FindDataMember(struct __ecereNameSpace__ecere__sys__OldList * list, struct __ecereNameSpace__ecere__sys__BinaryTree * alist, char * name, unsigned int * offset, int * id, unsigned int searchPrivate, struct __ecereNameSpace__ecere__com__DataMember ** subMemberStack, int * subMemberStackPos)
3566 struct __ecereNameSpace__ecere__com__BTNamedLink * link;
3567 struct __ecereNameSpace__ecere__com__DataMember * dataMember;
3569 link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(alist, name);
3572 dataMember = link->data;
3573 if(dataMember->type == 0 && (dataMember->memberAccess == 1 || searchPrivate || !dataMember->dataTypeString))
3576 *offset += dataMember->offset;
3578 *id = dataMember->id;
3581 return (((void *)0));
3583 for(dataMember = list->first; dataMember; dataMember = dataMember->next)
3585 if(!dataMember->isProperty && (dataMember->memberAccess == 1 || searchPrivate) && !dataMember->name && (dataMember->type == 1 || dataMember->type == 2))
3587 struct __ecereNameSpace__ecere__com__DataMember * childMember;
3589 if(subMemberStackPos)
3590 subMemberStack[(*subMemberStackPos)++] = dataMember;
3591 childMember = __ecereNameSpace__ecere__com__FindDataMember(&dataMember->members, &dataMember->membersAlpha, name, offset, id, searchPrivate, subMemberStack, subMemberStackPos);
3595 *offset += dataMember->offset;
3597 *id += dataMember->id;
3600 if(subMemberStackPos)
3601 (*subMemberStackPos)--;
3604 return (((void *)0));
3607 struct __ecereNameSpace__ecere__com__DataMember * __ecereNameSpace__ecere__com__eClass_FindDataMember(struct __ecereNameSpace__ecere__com__Class * _class, char * name, struct __ecereNameSpace__ecere__com__Instance * module, struct __ecereNameSpace__ecere__com__DataMember ** subMemberStack, int * subMemberStackPos)
3609 struct __ecereNameSpace__ecere__com__DataMember * dataMember = (((void *)0));
3611 if(subMemberStackPos)
3612 *subMemberStackPos = 0;
3615 for(; _class; _class = _class->base)
3617 if(_class->templateClass)
3618 _class = _class->templateClass;
3619 dataMember = __ecereNameSpace__ecere__com__FindDataMember(&_class->membersAndProperties, &_class->members, name, (((void *)0)), (((void *)0)), _class->module == module, subMemberStack, subMemberStackPos);
3622 if(!dataMember->dataTypeString)
3624 if(_class->module != module)
3626 if(dataMember->memberAccess == 1)
3627 module = _class->module;
3630 return (((void *)0));
3633 dataMember = (((void *)0));
3637 dataMember->_class = _class->templateClass ? _class->templateClass : _class;
3641 if(_class->inheritanceAccess == 2 && _class->module != module)
3648 struct __ecereNameSpace__ecere__com__DataMember * __ecereNameSpace__ecere__com__eClass_FindDataMemberAndOffset(struct __ecereNameSpace__ecere__com__Class * _class, char * name, unsigned int * offset, struct __ecereNameSpace__ecere__com__Instance * module, struct __ecereNameSpace__ecere__com__DataMember ** subMemberStack, int * subMemberStackPos)
3650 struct __ecereNameSpace__ecere__com__DataMember * dataMember = (((void *)0));
3652 if(subMemberStackPos)
3653 *subMemberStackPos = 0;
3658 for(; _class; _class = _class->base)
3660 if(_class->templateClass)
3661 _class = _class->templateClass;
3662 dataMember = __ecereNameSpace__ecere__com__FindDataMember(&_class->membersAndProperties, &_class->members, name, offset, (((void *)0)), _class->module == module, subMemberStack, subMemberStackPos);
3665 if(!dataMember->dataTypeString)
3667 if(_class->module != module)
3669 if(dataMember->memberAccess == 1)
3670 module = _class->module;
3673 return (((void *)0));
3676 dataMember = (((void *)0));
3680 dataMember->_class = _class;
3684 if(_class->inheritanceAccess == 2 && _class->module != module)
3691 struct __ecereNameSpace__ecere__com__DataMember * __ecereNameSpace__ecere__com__eClass_FindDataMemberAndId(struct __ecereNameSpace__ecere__com__Class * _class, char * name, int * id, struct __ecereNameSpace__ecere__com__Instance * module, struct __ecereNameSpace__ecere__com__DataMember ** subMemberStack, int * subMemberStackPos)
3693 struct __ecereNameSpace__ecere__com__DataMember * dataMember = (((void *)0));
3695 if(subMemberStackPos)
3696 *subMemberStackPos = 0;
3699 for(; _class; _class = _class->base)
3701 if(_class->templateClass)
3702 _class = _class->templateClass;
3703 dataMember = __ecereNameSpace__ecere__com__FindDataMember(&_class->membersAndProperties, &_class->members, name, (((void *)0)), id, _class->module == module, subMemberStack, subMemberStackPos);
3706 if(!dataMember->dataTypeString)
3708 if(_class->module != module)
3710 if(dataMember->memberAccess == 1)
3711 module = _class->module;
3714 return (((void *)0));
3717 dataMember = (((void *)0));
3721 dataMember->_class = _class;
3725 if(_class->inheritanceAccess == 2 && _class->module != module)
3732 void __ecereNameSpace__ecere__com__eClass_FindNextMember(struct __ecereNameSpace__ecere__com__Class * _class, struct __ecereNameSpace__ecere__com__Class ** curClass, struct __ecereNameSpace__ecere__com__DataMember ** curMember, struct __ecereNameSpace__ecere__com__DataMember ** subMemberStack, int * subMemberStackPos)
3736 *curMember = (*curMember)->next;
3737 if(subMemberStackPos && *subMemberStackPos > 0 && subMemberStack[*subMemberStackPos - 1]->type == 1)
3739 *curMember = subMemberStack[--(*subMemberStackPos)];
3740 *curMember = (*curMember)->next;
3742 if(subMemberStackPos && *subMemberStackPos > 0)
3744 while(*curMember && ((*curMember)->memberAccess == 2))
3745 *curMember = (*curMember)->next;
3748 while(*curMember && (*curMember)->name)
3750 struct __ecereNameSpace__ecere__com__DataMember * dataMember = __ecereNameSpace__ecere__com__eClass_FindDataMember(_class, (*curMember)->name, (((void *)0)), (((void *)0)), (((void *)0)));
3753 dataMember = (struct __ecereNameSpace__ecere__com__DataMember *)__ecereNameSpace__ecere__com__eClass_FindProperty(_class, (*curMember)->name, (((void *)0)));
3754 if(dataMember && dataMember->memberAccess != 2)
3756 *curMember = dataMember;
3760 *curMember = (*curMember)->next;
3762 if(subMemberStackPos)
3764 while((*curMember) && !(*curMember)->isProperty && !(*curMember)->name && ((*curMember)->type == 2 || (*curMember)->type == 1))
3766 subMemberStack[(*subMemberStackPos)++] = *curMember;
3767 *curMember = (*curMember)->members.first;
3768 while(*curMember && ((*curMember)->memberAccess == 2))
3769 *curMember = (*curMember)->next;
3777 if(subMemberStackPos && *subMemberStackPos)
3779 *curMember = subMemberStack[--(*subMemberStackPos)];
3780 *curMember = (*curMember)->next;
3784 struct __ecereNameSpace__ecere__com__Class * lastCurClass = *curClass;
3786 if(*curClass == _class)
3788 for(*curClass = _class; (*curClass)->base != lastCurClass && (*curClass)->base->type != 1000 && (*curClass)->inheritanceAccess != 2; *curClass = (*curClass)->base)
3790 *curMember = (*curClass)->membersAndProperties.first;
3792 if(subMemberStackPos && *subMemberStackPos > 0)
3794 while(*curMember && ((*curMember)->memberAccess == 2))
3795 *curMember = (*curMember)->next;
3798 while(*curMember && (*curMember)->name)
3800 struct __ecereNameSpace__ecere__com__DataMember * dataMember = __ecereNameSpace__ecere__com__eClass_FindDataMember(_class, (*curMember)->name, (((void *)0)), (((void *)0)), (((void *)0)));
3803 dataMember = (struct __ecereNameSpace__ecere__com__DataMember *)__ecereNameSpace__ecere__com__eClass_FindProperty(_class, (*curMember)->name, (((void *)0)));
3804 if(dataMember && dataMember->memberAccess != 2)
3806 *curMember = dataMember;
3810 *curMember = (*curMember)->next;
3812 if(subMemberStackPos)
3814 while((*curMember) && !(*curMember)->isProperty && !(*curMember)->name && ((*curMember)->type == 2 || (*curMember)->type == 1))
3816 subMemberStack[(*subMemberStackPos)++] = *curMember;
3817 *curMember = (*curMember)->members.first;
3818 while(*curMember && (*curMember)->memberAccess == 2)
3819 *curMember = (*curMember)->next;
3826 void __ecereNameSpace__ecere__com__eInstance_SetMethod(struct __ecereNameSpace__ecere__com__Instance * instance, char * name, void * function)
3828 if(instance && name)
3830 struct __ecereNameSpace__ecere__com__Class * _class;
3832 for(_class = ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class; _class; _class = _class->base)
3834 struct __ecereNameSpace__ecere__com__Method * method = (struct __ecereNameSpace__ecere__com__Method *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&_class->methods, name);
3836 if(method && method->type == 1)
3838 if(((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_vTbl == ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class->_vTbl)
3840 ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_vTbl = __ecereNameSpace__ecere__com___malloc(sizeof(void *) * ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class->vTblSize);
3841 memcpy(((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_vTbl, ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class->_vTbl, sizeof(int (*)()) * ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class->vTblSize);
3843 ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_vTbl[method->vid] = function ? function : __ecereNameSpace__ecere__com__DefaultFunction;
3849 unsigned int __ecereNameSpace__ecere__com__eInstance_IsDerived(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Class * from)
3853 struct __ecereNameSpace__ecere__com__Class * _class = ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class;
3855 for(; _class; _class = _class->base)
3864 void __ecereNameSpace__ecere__com__eInstance_IncRef(struct __ecereNameSpace__ecere__com__Instance * instance)
3867 ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_refCount++;
3870 void __ecereNameSpace__ecere__com__eInstance_DecRef(struct __ecereNameSpace__ecere__com__Instance * instance)
3874 ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_refCount--;
3875 if(((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_refCount <= 0)
3877 __ecereNameSpace__ecere__com__eInstance_Delete(instance);
3882 static void __ecereNameSpace__ecere__com__FixOffsets(struct __ecereNameSpace__ecere__com__Class * _class)
3884 struct __ecereNameSpace__ecere__sys__OldLink * deriv;
3886 _class->structSize += _class->base->structSize - _class->offset;
3887 _class->offset = _class->base->structSize;
3888 for(deriv = _class->derivatives.first; deriv; deriv = deriv->next)
3889 __ecereNameSpace__ecere__com__FixOffsets(deriv->data);
3892 void __ecereNameSpace__ecere__com__eClass_Resize(struct __ecereNameSpace__ecere__com__Class * _class, int newSize)
3894 struct __ecereNameSpace__ecere__sys__OldLink * deriv;
3896 _class->structSize = newSize;
3897 for(deriv = _class->derivatives.first; deriv; deriv = deriv->next)
3898 __ecereNameSpace__ecere__com__FixOffsets(deriv->data);
3901 struct __ecereNameSpace__ecere__com__DataMember * __ecereNameSpace__ecere__com__eClass_AddDataMember(struct __ecereNameSpace__ecere__com__Class * _class, char * name, char * type, unsigned int size, unsigned int alignment, int declMode)
3903 void * __ecereTemp1;
3907 if(!__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&_class->members, name))
3909 struct __ecereNameSpace__ecere__com__DataMember * dataMember;
3913 int __simpleStruct0;
3915 _class->structAlignment = (__simpleStruct0 = _class->structAlignment, (__simpleStruct0 > alignment) ? __simpleStruct0 : alignment);
3916 if(_class->memberOffset % alignment)
3917 _class->memberOffset += alignment - (_class->memberOffset % alignment);
3919 dataMember = (__ecereTemp1 = __ecereNameSpace__ecere__com__eSystem_New0(96), ((struct __ecereNameSpace__ecere__com__DataMember *)__ecereTemp1)->name = __ecereNameSpace__ecere__sys__CopyString(name), ((struct __ecereNameSpace__ecere__com__DataMember *)__ecereTemp1)->dataTypeString = __ecereNameSpace__ecere__sys__CopyString(type), ((struct __ecereNameSpace__ecere__com__DataMember *)__ecereTemp1)->id = _class->memberID++, ((struct __ecereNameSpace__ecere__com__DataMember *)__ecereTemp1)->_class = _class, ((struct __ecereNameSpace__ecere__com__DataMember *)__ecereTemp1)->offset = _class->memberOffset, ((struct __ecereNameSpace__ecere__com__DataMember *)__ecereTemp1)->memberOffset = size, ((struct __ecereNameSpace__ecere__com__DataMember *)__ecereTemp1)->memberAccess = declMode, ((struct __ecereNameSpace__ecere__com__DataMember *)__ecereTemp1)->membersAlpha.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString, ((struct __ecereNameSpace__ecere__com__DataMember *)__ecereTemp1));
3920 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&_class->membersAndProperties, dataMember);
3921 _class->memberOffset += size;
3922 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&_class->members, (struct __ecereNameSpace__ecere__sys__BTNode *)(__ecereTemp1 = __ecereNameSpace__ecere__com__eSystem_New0(24), ((struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereTemp1)->name = dataMember->name, ((struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereTemp1)->data = dataMember, ((struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereTemp1)));
3926 return (((void *)0));
3929 struct __ecereNameSpace__ecere__com__DataMember * __ecereNameSpace__ecere__com__eMember_AddDataMember(struct __ecereNameSpace__ecere__com__DataMember * member, char * name, char * type, unsigned int size, unsigned int alignment, int declMode)
3931 void * __ecereTemp1;
3933 if(name && !__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&member->membersAlpha, name))
3935 struct __ecereNameSpace__ecere__com__DataMember * dataMember;
3939 int __simpleStruct0;
3941 member->structAlignment = (__simpleStruct0 = member->structAlignment, (__simpleStruct0 > alignment) ? __simpleStruct0 : alignment);
3942 if(member->memberOffset % alignment)
3943 member->memberOffset += alignment - (member->memberOffset % alignment);
3945 dataMember = (__ecereTemp1 = __ecereNameSpace__ecere__com__eSystem_New0(96), ((struct __ecereNameSpace__ecere__com__DataMember *)__ecereTemp1)->name = __ecereNameSpace__ecere__sys__CopyString(name), ((struct __ecereNameSpace__ecere__com__DataMember *)__ecereTemp1)->_class = member->_class, ((struct __ecereNameSpace__ecere__com__DataMember *)__ecereTemp1)->dataTypeString = __ecereNameSpace__ecere__sys__CopyString(type), ((struct __ecereNameSpace__ecere__com__DataMember *)__ecereTemp1)->id = member->memberID++, ((struct __ecereNameSpace__ecere__com__DataMember *)__ecereTemp1)->offset = (member->type == 1) ? 0 : member->memberOffset, ((struct __ecereNameSpace__ecere__com__DataMember *)__ecereTemp1)->memberAccess = declMode, ((struct __ecereNameSpace__ecere__com__DataMember *)__ecereTemp1)->membersAlpha.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString, ((struct __ecereNameSpace__ecere__com__DataMember *)__ecereTemp1));
3946 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&member->members, dataMember);
3947 if(member->type == 1)
3949 if(size > member->memberOffset)
3950 member->memberOffset = size;
3953 member->memberOffset += size;
3954 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&member->membersAlpha, (struct __ecereNameSpace__ecere__sys__BTNode *)(__ecereTemp1 = __ecereNameSpace__ecere__com__eSystem_New0(24), ((struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereTemp1)->name = dataMember->name, ((struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereTemp1)->data = dataMember, ((struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereTemp1)));
3957 return (((void *)0));
3960 struct __ecereNameSpace__ecere__com__DataMember * __ecereNameSpace__ecere__com__eMember_New(int type, int declMode)
3962 void * __ecereTemp1;
3964 return (__ecereTemp1 = __ecereNameSpace__ecere__com__eSystem_New0(96), ((struct __ecereNameSpace__ecere__com__DataMember *)__ecereTemp1)->type = type, ((struct __ecereNameSpace__ecere__com__DataMember *)__ecereTemp1)->memberAccess = declMode, ((struct __ecereNameSpace__ecere__com__DataMember *)__ecereTemp1)->membersAlpha.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString, ((struct __ecereNameSpace__ecere__com__DataMember *)__ecereTemp1));
3967 static void __ecereNameSpace__ecere__com__SetMemberClass(struct __ecereNameSpace__ecere__com__DataMember * member, struct __ecereNameSpace__ecere__com__Class * _class)
3969 struct __ecereNameSpace__ecere__com__DataMember * dataMember;
3971 member->_class = _class;
3972 for(dataMember = member->members.first; dataMember; dataMember = dataMember->next)
3973 __ecereNameSpace__ecere__com__SetMemberClass(dataMember, _class);
3976 unsigned int __ecereNameSpace__ecere__com__eMember_AddMember(struct __ecereNameSpace__ecere__com__DataMember * addTo, struct __ecereNameSpace__ecere__com__DataMember * dataMember)
3978 void * __ecereTemp1;
3979 int __simpleStruct0, __simpleStruct1;
3981 if(dataMember->name && __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&addTo->membersAlpha, dataMember->name))
3983 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&addTo->members, dataMember);
3984 if(dataMember->name)
3985 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&addTo->membersAlpha, (struct __ecereNameSpace__ecere__sys__BTNode *)(__ecereTemp1 = __ecereNameSpace__ecere__com__eSystem_New0(24), ((struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereTemp1)->name = dataMember->name, ((struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereTemp1)->data = dataMember, ((struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereTemp1)));
3986 dataMember->_class = addTo->_class;
3987 dataMember->id = addTo->memberID;
3988 if(dataMember->type == 1)
3989 addTo->memberID += 1;
3991 addTo->memberID += dataMember->memberID;
3992 addTo->structAlignment = (__simpleStruct0 = addTo->structAlignment, __simpleStruct1 = dataMember->structAlignment, (__simpleStruct0 > __simpleStruct1) ? __simpleStruct0 : __simpleStruct1);
3993 dataMember->offset = (addTo->type == 1) ? 0 : addTo->memberOffset;
3994 if(addTo->type == 1)
3996 if(dataMember->memberOffset > addTo->memberOffset)
3997 addTo->memberOffset = dataMember->memberOffset;
4000 addTo->memberOffset += dataMember->memberOffset;
4004 unsigned int __ecereNameSpace__ecere__com__eClass_AddMember(struct __ecereNameSpace__ecere__com__Class * _class, struct __ecereNameSpace__ecere__com__DataMember * dataMember)
4006 void * __ecereTemp1;
4007 int __simpleStruct0, __simpleStruct1;
4009 if(!_class || _class->comRedefinition || (dataMember->name && __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&_class->members, dataMember->name)))
4011 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&_class->membersAndProperties, dataMember);
4012 if(dataMember->name)
4013 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&_class->members, (struct __ecereNameSpace__ecere__sys__BTNode *)(__ecereTemp1 = __ecereNameSpace__ecere__com__eSystem_New0(24), ((struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereTemp1)->name = dataMember->name, ((struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereTemp1)->data = dataMember, ((struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereTemp1)));
4014 __ecereNameSpace__ecere__com__SetMemberClass(dataMember, _class);
4015 dataMember->id = _class->memberID;
4016 _class->structAlignment = (__simpleStruct0 = _class->structAlignment, __simpleStruct1 = dataMember->structAlignment, (__simpleStruct0 > __simpleStruct1) ? __simpleStruct0 : __simpleStruct1);
4017 if(dataMember->type == 1)
4018 _class->memberID += 1;
4020 _class->memberID += dataMember->memberID;
4021 dataMember->offset = _class->memberOffset;
4022 _class->memberOffset += dataMember->memberOffset;
4026 struct __ecereNameSpace__ecere__com__BitMember * __ecereNameSpace__ecere__com__eClass_AddBitMember(struct __ecereNameSpace__ecere__com__Class * _class, char * name, char * type, int bitSize, int bitPos, int declMode)
4028 void * __ecereTemp1;
4030 if(_class && name && !__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&_class->members, name))
4034 struct __ecereNameSpace__ecere__com__BitMember * bitMember = (bitMember = __ecereNameSpace__ecere__com__eSystem_New0(64), bitMember->name = __ecereNameSpace__ecere__sys__CopyString(name), bitMember->_class = _class, bitMember->dataTypeString = __ecereNameSpace__ecere__sys__CopyString(type), bitMember->id = _class->memberID++, bitMember->memberAccess = declMode, bitMember);
4036 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&_class->membersAndProperties, bitMember);
4039 bitMember->pos = (bitPos == -1) ? _class->memberOffset : bitPos;
4040 bitMember->size = bitSize;
4041 _class->memberOffset = bitMember->pos + bitMember->size;
4042 for(c = 0; c < bitSize; c++)
4048 bitMember->mask = mask << bitMember->pos;
4050 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&_class->members, (struct __ecereNameSpace__ecere__sys__BTNode *)(__ecereTemp1 = __ecereNameSpace__ecere__com__eSystem_New0(24), ((struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereTemp1)->name = bitMember->name, ((struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereTemp1)->data = bitMember, ((struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereTemp1)));
4053 return (((void *)0));
4056 static struct __ecereNameSpace__ecere__com__Instance * __ecereNameSpace__ecere__com__Module_Load(struct __ecereNameSpace__ecere__com__Instance * fromModule, char * name, int importAccess, unsigned int ensureCOM)
4058 void * __ecereTemp1;
4059 unsigned int (stdcall * Load)(struct __ecereNameSpace__ecere__com__Instance * module) = (((void *)0));
4060 void (stdcall * Unload)(struct __ecereNameSpace__ecere__com__Instance * module) = (((void *)0));
4061 struct __ecereNameSpace__ecere__com__Instance * module;
4063 for(module = ((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)fromModule + 12)))->application + 296)))->allModules.first; module; module = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->next)
4065 if(!strcmp(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->name, name))
4068 if(ensureCOM && (!strcmp(name, "ecereCOM") || !strcmp(name, "ecere")))
4070 for(module = ((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)fromModule + 12)))->application + 296)))->allModules.first; module; module = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->next)
4072 if(!strcmp(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->name, "ecere") || !strcmp(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->name, "ecereCOM"))
4078 void * library = (((void *)0));
4080 if(ensureCOM && !strcmp(name, "ecereCOM"))
4082 Load = __ecereDll_Load_ecere;
4083 Unload = __ecereDll_Unload_ecere;
4087 library = Instance_Module_Load(name, &Load, &Unload);
4091 module = (struct __ecereNameSpace__ecere__com__Instance *)__ecereNameSpace__ecere__com__eInstance_New(__ecereNameSpace__ecere__com__eSystem_FindClass(fromModule, "Module"));
4092 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)fromModule + 12)))->application;
4093 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->library = library;
4094 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->name = __ecereNameSpace__ecere__sys__CopyString(name);
4095 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->Unload = Unload;
4098 __ecereNameSpace__ecere__com__eInstance_Delete((struct __ecereNameSpace__ecere__com__Instance *)module);
4099 module = (((void *)0));
4102 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)fromModule + 12)))->application + 296)))->allModules, module);
4104 if(ensureCOM && !strcmp(name, "ecere") && module)
4106 name = !strcmp(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->name, "ecereCOM") ? "ecere" : "ecereCOM";
4107 if((!Load && !strcmp(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->name, "ecereCOM")) || (Load && (!__thisModule || !((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->name || !strcmp(((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->name, "ecereCOM")) && Load != __ecereDll_Load_ecere))
4109 struct __ecereNameSpace__ecere__com__Instance * module;
4111 for(module = ((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)fromModule + 12)))->application + 296)))->allModules.first; module; module = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->next)
4113 if(!strcmp(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->name, name))
4118 Load = __ecereDll_Load_ecere;
4119 Unload = __ecereDll_Unload_ecere;
4120 module = (struct __ecereNameSpace__ecere__com__Instance *)__ecereNameSpace__ecere__com__eInstance_New(__ecereNameSpace__ecere__com__eSystem_FindClass(fromModule, "Module"));
4121 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)fromModule + 12)))->application;
4122 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->library = (((void *)0));
4123 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->name = __ecereNameSpace__ecere__sys__CopyString(name);
4124 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->Unload = Unload;
4127 __ecereNameSpace__ecere__com__eInstance_Delete((struct __ecereNameSpace__ecere__com__Instance *)module);
4128 module = (((void *)0));
4130 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)fromModule + 12)))->application + 296)))->allModules, module);
4136 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)fromModule + 12)))->modules, (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass___ecereNameSpace__ecere__com__SubModule), ((struct __ecereNameSpace__ecere__com__SubModule *)__ecereTemp1)->module = module, ((struct __ecereNameSpace__ecere__com__SubModule *)__ecereTemp1)->importMode = importAccess, ((struct __ecereNameSpace__ecere__com__SubModule *)__ecereTemp1)));
4138 module->_refCount++;
4146 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)fromModule + 12)))->modules, (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass___ecereNameSpace__ecere__com__SubModule), ((struct __ecereNameSpace__ecere__com__SubModule *)__ecereTemp1)->module = module, ((struct __ecereNameSpace__ecere__com__SubModule *)__ecereTemp1)->importMode = importAccess, ((struct __ecereNameSpace__ecere__com__SubModule *)__ecereTemp1)));
4148 module->_refCount++;
4153 struct __ecereNameSpace__ecere__com__Instance * __ecereNameSpace__ecere__com__eModule_Load(struct __ecereNameSpace__ecere__com__Instance * fromModule, char * name, int importAccess)
4155 return __ecereNameSpace__ecere__com__Module_Load(fromModule, name, importAccess, 0x1);
4158 struct __ecereNameSpace__ecere__com__Instance * __ecereNameSpace__ecere__com__eModule_LoadStrict(struct __ecereNameSpace__ecere__com__Instance * fromModule, char * name, int importAccess)
4160 return __ecereNameSpace__ecere__com__Module_Load(fromModule, name, importAccess, 0x0);
4163 struct __ecereNameSpace__ecere__com__Instance * __ecereNameSpace__ecere__com__eModule_LoadStatic(struct __ecereNameSpace__ecere__com__Instance * fromModule, char * name, int importAccess, unsigned int (* Load)(struct __ecereNameSpace__ecere__com__Instance * module), unsigned int (* Unload)(struct __ecereNameSpace__ecere__com__Instance * module))
4165 void * __ecereTemp1;
4166 struct __ecereNameSpace__ecere__com__Instance * module;
4168 for(module = ((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)fromModule + 12)))->application + 296)))->allModules.first; module; module = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->next)
4170 if(!strcmp(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->name, name))
4177 module = (struct __ecereNameSpace__ecere__com__Instance *)__ecereNameSpace__ecere__com__eInstance_New(__ecereNameSpace__ecere__com__eSystem_FindClass(fromModule, "Module"));
4178 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)fromModule + 12)))->application;
4179 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->name = __ecereNameSpace__ecere__sys__CopyString(name);
4180 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->Unload = (void *)Unload;
4183 __ecereNameSpace__ecere__com__eInstance_Delete((struct __ecereNameSpace__ecere__com__Instance *)module);
4184 module = (((void *)0));
4187 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)fromModule + 12)))->application + 296)))->allModules, module);
4193 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)fromModule + 12)))->modules, (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass___ecereNameSpace__ecere__com__SubModule), ((struct __ecereNameSpace__ecere__com__SubModule *)__ecereTemp1)->module = module, ((struct __ecereNameSpace__ecere__com__SubModule *)__ecereTemp1)->importMode = importAccess, ((struct __ecereNameSpace__ecere__com__SubModule *)__ecereTemp1)));
4195 module->_refCount++;
4200 void __ecereNameSpace__ecere__com__eModule_Unload(struct __ecereNameSpace__ecere__com__Instance * fromModule, struct __ecereNameSpace__ecere__com__Instance * module)
4202 struct __ecereNameSpace__ecere__sys__OldLink * m;
4204 for(m = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)fromModule + 12)))->modules.first; m; m = m->next)
4206 if(m->data == module)
4211 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)fromModule + 12)))->modules, m);
4212 (__ecereNameSpace__ecere__com__eInstance_DecRef(module), module = 0);
4216 void __ecereNameSpace__ecere__com__eEnum_AddFixedValue(struct __ecereNameSpace__ecere__com__Class * _class, char * string, int value)
4218 void * __ecereTemp1;
4220 if(_class && _class->type == 4)
4222 struct __ecereNameSpace__ecere__com__EnumClassData * data = (struct __ecereNameSpace__ecere__com__EnumClassData *)_class->data;
4223 struct __ecereNameSpace__ecere__sys__NamedLink * item;
4225 for(item = data->values.first; item; item = item->next)
4226 if(!strcmp(item->name, string))
4230 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&data->values, (__ecereTemp1 = __ecereNameSpace__ecere__com__eSystem_New0(16), ((struct __ecereNameSpace__ecere__sys__NamedLink *)__ecereTemp1)->data = (void *)value, ((struct __ecereNameSpace__ecere__sys__NamedLink *)__ecereTemp1)->name = __ecereNameSpace__ecere__sys__CopyString(string), ((struct __ecereNameSpace__ecere__sys__NamedLink *)__ecereTemp1)));
4231 if(value > data->largest)
4232 data->largest = value;
4237 int __ecereNameSpace__ecere__com__eEnum_AddValue(struct __ecereNameSpace__ecere__com__Class * _class, char * string)
4239 void * __ecereTemp1;
4241 if(_class && _class->type == 4)
4243 struct __ecereNameSpace__ecere__com__EnumClassData * data = (struct __ecereNameSpace__ecere__com__EnumClassData *)_class->data;
4244 int value = data->largest + 1;
4245 struct __ecereNameSpace__ecere__sys__NamedLink * item;
4247 for(item = data->values.first; item; item = item->next)
4248 if(!strcmp(item->name, string))
4252 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&data->values, (__ecereTemp1 = __ecereNameSpace__ecere__com__eSystem_New0(16), ((struct __ecereNameSpace__ecere__sys__NamedLink *)__ecereTemp1)->data = (void *)value, ((struct __ecereNameSpace__ecere__sys__NamedLink *)__ecereTemp1)->name = __ecereNameSpace__ecere__sys__CopyString(string), ((struct __ecereNameSpace__ecere__sys__NamedLink *)__ecereTemp1)));
4253 if(value > data->largest)
4254 data->largest = value;
4261 static void __ecereNameSpace__ecere__com__NameSpace_Free(struct __ecereNameSpace__ecere__com__NameSpace * parentNameSpace)
4263 struct __ecereNameSpace__ecere__com__NameSpace * nameSpace;
4265 (__ecereNameSpace__ecere__com__eSystem_Delete(parentNameSpace->name), parentNameSpace->name = 0);
4266 while((nameSpace = (struct __ecereNameSpace__ecere__com__NameSpace *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&parentNameSpace->nameSpaces)))
4268 __ecereNameSpace__ecere__com__NameSpace_Free(nameSpace);
4269 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&parentNameSpace->nameSpaces, (struct __ecereNameSpace__ecere__sys__BTNode *)nameSpace);
4273 static void __ecereNameSpace__ecere__com__Application_Destructor(struct __ecereNameSpace__ecere__com__Instance * app)
4275 if(((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 296)))->parsedCommand)
4277 (__ecereNameSpace__ecere__com__eSystem_Delete(((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 296)))->argv), ((struct __ecereNameSpace__ecere__com__Application * )(((char * )app + 296)))->argv = 0);
4278 (__ecereNameSpace__ecere__com__eSystem_Delete(((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 296)))->parsedCommand), ((struct __ecereNameSpace__ecere__com__Application * )(((char * )app + 296)))->parsedCommand = 0);
4282 static unsigned int __ecereNameSpace__ecere__com__Module_Constructor(struct __ecereNameSpace__ecere__com__Instance * module)
4284 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->privateNameSpace.classes.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
4285 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->privateNameSpace.defines.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
4286 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->privateNameSpace.functions.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
4287 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->privateNameSpace.nameSpaces.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
4288 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->publicNameSpace.classes.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
4289 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->publicNameSpace.defines.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
4290 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->publicNameSpace.functions.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
4291 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->publicNameSpace.nameSpaces.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
4295 static void __ecereNameSpace__ecere__com__Module_Destructor(struct __ecereNameSpace__ecere__com__Instance * module)
4297 struct __ecereNameSpace__ecere__com__Class * _class;
4298 struct __ecereNameSpace__ecere__com__DefinedExpression * def;
4299 struct __ecereNameSpace__ecere__com__GlobalFunction * function;
4300 struct __ecereNameSpace__ecere__com__Instance * m;
4301 struct __ecereNameSpace__ecere__com__SubModule * handle;
4303 for(m = ((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application + 296)))->allModules.first; m; m = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)m + 12)))->next)
4305 struct __ecereNameSpace__ecere__com__SubModule * next;
4307 for(handle = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)m + 12)))->modules.first; handle; handle = next)
4309 next = handle->next;
4310 if(handle->module == module)
4311 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)m + 12)))->modules, handle);
4314 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->Unload)
4316 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->importType == 1)
4318 unsigned int (* Unload)(struct __ecereNameSpace__ecere__com__Instance * module) = (void *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->Unload;
4324 unsigned int (stdcall * Unload)(struct __ecereNameSpace__ecere__com__Instance * module) = (void *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->Unload;
4330 struct __ecereNameSpace__ecere__com__Instance * ourWorld = __ecereClass___ecereNameSpace__ecere__com__Class->module;
4331 void * ourHandle = (((void *)0));
4333 while((handle = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->modules.last))
4335 struct __ecereNameSpace__ecere__com__Instance * depModule = handle->module;
4337 if(depModule == ourWorld)
4339 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->modules, handle);
4344 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->modules, handle);
4345 (__ecereNameSpace__ecere__com__eInstance_DecRef(depModule), depModule = 0);
4350 (__ecereNameSpace__ecere__com__eSystem_Delete(ourHandle), ourHandle = 0);
4351 (__ecereNameSpace__ecere__com__eInstance_DecRef(ourWorld), ourWorld = 0);
4354 for(; (_class = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->classes.first); )
4356 if(_class->nameSpace)
4358 struct __ecereNameSpace__ecere__com__BTNamedLink * classLink = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&(*_class->nameSpace).classes, _class->name);
4359 struct __ecereNameSpace__ecere__sys__OldLink * t;
4361 for(t = _class->templatized.first; t; t = t->next)
4363 struct __ecereNameSpace__ecere__com__Class * template = t->data;
4364 struct __ecereNameSpace__ecere__com__BTNamedLink * link;
4366 link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&(*template->nameSpace).classes, template->name);
4367 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&(*template->nameSpace).classes, (struct __ecereNameSpace__ecere__sys__BTNode *)link);
4368 template->nameSpace = (((void *)0));
4370 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&(*_class->nameSpace).classes, (struct __ecereNameSpace__ecere__sys__BTNode *)classLink);
4371 _class->nameSpace = (((void *)0));
4373 _class->module = (((void *)0));
4374 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->classes, _class);
4375 if(!_class->count || _class->type != 0)
4376 __ecereNameSpace__ecere__com__eClass_Unregister(_class);
4381 for(; (def = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->defines.first); )
4385 struct __ecereNameSpace__ecere__com__BTNamedLink * defLink;
4387 for(defLink = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&(*def->nameSpace).defines); defLink; defLink = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereProp___ecereNameSpace__ecere__sys__BTNode_Get_next(((struct __ecereNameSpace__ecere__sys__BTNode *)defLink)))
4388 if(defLink->data == def)
4390 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&(*def->nameSpace).defines, (struct __ecereNameSpace__ecere__sys__BTNode *)defLink);
4394 (__ecereNameSpace__ecere__com__eSystem_Delete(def->name), def->name = 0);
4395 (__ecereNameSpace__ecere__com__eSystem_Delete(def->value), def->value = 0);
4396 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->defines, def);
4398 for(; (function = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->functions.first); )
4400 if(function->nameSpace)
4402 struct __ecereNameSpace__ecere__com__BTNamedLink * functionLink;
4404 for(functionLink = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&(*function->nameSpace).functions); functionLink; functionLink = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereProp___ecereNameSpace__ecere__sys__BTNode_Get_next(((struct __ecereNameSpace__ecere__sys__BTNode *)functionLink)))
4405 if(functionLink->data == function)
4407 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&(*function->nameSpace).functions, (struct __ecereNameSpace__ecere__sys__BTNode *)functionLink);
4411 (__ecereNameSpace__ecere__com__eSystem_Delete(function->name), function->name = 0);
4412 (__ecereNameSpace__ecere__com__eSystem_Delete(function->dataTypeString), function->dataTypeString = 0);
4413 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->functions, function);
4415 (__ecereNameSpace__ecere__com__eSystem_Delete(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->name), ((struct __ecereNameSpace__ecere__com__Module * )(((char * )module + 12)))->name = 0);
4416 __ecereNameSpace__ecere__com__NameSpace_Free(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->privateNameSpace);
4417 __ecereNameSpace__ecere__com__NameSpace_Free(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->publicNameSpace);
4418 if(module != ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application)
4419 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove(&((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application + 296)))->allModules, module);
4421 __ecereNameSpace__ecere__com__NameSpace_Free(&((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application + 296)))->systemNameSpace);
4422 Instance_Module_Free(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->library);
4425 static int __ecereNameSpace__ecere__com__GetEnumSize(struct __ecereNameSpace__ecere__com__Class * _class)
4427 struct __ecereNameSpace__ecere__com__EnumClassData * data = (struct __ecereNameSpace__ecere__com__EnumClassData *)_class->data;
4429 return data->largest + 1;
4432 char * strlwr(char * string)
4436 for(c = 0; string[c]; c++)
4437 if(string[c] >= 'A' && string[c] <= 'Z')
4438 string[c] += 'a' - 'A';
4442 char * strupr(char * string)
4446 for(c = 0; string[c]; c++)
4447 if(string[c] >= 'a' && string[c] <= 'z')
4448 string[c] -= 'a' - 'A';
4452 struct __ecereNameSpace__ecere__com__DefinedExpression * __ecereNameSpace__ecere__com__eSystem_RegisterDefine(char * name, char * value, struct __ecereNameSpace__ecere__com__Instance * module, int declMode)
4454 void * __ecereTemp1;
4455 struct __ecereNameSpace__ecere__com__NameSpace * nameSpace = (((void *)0));
4458 nameSpace = (declMode == 1) ? &((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->publicNameSpace : &((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->privateNameSpace;
4460 nameSpace = &((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application + 296)))->systemNameSpace;
4463 for(c = 0; name[c]; c++)
4465 if(name[c] == '.' || (name[c] == ':' && name[c + 1] == ':'))
4467 struct __ecereNameSpace__ecere__com__NameSpace * newSpace;
4468 char * spaceName = __ecereNameSpace__ecere__com___malloc(c - start + 1);
4470 strncpy(spaceName, name + start, c - start);
4471 spaceName[c - start] = '\0';
4472 newSpace = (struct __ecereNameSpace__ecere__com__NameSpace *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&(*nameSpace).nameSpaces, spaceName);
4475 newSpace = __ecereNameSpace__ecere__com__eSystem_New0(sizeof(struct __ecereNameSpace__ecere__com__NameSpace) * (1));
4476 (*newSpace).classes.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
4477 (*newSpace).defines.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
4478 (*newSpace).functions.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
4479 (*newSpace).nameSpaces.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
4480 (*newSpace).name = spaceName;
4481 (*newSpace).parent = nameSpace;
4482 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&(*nameSpace).nameSpaces, (struct __ecereNameSpace__ecere__sys__BTNode *)newSpace);
4485 (__ecereNameSpace__ecere__com__eSystem_Delete(spaceName), spaceName = 0);
4486 nameSpace = newSpace;
4495 if(c - start && !__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&(*nameSpace).defines, name + start))
4497 struct __ecereNameSpace__ecere__com__DefinedExpression * def = (def = __ecereNameSpace__ecere__com__eSystem_New0(20), def->name = __ecereNameSpace__ecere__sys__CopyString(name), def->nameSpace = nameSpace, def->value = __ecereNameSpace__ecere__sys__CopyString(value), def);
4499 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&(*nameSpace).defines, (struct __ecereNameSpace__ecere__sys__BTNode *)(__ecereTemp1 = __ecereNameSpace__ecere__com__eSystem_New0(24), ((struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereTemp1)->name = def->name + start, ((struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereTemp1)->data = def, ((struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereTemp1)));
4500 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->defines, def);
4503 return (((void *)0));
4506 struct __ecereNameSpace__ecere__com__GlobalFunction * __ecereNameSpace__ecere__com__eSystem_RegisterFunction(char * name, char * type, void * func, struct __ecereNameSpace__ecere__com__Instance * module, int declMode)
4508 void * __ecereTemp1;
4509 struct __ecereNameSpace__ecere__com__NameSpace * nameSpace = (((void *)0));
4512 nameSpace = (declMode == 1) ? &((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->publicNameSpace : &((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->privateNameSpace;
4514 nameSpace = &((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application + 296)))->systemNameSpace;
4517 for(c = 0; name[c]; c++)
4519 if(name[c] == '.' || (name[c] == ':' && name[c + 1] == ':'))
4521 struct __ecereNameSpace__ecere__com__NameSpace * newSpace;
4522 char * spaceName = __ecereNameSpace__ecere__com___malloc(c - start + 1);
4524 strncpy(spaceName, name + start, c - start);
4525 spaceName[c - start] = '\0';
4526 newSpace = (struct __ecereNameSpace__ecere__com__NameSpace *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&(*nameSpace).nameSpaces, spaceName);
4529 newSpace = __ecereNameSpace__ecere__com__eSystem_New0(sizeof(struct __ecereNameSpace__ecere__com__NameSpace) * (1));
4530 (*newSpace).classes.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
4531 (*newSpace).defines.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
4532 (*newSpace).functions.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
4533 (*newSpace).nameSpaces.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
4534 (*newSpace).name = spaceName;
4535 (*newSpace).parent = nameSpace;
4536 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&(*nameSpace).nameSpaces, (struct __ecereNameSpace__ecere__sys__BTNode *)newSpace);
4539 (__ecereNameSpace__ecere__com__eSystem_Delete(spaceName), spaceName = 0);
4540 nameSpace = newSpace;
4549 if(c - start && !__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&(*nameSpace).functions, name + start))
4551 struct __ecereNameSpace__ecere__com__GlobalFunction * function = (function = __ecereNameSpace__ecere__com__eSystem_New0(36), function->name = __ecereNameSpace__ecere__sys__CopyString(name), function->nameSpace = nameSpace, function->dataTypeString = __ecereNameSpace__ecere__sys__CopyString(type), function->function = func, function->module = module, function);
4553 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&(*nameSpace).functions, (struct __ecereNameSpace__ecere__sys__BTNode *)(__ecereTemp1 = __ecereNameSpace__ecere__com__eSystem_New0(24), ((struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereTemp1)->name = function->name + start, ((struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereTemp1)->data = function, ((struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereTemp1)));
4554 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->functions, function);
4557 return (((void *)0));
4560 struct __ecereNameSpace__ecere__com__DefinedExpression * __ecereNameSpace__ecere__com__eSystem_FindDefine(struct __ecereNameSpace__ecere__com__Instance * module, char * name)
4564 struct __ecereNameSpace__ecere__com__BTNamedLink * link;
4566 link = __ecereNameSpace__ecere__com__SearchNameSpace(&((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application + 296)))->systemNameSpace, name, &(*((struct __ecereNameSpace__ecere__com__NameSpace *)0)).defines);
4569 link = __ecereNameSpace__ecere__com__SearchModule(module, name, &(*((struct __ecereNameSpace__ecere__com__NameSpace *)0)).defines, 0x1);
4573 return (((void *)0));
4576 struct __ecereNameSpace__ecere__com__GlobalFunction * __ecereNameSpace__ecere__com__eSystem_FindFunction(struct __ecereNameSpace__ecere__com__Instance * module, char * name)
4580 struct __ecereNameSpace__ecere__com__BTNamedLink * link;
4582 link = __ecereNameSpace__ecere__com__SearchNameSpace(&((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application + 296)))->systemNameSpace, name, &(*((struct __ecereNameSpace__ecere__com__NameSpace *)0)).functions);
4585 link = __ecereNameSpace__ecere__com__SearchModule(module, name, &(*((struct __ecereNameSpace__ecere__com__NameSpace *)0)).functions, 0x1);
4589 return (((void *)0));
4592 void * __ecereNameSpace__ecere__com__eSystem_Renew(void * memory, unsigned int size)
4594 return __ecereNameSpace__ecere__com___realloc(memory, size);
4597 void * __ecereNameSpace__ecere__com__eSystem_Renew0(void * memory, unsigned int size)
4599 return __ecereNameSpace__ecere__com___crealloc(memory, size);
4602 void * __ecereNameSpace__ecere__com__eSystem_New(unsigned int size)
4604 return __ecereNameSpace__ecere__com___malloc(size);
4607 void * __ecereNameSpace__ecere__com__eSystem_New0(unsigned int size)
4609 return __ecereNameSpace__ecere__com___calloc(1, size);
4612 void __ecereNameSpace__ecere__com__eSystem_Delete(void * memory)
4615 __ecereNameSpace__ecere__com___free(memory);
4618 void __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property)
4620 if(instance && _property && _property->selfWatchable)
4622 struct __ecereNameSpace__ecere__com__Class * _class;
4624 for(_class = ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class; _class; _class = _class->base)
4626 struct __ecereNameSpace__ecere__com__SelfWatcher * selfWatcher, * next;
4628 for(selfWatcher = _class->selfWatchers.first; selfWatcher; selfWatcher = next)
4630 next = selfWatcher->next;
4631 if(selfWatcher->_property == _property)
4632 selfWatcher->callback(instance);
4638 void __ecereNameSpace__ecere__com__eInstance_FireWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property)
4640 if(instance && _property && _property->isWatchable)
4642 struct __ecereNameSpace__ecere__sys__OldList * watchers = (struct __ecereNameSpace__ecere__sys__OldList *)((unsigned char *)instance + _property->watcherOffset);
4643 struct __ecereNameSpace__ecere__com__Watcher * watcher, * next;
4645 for(watcher = (*watchers).first; watcher; watcher = next)
4647 next = watcher->next;
4648 watcher->callback(watcher->object, instance);
4653 void __ecereNameSpace__ecere__com__eProperty_Watchable(struct __ecereNameSpace__ecere__com__Property * _property)
4655 if(!_property->isWatchable)
4657 struct __ecereNameSpace__ecere__com__Class * _class = _property->_class;
4659 if(!_class->computeSize)
4661 _property->watcherOffset = _class->structSize;
4662 _class->structSize += sizeof(struct __ecereNameSpace__ecere__sys__OldList);
4663 __ecereNameSpace__ecere__com__FixDerivativesBase(_class, _class);
4665 _property->isWatchable = 0x1;
4669 void __ecereNameSpace__ecere__com__eClass_DestructionWatchable(struct __ecereNameSpace__ecere__com__Class * _class)
4671 if(!_class->destructionWatchOffset)
4673 _class->destructionWatchOffset = _class->structSize;
4674 _class->structSize += sizeof(struct __ecereNameSpace__ecere__sys__OldList);
4675 __ecereNameSpace__ecere__com__FixDerivativesBase(_class, _class);
4679 void __ecereNameSpace__ecere__com__eProperty_SelfWatch(struct __ecereNameSpace__ecere__com__Class * _class, char * name, void (* callback)(void *))
4681 void * __ecereTemp1;
4685 struct __ecereNameSpace__ecere__com__Property * _property = __ecereNameSpace__ecere__com__eClass_FindProperty(_class, name, _class->module);
4688 _property = __ecereNameSpace__ecere__com__eClass_AddProperty(_class, name, (((void *)0)), (((void *)0)), (((void *)0)), 4);
4689 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&_class->selfWatchers, (__ecereTemp1 = __ecereNameSpace__ecere__com__eSystem_New0(16), ((struct __ecereNameSpace__ecere__com__SelfWatcher *)__ecereTemp1)->_property = _property, ((struct __ecereNameSpace__ecere__com__SelfWatcher *)__ecereTemp1)->callback = callback, ((struct __ecereNameSpace__ecere__com__SelfWatcher *)__ecereTemp1)));
4690 _property->selfWatchable = 0x1;
4694 void __ecereNameSpace__ecere__com__eInstance_Watch(void * instance, struct __ecereNameSpace__ecere__com__Property * _property, void * object, void (* callback)(void *, void *))
4696 void * __ecereTemp1;
4698 if(_property->isWatchable)
4700 struct __ecereNameSpace__ecere__sys__OldList * watchers = (struct __ecereNameSpace__ecere__sys__OldList *)((unsigned char *)instance + _property->watcherOffset);
4702 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*watchers), (__ecereTemp1 = __ecereNameSpace__ecere__com__eSystem_New0(16), ((struct __ecereNameSpace__ecere__com__Watcher *)__ecereTemp1)->callback = callback, ((struct __ecereNameSpace__ecere__com__Watcher *)__ecereTemp1)->object = object, ((struct __ecereNameSpace__ecere__com__Watcher *)__ecereTemp1)));
4706 void __ecereNameSpace__ecere__com__eInstance_WatchDestruction(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Instance * object, void (* callback)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__Instance *))
4708 void * __ecereTemp1;
4709 struct __ecereNameSpace__ecere__sys__OldList * watchers = (struct __ecereNameSpace__ecere__sys__OldList *)((unsigned char *)instance + ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class->destructionWatchOffset);
4711 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*watchers), (__ecereTemp1 = __ecereNameSpace__ecere__com__eSystem_New0(16), ((struct __ecereNameSpace__ecere__com__Watcher *)__ecereTemp1)->callback = callback, ((struct __ecereNameSpace__ecere__com__Watcher *)__ecereTemp1)->object = object, ((struct __ecereNameSpace__ecere__com__Watcher *)__ecereTemp1)));
4714 void __ecereNameSpace__ecere__com__eInstance_StopWatching(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, struct __ecereNameSpace__ecere__com__Instance * object)
4716 if(instance && (!_property || _property->isWatchable))
4720 struct __ecereNameSpace__ecere__sys__OldList * watchers = (struct __ecereNameSpace__ecere__sys__OldList *)((unsigned char *)instance + _property->watcherOffset);
4721 struct __ecereNameSpace__ecere__com__Watcher * watcher;
4723 for(watcher = (*watchers).first; watcher; watcher = watcher->next)
4724 if(watcher->object == object)
4726 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete((&*watchers), watcher);
4732 struct __ecereNameSpace__ecere__com__Class * _class, * base;
4734 for(_class = ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class; _class; _class = base)
4736 if(_class->destructionWatchOffset)
4738 struct __ecereNameSpace__ecere__sys__OldList * watchers = (struct __ecereNameSpace__ecere__sys__OldList *)((unsigned char *)instance + _class->destructionWatchOffset);
4739 struct __ecereNameSpace__ecere__com__Watcher * watcher;
4741 for(watcher = (*watchers).first; watcher; watcher = watcher->next)
4743 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete((&*watchers), watcher);
4747 for(_property = (struct __ecereNameSpace__ecere__com__Property *)_class->membersAndProperties.first; _property; _property = _property->next)
4749 if(_property->isProperty && _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;
4754 for(watcher = (*watchers).first; watcher; watcher = watcher->next)
4755 if(watcher->object == object)
4757 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete((&*watchers), watcher);
4762 base = _class->base;
4763 if(base && base->type == 1000)
4764 base = (((void *)0));
4770 struct __ecereNameSpace__ecere__com__Class * __ecereNameSpace__ecere__com__eClass_GetDesigner(struct __ecereNameSpace__ecere__com__Class * _class)
4772 for(; _class; _class = _class->base)
4774 if(_class->designerClass)
4775 return (struct __ecereNameSpace__ecere__com__Class *)__ecereNameSpace__ecere__com__eSystem_FindClass(_class->module, _class->designerClass);
4777 return (((void *)0));
4780 struct __ecereNameSpace__ecere__com__Class * __ecereNameSpace__ecere__com__eInstance_GetDesigner(struct __ecereNameSpace__ecere__com__Instance * instance)
4783 return __ecereNameSpace__ecere__com__eClass_GetDesigner(((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class);
4784 return (((void *)0));
4787 unsigned int __ecereNameSpace__ecere__com__LocateModule(char * name, char * fileName)
4789 return Instance_LocateModule(name, fileName);
4792 extern void __ecereNameSpace__ecere__com__InitializeDataTypes1(struct __ecereNameSpace__ecere__com__Instance * module);
4794 extern void __ecereNameSpace__ecere__com__InitializeDataTypes(struct __ecereNameSpace__ecere__com__Instance * module);
4796 extern double sin(struct __ecereNameSpace__ecere__com__Instance * number);
4798 extern double sinh(struct __ecereNameSpace__ecere__com__Instance * number);
4800 extern double cosh(struct __ecereNameSpace__ecere__com__Instance * number);
4802 extern double tanh(struct __ecereNameSpace__ecere__com__Instance * number);
4804 extern double sqrt(double number);
4806 extern double cos(struct __ecereNameSpace__ecere__com__Instance * number);
4808 extern double tan(struct __ecereNameSpace__ecere__com__Instance * number);
4810 extern struct __ecereNameSpace__ecere__com__Instance * atan2(double y, double x);
4812 extern struct __ecereNameSpace__ecere__com__Instance * asin(double number);
4814 extern struct __ecereNameSpace__ecere__com__Instance * acos(double number);
4816 extern struct __ecereNameSpace__ecere__com__Instance * atan(double number);
4818 extern double pow(double number, double number2);
4820 extern double fmod(double x, double y);
4822 extern double fabs(double number);
4824 extern double log(double number);
4826 extern double log10(double number);
4828 extern double ceil(double number);
4830 extern double floor(double number);
4832 extern double exp(double number);
4834 extern void qsort(void * , unsigned int, unsigned int, int (* )(void * , void * ));
4836 extern int system(const char * );
4838 extern int atoi(const char * );
4840 extern float atof(const char * );
4842 extern int tolower(int);
4844 extern int toupper(int);
4846 extern unsigned int isdigit(int);
4848 extern char * getenv(const char * name);
4850 extern int rename(const char * oldpath, const char * newpath);
4852 extern char * strncat(char * , const char * , int n);
4854 extern int strcasecmp(const char * , const char * );
4856 extern int strncasecmp(const char * , const char * , int n);
4858 extern int strncmp(const char * , const char * , int n);
4860 extern int vsprintf(char * , const char * , __builtin_va_list);
4862 extern int puts(char * );
4864 extern int fputs(char * , void * stream);
4866 extern int isalnum(int c);
4868 extern int isalpha(int c);
4870 extern int islower(int c);
4872 extern int isupper(int c);
4874 extern int isprint(int c);
4876 static void __ecereNameSpace__ecere__com__LoadCOM(struct __ecereNameSpace__ecere__com__Instance * module)
4878 struct __ecereNameSpace__ecere__com__Class * applicationClass;
4879 struct __ecereNameSpace__ecere__com__Class * enumClass, * structClass, * boolClass;
4880 struct __ecereNameSpace__ecere__com__Class * moduleClass;
4881 struct __ecereNameSpace__ecere__com__Class * baseClass = __ecereNameSpace__ecere__com__eSystem_RegisterClass(0, "class", (((void *)0)), 0, 0, (((void *)0)), (((void *)0)), module, 4, 1);
4883 baseClass->type = 1000;
4884 baseClass->memberOffset = 0;
4885 baseClass->offset = 0;
4886 baseClass->structSize = 0;
4887 baseClass->typeSize = 0;
4889 struct __ecereNameSpace__ecere__com__Class * instanceClass = __ecereNameSpace__ecere__com__eSystem_RegisterClass(0, "ecere::com::Instance", (((void *)0)), 0, 0, (((void *)0)), (((void *)0)), module, 4, 1);
4891 instanceClass->type = 1000;
4892 instanceClass->fixed = 0x1;
4893 instanceClass->memberOffset = 0;
4894 instanceClass->offset = 0;
4895 instanceClass->memberID = -3;
4896 instanceClass->startMemberID = -3;
4897 __ecereNameSpace__ecere__com__eClass_AddDataMember(instanceClass, "_vTbl", "int (**)()", sizeof(int (**)()), 4, 1);
4898 __ecereNameSpace__ecere__com__eClass_AddDataMember(instanceClass, "_class", "ecere::com::Class", sizeof(struct __ecereNameSpace__ecere__com__Class *), 4, 1);
4899 __ecereNameSpace__ecere__com__eClass_AddDataMember(instanceClass, "_refCount", "int", sizeof(int (**)()), 4, 1);
4901 __ecereNameSpace__ecere__com__InitializeDataTypes1(module);
4902 enumClass = __ecereNameSpace__ecere__com__eSystem_RegisterClass(0, "enum", (((void *)0)), 0, sizeof(struct __ecereNameSpace__ecere__com__EnumClassData), (((void *)0)), (((void *)0)), module, 4, 1);
4903 __ecereNameSpace__ecere__com__eClass_AddClassProperty(enumClass, "enumSize", "int", (((void *)0)), __ecereNameSpace__ecere__com__GetEnumSize)->constant = 0x1;
4904 enumClass->type = 1000;
4905 (__ecereNameSpace__ecere__com__eSystem_Delete(enumClass->dataTypeString), enumClass->dataTypeString = 0);
4906 enumClass->dataTypeString = __ecereNameSpace__ecere__sys__CopyString("int");
4907 structClass = __ecereNameSpace__ecere__com__eSystem_RegisterClass(0, "struct", (((void *)0)), 0, 0, (((void *)0)), (((void *)0)), module, 4, 1);
4908 structClass->type = 1000;
4909 structClass->memberOffset = 0;
4910 structClass->offset = 0;
4911 structClass->structSize = 0;
4912 structClass->typeSize = 0;
4913 __ecereNameSpace__ecere__com__InitializeDataTypes(module);
4914 boolClass = __ecereNameSpace__ecere__com__eSystem_RegisterClass(4, "bool", "uint", 0, 0, (((void *)0)), (((void *)0)), module, 4, 1);
4915 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(boolClass, "true", (unsigned int)0x1);
4916 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(boolClass, "false", (unsigned int)0x0);
4917 moduleClass = __ecereNameSpace__ecere__com__eSystem_RegisterClass(0, "ecere::com::Module", (((void *)0)), sizeof(struct __ecereNameSpace__ecere__com__Module), 0, (void *)__ecereNameSpace__ecere__com__Module_Constructor, (void *)__ecereNameSpace__ecere__com__Module_Destructor, module, 4, 1);
4918 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(moduleClass, "OnLoad", "bool()", (((void *)0)), 1);
4919 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(moduleClass, "OnUnload", "void()", (((void *)0)), 1);
4920 __ecereNameSpace__ecere__com__eClass_AddMethod(moduleClass, "Load", "Module(char * name, AccessMode importAccess)", __ecereNameSpace__ecere__com__eModule_Load, 1);
4921 __ecereNameSpace__ecere__com__eClass_AddMethod(moduleClass, "Unload", "void(Module module)", __ecereNameSpace__ecere__com__eModule_Unload, 1);
4922 __ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "application", "Application", sizeof(struct __ecereNameSpace__ecere__com__Instance *), 4, 1);
4923 __ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "classes", "OldList", sizeof(struct __ecereNameSpace__ecere__sys__OldList), 4, 1);
4924 __ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "defines", "OldList", sizeof(struct __ecereNameSpace__ecere__sys__OldList), 4, 1);
4925 __ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "functions", "OldList", sizeof(struct __ecereNameSpace__ecere__sys__OldList), 4, 1);
4926 __ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "modules", "OldList", sizeof(struct __ecereNameSpace__ecere__sys__OldList), 4, 1);
4927 __ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "prev", "Module", sizeof(struct __ecereNameSpace__ecere__com__Instance *), 4, 1);
4928 __ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "next", "Module", sizeof(struct __ecereNameSpace__ecere__com__Instance *), 4, 1);
4929 __ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "name", "char *", sizeof(char *), 4, 1);
4930 __ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "library", "void *", sizeof(void *), 4, 1);
4931 __ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "Unload", "void *", sizeof(void *), 4, 1);
4932 __ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "importType", "ImportType", sizeof(int), 4, 1);
4933 __ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "privateNameSpace", "NameSpace", sizeof(struct __ecereNameSpace__ecere__com__NameSpace), 4, 1);
4934 __ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "publicNameSpace", "NameSpace", sizeof(struct __ecereNameSpace__ecere__com__NameSpace), 4, 1);
4935 moduleClass->fixed = 0x1;
4936 moduleClass->count++;
4937 applicationClass = __ecereNameSpace__ecere__com__eSystem_RegisterClass(0, "ecere::com::Application", "Module", sizeof(struct __ecereNameSpace__ecere__com__Application), 0, (((void *)0)), (void *)__ecereNameSpace__ecere__com__Application_Destructor, module, 4, 1);
4938 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(applicationClass, "Main", "void()", (((void *)0)), 1);
4939 __ecereNameSpace__ecere__com__eClass_AddDataMember(applicationClass, "argc", "int", sizeof(int), 4, 1);
4940 __ecereNameSpace__ecere__com__eClass_AddDataMember(applicationClass, "argv", "char **", sizeof(char **), 4, 1);
4941 __ecereNameSpace__ecere__com__eClass_AddDataMember(applicationClass, "exitCode", "int", sizeof(int), 4, 1);
4942 __ecereNameSpace__ecere__com__eClass_AddDataMember(applicationClass, "isGUIApp", "bool", sizeof(unsigned int), 4, 1);
4943 __ecereNameSpace__ecere__com__eClass_AddDataMember(applicationClass, "allModules", "OldList", sizeof(struct __ecereNameSpace__ecere__sys__OldList), 4, 1);
4944 __ecereNameSpace__ecere__com__eClass_AddDataMember(applicationClass, "parsedCommand", "char *", sizeof(char *), 4, 1);
4945 __ecereNameSpace__ecere__com__eClass_AddDataMember(applicationClass, "systemNameSpace", "NameSpace", sizeof(struct __ecereNameSpace__ecere__com__NameSpace), 4, 1);
4946 applicationClass->fixed = 0x1;
4947 applicationClass->count++;
4948 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("sin", "double sin(Angle number)", sin, module, 4);
4949 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("sinh", "double sinh(Angle number)", sinh, module, 4);
4950 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("cosh", "double cosh(Angle number)", cosh, module, 4);
4951 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("tanh", "double tanh(Angle number)", tanh, module, 4);
4952 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("sqrt", "double sqrt(double number)", sqrt, module, 4);
4953 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("cos", "double cos(Angle number)", cos, module, 4);
4954 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("tan", "double tan(Angle number)", tan, module, 4);
4955 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("atan2", "Angle atan2(double y, double x)", atan2, module, 4);
4956 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("asin", "Angle asin(double number)", asin, module, 4);
4957 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("acos", "Angle acos(double number)", acos, module, 4);
4958 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("atan", "Angle atan(double number)", atan, module, 4);
4959 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("pow", "double pow(double number, double number2)", pow, module, 4);
4960 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("fmod", "double fmod(double x, double y)", fmod, module, 4);
4961 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("fabs", "double fabs(double number)", fabs, module, 4);
4962 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("log", "double log(double number)", log, module, 4);
4963 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("log10", "double log10(double number)", log10, module, 4);
4964 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ceil", "double ceil(double number)", ceil, module, 4);
4965 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("floor", "double floor(double number)", floor, module, 4);
4966 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("exp", "double exp(double number)", exp, module, 4);
4967 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("qsort", "void qsort(void *, uint, uint, int (*)(void *, void *))", qsort, module, 4);
4968 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strtod", "double strtod(char*, char**)", strtod, module, 4);
4969 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strtol", "int strtol(char*, char**, int base)", strtol, module, 4);
4970 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("system", "int system(const char*)", system, module, 4);
4971 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("atoi", "int atoi(const char*)", atoi, module, 4);
4972 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("atof", "float atof(const char*)", atof, module, 4);
4973 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("tolower", "int tolower(int)", tolower, module, 4);
4974 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("toupper", "int toupper(int)", toupper, module, 4);
4975 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("isdigit", "bool isdigit(int)", isdigit, module, 4);
4976 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("memset", "void memset(void * area, byte value, uint count)", memset, module, 4);
4977 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("getenv", "char * getenv(const char * name)", getenv, module, 4);
4978 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("rename", "int rename(const char *oldpath, const char *newpath)", rename, module, 4);
4979 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strlen", "int strlen(const char *)", strlen, module, 4);
4980 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strcat", "char * strcat(char *, const char *)", strcat, module, 4);
4981 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strncat", "char * strncat(char *, const char *, int n)", strncat, module, 4);
4982 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strchr", "char * strchr(char *, int)", strchr, module, 4);
4983 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strstr", "char * strstr(char *, const char *)", strstr, module, 4);
4984 __ecereNameSpace__ecere__com__eSystem_RegisterDefine("fstrcmp", "(GetRuntimePlatform() == win32) ? strcmpi : strcmp", module, 4);
4985 __ecereNameSpace__ecere__com__eSystem_RegisterDefine("strcmpi", "strcasecmp", module, 4);
4986 __ecereNameSpace__ecere__com__eSystem_RegisterDefine("strnicmp", "strncasecmp", module, 4);
4987 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strcasecmp", "int strcasecmp(const char *, const char *)", strcasecmp, module, 4);
4988 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strncasecmp", "int strncasecmp(const char *, const char *, int n)", strncasecmp, module, 4);
4989 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strcmp", "int strcmp(const char *, const char *)", strcmp, module, 4);
4990 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strncmp", "int strncmp(const char *, const char *, int n)", strncmp, module, 4);
4991 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strlwr", "char * strlwr(char *)", strlwr, module, 4);
4992 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strupr", "char * strupr(char *)", strupr, module, 4);
4993 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strcpy", "char * strcpy(char *, const char *)", strcpy, module, 4);
4994 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strncpy", "char * strncpy(char *, const char *, int n)", strncpy, module, 4);
4995 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("memcpy", "void * memcpy(void *, const void *, uint size)", memcpy, module, 4);
4996 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("memmove", "void * memmove(void *, const void *, uint size)", memmove, module, 4);
4997 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("sprintf", "int sprintf(char *, char *, ...)", sprintf, module, 4);
4998 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("printf", "int printf(char *, ...)", printf, module, 4);
4999 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("vsprintf", "int vsprintf(char*, const char*, __builtin_va_list)", vsprintf, module, 4);
5000 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("puts", "int puts(char *)", puts, module, 4);
5001 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("fputs", "int fputs(char *, void * stream)", fputs, module, 4);
5002 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("isalnum", "int isalnum(int c)", isalnum, module, 4);
5003 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("isspace", "int isspace(int c)", isspace, module, 4);
5004 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("isalpha", "int isalpha(int c)", isalpha, module, 4);
5005 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("islower", "int islower(int c)", islower, module, 4);
5006 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("isupper", "int isupper(int c)", isupper, module, 4);
5007 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("isprint", "int isprint(int c)", isprint, module, 4);
5008 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strtoul", "unsigned long strtoul(const char * nptr, char ** endptr, int base)", strtoul, module, 4);
5011 struct __ecereNameSpace__ecere__com__Instance * __ecereNameSpace__ecere__com____ecere_COM_Initialize(unsigned int guiApp, int argc, char * argv[])
5013 struct __ecereNameSpace__ecere__com__Instance * app;
5015 app = __ecereNameSpace__ecere__com___calloc(1, 424);
5016 __ecereNameSpace__ecere__com__Module_Constructor(app);
5017 ((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 296)))->systemNameSpace.classes.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
5018 ((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 296)))->systemNameSpace.defines.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
5019 ((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 296)))->systemNameSpace.functions.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
5020 ((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 296)))->systemNameSpace.nameSpaces.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
5021 Instance_COM_Initialize(argc, argv, &((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 296)))->parsedCommand, &((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 296)))->argc, &((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 296)))->argv);
5022 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)app + 12)))->application = app;
5023 ((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 296)))->allModules.offset = 12 + (unsigned int)&(*((struct __ecereNameSpace__ecere__com__Module *)0)).prev;
5024 ((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 296)))->isGUIApp = guiApp;
5025 __ecereNameSpace__ecere__com__LoadCOM(app);
5026 ((struct __ecereNameSpace__ecere__com__Instance *)(char *)app)->_class = __ecereNameSpace__ecere__com__eSystem_FindClass(app, "Application");
5030 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * __ecereNameSpace__ecere__com__eClass_AddTemplateParameter(struct __ecereNameSpace__ecere__com__Class * _class, char * name, int type, void * info, struct __ecereNameSpace__ecere__com__ClassTemplateArgument * defaultArg)
5032 void * __ecereTemp1;
5036 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param;
5038 for(param = _class->templateParams.first; param; param = param->next)
5040 if(!strcmp(param->name, name))
5043 param = (__ecereTemp1 = __ecereNameSpace__ecere__com__eSystem_New0(36), ((struct __ecereNameSpace__ecere__com__ClassTemplateParameter *)__ecereTemp1)->name = __ecereNameSpace__ecere__sys__CopyString(name), ((struct __ecereNameSpace__ecere__com__ClassTemplateParameter *)__ecereTemp1)->type = type, ((struct __ecereNameSpace__ecere__com__ClassTemplateParameter *)__ecereTemp1)->dataTypeString = (type == 1) ? info : __ecereNameSpace__ecere__sys__CopyString(info), ((struct __ecereNameSpace__ecere__com__ClassTemplateParameter *)__ecereTemp1));
5044 if(defaultArg != (((void *)0)))
5046 param->defaultArg = *defaultArg;
5047 __ecereNameSpace__ecere__com__CopyTemplateArg(param, ¶m->defaultArg);
5049 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&_class->templateParams, param);
5052 return (((void *)0));
5055 void __ecereNameSpace__ecere__com__eClass_DoneAddingTemplateParameters(struct __ecereNameSpace__ecere__com__Class * base)
5059 struct __ecereNameSpace__ecere__sys__OldLink * derivative;
5060 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param;
5063 void * first = base->templateParams.first;
5064 int count = base->templateParams.count;
5066 base->templateParams.first = (((void *)0));
5067 base->templateParams.count = 0;
5068 __ecereNameSpace__ecere__com__FreeTemplateArgs(base);
5069 (__ecereNameSpace__ecere__com__eSystem_Delete(base->templateArgs), base->templateArgs = 0);
5070 __ecereNameSpace__ecere__com__FreeTemplatesDerivatives(base);
5071 base->templateParams.first = first;
5072 base->templateParams.count = count;
5074 for(param = base->templateParams.first; param; param = param->next)
5076 if(param->type == 1 && param->defaultArg.memberString)
5078 struct __ecereNameSpace__ecere__com__Class * memberClass = base;
5079 char * colon = strstr(param->defaultArg.memberString, "::");
5084 char className[1024];
5085 struct __ecereNameSpace__ecere__com__Class * sClass;
5087 memcpy(className, param->defaultArg.memberString, colon - param->defaultArg.memberString);
5088 className[colon - param->defaultArg.memberString] = '\0';
5089 memberName = colon + 2;
5090 for(sClass = base; sClass; sClass = sClass->base)
5092 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * cParam;
5093 struct __ecereNameSpace__ecere__com__Class * nextClass;
5096 for(nextClass = sClass->base; nextClass; nextClass = nextClass->base)
5097 id += nextClass->templateParams.count;
5098 if(sClass == base || base->templateArgs)
5100 for(cParam = sClass->templateParams.first; cParam; cParam = cParam->next)
5102 if(cParam->type == 0 && !strcmp(cParam->name, className))
5103 strcpy(className, (sClass == base) ? cParam->defaultArg.dataTypeString : base->templateArgs[id].dataTypeString);
5108 memberClass = __ecereNameSpace__ecere__com__eSystem_FindClass(base->module, className);
5110 memberClass = __ecereNameSpace__ecere__com__eSystem_FindClass(((struct __ecereNameSpace__ecere__com__Module *)(((char *)base->module + 12)))->application, className);
5113 memberName = param->defaultArg.memberString;
5116 switch(param->memberType)
5119 param->defaultArg.member = __ecereNameSpace__ecere__com__eClass_FindDataMember(memberClass, memberName, memberClass->module, (((void *)0)), (((void *)0)));
5122 param->defaultArg.method = __ecereNameSpace__ecere__com__eClass_FindMethod(memberClass, memberName, memberClass->module);
5125 param->defaultArg.prop = __ecereNameSpace__ecere__com__eClass_FindProperty(memberClass, memberName, memberClass->module);
5131 __ecereNameSpace__ecere__com__FixDerivativesBase(base, base);
5135 static void __ecereNameSpace__ecere__com__FreeTemplatesDerivatives(struct __ecereNameSpace__ecere__com__Class * base)
5137 struct __ecereNameSpace__ecere__sys__OldLink * derivative, * templateLink;
5139 for(derivative = base->derivatives.first; derivative; derivative = derivative->next)
5141 struct __ecereNameSpace__ecere__com__Class * _class = derivative->data;
5143 if(_class->templateArgs)
5145 __ecereNameSpace__ecere__com__FreeTemplateArgs(_class);
5146 (__ecereNameSpace__ecere__com__eSystem_Delete(_class->templateArgs), _class->templateArgs = 0);
5148 __ecereNameSpace__ecere__com__FreeTemplatesDerivatives(_class);
5150 for(templateLink = base->templatized.first; templateLink; templateLink = templateLink->next)
5152 struct __ecereNameSpace__ecere__com__Class * _class = templateLink->data;
5154 if(_class->templateArgs)
5156 __ecereNameSpace__ecere__com__FreeTemplateArgs(_class);
5157 (__ecereNameSpace__ecere__com__eSystem_Delete(_class->templateArgs), _class->templateArgs = 0);
5159 __ecereNameSpace__ecere__com__FreeTemplatesDerivatives(_class);
5163 static const char * __ecereNameSpace__ecere__com__platformNames[4] =
5165 "", "win32", "linux", "apple"
5168 static const int __ecereNameSpace__ecere__com__firstPlatform = 1;
5170 static struct __ecereNameSpace__ecere__com__Property * __ecereProp___ecereNameSpace__ecere__com__Platform_char__PTR_, * __ecerePropM___ecereNameSpace__ecere__com__Platform_char__PTR_;
5172 static const int __ecereNameSpace__ecere__com__lastPlatform = 3;
5174 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Platform;
5176 int __ecereVMethodID_class_OnGetString;
5178 char * __ecereProp___ecereNameSpace__ecere__com__Platform_Get_char__PTR_(int this)
5180 return ((char * (*)(struct __ecereNameSpace__ecere__com__Class *, void *, char * tempString, void * fieldData, unsigned int * needClass))__ecereClass___ecereNameSpace__ecere__com__Platform->_vTbl[__ecereVMethodID_class_OnGetString])(__ecereClass___ecereNameSpace__ecere__com__Platform, &this, (((void *)0)), (((void *)0)), (((void *)0)));
5183 int __ecereProp___ecereNameSpace__ecere__com__Platform_Set_char__PTR_(char * value)
5189 for(c = __ecereNameSpace__ecere__com__firstPlatform; c <= __ecereNameSpace__ecere__com__lastPlatform; c++)
5190 if(!strcasecmp(value, __ecereNameSpace__ecere__com__platformNames[c]))
5196 char * __ecereMethod___ecereNameSpace__ecere__com__Platform_OnGetString(struct __ecereNameSpace__ecere__com__Class * class, int * this, char * tempString, void * fieldData, unsigned int * needClass)
5198 if((*(this)) >= __ecereNameSpace__ecere__com__firstPlatform && (*(this)) <= __ecereNameSpace__ecere__com__lastPlatform)
5201 strcpy(tempString, __ecereNameSpace__ecere__com__platformNames[*(int *)this]);
5202 return __ecereNameSpace__ecere__com__platformNames[*(int *)this];
5204 if(tempString && tempString[0])
5205 tempString[0] = '\0';
5206 return (((void *)0));
5209 unsigned int __ecereMethod___ecereNameSpace__ecere__com__Platform_OnGetDataFromString(struct __ecereNameSpace__ecere__com__Class * class, int * this, char * string)
5211 (*(this)) = __ecereProp___ecereNameSpace__ecere__com__Platform_Set_char__PTR_(string);
5212 return (unsigned int)*(int *)this;
5215 extern int runtimePlatform;
5217 int __ecereNameSpace__ecere__com__GetRuntimePlatform()
5219 return runtimePlatform;
5222 struct __ecereNameSpace__ecere__com__ObjectInfo
5224 struct __ecereNameSpace__ecere__com__ObjectInfo * prev, * next;
5225 struct __ecereNameSpace__ecere__com__Instance * instance;
5227 struct __ecereNameSpace__ecere__com__Instance * instCode;
5228 unsigned int deleted;
5229 struct __ecereNameSpace__ecere__com__ObjectInfo * oClass;
5230 struct __ecereNameSpace__ecere__sys__OldList instances;
5231 struct __ecereNameSpace__ecere__com__Instance * classDefinition;
5232 unsigned int modified;
5235 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__ObjectInfo;
5237 static struct __ecereNameSpace__ecere__com__Property * __ecereProp___ecereNameSpace__ecere__com__DesignerBase_classDesigner, * __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_classDesigner;
5239 static struct __ecereNameSpace__ecere__com__Property * __ecereProp___ecereNameSpace__ecere__com__DesignerBase_objectClass, * __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_objectClass;
5241 static struct __ecereNameSpace__ecere__com__Property * __ecereProp___ecereNameSpace__ecere__com__DesignerBase_isDragging, * __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_isDragging;
5243 struct __ecereNameSpace__ecere__com__DesignerBase
5245 struct __ecereNameSpace__ecere__com__Instance * classDesigner;
5247 unsigned int isDragging;
5250 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__DesignerBase;
5252 struct __ecereNameSpace__ecere__com__Instance * __ecereProp___ecereNameSpace__ecere__com__DesignerBase_Get_classDesigner(struct __ecereNameSpace__ecere__com__Instance * this)
5254 struct __ecereNameSpace__ecere__com__DesignerBase * __ecerePointer___ecereNameSpace__ecere__com__DesignerBase = (struct __ecereNameSpace__ecere__com__DesignerBase *)(this ? (((char *)this) + __ecereClass___ecereNameSpace__ecere__com__DesignerBase->offset) : 0);
5256 return __ecerePointer___ecereNameSpace__ecere__com__DesignerBase->classDesigner;
5259 void __ecereProp___ecereNameSpace__ecere__com__DesignerBase_Set_classDesigner(struct __ecereNameSpace__ecere__com__Instance * this, struct __ecereNameSpace__ecere__com__Instance * value)
5261 struct __ecereNameSpace__ecere__com__DesignerBase * __ecerePointer___ecereNameSpace__ecere__com__DesignerBase = (struct __ecereNameSpace__ecere__com__DesignerBase *)(this ? (((char *)this) + __ecereClass___ecereNameSpace__ecere__com__DesignerBase->offset) : 0);
5263 __ecerePointer___ecereNameSpace__ecere__com__DesignerBase->classDesigner = value;
5264 __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(this, __ecereProp___ecereNameSpace__ecere__com__DesignerBase_classDesigner), __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(this, __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_classDesigner);
5267 char * __ecereProp___ecereNameSpace__ecere__com__DesignerBase_Get_objectClass(struct __ecereNameSpace__ecere__com__Instance * this)
5269 struct __ecereNameSpace__ecere__com__DesignerBase * __ecerePointer___ecereNameSpace__ecere__com__DesignerBase = (struct __ecereNameSpace__ecere__com__DesignerBase *)(this ? (((char *)this) + __ecereClass___ecereNameSpace__ecere__com__DesignerBase->offset) : 0);
5271 return __ecerePointer___ecereNameSpace__ecere__com__DesignerBase->objectClass;
5274 void __ecereProp___ecereNameSpace__ecere__com__DesignerBase_Set_objectClass(struct __ecereNameSpace__ecere__com__Instance * this, char * value)
5276 struct __ecereNameSpace__ecere__com__DesignerBase * __ecerePointer___ecereNameSpace__ecere__com__DesignerBase = (struct __ecereNameSpace__ecere__com__DesignerBase *)(this ? (((char *)this) + __ecereClass___ecereNameSpace__ecere__com__DesignerBase->offset) : 0);
5278 __ecerePointer___ecereNameSpace__ecere__com__DesignerBase->objectClass = value;
5279 __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(this, __ecereProp___ecereNameSpace__ecere__com__DesignerBase_objectClass), __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(this, __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_objectClass);
5282 unsigned int __ecereProp___ecereNameSpace__ecere__com__DesignerBase_Get_isDragging(struct __ecereNameSpace__ecere__com__Instance * this)
5284 struct __ecereNameSpace__ecere__com__DesignerBase * __ecerePointer___ecereNameSpace__ecere__com__DesignerBase = (struct __ecereNameSpace__ecere__com__DesignerBase *)(this ? (((char *)this) + __ecereClass___ecereNameSpace__ecere__com__DesignerBase->offset) : 0);
5286 return __ecerePointer___ecereNameSpace__ecere__com__DesignerBase->isDragging;
5289 void __ecereProp___ecereNameSpace__ecere__com__DesignerBase_Set_isDragging(struct __ecereNameSpace__ecere__com__Instance * this, unsigned int value)
5291 struct __ecereNameSpace__ecere__com__DesignerBase * __ecerePointer___ecereNameSpace__ecere__com__DesignerBase = (struct __ecereNameSpace__ecere__com__DesignerBase *)(this ? (((char *)this) + __ecereClass___ecereNameSpace__ecere__com__DesignerBase->offset) : 0);
5293 __ecerePointer___ecereNameSpace__ecere__com__DesignerBase->isDragging = value;
5294 __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(this, __ecereProp___ecereNameSpace__ecere__com__DesignerBase_isDragging), __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(this, __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_isDragging);
5297 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__ClassDesignerBase;
5299 struct __ecereNameSpace__ecere__com__Instance * __ecereNameSpace__ecere__com__activeDesigner;
5301 void __ecereNameSpace__ecere__com__SetActiveDesigner(struct __ecereNameSpace__ecere__com__Instance * designer)
5303 __ecereNameSpace__ecere__com__activeDesigner = designer;
5306 struct __ecereNameSpace__ecere__com__Instance * __ecereNameSpace__ecere__com__GetActiveDesigner()
5308 return __ecereNameSpace__ecere__com__activeDesigner;
5313 unsigned int __ecereNameSpace__ecere__sys__UTF8Validate(char * source)
5319 for(c = 0; source[c]; )
5321 unsigned char ch = source[c];
5322 unsigned int codePoint = 0;
5325 unsigned char mask = (unsigned char)0x7F;
5327 if(ch & (unsigned char)0x80)
5329 if(ch & (unsigned char)0x40)
5333 if(ch & (unsigned char)0x20)
5337 if(ch & (unsigned char)0x10)
5339 if(ch & (unsigned char)0x08)
5349 for(i = 0; i < numBytes && (ch = source[c]); i++, c++)
5352 codePoint |= ch & mask;
5353 mask = (unsigned char)0x3F;
5356 if(!(ch & (unsigned char)0x80) || (ch & (unsigned char)0x40))
5362 if(codePoint > 0x10FFFF || (codePoint >= 0xD800 && codePoint <= 0xDFFF) || (codePoint < 0x80 && numBytes > 1) || (codePoint < 0x800 && numBytes > 2) || (codePoint < 0x10000 && numBytes > 3))
5369 int __ecereNameSpace__ecere__sys__ISO8859_1toUTF8(char * source, char * dest, int max)
5374 for(c = 0; source[c]; c++)
5376 unsigned int ch = ((unsigned char *)source)[c];
5382 dest[d++] = (char)ch;
5388 dest[d++] = (unsigned char)0xC0 | (unsigned char)((ch & 0x7C0) >> 6);
5389 dest[d++] = (unsigned char)0x80 | (unsigned char)(ch & 0x03F);
5391 else if(ch < 0x10000)
5395 dest[d++] = (unsigned char)0xE0 | (unsigned char)((ch & 0xF000) >> 12);
5396 dest[d++] = (unsigned char)0x80 | (unsigned char)((ch & 0xFC0) >> 6);
5397 dest[d++] = (unsigned char)0x80 | (unsigned char)(ch & 0x03F);
5403 dest[d++] = (unsigned char)0xF0 | (unsigned char)((ch & 0x1C0000) >> 18);
5404 dest[d++] = (unsigned char)0x80 | (unsigned char)((ch & 0x3F000) >> 12);
5405 dest[d++] = (unsigned char)0x80 | (unsigned char)((ch & 0xFC0) >> 6);
5406 dest[d++] = (unsigned char)0x80 | (unsigned char)(ch & 0x03F);
5413 char * __ecereNameSpace__ecere__sys__UTF16toUTF8(unsigned short * source)
5420 unsigned int invert = 0x0;
5422 for(len = 0; source[len]; len++)
5424 dest = __ecereNameSpace__ecere__com__eSystem_New(sizeof(char) * (len * 3 + 1));
5425 for(c = 0; (u16 = source[c]); c++)
5429 if(!c && (u16 == (unsigned short)0xFFFE || u16 == (unsigned short)0xFEFF))
5431 if(u16 == (unsigned short)0xFFFE)
5437 u16 = ((u16 & (unsigned short)0xFF00) >> (unsigned short)8) | ((u16 & (unsigned short)0x00FF) << (unsigned short)8);
5439 if(u16 < (unsigned short)0xD800 || u16 > (unsigned short)0xDBFF)
5442 ch = (u16 << 10) + source[c++] + (0x10000 - (0xD800 << 10) - 0xDC00);
5445 dest[d++] = (char)ch;
5449 dest[d++] = (unsigned char)0xC0 | (unsigned char)((ch & 0x7C0) >> 6);
5450 dest[d++] = (unsigned char)0x80 | (unsigned char)(ch & 0x03F);
5452 else if(ch < 0x10000)
5454 dest[d++] = (unsigned char)0xE0 | (unsigned char)((ch & 0xF000) >> 12);
5455 dest[d++] = (unsigned char)0x80 | (unsigned char)((ch & 0xFC0) >> 6);
5456 dest[d++] = (unsigned char)0x80 | (unsigned char)(ch & 0x03F);
5460 dest[d++] = (unsigned char)0xF0 | (unsigned char)((ch & 0x1C0000) >> 18);
5461 dest[d++] = (unsigned char)0x80 | (unsigned char)((ch & 0x3F000) >> 12);
5462 dest[d++] = (unsigned char)0x80 | (unsigned char)((ch & 0xFC0) >> 6);
5463 dest[d++] = (unsigned char)0x80 | (unsigned char)(ch & 0x03F);
5467 dest = __ecereNameSpace__ecere__com__eSystem_Renew(dest, sizeof(char) * (d + 1));
5471 int __ecereNameSpace__ecere__sys__UTF16toUTF8Buffer(unsigned short * source, unsigned char * dest, int max)
5477 for(c = 0; (u16 = source[c]); c++)
5481 if(u16 < (unsigned short)0xD800 || u16 > (unsigned short)0xDBFF)
5484 ch = (u16 << 10) + source[c++] + (0x10000 - (0xD800 << 10) - 0xDC00);
5489 dest[d++] = (char)ch;
5495 dest[d++] = (unsigned char)0xC0 | (unsigned char)((ch & 0x7C0) >> 6);
5496 dest[d++] = (unsigned char)0x80 | (unsigned char)(ch & 0x03F);
5498 else if(ch < 0x10000)
5502 dest[d++] = (unsigned char)0xE0 | (unsigned char)((ch & 0xF000) >> 12);
5503 dest[d++] = (unsigned char)0x80 | (unsigned char)((ch & 0xFC0) >> 6);
5504 dest[d++] = (unsigned char)0x80 | (unsigned char)(ch & 0x03F);
5510 dest[d++] = (unsigned char)0xF0 | (unsigned char)((ch & 0x1C0000) >> 18);
5511 dest[d++] = (unsigned char)0x80 | (unsigned char)((ch & 0x3F000) >> 12);
5512 dest[d++] = (unsigned char)0x80 | (unsigned char)((ch & 0xFC0) >> 6);
5513 dest[d++] = (unsigned char)0x80 | (unsigned char)(ch & 0x03F);
5516 dest[d] = (unsigned char)0;
5520 unsigned int __ecereNameSpace__ecere__sys__UTF8GetChar(char * string, int * numBytes)
5523 unsigned char b = ((unsigned char *)string)[0];
5525 unsigned char mask = (unsigned char)0x7F;
5529 if(b & (unsigned char)0x80)
5531 if(b & (unsigned char)0x40)
5535 if(b & (unsigned char)0x20)
5539 if(b & (unsigned char)0x10)
5541 if(b & (unsigned char)0x08)
5553 for(i = 0; i < nb; i++)
5556 ch |= (b = ((unsigned char *)string)[i]) & mask;
5557 mask = (unsigned char)0x3F;
5558 if(i > 1 && (!(b & (unsigned char)0x80) || (b & (unsigned char)0x40)))
5564 if(i < nb || ch > 0x10FFFF || (ch >= 0xD800 && ch <= 0xDFFF) || (ch < 0x80 && nb > 1) || (ch < 0x800 && nb > 2) || (ch < 0x10000 && nb > 3))
5574 int __ecereNameSpace__ecere__sys__UTF8toUTF16Buffer(char * source, unsigned short * dest, int max)
5581 for(c = 0; source[c]; )
5583 unsigned char ch = source[c];
5584 unsigned int codePoint = 0;
5587 unsigned char mask = (unsigned char)0x7F;
5589 if(ch & (unsigned char)0x80 && ch & (unsigned char)0x40)
5593 if(ch & (unsigned char)0x20)
5597 if(ch & (unsigned char)0x10)
5604 for(i = 0; i < numBytes; i++)
5607 codePoint |= source[c++] & mask;
5608 mask = (unsigned char)0x3F;
5610 if(codePoint > 0xFFFF)
5612 unsigned short lead = (unsigned short)((0xD800 - (0x10000 >> 10)) + (codePoint >> 10));
5613 unsigned short trail = (unsigned short)0xDC00 + (unsigned short)(codePoint & 0x3FF);
5624 dest[d++] = (unsigned short)codePoint;
5627 dest[d] = (unsigned short)0;
5633 int __ecereNameSpace__ecere__sys__UTF32toUTF8Len(unsigned int * source, int count, unsigned char * dest, int max)
5639 for(c = 0; c < count && (ch = source[c]); c++)
5645 dest[d++] = (char)ch;
5651 dest[d++] = (unsigned char)0xC0 | (unsigned char)((ch & 0x7C0) >> 6);
5652 dest[d++] = (unsigned char)0x80 | (unsigned char)(ch & 0x03F);
5654 else if(ch < 0x10000)
5658 dest[d++] = (unsigned char)0xE0 | (unsigned char)((ch & 0xF000) >> 12);
5659 dest[d++] = (unsigned char)0x80 | (unsigned char)((ch & 0xFC0) >> 6);
5660 dest[d++] = (unsigned char)0x80 | (unsigned char)(ch & 0x03F);
5666 dest[d++] = (unsigned char)0xF0 | (unsigned char)((ch & 0x1C0000) >> 18);
5667 dest[d++] = (unsigned char)0x80 | (unsigned char)((ch & 0x3F000) >> 12);
5668 dest[d++] = (unsigned char)0x80 | (unsigned char)((ch & 0xFC0) >> 6);
5669 dest[d++] = (unsigned char)0x80 | (unsigned char)(ch & 0x03F);
5672 dest[d] = (unsigned char)0;
5676 unsigned short * __ecereNameSpace__ecere__sys__UTF8toUTF16(char * source, int * wordCount)
5680 int len = strlen(source);
5681 unsigned short * dest = __ecereNameSpace__ecere__com__eSystem_New(sizeof(unsigned short) * (len + 1));
5685 for(c = 0; source[c]; )
5687 unsigned char ch = source[c];
5688 unsigned int codePoint = 0;
5691 unsigned char mask = (unsigned char)0x7F;
5693 if(ch & (unsigned char)0x80 && ch & (unsigned char)0x40)
5697 if(ch & (unsigned char)0x20)
5701 if(ch & (unsigned char)0x10)
5708 for(i = 0; i < numBytes; i++)
5711 codePoint |= source[c++] & mask;
5712 mask = (unsigned char)0x3F;
5714 if(codePoint > 0xFFFF)
5716 unsigned short lead = (unsigned short)((0xD800 - (0x10000 >> 10)) + (codePoint >> 10));
5717 unsigned short trail = (unsigned short)0xDC00 + (unsigned short)(codePoint & 0x3FF);
5724 dest[d++] = (unsigned short)codePoint;
5727 dest[d] = (unsigned short)0;
5732 return (((void *)0));
5735 int __ecereVMethodID___ecereNameSpace__ecere__com__DesignerBase_FindObject;
5737 int __ecereVMethodID___ecereNameSpace__ecere__com__DesignerBase_RenameObject;
5739 int __ecereVMethodID___ecereNameSpace__ecere__com__DesignerBase_SelectObjectFromDesigner;
5741 int __ecereVMethodID___ecereNameSpace__ecere__com__DesignerBase_CodeAddObject;
5743 int __ecereVMethodID___ecereNameSpace__ecere__com__DesignerBase_SheetAddObject;
5745 int __ecereVMethodID___ecereNameSpace__ecere__com__DesignerBase_AddToolBoxClass;
5747 int __ecereVMethodID___ecereNameSpace__ecere__com__DesignerBase_AddDefaultMethod;
5749 int __ecereVMethodID___ecereNameSpace__ecere__com__DesignerBase_DeleteObject;
5751 int __ecereVMethodID___ecereNameSpace__ecere__com__DesignerBase_ObjectContainsCode;
5753 int __ecereVMethodID___ecereNameSpace__ecere__com__DesignerBase_ModifyCode;
5755 int __ecereVMethodID___ecereNameSpace__ecere__com__DesignerBase_UpdateProperties;
5757 int __ecereVMethodID___ecereNameSpace__ecere__com__ClassDesignerBase_Reset;
5759 int __ecereVMethodID___ecereNameSpace__ecere__com__ClassDesignerBase_AddObject;
5761 int __ecereVMethodID___ecereNameSpace__ecere__com__ClassDesignerBase_SelectObject;
5763 int __ecereVMethodID___ecereNameSpace__ecere__com__ClassDesignerBase_ListToolBoxClasses;
5765 int __ecereVMethodID___ecereNameSpace__ecere__com__ClassDesignerBase_PrepareTestObject;
5767 int __ecereVMethodID___ecereNameSpace__ecere__com__ClassDesignerBase_CreateObject;
5769 int __ecereVMethodID___ecereNameSpace__ecere__com__ClassDesignerBase_PostCreateObject;
5771 int __ecereVMethodID___ecereNameSpace__ecere__com__ClassDesignerBase_DroppedObject;
5773 int __ecereVMethodID___ecereNameSpace__ecere__com__ClassDesignerBase_DestroyObject;
5775 int __ecereVMethodID___ecereNameSpace__ecere__com__ClassDesignerBase_FixProperty;
5777 int __ecereVMethodID___ecereNameSpace__ecere__com__ClassDesignerBase_CreateNew;
5779 void __ecereRegisterModule_instance(struct __ecereNameSpace__ecere__com__Instance * module)
5781 struct __ecereNameSpace__ecere__com__Class * class;
5783 __ecereNameSpace__ecere__com__eSystem_RegisterDefine("ecere::com::null", "((void *)0)", module, 4);
5784 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(3, "ecere::com::unichar", "uint", 0, 0, 0, 0, module, 4, 1);
5785 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
5786 __ecereClass___ecereNameSpace__ecere__com__unichar = class;
5787 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "OnGetString", 0, __ecereMethod___ecereNameSpace__ecere__com__unichar_OnGetString, 1);
5788 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "OnGetDataFromString", 0, __ecereMethod___ecereNameSpace__ecere__com__unichar_OnGetDataFromString, 1);
5789 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::Property", 0, sizeof(struct __ecereNameSpace__ecere__com__Property), 0, 0, 0, module, 4, 1);
5790 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
5791 __ecereClass___ecereNameSpace__ecere__com__Property = class;
5792 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "prev", "ecere::com::Property", 4, 4, 1);
5793 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "next", "ecere::com::Property", 4, 4, 1);
5794 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "name", "char *", 4, 4, 1);
5795 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "isProperty", "bool", 4, 4, 1);
5796 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "memberAccess", "ecere::com::AccessMode", 4, 4, 1);
5797 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "id", "int", 4, 4, 1);
5798 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "_class", "ecere::com::Class", 4, 4, 1);
5799 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataTypeString", "char *", 4, 4, 1);
5800 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataTypeClass", "ecere::com::Class", 4, 4, 1);
5801 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataType", "Type", 4, 4, 1);
5802 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "Set", "void( *)()", 4, 4, 1);
5803 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "Get", "int( *)()", 4, 4, 1);
5804 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "IsSet", "bool( *)()", 4, 4, 1);
5805 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "data", "void *", 4, 4, 1);
5806 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "symbol", "void *", 4, 4, 1);
5807 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "vid", "int", 4, 4, 1);
5808 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "conversion", "bool", 4, 4, 1);
5809 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "watcherOffset", "uint", 4, 4, 1);
5810 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "category", "char *", 4, 4, 1);
5811 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "compiled", "bool", 4, 4, 1);
5812 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "selfWatchable", "bool", 4, 4, 1);
5813 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "isWatchable", "bool", 4, 4, 1);
5815 class->fixed = (unsigned int)1;
5816 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::MemoryGuard_PushLoc", "void ecere::com::MemoryGuard_PushLoc(char * loc)", __ecereNameSpace__ecere__com__MemoryGuard_PushLoc, module, 4);
5817 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::MemoryGuard_PopLoc", "void ecere::com::MemoryGuard_PopLoc(void)", __ecereNameSpace__ecere__com__MemoryGuard_PopLoc, module, 4);
5818 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::BTNamedLink", 0, sizeof(struct __ecereNameSpace__ecere__com__BTNamedLink), 0, 0, 0, module, 4, 1);
5819 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
5820 __ecereClass___ecereNameSpace__ecere__com__BTNamedLink = class;
5821 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "name", "char *", 4, 4, 1);
5822 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "parent", "ecere::com::BTNamedLink", 4, 4, 1);
5823 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "left", "ecere::com::BTNamedLink", 4, 4, 1);
5824 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "right", "ecere::com::BTNamedLink", 4, 4, 1);
5825 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "depth", "int", 4, 4, 1);
5826 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "data", "void *", 4, 4, 1);
5828 class->fixed = (unsigned int)1;
5829 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::SelfWatcher", 0, sizeof(struct __ecereNameSpace__ecere__com__SelfWatcher), 0, 0, 0, module, 2, 1);
5830 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
5831 __ecereClass___ecereNameSpace__ecere__com__SelfWatcher = class;
5833 class->fixed = (unsigned int)1;
5834 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(4, "ecere::com::AccessMode", 0, 0, 0, 0, 0, module, 4, 1);
5835 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
5836 __ecereClass___ecereNameSpace__ecere__com__AccessMode = class;
5837 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "defaultAccess", 0);
5838 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "publicAccess", 1);
5839 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "privateAccess", 2);
5840 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "staticAccess", 3);
5841 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "baseSystemAccess", 4);
5842 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::SubModule", 0, sizeof(struct __ecereNameSpace__ecere__com__SubModule), 0, 0, 0, module, 4, 1);
5843 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
5844 __ecereClass___ecereNameSpace__ecere__com__SubModule = class;
5845 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "prev", "ecere::com::SubModule", 4, 4, 1);
5846 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "next", "ecere::com::SubModule", 4, 4, 1);
5847 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "module", "ecere::com::Module", 4, 4, 1);
5848 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "importMode", "ecere::com::AccessMode", 4, 4, 1);
5849 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(4, "ecere::com::DataMemberType", 0, 0, 0, 0, 0, module, 4, 1);
5850 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
5851 __ecereClass___ecereNameSpace__ecere__com__DataMemberType = class;
5852 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "normalMember", 0);
5853 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "unionMember", 1);
5854 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "structMember", 2);
5855 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(4, "ecere::com::ClassType", 0, 0, 0, 0, 0, module, 4, 1);
5856 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
5857 __ecereClass___ecereNameSpace__ecere__com__ClassType = class;
5858 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "normalClass", 0);
5859 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "structClass", 1);
5860 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "bitClass", 2);
5861 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "unitClass", 3);
5862 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "enumClass", 4);
5863 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "noHeadClass", 5);
5864 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "unionClass", 6);
5865 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "systemClass", 1000);
5866 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::Class", 0, sizeof(struct __ecereNameSpace__ecere__com__Class), 0, 0, 0, module, 4, 1);
5867 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
5868 __ecereClass___ecereNameSpace__ecere__com__Class = class;
5869 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "OnFree", 0, __ecereMethod___ecereNameSpace__ecere__com__Class_OnFree, 1);
5870 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "OnGetString", 0, __ecereMethod___ecereNameSpace__ecere__com__Class_OnGetString, 1);
5871 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "OnGetDataFromString", 0, __ecereMethod___ecereNameSpace__ecere__com__Class_OnGetDataFromString, 1);
5872 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "OnSerialize", 0, __ecereMethod___ecereNameSpace__ecere__com__Class_OnSerialize, 1);
5873 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "OnUnserialize", 0, __ecereMethod___ecereNameSpace__ecere__com__Class_OnUnserialize, 1);
5874 __ecereProp___ecereNameSpace__ecere__com__Class_char__PTR_ = __ecereNameSpace__ecere__com__eClass_AddProperty(class, 0, "char *", __ecereProp___ecereNameSpace__ecere__com__Class_Set_char__PTR_, __ecereProp___ecereNameSpace__ecere__com__Class_Get_char__PTR_, 1);
5875 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "prev", "ecere::com::Class", 4, 4, 1);
5876 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "next", "ecere::com::Class", 4, 4, 1);
5877 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "name", "char *", 4, 4, 1);
5878 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "offset", "int", 4, 4, 1);
5879 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "structSize", "int", 4, 4, 1);
5880 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "_vTbl", "int( * *)()", 4, 4, 1);
5881 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "vTblSize", "int", 4, 4, 1);
5882 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "Constructor", "int( *)(ecere::com::Instance)", 4, 4, 1);
5883 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "Destructor", "void( *)(ecere::com::Instance)", 4, 4, 1);
5884 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "offsetClass", "int", 4, 4, 1);
5885 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "sizeClass", "int", 4, 4, 1);
5886 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "base", "ecere::com::Class", 4, 4, 1);
5887 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "methods", "ecere::sys::BinaryTree", 16, 4, 1);
5888 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "members", "ecere::sys::BinaryTree", 16, 4, 1);
5889 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "prop", "ecere::sys::BinaryTree", 16, 4, 1);
5890 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "membersAndProperties", "ecere::sys::OldList", 20, 4, 1);
5891 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "classProperties", "ecere::sys::BinaryTree", 16, 4, 1);
5892 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "derivatives", "ecere::sys::OldList", 20, 4, 1);
5893 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "memberID", "int", 4, 4, 1);
5894 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "startMemberID", "int", 4, 4, 1);
5895 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "type", "ecere::com::ClassType", 4, 4, 1);
5896 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "module", "ecere::com::Module", 4, 4, 1);
5897 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "nameSpace", "ecere::com::NameSpace *", 4, 4, 1);
5898 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataTypeString", "char *", 4, 4, 1);
5899 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataType", "Type", 4, 4, 1);
5900 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "typeSize", "int", 4, 4, 1);
5901 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "defaultAlignment", "int", 4, 4, 1);
5902 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "Initialize", "void( *)()", 4, 4, 1);
5903 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "memberOffset", "int", 4, 4, 1);
5904 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "selfWatchers", "ecere::sys::OldList", 20, 4, 1);
5905 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "designerClass", "char *", 4, 4, 1);
5906 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "noExpansion", "bool", 4, 4, 1);
5907 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "defaultProperty", "char *", 4, 4, 1);
5908 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "comRedefinition", "bool", 4, 4, 1);
5909 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "count", "int", 4, 4, 1);
5910 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "isRemote", "bool", 4, 4, 1);
5911 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "internalDecl", "bool", 4, 4, 1);
5912 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "data", "void *", 4, 4, 1);
5913 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "computeSize", "bool", 4, 4, 1);
5914 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "structAlignment", "int", 4, 4, 1);
5915 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "destructionWatchOffset", "int", 4, 4, 1);
5916 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "fixed", "bool", 4, 4, 1);
5917 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "delayedCPValues", "ecere::sys::OldList", 20, 4, 1);
5918 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "inheritanceAccess", "ecere::com::AccessMode", 4, 4, 1);
5919 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "fullName", "char *", 4, 4, 1);
5920 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "symbol", "void *", 4, 4, 1);
5921 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "conversions", "ecere::sys::OldList", 20, 4, 1);
5922 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "templateParams", "ecere::sys::OldList", 20, 4, 1);
5923 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "templateArgs", "ecere::com::ClassTemplateArgument *", 4, 4, 1);
5924 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "templateClass", "ecere::com::Class", 4, 4, 1);
5925 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "templatized", "ecere::sys::OldList", 20, 4, 1);
5926 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "numParams", "int", 4, 4, 1);
5928 class->fixed = (unsigned int)1;
5930 class->noExpansion = (unsigned int)1;
5931 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(4, "ecere::com::TemplateParameterType", 0, 0, 0, 0, 0, module, 4, 1);
5932 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
5933 __ecereClass___ecereNameSpace__ecere__com__TemplateParameterType = class;
5934 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "type", 0);
5935 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "identifier", 1);
5936 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "expression", 2);
5937 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(4, "ecere::com::TemplateMemberType", 0, 0, 0, 0, 0, module, 4, 1);
5938 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
5939 __ecereClass___ecereNameSpace__ecere__com__TemplateMemberType = class;
5940 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "dataMember", 0);
5941 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "method", 1);
5942 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "prop", 2);
5943 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(1, "ecere::com::ClassTemplateArgument", 0, sizeof(struct __ecereNameSpace__ecere__com__ClassTemplateArgument), 0, 0, 0, module, 4, 1);
5944 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
5945 __ecereClass___ecereNameSpace__ecere__com__ClassTemplateArgument = class;
5947 struct __ecereNameSpace__ecere__com__DataMember * dataMember0 = __ecereNameSpace__ecere__com__eMember_New(1, 1);
5950 struct __ecereNameSpace__ecere__com__DataMember * dataMember1 = __ecereNameSpace__ecere__com__eMember_New(2, 1);
5952 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember1, "dataTypeString", "char *", 4, 4, 1);
5953 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember1, "dataTypeClass", "ecere::com::Class", 4, 4, 1);
5954 __ecereNameSpace__ecere__com__eMember_AddMember(dataMember0, dataMember1);
5956 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember0, "expression", "ecere::com::DataValue", 8, 8, 1);
5958 struct __ecereNameSpace__ecere__com__DataMember * dataMember1 = __ecereNameSpace__ecere__com__eMember_New(2, 1);
5960 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember1, "memberString", "char *", 4, 4, 1);
5962 struct __ecereNameSpace__ecere__com__DataMember * dataMember2 = __ecereNameSpace__ecere__com__eMember_New(1, 1);
5964 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember2, "member", "ecere::com::DataMember", 4, 4, 1);
5965 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember2, "prop", "ecere::com::Property", 4, 4, 1);
5966 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember2, "method", "ecere::com::Method", 4, 4, 1);
5967 __ecereNameSpace__ecere__com__eMember_AddMember(dataMember1, dataMember2);
5969 __ecereNameSpace__ecere__com__eMember_AddMember(dataMember0, dataMember1);
5971 __ecereNameSpace__ecere__com__eClass_AddMember(class, dataMember0);
5973 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::ClassTemplateParameter", 0, sizeof(struct __ecereNameSpace__ecere__com__ClassTemplateParameter), 0, 0, 0, module, 4, 1);
5974 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
5975 __ecereClass___ecereNameSpace__ecere__com__ClassTemplateParameter = class;
5976 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "prev", "ecere::com::ClassTemplateParameter", 4, 4, 1);
5977 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "next", "ecere::com::ClassTemplateParameter", 4, 4, 1);
5978 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "name", "char *", 4, 4, 1);
5979 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "type", "ecere::com::TemplateParameterType", 4, 4, 1);
5981 struct __ecereNameSpace__ecere__com__DataMember * dataMember0 = __ecereNameSpace__ecere__com__eMember_New(1, 1);
5983 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember0, "dataTypeString", "char *", 4, 4, 1);
5984 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember0, "memberType", "ecere::com::TemplateMemberType", 4, 4, 1);
5985 __ecereNameSpace__ecere__com__eClass_AddMember(class, dataMember0);
5987 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "defaultArg", "ecere::com::ClassTemplateArgument", 8, 8, 1);
5988 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "param", "void *", 4, 4, 1);
5990 class->fixed = (unsigned int)1;
5991 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(4, "ecere::com::MethodType", 0, 0, 0, 0, 0, module, 4, 1);
5992 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
5993 __ecereClass___ecereNameSpace__ecere__com__MethodType = class;
5994 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "normalMethod", 0);
5995 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "virtualMethod", 1);
5996 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::Method", 0, sizeof(struct __ecereNameSpace__ecere__com__Method), 0, 0, 0, module, 4, 1);
5997 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
5998 __ecereClass___ecereNameSpace__ecere__com__Method = class;
5999 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "name", "char *", 4, 4, 1);
6000 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "parent", "ecere::com::Method", 4, 4, 1);
6001 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "left", "ecere::com::Method", 4, 4, 1);
6002 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "right", "ecere::com::Method", 4, 4, 1);
6003 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "depth", "int", 4, 4, 1);
6004 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "function", "int( *)()", 4, 4, 1);
6005 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "vid", "int", 4, 4, 1);
6006 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "type", "ecere::com::MethodType", 4, 4, 1);
6007 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "_class", "ecere::com::Class", 4, 4, 1);
6008 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "symbol", "void *", 4, 4, 1);
6009 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataTypeString", "char *", 4, 4, 1);
6010 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataType", "Type", 4, 4, 1);
6011 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "memberAccess", "ecere::com::AccessMode", 4, 4, 1);
6013 class->fixed = (unsigned int)1;
6014 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(4, "ecere::com::ImportType", 0, 0, 0, 0, 0, module, 4, 1);
6015 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6016 __ecereClass___ecereNameSpace__ecere__com__ImportType = class;
6017 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "normalImport", 0);
6018 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "staticImport", 1);
6019 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "remoteImport", 2);
6020 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "preDeclImport", 3);
6021 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "comCheckImport", 4);
6022 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(1, "ecere::com::NameSpace", 0, sizeof(struct __ecereNameSpace__ecere__com__NameSpace), 0, 0, 0, module, 4, 1);
6023 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6024 __ecereClass___ecereNameSpace__ecere__com__NameSpace = class;
6025 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "name", "char *", 4, 4, 1);
6026 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "btParent", "ecere::com::NameSpace *", 4, 4, 1);
6027 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "left", "ecere::com::NameSpace *", 4, 4, 1);
6028 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "right", "ecere::com::NameSpace *", 4, 4, 1);
6029 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "depth", "int", 4, 4, 1);
6030 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "parent", "ecere::com::NameSpace *", 4, 4, 1);
6031 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "nameSpaces", "ecere::sys::BinaryTree", 16, 4, 1);
6032 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "classes", "ecere::sys::BinaryTree", 16, 4, 1);
6033 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "defines", "ecere::sys::BinaryTree", 16, 4, 1);
6034 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "functions", "ecere::sys::BinaryTree", 16, 4, 1);
6035 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(1, "ecere::com::DataValue", 0, sizeof(struct __ecereNameSpace__ecere__com__DataValue), 0, 0, 0, module, 4, 1);
6036 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6037 __ecereClass___ecereNameSpace__ecere__com__DataValue = class;
6039 struct __ecereNameSpace__ecere__com__DataMember * dataMember0 = __ecereNameSpace__ecere__com__eMember_New(1, 1);
6041 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember0, "c", "char", 1, 1, 1);
6042 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember0, "uc", "byte", 1, 1, 1);
6043 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember0, "s", "short", 2, 2, 1);
6044 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember0, "us", "uint16", 2, 2, 1);
6045 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember0, "i", "int", 4, 4, 1);
6046 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember0, "ui", "uint", 4, 4, 1);
6047 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember0, "p", "void *", 4, 4, 1);
6048 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember0, "f", "float", 4, 4, 1);
6049 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember0, "d", "double", 8, 8, 1);
6050 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember0, "i64", "int64", 8, 8, 1);
6051 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember0, "ui64", "uint64", 8, 8, 1);
6052 __ecereNameSpace__ecere__com__eClass_AddMember(class, dataMember0);
6054 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::DataMember", 0, sizeof(struct __ecereNameSpace__ecere__com__DataMember), 0, 0, 0, module, 4, 1);
6055 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6056 __ecereClass___ecereNameSpace__ecere__com__DataMember = class;
6057 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "prev", "ecere::com::DataMember", 4, 4, 1);
6058 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "next", "ecere::com::DataMember", 4, 4, 1);
6059 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "name", "char *", 4, 4, 1);
6060 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "isProperty", "bool", 4, 4, 1);
6061 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "memberAccess", "ecere::com::AccessMode", 4, 4, 1);
6062 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "id", "int", 4, 4, 1);
6063 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "_class", "ecere::com::Class", 4, 4, 1);
6064 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataTypeString", "char *", 4, 4, 1);
6065 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataTypeClass", "ecere::com::Class", 4, 4, 1);
6066 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataType", "Type", 4, 4, 1);
6067 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "type", "ecere::com::DataMemberType", 4, 4, 1);
6068 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "offset", "int", 4, 4, 1);
6069 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "memberID", "int", 4, 4, 1);
6070 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "members", "ecere::sys::OldList", 20, 4, 1);
6071 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "membersAlpha", "ecere::sys::BinaryTree", 16, 4, 1);
6072 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "memberOffset", "int", 4, 4, 1);
6073 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "structAlignment", "int", 4, 4, 1);
6075 class->fixed = (unsigned int)1;
6076 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::BitMember", 0, sizeof(struct __ecereNameSpace__ecere__com__BitMember), 0, 0, 0, module, 4, 1);
6077 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6078 __ecereClass___ecereNameSpace__ecere__com__BitMember = class;
6079 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "prev", "ecere::com::BitMember", 4, 4, 1);
6080 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "next", "ecere::com::BitMember", 4, 4, 1);
6081 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "name", "char *", 4, 4, 1);
6082 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "isProperty", "bool", 4, 4, 1);
6083 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "memberAccess", "ecere::com::AccessMode", 4, 4, 1);
6084 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "id", "int", 4, 4, 1);
6085 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "_class", "ecere::com::Class", 4, 4, 1);
6086 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataTypeString", "char *", 4, 4, 1);
6087 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataTypeClass", "ecere::com::Class", 4, 4, 1);
6088 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataType", "Type", 4, 4, 1);
6089 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "type", "ecere::com::DataMemberType", 4, 4, 1);
6090 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "size", "int", 4, 4, 1);
6091 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "pos", "int", 4, 4, 1);
6092 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "mask", "uint64", 8, 8, 1);
6094 class->fixed = (unsigned int)1;
6095 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::ClassProperty", 0, sizeof(struct __ecereNameSpace__ecere__com__ClassProperty), 0, 0, 0, module, 4, 1);
6096 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6097 __ecereClass___ecereNameSpace__ecere__com__ClassProperty = class;
6098 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "name", "char *", 4, 4, 1);
6099 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "parent", "ecere::com::ClassProperty", 4, 4, 1);
6100 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "left", "ecere::com::ClassProperty", 4, 4, 1);
6101 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "right", "ecere::com::ClassProperty", 4, 4, 1);
6102 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "depth", "int", 4, 4, 1);
6103 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "Set", "void( *)(ecere::com::Class, int)", 4, 4, 1);
6104 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "Get", "int( *)(ecere::com::Class)", 4, 4, 1);
6105 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataTypeString", "char *", 4, 4, 1);
6106 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataType", "Type", 4, 4, 1);
6107 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "constant", "bool", 4, 4, 1);
6109 class->fixed = (unsigned int)1;
6110 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::DefinedExpression", 0, sizeof(struct __ecereNameSpace__ecere__com__DefinedExpression), 0, 0, 0, module, 4, 1);
6111 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6112 __ecereClass___ecereNameSpace__ecere__com__DefinedExpression = class;
6113 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "prev", "ecere::com::DefinedExpression", 4, 4, 1);
6114 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "next", "ecere::com::DefinedExpression", 4, 4, 1);
6115 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "name", "char *", 4, 4, 1);
6116 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "value", "char *", 4, 4, 1);
6117 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "nameSpace", "ecere::com::NameSpace *", 4, 4, 1);
6119 class->fixed = (unsigned int)1;
6120 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::GlobalFunction", 0, sizeof(struct __ecereNameSpace__ecere__com__GlobalFunction), 0, 0, 0, module, 4, 1);
6121 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6122 __ecereClass___ecereNameSpace__ecere__com__GlobalFunction = class;
6123 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "prev", "ecere::com::GlobalFunction", 4, 4, 1);
6124 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "next", "ecere::com::GlobalFunction", 4, 4, 1);
6125 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "name", "char *", 4, 4, 1);
6126 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "function", "int( *)()", 4, 4, 1);
6127 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "module", "ecere::com::Module", 4, 4, 1);
6128 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "nameSpace", "ecere::com::NameSpace *", 4, 4, 1);
6129 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataTypeString", "char *", 4, 4, 1);
6130 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataType", "Type", 4, 4, 1);
6131 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "symbol", "void *", 4, 4, 1);
6133 class->fixed = (unsigned int)1;
6134 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::EnumClassData", 0, sizeof(struct __ecereNameSpace__ecere__com__EnumClassData), 0, 0, 0, module, 4, 1);
6135 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6136 __ecereClass___ecereNameSpace__ecere__com__EnumClassData = class;
6137 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "values", "ecere::sys::OldList", 20, 4, 1);
6138 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "largest", "int", 4, 4, 1);
6140 class->fixed = (unsigned int)1;
6141 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::Watcher", 0, sizeof(struct __ecereNameSpace__ecere__com__Watcher), 0, 0, 0, module, 2, 1);
6142 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6143 __ecereClass___ecereNameSpace__ecere__com__Watcher = class;
6145 class->fixed = (unsigned int)1;
6146 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::MemBlock", 0, sizeof(struct __ecereNameSpace__ecere__com__MemBlock), 0, 0, 0, module, 2, 1);
6147 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6148 __ecereClass___ecereNameSpace__ecere__com__MemBlock = class;
6149 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::MemPart", 0, sizeof(struct __ecereNameSpace__ecere__com__MemPart), 0, 0, 0, module, 2, 1);
6150 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6151 __ecereClass___ecereNameSpace__ecere__com__MemPart = class;
6152 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(1, "ecere::com::BlockPool", 0, sizeof(struct __ecereNameSpace__ecere__com__BlockPool), 0, 0, 0, module, 2, 1);
6153 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6154 __ecereClass___ecereNameSpace__ecere__com__BlockPool = class;
6155 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "Add", "ecere::com::MemBlock Add()", __ecereMethod___ecereNameSpace__ecere__com__BlockPool_Add, 1);
6156 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "Expand", "bool Expand(unsigned int numBlocks)", __ecereMethod___ecereNameSpace__ecere__com__BlockPool_Expand, 1);
6157 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "Remove", "void Remove(ecere::com::MemBlock block)", __ecereMethod___ecereNameSpace__ecere__com__BlockPool_Remove, 1);
6158 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "first", "ecere::com::MemBlock", 4, 4, 1);
6159 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "last", "ecere::com::MemBlock", 4, 4, 1);
6160 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "free", "ecere::com::MemBlock", 4, 4, 1);
6161 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "blockSize", "uint", 4, 4, 1);
6162 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "blockSpace", "uint", 4, 4, 1);
6163 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "numParts", "int", 4, 4, 1);
6164 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "numBlocks", "int", 4, 4, 1);
6165 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "totalSize", "uint", 4, 4, 1);
6166 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "usedSpace", "uint", 4, 4, 1);
6167 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::log2i", "uint ecere::com::log2i(uint number)", __ecereNameSpace__ecere__com__log2i, module, 4);
6168 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::pow2i", "uint ecere::com::pow2i(uint number)", __ecereNameSpace__ecere__com__pow2i, module, 4);
6169 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::memswap", "void ecere::com::memswap(byte * a, byte * b, uint size)", __ecereNameSpace__ecere__com__memswap, module, 4);
6170 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::CheckMemory", "void ecere::com::CheckMemory(void)", __ecereNameSpace__ecere__com__CheckMemory, module, 4);
6171 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eSystem_RegisterClass", "ecere::com::Class ecere::com::eSystem_RegisterClass(ecere::com::ClassType type, char * name, char * baseName, int size, int sizeClass, bool( *)(void *), void( *)(void *), ecere::com::Module module, ecere::com::AccessMode declMode, ecere::com::AccessMode inheritanceAccess)", __ecereNameSpace__ecere__com__eSystem_RegisterClass, module, 4);
6172 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eClass_Unregister", "void ecere::com::eClass_Unregister(ecere::com::Class _class)", __ecereNameSpace__ecere__com__eClass_Unregister, module, 4);
6173 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::_strtoi64", "int64 ecere::com::_strtoi64(char * string, char * * endString, int base)", __ecereNameSpace__ecere__com___strtoi64, module, 4);
6174 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::_strtoui64", "uint64 ecere::com::_strtoui64(char * string, char * * endString, int base)", __ecereNameSpace__ecere__com___strtoui64, module, 4);
6175 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eSystem_FindClass", "ecere::com::Class ecere::com::eSystem_FindClass(ecere::com::Module module, char * name)", __ecereNameSpace__ecere__com__eSystem_FindClass, module, 4);
6176 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::DefaultFunction", "bool ecere::com::DefaultFunction(void)", __ecereNameSpace__ecere__com__DefaultFunction, module, 2);
6177 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eClass_IsDerived", "bool ecere::com::eClass_IsDerived(ecere::com::Class _class, ecere::com::Class from)", __ecereNameSpace__ecere__com__eClass_IsDerived, module, 4);
6178 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eClass_AddMethod", "ecere::com::Method ecere::com::eClass_AddMethod(ecere::com::Class _class, char * name, char * type, void * function, ecere::com::AccessMode declMode)", __ecereNameSpace__ecere__com__eClass_AddMethod, module, 4);
6179 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eClass_AddVirtualMethod", "ecere::com::Method ecere::com::eClass_AddVirtualMethod(ecere::com::Class _class, char * name, char * type, void * function, ecere::com::AccessMode declMode)", __ecereNameSpace__ecere__com__eClass_AddVirtualMethod, module, 4);
6180 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eClass_AddProperty", "ecere::com::Property ecere::com::eClass_AddProperty(ecere::com::Class _class, char * name, char * dataType, void * setStmt, void * getStmt, ecere::com::AccessMode declMode)", __ecereNameSpace__ecere__com__eClass_AddProperty, module, 4);
6181 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eClass_AddClassProperty", "ecere::com::ClassProperty ecere::com::eClass_AddClassProperty(ecere::com::Class _class, char * name, char * dataType, void * setStmt, void * getStmt)", __ecereNameSpace__ecere__com__eClass_AddClassProperty, module, 4);
6182 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eClass_FindClassProperty", "ecere::com::ClassProperty ecere::com::eClass_FindClassProperty(ecere::com::Class _class, char * name)", __ecereNameSpace__ecere__com__eClass_FindClassProperty, module, 4);
6183 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eClass_GetProperty", "int ecere::com::eClass_GetProperty(ecere::com::Class _class, char * name)", __ecereNameSpace__ecere__com__eClass_GetProperty, module, 4);
6184 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eClass_SetProperty", "void ecere::com::eClass_SetProperty(ecere::com::Class _class, char * name, int value)", __ecereNameSpace__ecere__com__eClass_SetProperty, module, 4);
6185 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eClass_FindMethod", "ecere::com::Method ecere::com::eClass_FindMethod(ecere::com::Class _class, char * name, ecere::com::Module module)", __ecereNameSpace__ecere__com__eClass_FindMethod, module, 4);
6186 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eInstance_New", "void * ecere::com::eInstance_New(ecere::com::Class _class)", __ecereNameSpace__ecere__com__eInstance_New, module, 4);
6187 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eInstance_Evolve", "void ecere::com::eInstance_Evolve(ecere::com::Instance * instancePtr, ecere::com::Class _class)", __ecereNameSpace__ecere__com__eInstance_Evolve, module, 4);
6188 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eInstance_Delete", "void ecere::com::eInstance_Delete(ecere::com::Instance instance)", __ecereNameSpace__ecere__com__eInstance_Delete, module, 4);
6189 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eClass_FindProperty", "ecere::com::Property ecere::com::eClass_FindProperty(ecere::com::Class _class, char * name, ecere::com::Module module)", __ecereNameSpace__ecere__com__eClass_FindProperty, module, 4);
6190 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eClass_FindDataMember", "ecere::com::DataMember ecere::com::eClass_FindDataMember(ecere::com::Class _class, char * name, ecere::com::Module module, ecere::com::DataMember * subMemberStack, int * subMemberStackPos)", __ecereNameSpace__ecere__com__eClass_FindDataMember, module, 4);
6191 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eClass_FindDataMemberAndOffset", "ecere::com::DataMember ecere::com::eClass_FindDataMemberAndOffset(ecere::com::Class _class, char * name, uint * offset, ecere::com::Module module, ecere::com::DataMember * subMemberStack, int * subMemberStackPos)", __ecereNameSpace__ecere__com__eClass_FindDataMemberAndOffset, module, 4);
6192 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eClass_FindDataMemberAndId", "ecere::com::DataMember ecere::com::eClass_FindDataMemberAndId(ecere::com::Class _class, char * name, int * id, ecere::com::Module module, ecere::com::DataMember * subMemberStack, int * subMemberStackPos)", __ecereNameSpace__ecere__com__eClass_FindDataMemberAndId, module, 4);
6193 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eClass_FindNextMember", "void ecere::com::eClass_FindNextMember(ecere::com::Class _class, ecere::com::Class * curClass, ecere::com::DataMember * curMember, ecere::com::DataMember * subMemberStack, int * subMemberStackPos)", __ecereNameSpace__ecere__com__eClass_FindNextMember, module, 4);
6194 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eInstance_SetMethod", "void ecere::com::eInstance_SetMethod(ecere::com::Instance instance, char * name, void * function)", __ecereNameSpace__ecere__com__eInstance_SetMethod, module, 4);
6195 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eInstance_IsDerived", "bool ecere::com::eInstance_IsDerived(ecere::com::Instance instance, ecere::com::Class from)", __ecereNameSpace__ecere__com__eInstance_IsDerived, module, 4);
6196 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eInstance_IncRef", "void ecere::com::eInstance_IncRef(ecere::com::Instance instance)", __ecereNameSpace__ecere__com__eInstance_IncRef, module, 4);
6197 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eInstance_DecRef", "void ecere::com::eInstance_DecRef(ecere::com::Instance instance)", __ecereNameSpace__ecere__com__eInstance_DecRef, module, 4);
6198 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eClass_Resize", "void ecere::com::eClass_Resize(ecere::com::Class _class, int newSize)", __ecereNameSpace__ecere__com__eClass_Resize, module, 4);
6199 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eClass_AddDataMember", "ecere::com::DataMember ecere::com::eClass_AddDataMember(ecere::com::Class _class, char * name, char * type, uint size, uint alignment, ecere::com::AccessMode declMode)", __ecereNameSpace__ecere__com__eClass_AddDataMember, module, 4);
6200 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eMember_AddDataMember", "ecere::com::DataMember ecere::com::eMember_AddDataMember(ecere::com::DataMember member, char * name, char * type, uint size, uint alignment, ecere::com::AccessMode declMode)", __ecereNameSpace__ecere__com__eMember_AddDataMember, module, 4);
6201 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eMember_New", "ecere::com::DataMember ecere::com::eMember_New(ecere::com::DataMemberType type, ecere::com::AccessMode declMode)", __ecereNameSpace__ecere__com__eMember_New, module, 4);
6202 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eMember_AddMember", "bool ecere::com::eMember_AddMember(ecere::com::DataMember addTo, ecere::com::DataMember dataMember)", __ecereNameSpace__ecere__com__eMember_AddMember, module, 4);
6203 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eClass_AddMember", "bool ecere::com::eClass_AddMember(ecere::com::Class _class, ecere::com::DataMember dataMember)", __ecereNameSpace__ecere__com__eClass_AddMember, module, 4);
6204 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eClass_AddBitMember", "ecere::com::BitMember ecere::com::eClass_AddBitMember(ecere::com::Class _class, char * name, char * type, int bitSize, int bitPos, ecere::com::AccessMode declMode)", __ecereNameSpace__ecere__com__eClass_AddBitMember, module, 4);
6205 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eModule_Load", "ecere::com::Module ecere::com::eModule_Load(ecere::com::Module fromModule, char * name, ecere::com::AccessMode importAccess)", __ecereNameSpace__ecere__com__eModule_Load, module, 4);
6206 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eModule_LoadStrict", "ecere::com::Module ecere::com::eModule_LoadStrict(ecere::com::Module fromModule, char * name, ecere::com::AccessMode importAccess)", __ecereNameSpace__ecere__com__eModule_LoadStrict, module, 4);
6207 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eModule_LoadStatic", "ecere::com::Module ecere::com::eModule_LoadStatic(ecere::com::Module fromModule, char * name, ecere::com::AccessMode importAccess, bool( *)(ecere::com::Module module), bool( *)(ecere::com::Module module))", __ecereNameSpace__ecere__com__eModule_LoadStatic, module, 4);
6208 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eModule_Unload", "void ecere::com::eModule_Unload(ecere::com::Module fromModule, ecere::com::Module module)", __ecereNameSpace__ecere__com__eModule_Unload, module, 4);
6209 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eEnum_AddFixedValue", "void ecere::com::eEnum_AddFixedValue(ecere::com::Class _class, char * string, int value)", __ecereNameSpace__ecere__com__eEnum_AddFixedValue, module, 4);
6210 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eEnum_AddValue", "int ecere::com::eEnum_AddValue(ecere::com::Class _class, char * string)", __ecereNameSpace__ecere__com__eEnum_AddValue, module, 4);
6211 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eSystem_RegisterDefine", "ecere::com::DefinedExpression ecere::com::eSystem_RegisterDefine(char * name, char * value, ecere::com::Module module, ecere::com::AccessMode declMode)", __ecereNameSpace__ecere__com__eSystem_RegisterDefine, module, 4);
6212 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eSystem_RegisterFunction", "ecere::com::GlobalFunction ecere::com::eSystem_RegisterFunction(char * name, char * type, void * func, ecere::com::Module module, ecere::com::AccessMode declMode)", __ecereNameSpace__ecere__com__eSystem_RegisterFunction, module, 4);
6213 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eSystem_FindDefine", "ecere::com::DefinedExpression ecere::com::eSystem_FindDefine(ecere::com::Module module, char * name)", __ecereNameSpace__ecere__com__eSystem_FindDefine, module, 4);
6214 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eSystem_FindFunction", "ecere::com::GlobalFunction ecere::com::eSystem_FindFunction(ecere::com::Module module, char * name)", __ecereNameSpace__ecere__com__eSystem_FindFunction, module, 4);
6215 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eSystem_Renew", "void * ecere::com::eSystem_Renew(void * memory, uint size)", __ecereNameSpace__ecere__com__eSystem_Renew, module, 4);
6216 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eSystem_Renew0", "void * ecere::com::eSystem_Renew0(void * memory, uint size)", __ecereNameSpace__ecere__com__eSystem_Renew0, module, 4);
6217 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eSystem_New", "void * ecere::com::eSystem_New(uint size)", __ecereNameSpace__ecere__com__eSystem_New, module, 4);
6218 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eSystem_New0", "void * ecere::com::eSystem_New0(uint size)", __ecereNameSpace__ecere__com__eSystem_New0, module, 4);
6219 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eSystem_Delete", "void ecere::com::eSystem_Delete(void * memory)", __ecereNameSpace__ecere__com__eSystem_Delete, module, 4);
6220 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eInstance_FireSelfWatchers", "void ecere::com::eInstance_FireSelfWatchers(ecere::com::Instance instance, ecere::com::Property _property)", __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers, module, 4);
6221 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eInstance_FireWatchers", "void ecere::com::eInstance_FireWatchers(ecere::com::Instance instance, ecere::com::Property _property)", __ecereNameSpace__ecere__com__eInstance_FireWatchers, module, 4);
6222 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eProperty_Watchable", "void ecere::com::eProperty_Watchable(ecere::com::Property _property)", __ecereNameSpace__ecere__com__eProperty_Watchable, module, 4);
6223 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eClass_DestructionWatchable", "void ecere::com::eClass_DestructionWatchable(ecere::com::Class _class)", __ecereNameSpace__ecere__com__eClass_DestructionWatchable, module, 4);
6224 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eProperty_SelfWatch", "void ecere::com::eProperty_SelfWatch(ecere::com::Class _class, char * name, void( *)(void *))", __ecereNameSpace__ecere__com__eProperty_SelfWatch, module, 4);
6225 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eInstance_Watch", "void ecere::com::eInstance_Watch(void * instance, ecere::com::Property _property, void * object, void( *)(void *, void *))", __ecereNameSpace__ecere__com__eInstance_Watch, module, 4);
6226 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eInstance_WatchDestruction", "void ecere::com::eInstance_WatchDestruction(ecere::com::Instance instance, ecere::com::Instance object, void( *)(ecere::com::Instance, ecere::com::Instance))", __ecereNameSpace__ecere__com__eInstance_WatchDestruction, module, 4);
6227 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eInstance_StopWatching", "void ecere::com::eInstance_StopWatching(ecere::com::Instance instance, ecere::com::Property _property, ecere::com::Instance object)", __ecereNameSpace__ecere__com__eInstance_StopWatching, module, 4);
6228 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eClass_GetDesigner", "subclass(ecere::com::ClassDesignerBase) ecere::com::eClass_GetDesigner(ecere::com::Class _class)", __ecereNameSpace__ecere__com__eClass_GetDesigner, module, 4);
6229 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eInstance_GetDesigner", "subclass(ecere::com::ClassDesignerBase) ecere::com::eInstance_GetDesigner(ecere::com::Instance instance)", __ecereNameSpace__ecere__com__eInstance_GetDesigner, module, 4);
6230 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::LocateModule", "bool ecere::com::LocateModule(char * name, char * fileName)", __ecereNameSpace__ecere__com__LocateModule, module, 4);
6231 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::__ecere_COM_Initialize", "ecere::com::Application ecere::com::__ecere_COM_Initialize(bool guiApp, int argc, char * argv[])", __ecereNameSpace__ecere__com____ecere_COM_Initialize, module, 4);
6232 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eClass_AddTemplateParameter", "ecere::com::ClassTemplateParameter ecere::com::eClass_AddTemplateParameter(ecere::com::Class _class, char * name, ecere::com::TemplateParameterType type, void * info, ecere::com::ClassTemplateArgument defaultArg)", __ecereNameSpace__ecere__com__eClass_AddTemplateParameter, module, 4);
6233 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eClass_DoneAddingTemplateParameters", "void ecere::com::eClass_DoneAddingTemplateParameters(ecere::com::Class base)", __ecereNameSpace__ecere__com__eClass_DoneAddingTemplateParameters, module, 4);
6234 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(4, "ecere::com::Platform", 0, 0, 0, 0, 0, module, 4, 1);
6235 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6236 __ecereClass___ecereNameSpace__ecere__com__Platform = class;
6237 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "OnGetString", 0, __ecereMethod___ecereNameSpace__ecere__com__Platform_OnGetString, 1);
6238 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "OnGetDataFromString", 0, __ecereMethod___ecereNameSpace__ecere__com__Platform_OnGetDataFromString, 1);
6239 __ecereProp___ecereNameSpace__ecere__com__Platform_char__PTR_ = __ecereNameSpace__ecere__com__eClass_AddProperty(class, 0, "char *", __ecereProp___ecereNameSpace__ecere__com__Platform_Set_char__PTR_, __ecereProp___ecereNameSpace__ecere__com__Platform_Get_char__PTR_, 1);
6240 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "unknown", 0);
6241 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "win32", 1);
6242 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "tux", 2);
6243 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "apple", 3);
6244 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::GetRuntimePlatform", "ecere::com::Platform ecere::com::GetRuntimePlatform(void)", __ecereNameSpace__ecere__com__GetRuntimePlatform, module, 4);
6245 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::ObjectInfo", 0, sizeof(struct __ecereNameSpace__ecere__com__ObjectInfo), 0, 0, 0, module, 4, 1);
6246 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6247 __ecereClass___ecereNameSpace__ecere__com__ObjectInfo = class;
6248 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "prev", "ecere::com::ObjectInfo", 4, 4, 1);
6249 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "next", "ecere::com::ObjectInfo", 4, 4, 1);
6250 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "instance", "ecere::com::Instance", 4, 4, 1);
6251 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "name", "char *", 4, 4, 1);
6252 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "instCode", "Instantiation", 4, 4, 1);
6253 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "deleted", "bool", 4, 4, 1);
6254 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "oClass", "ecere::com::ObjectInfo", 4, 4, 1);
6255 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "instances", "ecere::sys::OldList", 20, 4, 1);
6256 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "classDefinition", "ClassDefinition", 4, 4, 1);
6257 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "modified", "bool", 4, 4, 1);
6258 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(0, "ecere::com::DesignerBase", "ecere::gui::Window", sizeof(struct __ecereNameSpace__ecere__com__DesignerBase), 0, 0, 0, module, 4, 1);
6259 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6260 __ecereClass___ecereNameSpace__ecere__com__DesignerBase = class;
6261 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "FindObject", "bool FindObject(ecere::com::Instance * instance, char * string)", 0, 1);
6262 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "RenameObject", "void RenameObject(ecere::com::ObjectInfo object, char * name)", 0, 1);
6263 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "SelectObjectFromDesigner", "void SelectObjectFromDesigner(ecere::com::ObjectInfo object)", 0, 1);
6264 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "CodeAddObject", "void CodeAddObject(ecere::com::Instance instance, ecere::com::ObjectInfo * object)", 0, 1);
6265 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "SheetAddObject", "void SheetAddObject(ecere::com::ObjectInfo object)", 0, 1);
6266 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "AddToolBoxClass", "void AddToolBoxClass(ecere::com::Class _class)", 0, 1);
6267 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "AddDefaultMethod", "void AddDefaultMethod(ecere::com::Instance instance, ecere::com::Instance classInstance)", 0, 1);
6268 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "DeleteObject", "void DeleteObject(ecere::com::ObjectInfo object)", 0, 1);
6269 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "ObjectContainsCode", "bool ObjectContainsCode(ecere::com::ObjectInfo object)", 0, 1);
6270 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "ModifyCode", "void ModifyCode(void)", 0, 1);
6271 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "UpdateProperties", "void UpdateProperties(void)", 0, 1);
6272 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "classDesigner", "ecere::com::ClassDesignerBase", 4, 4, 1);
6273 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "objectClass", "char *", 4, 4, 1);
6274 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "isDragging", "bool", 4, 4, 1);
6275 __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_classDesigner = __ecereNameSpace__ecere__com__eClass_AddProperty(class, "classDesigner", "ecere::com::ClassDesignerBase", __ecereProp___ecereNameSpace__ecere__com__DesignerBase_Set_classDesigner, __ecereProp___ecereNameSpace__ecere__com__DesignerBase_Get_classDesigner, 1);
6276 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application)
6277 __ecereProp___ecereNameSpace__ecere__com__DesignerBase_classDesigner = __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_classDesigner, __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_classDesigner = (void *)0;
6278 __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_objectClass = __ecereNameSpace__ecere__com__eClass_AddProperty(class, "objectClass", "char *", __ecereProp___ecereNameSpace__ecere__com__DesignerBase_Set_objectClass, __ecereProp___ecereNameSpace__ecere__com__DesignerBase_Get_objectClass, 1);
6279 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application)
6280 __ecereProp___ecereNameSpace__ecere__com__DesignerBase_objectClass = __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_objectClass, __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_objectClass = (void *)0;
6281 __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_isDragging = __ecereNameSpace__ecere__com__eClass_AddProperty(class, "isDragging", "bool", __ecereProp___ecereNameSpace__ecere__com__DesignerBase_Set_isDragging, __ecereProp___ecereNameSpace__ecere__com__DesignerBase_Get_isDragging, 1);
6282 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application)
6283 __ecereProp___ecereNameSpace__ecere__com__DesignerBase_isDragging = __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_isDragging, __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_isDragging = (void *)0;
6284 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(0, "ecere::com::ClassDesignerBase", "ecere::gui::Window", 0, 0, 0, 0, module, 4, 1);
6285 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6286 __ecereClass___ecereNameSpace__ecere__com__ClassDesignerBase = class;
6287 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "Reset", "void Reset(void)", 0, 1);
6288 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "AddObject", "void AddObject(void)", 0, 1);
6289 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "SelectObject", "void SelectObject(ecere::com::ObjectInfo object, ecere::com::Instance control)", 0, 1);
6290 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "ListToolBoxClasses", "void ListToolBoxClasses(ecere::com::DesignerBase designer)", 0, 1);
6291 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "PrepareTestObject", "void ::PrepareTestObject(ecere::com::DesignerBase designer, ecere::com::Instance test)", 0, 1);
6292 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "CreateObject", "void ::CreateObject(ecere::com::DesignerBase designer, ecere::com::Instance instance, ecere::com::ObjectInfo object, bool isClass, ecere::com::Instance _class)", 0, 1);
6293 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "PostCreateObject", "void ::PostCreateObject(ecere::com::Instance instance, ecere::com::ObjectInfo object, bool isClass, ecere::com::Instance _class)", 0, 1);
6294 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "DroppedObject", "void ::DroppedObject(ecere::com::Instance instance, ecere::com::ObjectInfo object, bool isClass, ecere::com::Instance _class)", 0, 1);
6295 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "DestroyObject", "void ::DestroyObject(ecere::com::Instance object)", 0, 1);
6296 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "FixProperty", "void ::FixProperty(ecere::com::Property prop, ecere::com::Instance object)", 0, 1);
6297 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "CreateNew", "void ::CreateNew(EditBox editBox, Size clientSize, char * name, char * inherit)", 0, 1);
6298 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::SetActiveDesigner", "void ecere::com::SetActiveDesigner(ecere::com::DesignerBase designer)", __ecereNameSpace__ecere__com__SetActiveDesigner, module, 4);
6299 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::GetActiveDesigner", "ecere::com::DesignerBase ecere::com::GetActiveDesigner(void)", __ecereNameSpace__ecere__com__GetActiveDesigner, module, 4);
6300 __ecereNameSpace__ecere__com__eSystem_RegisterDefine("ecere::sys::LEAD_OFFSET", "0xD800 - (0x10000 >> 10)", module, 2);
6301 __ecereNameSpace__ecere__com__eSystem_RegisterDefine("ecere::sys::SURROGATE_OFFSET", "0x10000 - (0xD800 << 10) - 0xDC00", module, 2);
6302 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::UTF8Validate", "bool ecere::sys::UTF8Validate(char * source)", __ecereNameSpace__ecere__sys__UTF8Validate, module, 4);
6303 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::ISO8859_1toUTF8", "int ecere::sys::ISO8859_1toUTF8(char * source, char * dest, int max)", __ecereNameSpace__ecere__sys__ISO8859_1toUTF8, module, 4);
6304 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::UTF16toUTF8", "char * ecere::sys::UTF16toUTF8(uint16 * source)", __ecereNameSpace__ecere__sys__UTF16toUTF8, module, 4);
6305 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::UTF16toUTF8Buffer", "int ecere::sys::UTF16toUTF8Buffer(uint16 * source, byte * dest, int max)", __ecereNameSpace__ecere__sys__UTF16toUTF8Buffer, module, 4);
6306 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::UTF8GetChar", "ecere::com::unichar ecere::sys::UTF8GetChar(char * string, int * numBytes)", __ecereNameSpace__ecere__sys__UTF8GetChar, module, 4);
6307 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::UTF8toUTF16Buffer", "int ecere::sys::UTF8toUTF16Buffer(char * source, uint16 * dest, int max)", __ecereNameSpace__ecere__sys__UTF8toUTF16Buffer, module, 4);
6308 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::UTF32toUTF8Len", "int ecere::sys::UTF32toUTF8Len(ecere::com::unichar * source, int count, byte * dest, int max)", __ecereNameSpace__ecere__sys__UTF32toUTF8Len, module, 4);
6309 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::UTF8toUTF16", "uint16 * ecere::sys::UTF8toUTF16(char * source, int * wordCount)", __ecereNameSpace__ecere__sys__UTF8toUTF16, module, 4);
6312 void __ecereUnregisterModule_instance(struct __ecereNameSpace__ecere__com__Instance * module)
6315 __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_classDesigner = (void *)0;
6316 __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_objectClass = (void *)0;
6317 __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_isDragging = (void *)0;