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
25 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__BTNode;
27 struct __ecereNameSpace__ecere__sys__BTNode;
29 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__BinaryTree;
31 struct __ecereNameSpace__ecere__sys__BinaryTree
33 struct __ecereNameSpace__ecere__sys__BTNode * root;
35 int (* CompareKey)(struct __ecereNameSpace__ecere__sys__BinaryTree * tree, unsigned int a, unsigned int b);
36 void (* FreeKey)(void * key);
39 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__OldList;
41 struct __ecereNameSpace__ecere__sys__OldList
50 struct __ecereNameSpace__ecere__com__Class
52 struct __ecereNameSpace__ecere__com__Class * prev, * next;
54 int offset, structSize;
57 int (* Constructor)(struct __ecereNameSpace__ecere__com__Instance *);
58 void (* Destructor)(struct __ecereNameSpace__ecere__com__Instance *);
59 int offsetClass, sizeClass;
60 struct __ecereNameSpace__ecere__com__Class * base;
61 struct __ecereNameSpace__ecere__sys__BinaryTree methods;
62 struct __ecereNameSpace__ecere__sys__BinaryTree members;
63 struct __ecereNameSpace__ecere__sys__BinaryTree prop;
64 struct __ecereNameSpace__ecere__sys__OldList membersAndProperties;
65 struct __ecereNameSpace__ecere__sys__BinaryTree classProperties;
66 struct __ecereNameSpace__ecere__sys__OldList derivatives;
67 int memberID, startMemberID;
69 struct __ecereNameSpace__ecere__com__Instance * module;
70 struct __ecereNameSpace__ecere__com__NameSpace * nameSpace;
71 char * dataTypeString;
72 struct __ecereNameSpace__ecere__com__Instance * dataType;
75 void (* Initialize)();
77 struct __ecereNameSpace__ecere__sys__OldList selfWatchers;
79 unsigned int noExpansion;
80 char * defaultProperty;
81 unsigned int comRedefinition;
83 unsigned int isRemote;
84 unsigned int internalDecl;
86 unsigned int computeSize;
88 int destructionWatchOffset;
90 struct __ecereNameSpace__ecere__sys__OldList delayedCPValues;
91 int inheritanceAccess;
94 struct __ecereNameSpace__ecere__sys__OldList conversions;
95 struct __ecereNameSpace__ecere__sys__OldList templateParams;
96 struct __ecereNameSpace__ecere__com__ClassTemplateArgument * templateArgs;
97 struct __ecereNameSpace__ecere__com__Class * templateClass;
98 struct __ecereNameSpace__ecere__sys__OldList templatized;
102 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Class;
104 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Instance;
106 struct __ecereNameSpace__ecere__com__Instance
109 struct __ecereNameSpace__ecere__com__Class * _class;
113 struct __ecereNameSpace__ecere__com__Property
115 struct __ecereNameSpace__ecere__com__Property * prev, * next;
117 unsigned int isProperty;
120 struct __ecereNameSpace__ecere__com__Class * _class;
121 char * dataTypeString;
122 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
123 struct __ecereNameSpace__ecere__com__Instance * dataType;
126 unsigned int (* IsSet)();
130 unsigned int conversion;
131 unsigned int watcherOffset;
133 unsigned int compiled;
134 unsigned int selfWatchable, isWatchable;
137 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Property;
139 struct __ecereNameSpace__ecere__com__DataMember
141 struct __ecereNameSpace__ecere__com__DataMember * prev, * next;
143 unsigned int isProperty;
146 struct __ecereNameSpace__ecere__com__Class * _class;
147 char * dataTypeString;
148 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
149 struct __ecereNameSpace__ecere__com__Instance * dataType;
153 struct __ecereNameSpace__ecere__sys__OldList members;
154 struct __ecereNameSpace__ecere__sys__BinaryTree membersAlpha;
159 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__DataMember;
161 struct __ecereNameSpace__ecere__com__Method
164 struct __ecereNameSpace__ecere__com__Method * parent, * left, * right;
169 struct __ecereNameSpace__ecere__com__Class * _class;
171 char * dataTypeString;
172 struct __ecereNameSpace__ecere__com__Instance * dataType;
176 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Method;
178 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__SerialBuffer;
180 struct __ecereNameSpace__ecere__com__SerialBuffer
182 unsigned char * _buffer;
188 struct __ecereNameSpace__ecere__com__DataValue
206 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__DataValue;
208 struct __ecereNameSpace__ecere__com__ClassTemplateArgument
214 char * dataTypeString;
215 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
217 struct __ecereNameSpace__ecere__com__DataValue expression;
223 struct __ecereNameSpace__ecere__com__DataMember * member;
224 struct __ecereNameSpace__ecere__com__Property * prop;
225 struct __ecereNameSpace__ecere__com__Method * method;
231 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__ClassTemplateArgument;
233 typedef unsigned int size_t;
235 void exit(int status);
237 void * calloc(size_t nmemb, size_t size);
239 void free(void * ptr);
241 void * malloc(size_t size);
243 void * realloc(void * ptr, size_t size);
245 long int strtol(const char * nptr, char ** endptr, int base);
247 long long int strtoll(const char * nptr, char ** endptr, int base);
249 unsigned long long int strtoull(const char * nptr, char ** endptr, int base);
251 typedef __builtin_va_list __gnuc_va_list;
253 typedef __gnuc_va_list va_list;
257 FILE * bsl_stdin(void);
259 FILE * bsl_stdout(void);
261 FILE * bsl_stderr(void);
263 char * fgets(char * s, int size, FILE * stream);
265 FILE * fopen(const char * path, const char * mode);
267 int fclose(FILE * fp);
269 int fflush(FILE * stream);
271 int fgetc(FILE * stream);
273 int fprintf(FILE * stream, const char * format, ...);
275 int fputc(int c, FILE * stream);
277 size_t fread(void * ptr, size_t size, size_t nmemb, FILE * stream);
279 size_t fwrite(const void * ptr, size_t size, size_t nmemb, FILE * stream);
281 int fseek(FILE * stream, long offset, int whence);
283 long ftell(FILE * stream);
285 int feof(FILE * stream);
287 int ferror(FILE * stream);
289 int fileno(FILE * stream);
292 struct __ecereNameSpace__ecere__com__Class * __ecereNameSpace__ecere__com__eSystem_FindClass(struct __ecereNameSpace__ecere__com__Instance * module, char * name);
294 void * __ecereNameSpace__ecere__com__eSystem_Renew(void * memory, unsigned int size);
296 void * __ecereNameSpace__ecere__com__eSystem_Renew0(void * memory, unsigned int size);
298 void * __ecereNameSpace__ecere__com__eSystem_New(unsigned int size);
300 void * __ecereNameSpace__ecere__com__eSystem_New0(unsigned int size);
302 void __ecereNameSpace__ecere__com__eSystem_Delete(void * memory);
304 void * __ecereNameSpace__ecere__com__eInstance_New(struct __ecereNameSpace__ecere__com__Class * _class);
306 extern int __ecereVMethodID_class_OnGetDataFromString;
308 unsigned int Instance_LocateModule(char * name, char * fileName);
310 void Instance_COM_Initialize(int argc, char ** argv, char ** parsedCommand, int * argcPtr, char *** argvPtr);
312 void * Instance_Module_Load(char * name, void ** Load, void ** Unload);
314 void Instance_Module_Free(void * library);
316 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__unichar;
318 int __ecereNameSpace__ecere__sys__UTF32toUTF8Len(unsigned int * source, int count, unsigned char * dest, int max);
320 char * __ecereMethod___ecereNameSpace__ecere__com__unichar_OnGetString(struct __ecereNameSpace__ecere__com__Class * class, unsigned int * this, char * tempString, void * fieldData, unsigned int * needClass)
322 __ecereNameSpace__ecere__sys__UTF32toUTF8Len(&(*(this)), 1, tempString, 5);
326 unsigned int __ecereNameSpace__ecere__sys__UTF8GetChar(char * string, int * numBytes);
328 unsigned int __ecereMethod___ecereNameSpace__ecere__com__unichar_OnGetDataFromString(struct __ecereNameSpace__ecere__com__Class * class, unsigned int * this, char * string)
332 (*(this)) = __ecereNameSpace__ecere__sys__UTF8GetChar(string, &nb);
336 void __ecereNameSpace__ecere__com__eInstance_FireWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property);
338 void __ecereNameSpace__ecere__com__MemoryGuard_PushLoc(char * loc)
342 void __ecereNameSpace__ecere__com__MemoryGuard_PopLoc()
346 extern unsigned int __attribute__((__stdcall__)) __ecereDll_Load_ecere(struct __ecereNameSpace__ecere__com__Instance * module);
348 extern void __attribute__((__stdcall__)) __ecereDll_Unload_ecere(struct __ecereNameSpace__ecere__com__Instance * module);
350 struct __ecereNameSpace__ecere__com__BTNamedLink
353 struct __ecereNameSpace__ecere__com__BTNamedLink * parent, * left, * right;
358 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__BTNamedLink;
360 struct __ecereNameSpace__ecere__com__SelfWatcher
362 struct __ecereNameSpace__ecere__com__SelfWatcher * prev, * next;
363 void (* callback)(struct __ecereNameSpace__ecere__com__Instance *);
364 struct __ecereNameSpace__ecere__com__Property * _property;
367 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__SelfWatcher;
369 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__AccessMode;
371 struct __ecereNameSpace__ecere__com__SubModule
373 struct __ecereNameSpace__ecere__com__SubModule * prev, * next;
374 struct __ecereNameSpace__ecere__com__Instance * module;
378 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__SubModule;
380 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__DataMemberType;
382 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__ClassType;
384 static struct __ecereNameSpace__ecere__com__Property * __ecereProp___ecereNameSpace__ecere__com__Class_char__PTR_, * __ecerePropM___ecereNameSpace__ecere__com__Class_char__PTR_;
386 char * __ecereProp___ecereNameSpace__ecere__com__Class_Get_char__PTR_(struct __ecereNameSpace__ecere__com__Class * this)
391 extern struct __ecereNameSpace__ecere__com__Instance * __thisModule;
393 struct __ecereNameSpace__ecere__com__Class * __ecereProp___ecereNameSpace__ecere__com__Class_Set_char__PTR_(char * value)
395 struct __ecereNameSpace__ecere__com__Class * theClass = __ecereNameSpace__ecere__com__eSystem_FindClass(__thisModule, value);
400 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)
405 struct __ecereNameSpace__ecere__com__NameSpace
408 struct __ecereNameSpace__ecere__com__NameSpace * btParent, * left, * right;
410 struct __ecereNameSpace__ecere__com__NameSpace * parent;
411 struct __ecereNameSpace__ecere__sys__BinaryTree nameSpaces;
412 struct __ecereNameSpace__ecere__sys__BinaryTree classes;
413 struct __ecereNameSpace__ecere__sys__BinaryTree defines;
414 struct __ecereNameSpace__ecere__sys__BinaryTree functions;
417 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__NameSpace;
419 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Module;
421 struct __ecereNameSpace__ecere__com__Module
423 struct __ecereNameSpace__ecere__com__Instance * application;
424 struct __ecereNameSpace__ecere__sys__OldList classes;
425 struct __ecereNameSpace__ecere__sys__OldList defines;
426 struct __ecereNameSpace__ecere__sys__OldList functions;
427 struct __ecereNameSpace__ecere__sys__OldList modules;
428 struct __ecereNameSpace__ecere__com__Instance * prev;
429 struct __ecereNameSpace__ecere__com__Instance * next;
434 struct __ecereNameSpace__ecere__com__NameSpace privateNameSpace;
435 struct __ecereNameSpace__ecere__com__NameSpace publicNameSpace;
438 unsigned int __ecereMethod___ecereNameSpace__ecere__com__Class_OnGetDataFromString(struct __ecereNameSpace__ecere__com__Class * class, struct __ecereNameSpace__ecere__com__Class ** this, char * string)
440 struct __ecereNameSpace__ecere__com__Class * theClass;
442 theClass = __ecereNameSpace__ecere__com__eSystem_FindClass(__thisModule, string);
444 theClass = __ecereNameSpace__ecere__com__eSystem_FindClass(((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application, string);
445 (*(this)) = (void *)theClass;
446 return theClass != (((void *)0));
449 void __ecereMethod___ecereNameSpace__ecere__com__IOChannel_Serialize(struct __ecereNameSpace__ecere__com__Instance * this, struct __ecereNameSpace__ecere__com__Class * class, void * data);
451 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_char__PTR_;
453 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)
455 __ecereMethod___ecereNameSpace__ecere__com__IOChannel_Serialize(channel, __ecereClass_char__PTR_, this->fullName);
458 void __ecereMethod___ecereNameSpace__ecere__com__Class_OnFree(struct __ecereNameSpace__ecere__com__Class * class, struct __ecereNameSpace__ecere__com__Class * this)
462 void __ecereMethod___ecereNameSpace__ecere__com__IOChannel_Unserialize(struct __ecereNameSpace__ecere__com__Instance * this, struct __ecereNameSpace__ecere__com__Class * class, void * * data);
464 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_String;
466 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)
468 struct __ecereNameSpace__ecere__com__Class * theClass;
471 __ecereMethod___ecereNameSpace__ecere__com__IOChannel_Unserialize(channel, __ecereClass_String, &string);
472 theClass = __ecereNameSpace__ecere__com__eSystem_FindClass(__thisModule, string);
474 theClass = __ecereNameSpace__ecere__com__eSystem_FindClass(((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application, string);
475 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
476 (*(this)) = (void *)theClass;
479 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__TemplateParameterType;
481 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__TemplateMemberType;
483 struct __ecereNameSpace__ecere__com__ClassTemplateParameter
485 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * prev, * next;
490 char * dataTypeString;
493 struct __ecereNameSpace__ecere__com__ClassTemplateArgument defaultArg;
497 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__ClassTemplateParameter;
499 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__MethodType;
501 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__ImportType;
503 struct __ecereNameSpace__ecere__com__BitMember
505 struct __ecereNameSpace__ecere__com__BitMember * prev, * next;
507 unsigned int isProperty;
510 struct __ecereNameSpace__ecere__com__Class * _class;
511 char * dataTypeString;
512 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
513 struct __ecereNameSpace__ecere__com__Instance * dataType;
520 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__BitMember;
522 struct __ecereNameSpace__ecere__com__ClassProperty
525 struct __ecereNameSpace__ecere__com__ClassProperty * parent, * left, * right;
527 void (* Set)(struct __ecereNameSpace__ecere__com__Class *, int);
528 int (* Get)(struct __ecereNameSpace__ecere__com__Class *);
529 char * dataTypeString;
530 struct __ecereNameSpace__ecere__com__Instance * dataType;
531 unsigned int constant;
534 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__ClassProperty;
536 struct __ecereNameSpace__ecere__com__DefinedExpression
538 struct __ecereNameSpace__ecere__com__DefinedExpression * prev, * next;
541 struct __ecereNameSpace__ecere__com__NameSpace * nameSpace;
544 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__DefinedExpression;
546 struct __ecereNameSpace__ecere__com__GlobalFunction
548 struct __ecereNameSpace__ecere__com__GlobalFunction * prev, * next;
551 struct __ecereNameSpace__ecere__com__Instance * module;
552 struct __ecereNameSpace__ecere__com__NameSpace * nameSpace;
553 char * dataTypeString;
554 struct __ecereNameSpace__ecere__com__Instance * dataType;
558 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__GlobalFunction;
560 struct __ecereNameSpace__ecere__com__EnumClassData
562 struct __ecereNameSpace__ecere__sys__OldList values;
566 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__EnumClassData;
568 struct __ecereNameSpace__ecere__com__Watcher
570 struct __ecereNameSpace__ecere__com__Watcher * prev, * next;
571 void (* callback)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__Instance *);
572 struct __ecereNameSpace__ecere__com__Instance * object;
575 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Watcher;
577 static unsigned int __ecereNameSpace__ecere__com__TOTAL_MEM = 0;
579 static unsigned int __ecereNameSpace__ecere__com__OUTSIDE_MEM = 0;
581 struct __ecereNameSpace__ecere__com__MemBlock
583 struct __ecereNameSpace__ecere__com__MemBlock * prev, * next;
584 struct __ecereNameSpace__ecere__com__MemPart * part;
588 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__MemBlock;
590 struct __ecereNameSpace__ecere__com__MemPart
595 struct __ecereNameSpace__ecere__com__BlockPool * pool;
598 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__MemPart;
600 static int __ecereNameSpace__ecere__com__power15[] =
602 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
605 struct __ecereNameSpace__ecere__com__BlockPool
607 struct __ecereNameSpace__ecere__com__MemBlock * first, * last;
608 struct __ecereNameSpace__ecere__com__MemBlock * free;
609 unsigned int blockSize;
610 unsigned int blockSpace;
613 unsigned int totalSize;
614 unsigned int usedSpace;
617 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__BlockPool;
619 unsigned int __ecereMethod___ecereNameSpace__ecere__com__BlockPool_Expand(struct __ecereNameSpace__ecere__com__BlockPool * this, unsigned int numBlocks)
621 unsigned char * memory = malloc(numBlocks * this->blockSpace);
623 __ecereNameSpace__ecere__com__TOTAL_MEM += numBlocks * this->blockSpace;
627 struct __ecereNameSpace__ecere__com__MemBlock * block = (struct __ecereNameSpace__ecere__com__MemBlock *)memory;
628 struct __ecereNameSpace__ecere__com__MemPart * part = calloc(1, sizeof(struct __ecereNameSpace__ecere__com__MemPart));
630 __ecereNameSpace__ecere__com__TOTAL_MEM += sizeof(struct __ecereNameSpace__ecere__com__MemPart);
632 for(c = 0; c < numBlocks - 1; c++)
635 block->prev = (((void *)0));
636 block->next = (struct __ecereNameSpace__ecere__com__MemBlock *)((unsigned char *)block + this->blockSpace);
639 part->blocksUsed = 0;
641 part->memory = memory;
642 part->size = numBlocks;
644 block->prev = (((void *)0));
645 block->next = (((void *)0));
646 this->totalSize += numBlocks;
653 struct __ecereNameSpace__ecere__com__MemBlock * __ecereMethod___ecereNameSpace__ecere__com__BlockPool_Add(struct __ecereNameSpace__ecere__com__BlockPool * this)
656 struct __ecereNameSpace__ecere__com__MemBlock * block = (((void *)0));
659 __ecereMethod___ecereNameSpace__ecere__com__BlockPool_Expand(this, (__simpleStruct0 = this->numBlocks / 2, (1 > __simpleStruct0) ? 1 : __simpleStruct0));
663 block->prev = this->last;
665 block->prev->next = block;
669 this->free = block->next;
670 block->next = (((void *)0));
671 block->part->blocksUsed++;
677 void __ecereMethod___ecereNameSpace__ecere__com__BlockPool_Remove(struct __ecereNameSpace__ecere__com__BlockPool * this, struct __ecereNameSpace__ecere__com__MemBlock * block)
680 block->prev->next = block->next;
682 block->next->prev = block->prev;
683 if(this->first == block)
684 this->first = block->next;
685 if(this->last == block)
686 this->last = block->prev;
687 block->next = this->free;
689 block->part->blocksUsed--;
691 (*block->part->pool).usedSpace -= block->size;
692 if(!block->part->blocksUsed && this->numBlocks && this->totalSize > this->numBlocks + this->numBlocks / 2)
694 struct __ecereNameSpace__ecere__com__MemBlock * next = this->free, * prev = (((void *)0));
695 struct __ecereNameSpace__ecere__com__MemPart * part = block->part;
697 this->free = (((void *)0));
698 this->totalSize -= part->size;
701 if(next->part != part)
713 prev->next = (((void *)0));
714 __ecereNameSpace__ecere__com__TOTAL_MEM -= part->size * this->blockSpace;
715 __ecereNameSpace__ecere__com__TOTAL_MEM -= sizeof(struct __ecereNameSpace__ecere__com__MemPart);
722 static struct __ecereNameSpace__ecere__com__BlockPool * __ecereNameSpace__ecere__com__pools;
724 static unsigned int __ecereNameSpace__ecere__com__PosFibonacci(unsigned int number)
727 unsigned int last = 1, prev = 0;
728 unsigned int current = 1;
730 for(pos = 0; ; pos++)
735 if(current >= number)
741 static unsigned int __ecereNameSpace__ecere__com__NthFibonacci(unsigned int number)
744 unsigned int last = 1, prev = 0;
745 unsigned int current = 1;
747 for(pos = 0; pos <= number; pos++)
756 static unsigned int __ecereNameSpace__ecere__com__NextFibonacci(unsigned int number)
759 unsigned int last = 1, prev = 0;
760 unsigned int current = 1;
762 for(pos = 0; ; pos++)
767 if(current >= number)
772 static unsigned int __ecereNameSpace__ecere__com__log1_5i(unsigned int number)
777 for(pos = 0; pos < 31; pos++)
779 if(current >= number)
781 current = current * 3 / 2;
788 static unsigned int __ecereNameSpace__ecere__com__pow1_5(unsigned int number)
793 for(pos = 0; pos < number; pos++)
795 current = current * 3 / 2;
799 return (unsigned int)current;
802 static unsigned int __ecereNameSpace__ecere__com__pow1_5i(unsigned int number)
807 for(pos = 0; pos < 31; pos++)
809 if(current >= number)
810 return (unsigned int)current;
811 current = current * 3 / 2;
815 return (unsigned int)current;
818 unsigned int __ecereNameSpace__ecere__com__log2i(unsigned int number)
822 for(power = 0; power < 32; power++)
823 if((1L << power) >= number)
828 unsigned int __ecereNameSpace__ecere__com__pow2i(unsigned int number)
830 return 1 << __ecereNameSpace__ecere__com__log2i(number);
833 static unsigned int __ecereNameSpace__ecere__com__memoryInitialized = 0x0;
835 static void __ecereNameSpace__ecere__com__InitMemory()
839 __ecereNameSpace__ecere__com__memoryInitialized = 0x1;
840 __ecereNameSpace__ecere__com__pools = calloc(1, sizeof(struct __ecereNameSpace__ecere__com__BlockPool) * 31);
841 for(c = 0; c < 31; c++)
845 __ecereNameSpace__ecere__com__pools[c].blockSize = __ecereNameSpace__ecere__com__pow1_5(c);
846 if(__ecereNameSpace__ecere__com__pools[c].blockSize % 4)
847 __ecereNameSpace__ecere__com__pools[c].blockSize += 4 - (__ecereNameSpace__ecere__com__pools[c].blockSize % 4);
848 __ecereNameSpace__ecere__com__pools[c].blockSpace = __ecereNameSpace__ecere__com__pools[c].blockSize;
849 __ecereNameSpace__ecere__com__pools[c].blockSpace += sizeof(struct __ecereNameSpace__ecere__com__MemBlock);
850 expansion = (__ecereNameSpace__ecere__com__pools[c].blockSize < 128) ? 1024 : (131072 / __ecereNameSpace__ecere__com__pools[c].blockSize);
852 __ecereMethod___ecereNameSpace__ecere__com__BlockPool_Expand(&__ecereNameSpace__ecere__com__pools[c], ((1 > expansion) ? 1 : expansion));
856 static void * __ecereNameSpace__ecere__com___mymalloc(unsigned int size)
858 struct __ecereNameSpace__ecere__com__MemBlock * block = (((void *)0));
862 unsigned int p = __ecereNameSpace__ecere__com__log1_5i(size);
864 if(!__ecereNameSpace__ecere__com__memoryInitialized)
865 __ecereNameSpace__ecere__com__InitMemory();
868 block = __ecereMethod___ecereNameSpace__ecere__com__BlockPool_Add(&__ecereNameSpace__ecere__com__pools[p]);
872 __ecereNameSpace__ecere__com__pools[p].usedSpace += size;
877 block = malloc(sizeof(struct __ecereNameSpace__ecere__com__MemBlock) + size);
880 __ecereNameSpace__ecere__com__TOTAL_MEM += sizeof(struct __ecereNameSpace__ecere__com__MemBlock) + size;
881 __ecereNameSpace__ecere__com__OUTSIDE_MEM += sizeof(struct __ecereNameSpace__ecere__com__MemBlock) + size;
882 block->part = (((void *)0));
886 return block ? ((struct __ecereNameSpace__ecere__com__MemBlock *)block + 1) : (((void *)0));
889 extern void memset(void * area, unsigned char value, unsigned int count);
891 static void * __ecereNameSpace__ecere__com___mycalloc(int n, unsigned int size)
893 void * pointer = __ecereNameSpace__ecere__com___mymalloc(size);
896 memset(pointer, (unsigned char)0, size);
900 static void __ecereNameSpace__ecere__com___myfree(void * pointer)
904 struct __ecereNameSpace__ecere__com__MemBlock * block = (struct __ecereNameSpace__ecere__com__MemBlock *)((unsigned char *)pointer - sizeof(struct __ecereNameSpace__ecere__com__MemBlock));
905 struct __ecereNameSpace__ecere__com__MemPart * part = block->part;
906 struct __ecereNameSpace__ecere__com__BlockPool * pool = part ? part->pool : (((void *)0));
909 __ecereMethod___ecereNameSpace__ecere__com__BlockPool_Remove((&*pool), block);
912 __ecereNameSpace__ecere__com__TOTAL_MEM -= sizeof(struct __ecereNameSpace__ecere__com__MemBlock) + block->size;
913 __ecereNameSpace__ecere__com__OUTSIDE_MEM -= sizeof(struct __ecereNameSpace__ecere__com__MemBlock) + block->size;
919 extern void * memcpy(void * , const void * , unsigned int size);
921 static void * __ecereNameSpace__ecere__com___myrealloc(void * pointer, unsigned int size)
923 struct __ecereNameSpace__ecere__com__MemBlock * block = pointer ? ((struct __ecereNameSpace__ecere__com__MemBlock *)((unsigned char *)pointer - sizeof(struct __ecereNameSpace__ecere__com__MemBlock))) : (((void *)0));
924 void * newPointer = (((void *)0));
925 struct __ecereNameSpace__ecere__com__MemPart * part = block ? block->part : (((void *)0));
926 struct __ecereNameSpace__ecere__com__BlockPool * pool = part ? part->pool : (((void *)0));
932 if(__ecereNameSpace__ecere__com__pow1_5i(size) == (*pool).blockSize)
934 newPointer = pointer;
935 (*pool).usedSpace += size - block->size;
941 struct __ecereNameSpace__ecere__com__MemBlock * newBlock = realloc(block, sizeof(struct __ecereNameSpace__ecere__com__MemBlock) + size);
945 __ecereNameSpace__ecere__com__TOTAL_MEM += size - newBlock->size;
946 __ecereNameSpace__ecere__com__OUTSIDE_MEM += size - newBlock->size;
947 newPointer = ((struct __ecereNameSpace__ecere__com__MemBlock *)newBlock + 1);
953 newPointer = __ecereNameSpace__ecere__com___mymalloc(size);
954 if(pointer && newPointer)
956 unsigned int __simpleStruct0;
958 memcpy(newPointer, pointer, (__simpleStruct0 = block->size, (size < __simpleStruct0) ? size : __simpleStruct0));
959 __ecereNameSpace__ecere__com___myfree(pointer);
965 static void * __ecereNameSpace__ecere__com___mycrealloc(void * pointer, unsigned int size)
967 struct __ecereNameSpace__ecere__com__MemBlock * block = pointer ? ((struct __ecereNameSpace__ecere__com__MemBlock *)((unsigned char *)pointer - sizeof(struct __ecereNameSpace__ecere__com__MemBlock))) : (((void *)0));
968 void * newPointer = (((void *)0));
969 struct __ecereNameSpace__ecere__com__MemPart * part = block ? block->part : (((void *)0));
970 struct __ecereNameSpace__ecere__com__BlockPool * pool = part ? part->pool : (((void *)0));
976 if(__ecereNameSpace__ecere__com__pow1_5i(size) == (*pool).blockSize)
978 int extra = size - block->size;
980 newPointer = pointer;
981 (*pool).usedSpace += extra;
983 memset((unsigned char *)pointer + block->size, (unsigned char)0, extra);
989 struct __ecereNameSpace__ecere__com__MemBlock * newBlock = realloc(block, sizeof(struct __ecereNameSpace__ecere__com__MemBlock) + size);
993 int extra = size - newBlock->size;
995 __ecereNameSpace__ecere__com__TOTAL_MEM += extra;
996 __ecereNameSpace__ecere__com__OUTSIDE_MEM += extra;
997 newPointer = ((struct __ecereNameSpace__ecere__com__MemBlock *)newBlock + 1);
999 memset((unsigned char *)newPointer + newBlock->size, (unsigned char)0, extra);
1000 newBlock->size = size;
1006 newPointer = __ecereNameSpace__ecere__com___mymalloc(size);
1011 unsigned int __simpleStruct0;
1013 memcpy(newPointer, pointer, (__simpleStruct0 = block->size, (size < __simpleStruct0) ? size : __simpleStruct0));
1014 if(size > block->size)
1015 memset((unsigned char *)newPointer + block->size, (unsigned char)0, size - block->size);
1016 __ecereNameSpace__ecere__com___myfree(pointer);
1019 memset((unsigned char *)newPointer, (unsigned char)0, size);
1025 static void * __ecereNameSpace__ecere__com___malloc(unsigned int size)
1029 pointer = __ecereNameSpace__ecere__com___mymalloc(size + 2 * 0);
1030 return (unsigned char *)pointer + 0;
1033 static void * __ecereNameSpace__ecere__com___calloc(int n, unsigned int size)
1037 pointer = __ecereNameSpace__ecere__com___mycalloc(n, size + 2 * 0);
1038 return (unsigned char *)pointer + 0;
1041 static void __ecereNameSpace__ecere__com___free(void * pointer);
1043 static void * __ecereNameSpace__ecere__com___realloc(void * pointer, unsigned int size)
1047 __ecereNameSpace__ecere__com___free(pointer);
1048 return (((void *)0));
1050 pointer = __ecereNameSpace__ecere__com___myrealloc(pointer, size);
1051 return (unsigned char *)pointer + 0;
1054 static void * __ecereNameSpace__ecere__com___crealloc(void * pointer, unsigned int size)
1057 return (((void *)0));
1058 pointer = __ecereNameSpace__ecere__com___mycrealloc(pointer, size);
1059 return (unsigned char *)pointer + 0;
1062 static void __ecereNameSpace__ecere__com___free(void * pointer)
1066 __ecereNameSpace__ecere__com___myfree(pointer);
1070 void __ecereNameSpace__ecere__com__memswap(unsigned char * a, unsigned char * b, unsigned int size)
1073 unsigned char buffer[1024];
1075 for(c = 0; c < size; )
1077 int s = sizeof buffer;
1081 memcpy(buffer, a + c, s);
1082 memcpy(a + c, b + c, s);
1083 memcpy(b + c, buffer, s);
1088 void __ecereNameSpace__ecere__com__CheckMemory()
1092 static void __ecereNameSpace__ecere__com__ComputeClassParameters(struct __ecereNameSpace__ecere__com__Class * templatedClass, char * templateParams, struct __ecereNameSpace__ecere__com__Instance * findModule);
1094 extern char * strchr(char * , int);
1096 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__OldLink;
1098 struct __ecereNameSpace__ecere__sys__OldLink
1100 struct __ecereNameSpace__ecere__sys__OldLink * prev;
1101 struct __ecereNameSpace__ecere__sys__OldLink * next;
1105 extern char * __ecereNameSpace__ecere__sys__CopyString(char * string);
1107 extern void * memmove(void * , const void * , unsigned int size);
1109 static void __ecereNameSpace__ecere__com__SetDelayedCPValues(struct __ecereNameSpace__ecere__com__Class * _class, struct __ecereNameSpace__ecere__com__ClassProperty * _property);
1111 struct __ecereNameSpace__ecere__sys__BTNode * __ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(struct __ecereNameSpace__ecere__sys__BinaryTree * this);
1113 extern struct __ecereNameSpace__ecere__com__Property ** __ecereProp___ecereNameSpace__ecere__sys__BinaryTree_first;
1115 struct __ecereNameSpace__ecere__sys__BTNode * __ecereProp___ecereNameSpace__ecere__sys__BTNode_Get_next(struct __ecereNameSpace__ecere__sys__BTNode * this);
1117 extern struct __ecereNameSpace__ecere__com__Property ** __ecereProp___ecereNameSpace__ecere__sys__BTNode_next;
1119 struct __ecereNameSpace__ecere__sys__BTNode * __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(struct __ecereNameSpace__ecere__sys__BinaryTree * this, char * key);
1121 void __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(struct __ecereNameSpace__ecere__sys__BinaryTree * this, struct __ecereNameSpace__ecere__sys__BTNode * node);
1123 void __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(struct __ecereNameSpace__ecere__sys__OldList * this, void * item);
1125 static void __ecereNameSpace__ecere__com__FixDerivativesBase(struct __ecereNameSpace__ecere__com__Class * base, struct __ecereNameSpace__ecere__com__Class * mod)
1127 struct __ecereNameSpace__ecere__sys__OldLink * derivative;
1128 struct __ecereNameSpace__ecere__sys__OldLink * templateLink;
1130 __ecereNameSpace__ecere__com__ComputeClassParameters(base, strchr(base->name, '<'), (((void *)0)));
1131 for(derivative = base->derivatives.first; derivative; derivative = derivative->next)
1133 struct __ecereNameSpace__ecere__com__Class * _class = derivative->data;
1134 int type = _class->type;
1135 int size = _class->structSize - _class->offset;
1136 int oldSizeClass = _class->sizeClass;
1137 int sizeClass = _class->sizeClass - _class->offsetClass;
1138 struct __ecereNameSpace__ecere__com__Class * enumBase = (((void *)0));
1139 char * dataTypeString = (((void *)0));
1140 struct __ecereNameSpace__ecere__com__Class * baseClass;
1141 int offsetClass, totalSizeClass;
1143 for(baseClass = base; baseClass->base; baseClass = baseClass->base)
1145 if(base && !base->internalDecl && (base->type == 5 || base->type == 1 || base->type == 0))
1152 base = __ecereNameSpace__ecere__com__eSystem_FindClass(_class->module, "enum");
1155 dataTypeString = enumBase ? enumBase->dataTypeString : base->dataTypeString;
1156 offsetClass = base ? (base->templateClass ? base->templateClass->sizeClass : base->sizeClass) : (type == 5 ? 0 : 0);
1157 totalSizeClass = offsetClass + sizeClass;
1158 if(type == 0 || type == 5)
1159 _class->offset = (base && (base->templateClass ? base->templateClass->structSize : base->structSize) && base->type != 1000) ? (base->templateClass ? base->templateClass->structSize : base->structSize) : ((type == 5) ? 0 : 12);
1162 _class->memberOffset = (base && (base->templateClass ? base->templateClass->structSize : base->structSize) && base->type != 1000) ? (base->templateClass ? base->templateClass->structSize : base->structSize) : 0;
1163 _class->typeSize = _class->structSize = _class->memberOffset + size;
1165 else if(type == 2 || type == 4 || type == 3)
1167 struct __ecereNameSpace__ecere__com__Class * dataTypeClass = __ecereNameSpace__ecere__com__eSystem_FindClass(_class->module, dataTypeString);
1170 _class->typeSize = dataTypeClass->typeSize;
1171 _class->structSize = 0;
1173 else if(type == 0 || type == 5)
1175 _class->structSize = _class->offset + size;
1176 _class->typeSize = sizeof(void *);
1178 if(_class->type != 1000)
1179 _class->type = type;
1180 (__ecereNameSpace__ecere__com__eSystem_Delete(_class->dataTypeString), _class->dataTypeString = 0);
1181 _class->dataTypeString = __ecereNameSpace__ecere__sys__CopyString(dataTypeString);
1182 if(totalSizeClass != oldSizeClass)
1184 _class->data = __ecereNameSpace__ecere__com__eSystem_Renew(_class->data, sizeof(unsigned char) * (totalSizeClass));
1185 memmove((unsigned char *)_class->data + mod->offsetClass, (unsigned char *)_class->data, totalSizeClass - mod->sizeClass);
1186 if(base->type != 1000 && base->type != 4)
1187 memcpy((unsigned char *)_class->data, (unsigned char *)base->data, totalSizeClass - _class->sizeClass);
1189 memset((unsigned char *)_class->data, (unsigned char)0, totalSizeClass - _class->sizeClass);
1191 _class->offsetClass = offsetClass;
1192 _class->sizeClass = totalSizeClass;
1193 if(mod->base && mod->base->base && mod->base->vTblSize > baseClass->vTblSize && (mod != (base->templateClass ? base->templateClass : base) || _class->vTblSize != mod->vTblSize))
1195 struct __ecereNameSpace__ecere__com__Method * method, * next;
1196 struct __ecereNameSpace__ecere__com__Class * b;
1198 _class->vTblSize += mod->base->vTblSize - baseClass->vTblSize;
1199 _class->_vTbl = __ecereNameSpace__ecere__com__eSystem_Renew(_class->_vTbl, sizeof(void *) * (_class->vTblSize));
1200 memmove(_class->_vTbl + mod->base->vTblSize, _class->_vTbl + baseClass->vTblSize, (_class->vTblSize - mod->vTblSize) * sizeof(void *));
1201 for(method = (struct __ecereNameSpace__ecere__com__Method *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&_class->methods); method; method = next)
1203 next = (struct __ecereNameSpace__ecere__com__Method *)__ecereProp___ecereNameSpace__ecere__sys__BTNode_Get_next(((struct __ecereNameSpace__ecere__sys__BTNode *)method));
1204 if(method->type == 1)
1205 method->vid += mod->base->vTblSize - baseClass->vTblSize;
1207 for(b = mod->base; b && b != (((void *)0)); b = b->base)
1209 struct __ecereNameSpace__ecere__com__Method * vMethod;
1211 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)))
1213 if(vMethod->type == 1)
1215 method = (struct __ecereNameSpace__ecere__com__Method *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&_class->methods, vMethod->name);
1218 if(method->function)
1219 _class->_vTbl[vMethod->vid] = method->function;
1220 (__ecereNameSpace__ecere__com__eSystem_Delete(method->name), method->name = 0);
1221 (__ecereNameSpace__ecere__com__eSystem_Delete(method->dataTypeString), method->dataTypeString = 0);
1222 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&_class->methods, (struct __ecereNameSpace__ecere__sys__BTNode *)method);
1225 _class->_vTbl[vMethod->vid] = _class->base->_vTbl[vMethod->vid];
1230 if(type == 0 || type == 5 || type == 1)
1232 struct __ecereNameSpace__ecere__com__Property * prop;
1233 struct __ecereNameSpace__ecere__com__DataMember * member;
1234 struct __ecereNameSpace__ecere__com__Class * c;
1236 for(c = mod->base; c; c = c->base)
1238 struct __ecereNameSpace__ecere__com__Property * _property;
1240 for(_property = c->membersAndProperties.first; _property; _property = _property->next)
1242 if(_property->isProperty)
1244 struct __ecereNameSpace__ecere__com__BTNamedLink * link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&_class->prop, _property->name);
1249 if(!prop->Set && !prop->Get && prop->memberAccess == 4)
1251 struct __ecereNameSpace__ecere__com__SelfWatcher * watcher;
1253 for(watcher = _class->selfWatchers.first; watcher; watcher = watcher->next)
1255 if(watcher->_property == prop)
1256 watcher->_property = _property;
1258 _property->selfWatchable = 0x1;
1259 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&_class->prop, (struct __ecereNameSpace__ecere__sys__BTNode *)link);
1260 (__ecereNameSpace__ecere__com__eSystem_Delete(prop->name), prop->name = 0);
1261 (__ecereNameSpace__ecere__com__eSystem_Delete(prop->dataTypeString), prop->dataTypeString = 0);
1262 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&_class->membersAndProperties, prop);
1268 if(mod->base->memberID)
1270 for(member = _class->membersAndProperties.first; member; member = member->next)
1271 member->id += mod->base->memberID;
1272 _class->memberID += mod->base->memberID;
1273 _class->startMemberID += mod->base->memberID;
1276 __ecereNameSpace__ecere__com__FixDerivativesBase(_class, mod);
1278 struct __ecereNameSpace__ecere__com__Class * c;
1280 for(c = mod->base; c; c = c->base)
1282 struct __ecereNameSpace__ecere__com__ClassProperty * _property;
1284 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)))
1286 __ecereNameSpace__ecere__com__SetDelayedCPValues(_class, _property);
1292 struct __ecereNameSpace__ecere__sys__OldLink * templateLink;
1294 for(templateLink = base->templatized.first; templateLink; templateLink = templateLink->next)
1296 struct __ecereNameSpace__ecere__com__Class * template = templateLink->data;
1297 char * templateParams = strchr(template->name, '<');
1299 template->base = base->base;
1300 template->_vTbl = base->_vTbl;
1301 template->data = base->data;
1302 template->offset = base->offset;
1303 template->offsetClass = base->offsetClass;
1304 template->sizeClass = base->sizeClass;
1305 template->structSize = base->structSize;
1306 template->vTblSize = base->vTblSize;
1307 __ecereNameSpace__ecere__com__FixDerivativesBase(template, mod);
1312 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Application;
1314 struct __ecereNameSpace__ecere__com__Application
1319 unsigned int isGUIApp;
1320 struct __ecereNameSpace__ecere__sys__OldList allModules;
1321 char * parsedCommand;
1322 struct __ecereNameSpace__ecere__com__NameSpace systemNameSpace;
1325 extern char * strncpy(char * , const char * , int n);
1327 extern int strcmp(const char * , const char * );
1329 static void __ecereNameSpace__ecere__com__FreeTemplatesDerivatives(struct __ecereNameSpace__ecere__com__Class * base);
1331 extern int printf(char * , ...);
1333 static void __ecereNameSpace__ecere__com__NameSpace_Free(struct __ecereNameSpace__ecere__com__NameSpace * parentNameSpace);
1335 static struct __ecereNameSpace__ecere__com__BTNamedLink * __ecereNameSpace__ecere__com__SearchNameSpace(struct __ecereNameSpace__ecere__com__NameSpace * nameSpace, char * name, void * listOffset);
1337 extern char * strcpy(char * , const char * );
1339 static void __ecereNameSpace__ecere__com__FreeTemplateArgs(struct __ecereNameSpace__ecere__com__Class * template);
1341 static void __ecereNameSpace__ecere__com__CopyTemplateArg(struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param, struct __ecereNameSpace__ecere__com__ClassTemplateArgument * arg);
1343 int __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString(struct __ecereNameSpace__ecere__sys__BinaryTree * this, char * a, char * b);
1345 unsigned int __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(struct __ecereNameSpace__ecere__sys__BinaryTree * this, struct __ecereNameSpace__ecere__sys__BTNode * node);
1347 void __ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove(struct __ecereNameSpace__ecere__sys__OldList * this, void * item);
1349 struct __ecereNameSpace__ecere__sys__OldLink * __ecereMethod___ecereNameSpace__ecere__sys__OldList_FindLink(struct __ecereNameSpace__ecere__sys__OldList * this, void * data);
1351 void __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(struct __ecereNameSpace__ecere__sys__OldList * this, void * item);
1353 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)
1355 void * __ecereTemp1;
1357 struct __ecereNameSpace__ecere__com__NameSpace * nameSpace = (((void *)0));
1360 nameSpace = (declMode == 1) ? &((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->publicNameSpace : &((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->privateNameSpace;
1362 nameSpace = &((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application + 296)))->systemNameSpace;
1364 for(c = 0; name[c]; c++)
1366 if(name[c] == '.' || (name[c] == ':' && name[c + 1] == ':'))
1368 struct __ecereNameSpace__ecere__com__NameSpace * newSpace;
1369 char * spaceName = __ecereNameSpace__ecere__com___malloc(c - start + 1);
1371 strncpy(spaceName, name + start, c - start);
1372 spaceName[c - start] = '\0';
1373 newSpace = (struct __ecereNameSpace__ecere__com__NameSpace *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&(*nameSpace).nameSpaces, spaceName);
1376 newSpace = __ecereNameSpace__ecere__com__eSystem_New0(sizeof(struct __ecereNameSpace__ecere__com__NameSpace) * (1));
1377 (*newSpace).classes.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
1378 (*newSpace).defines.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
1379 (*newSpace).functions.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
1380 (*newSpace).nameSpaces.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
1381 (*newSpace).name = spaceName;
1382 (*newSpace).parent = nameSpace;
1383 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&(*nameSpace).nameSpaces, (struct __ecereNameSpace__ecere__sys__BTNode *)newSpace);
1386 (__ecereNameSpace__ecere__com__eSystem_Delete(spaceName), spaceName = 0);
1387 nameSpace = newSpace;
1399 struct __ecereNameSpace__ecere__com__BTNamedLink * classLink = (((void *)0));
1400 struct __ecereNameSpace__ecere__com__Class * _class = (((void *)0));
1401 char * dataTypeString = (((void *)0));
1402 struct __ecereNameSpace__ecere__com__Class * enumBase = (((void *)0));
1403 struct __ecereNameSpace__ecere__com__Class * base = (baseName && baseName[0]) ? __ecereNameSpace__ecere__com__eSystem_FindClass(module, baseName) : (((void *)0));
1404 unsigned int refine = 0x0;
1406 if(base && !base->internalDecl && (base->type == 5 || base->type == 1 || base->type == 0))
1408 if(base->type == 1 && type == 0)
1413 if(base && (type == 0 || type == 5 || type == 1) && (base->type == 3 || base->type == 2 || base->type == 4))
1417 if(!base || base->type == 1000)
1421 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"))
1423 base = __ecereNameSpace__ecere__com__eSystem_FindClass(module, "enum");
1424 dataTypeString = (baseName && baseName[0]) ? baseName : "int";
1428 base = __ecereNameSpace__ecere__com__eSystem_RegisterClass((int)0, baseName, (((void *)0)), 0, 0, (((void *)0)), (((void *)0)), module, declMode, 1);
1429 base->internalDecl = 0x1;
1431 base = __ecereNameSpace__ecere__com__eSystem_FindClass(module, "enum");
1434 else if(type == 1 && (!baseName || !baseName[0]))
1436 base = __ecereNameSpace__ecere__com__eSystem_FindClass(module, "struct");
1437 dataTypeString = name + start;
1442 dataTypeString = "struct __ecereNameSpace__ecere__com__Instance";
1444 dataTypeString = "void *";
1446 dataTypeString = (baseName && baseName[0]) ? baseName : "unsigned int";
1448 dataTypeString = (baseName && baseName[0]) ? baseName : "int";
1450 dataTypeString = name + start;
1451 if(base || (!baseName || !baseName[0]) || type == 2 || type == 3)
1453 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"))
1455 if(type == 0 && strcmp(name, "ecere::com::Instance") && strcmp(name, "enum") && strcmp(name, "struct"))
1456 base = __ecereNameSpace__ecere__com__eSystem_FindClass(module, "ecere::com::Instance");
1458 base = __ecereNameSpace__ecere__com__eSystem_FindClass(module, "class");
1473 base = __ecereNameSpace__ecere__com__eSystem_FindClass(module, "enum");
1476 dataTypeString = enumBase ? enumBase->dataTypeString : base->dataTypeString;
1478 offsetClass = base ? base->sizeClass : (type == 5 ? 0 : 0);
1479 totalSizeClass = offsetClass + sizeClass;
1480 if((_class = __ecereNameSpace__ecere__com__eSystem_FindClass(module, name)))
1482 __ecereNameSpace__ecere__com__FreeTemplatesDerivatives(_class);
1483 if(!_class->internalDecl)
1486 printf("error: Redefinition of class %s\n", name);
1489 _class->comRedefinition = 0x1;
1492 return (((void *)0));
1494 classLink = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&(*_class->nameSpace).classes, name + start);
1495 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&(*_class->nameSpace).classes, (struct __ecereNameSpace__ecere__sys__BTNode *)classLink);
1497 struct __ecereNameSpace__ecere__sys__OldLink * t;
1499 for(t = _class->templatized.first; t; t = t->next)
1501 struct __ecereNameSpace__ecere__com__Class * template = t->data;
1503 classLink = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&(*_class->nameSpace).classes, template->name);
1504 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&(*_class->nameSpace).classes, (struct __ecereNameSpace__ecere__sys__BTNode *)classLink);
1508 struct __ecereNameSpace__ecere__com__NameSpace * ns = _class->nameSpace;
1510 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))
1512 struct __ecereNameSpace__ecere__com__NameSpace * parent = (*ns).parent;
1514 __ecereNameSpace__ecere__com__NameSpace_Free(ns);
1515 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&(*parent).nameSpaces, (struct __ecereNameSpace__ecere__sys__BTNode *)ns);
1523 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);
1525 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);
1527 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);
1529 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);
1531 _class = classLink->data;
1532 if(_class && _class->internalDecl)
1534 __ecereNameSpace__ecere__com__FreeTemplatesDerivatives(_class);
1535 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&(*_class->nameSpace).classes, (struct __ecereNameSpace__ecere__sys__BTNode *)classLink);
1537 struct __ecereNameSpace__ecere__sys__OldLink * t;
1539 for(t = _class->templatized.first; t; t = t->next)
1541 struct __ecereNameSpace__ecere__com__Class * template = t->data;
1543 classLink = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&(*_class->nameSpace).classes, template->name);
1544 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&(*_class->nameSpace).classes, (struct __ecereNameSpace__ecere__sys__BTNode *)classLink);
1548 (__ecereNameSpace__ecere__com__eSystem_Delete(_class->fullName), _class->fullName = 0);
1549 _class->fullName = __ecereNameSpace__ecere__sys__CopyString(name);
1553 _class = __ecereNameSpace__ecere__com___calloc(1, sizeof(struct __ecereNameSpace__ecere__com__Class));
1554 _class->methods.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
1555 _class->members.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
1556 _class->prop.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
1557 _class->classProperties.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
1558 _class->name = __ecereNameSpace__ecere__sys__CopyString(name + start);
1559 _class->fullName = __ecereNameSpace__ecere__sys__CopyString(name);
1564 __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)));
1566 struct __ecereNameSpace__ecere__sys__OldLink * t;
1568 for(t = _class->templatized.first; t; t = t->next)
1570 struct __ecereNameSpace__ecere__com__Class * template = t->data;
1572 __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)));
1578 if(!base && baseName && strcmp(baseName, name))
1580 if(strchr(baseName, '<'))
1582 char templateClassName[1024];
1583 struct __ecereNameSpace__ecere__com__Class * templateBase;
1585 strcpy(templateClassName, baseName);
1586 *strchr(templateClassName, '<') = '\0';
1587 templateBase = __ecereNameSpace__ecere__com__eSystem_FindClass(module, templateClassName);
1590 templateBase = __ecereNameSpace__ecere__com__eSystem_RegisterClass((int)0, templateClassName, (((void *)0)), 0, 0, (((void *)0)), (((void *)0)), module, declMode, 1);
1591 templateBase->internalDecl = 0x1;
1593 base = __ecereNameSpace__ecere__com__eSystem_FindClass(module, baseName);
1597 base = __ecereNameSpace__ecere__com__eSystem_RegisterClass((int)0, baseName, (((void *)0)), 0, 0, (((void *)0)), (((void *)0)), module, declMode, 1);
1598 base->internalDecl = 0x1;
1602 _class->internalDecl = 0x0;
1605 _class->data = __ecereNameSpace__ecere__com__eSystem_Renew(_class->data, sizeof(unsigned char) * (totalSizeClass));
1606 if(base && base->type != 1000 && base->type != 4)
1607 memcpy(_class->data, base->data, offsetClass);
1609 memset(_class->data, (unsigned char)0, offsetClass);
1610 memset((unsigned char *)_class->data + offsetClass, (unsigned char)0, sizeClass);
1612 (__ecereNameSpace__ecere__com__eSystem_Delete(_class->dataTypeString), _class->dataTypeString = 0);
1613 _class->dataTypeString = __ecereNameSpace__ecere__sys__CopyString(dataTypeString);
1614 _class->defaultAlignment = base ? base->defaultAlignment : 0;
1617 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)_class->module + 12)))->classes, _class);
1621 struct __ecereNameSpace__ecere__com__Class * base = _class->base;
1622 struct __ecereNameSpace__ecere__sys__OldLink * deriv = __ecereMethod___ecereNameSpace__ecere__sys__OldList_FindLink(&base->derivatives, _class);
1624 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&base->derivatives, deriv);
1628 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->classes, _class);
1630 _class->nameSpace = nameSpace;
1632 struct __ecereNameSpace__ecere__sys__OldLink * t;
1634 for(t = _class->templatized.first; t; t = t->next)
1636 struct __ecereNameSpace__ecere__com__Class * template = t->data;
1638 template->nameSpace = nameSpace;
1641 _class->module = module;
1642 _class->base = base;
1646 struct __ecereNameSpace__ecere__com__Class * sClass;
1648 for(sClass = base; sClass; sClass = sClass->base)
1650 if(sClass->templateClass)
1651 sClass = sClass->templateClass;
1652 numParams += sClass->templateParams.count;
1656 if(_class->templateArgs)
1658 __ecereNameSpace__ecere__com__FreeTemplateArgs(_class);
1660 (__ecereNameSpace__ecere__com__eSystem_Delete(_class->templateArgs), _class->templateArgs = 0);
1661 _class->templateArgs = __ecereNameSpace__ecere__com__eSystem_New0(sizeof(struct __ecereNameSpace__ecere__com__ClassTemplateArgument) * (numParams));
1662 _class->numParams = numParams;
1663 for(sClass = _class; sClass; sClass = sClass->base)
1665 struct __ecereNameSpace__ecere__com__Class * prevClass;
1666 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param;
1669 if(sClass->templateClass)
1670 sClass = sClass->templateClass;
1671 for(prevClass = sClass->base; prevClass; prevClass = prevClass->base)
1673 if(prevClass->templateClass)
1674 prevClass = prevClass->templateClass;
1675 id += prevClass->templateParams.count;
1677 if(base->templateArgs)
1679 for(param = sClass->templateParams.first; param; param = param->next)
1681 _class->templateArgs[id] = base->templateArgs[id];
1682 __ecereNameSpace__ecere__com__CopyTemplateArg(param, &_class->templateArgs[id]);
1689 _class->memberID = _class->startMemberID = (base && (type == 0 || type == 5 || type == 1)) ? base->memberID : 0;
1690 if(type == 0 || type == 5)
1691 _class->offset = (base && base->structSize && base->type != 1000) ? base->structSize : ((type == 5) ? 0 : 12);
1694 _class->memberOffset = (base && base->structSize && base->type != 1000) ? base->structSize : 0;
1695 _class->typeSize = _class->structSize = _class->memberOffset + size;
1697 else if(type == 2 || type == 4 || type == 3)
1699 struct __ecereNameSpace__ecere__com__Class * dataTypeClass = __ecereNameSpace__ecere__com__eSystem_FindClass(_class->module, dataTypeString);
1702 _class->typeSize = dataTypeClass->typeSize;
1703 _class->structSize = 0;
1705 else if(type == 0 || type == 5)
1707 _class->structSize = _class->offset + size;
1708 _class->typeSize = sizeof(void *);
1710 _class->offsetClass = offsetClass;
1711 _class->sizeClass = totalSizeClass;
1712 _class->Constructor = (void *)Constructor;
1713 _class->Destructor = Destructor;
1714 if(_class->type != 1000)
1715 _class->type = type;
1717 _class->computeSize = 0x1;
1719 _class->computeSize = 0x0;
1720 _class->inheritanceAccess = inheritanceAccess;
1724 _class->base = base = enumBase;
1726 struct __ecereNameSpace__ecere__com__EnumClassData * data = (struct __ecereNameSpace__ecere__com__EnumClassData *)_class->data;
1728 if(base && base->type != 4)
1731 data->largest = ((struct __ecereNameSpace__ecere__com__EnumClassData *)base->data)->largest;
1734 if(base && base->vTblSize)
1736 _class->vTblSize = base->vTblSize;
1737 (__ecereNameSpace__ecere__com__eSystem_Delete(_class->_vTbl), _class->_vTbl = 0);
1738 _class->_vTbl = __ecereNameSpace__ecere__com___malloc(sizeof(int (*)()) * _class->vTblSize);
1739 memcpy(_class->_vTbl, base->_vTbl, sizeof(int (*)()) * _class->vTblSize);
1743 struct __ecereNameSpace__ecere__sys__OldLink * link = (link = __ecereNameSpace__ecere__com__eSystem_New0(12), link->data = _class, link);
1745 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&_class->base->derivatives, link);
1747 __ecereNameSpace__ecere__com__FixDerivativesBase(_class, _class);
1751 return (((void *)0));
1754 static void __ecereNameSpace__ecere__com__DataMember_Free(struct __ecereNameSpace__ecere__com__DataMember * parentMember)
1756 struct __ecereNameSpace__ecere__com__DataMember * member;
1757 struct __ecereNameSpace__ecere__com__BTNamedLink * namedLink;
1759 (__ecereNameSpace__ecere__com__eSystem_Delete(parentMember->name), parentMember->name = 0);
1760 (__ecereNameSpace__ecere__com__eSystem_Delete(parentMember->dataTypeString), parentMember->dataTypeString = 0);
1761 while((member = parentMember->members.first))
1763 __ecereNameSpace__ecere__com__DataMember_Free(member);
1764 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&parentMember->members, member);
1766 while((namedLink = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&parentMember->membersAlpha)))
1768 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&parentMember->membersAlpha, (struct __ecereNameSpace__ecere__sys__BTNode *)namedLink);
1772 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__NamedLink;
1774 struct __ecereNameSpace__ecere__sys__NamedLink
1776 struct __ecereNameSpace__ecere__sys__NamedLink * prev;
1777 struct __ecereNameSpace__ecere__sys__NamedLink * next;
1782 static void __ecereNameSpace__ecere__com__FreeEnumValue(struct __ecereNameSpace__ecere__sys__NamedLink * value)
1784 (__ecereNameSpace__ecere__com__eSystem_Delete(value->name), value->name = 0);
1787 static void __ecereNameSpace__ecere__com__FreeTemplateArg(struct __ecereNameSpace__ecere__com__Class * template, struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param, int id)
1792 (__ecereNameSpace__ecere__com__eSystem_Delete(template->templateArgs[id].dataTypeString), template->templateArgs[id].dataTypeString = 0);
1795 (__ecereNameSpace__ecere__com__eSystem_Delete(template->templateArgs[id].memberString), template->templateArgs[id].memberString = 0);
1802 static void __ecereNameSpace__ecere__com__FreeTemplateArgs(struct __ecereNameSpace__ecere__com__Class * template)
1804 if(template->templateArgs)
1806 struct __ecereNameSpace__ecere__com__Class * _class;
1808 for(_class = template; _class; _class = _class->base)
1810 struct __ecereNameSpace__ecere__com__Class * prevClass;
1811 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param;
1814 if(_class->templateClass)
1815 _class = _class->templateClass;
1816 for(prevClass = _class->base; prevClass; prevClass = prevClass->base)
1818 if(prevClass->templateClass)
1819 prevClass = prevClass->templateClass;
1820 id += prevClass->templateParams.count;
1822 if(id < template->numParams)
1824 for(param = _class->templateParams.first; param; param = param->next)
1829 (__ecereNameSpace__ecere__com__eSystem_Delete(template->templateArgs[id].dataTypeString), template->templateArgs[id].dataTypeString = 0);
1832 (__ecereNameSpace__ecere__com__eSystem_Delete(template->templateArgs[id].memberString), template->templateArgs[id].memberString = 0);
1844 static void __ecereNameSpace__ecere__com__FreeTemplate(struct __ecereNameSpace__ecere__com__Class * template)
1846 struct __ecereNameSpace__ecere__sys__OldLink * deriv;
1848 if(template->nameSpace)
1850 struct __ecereNameSpace__ecere__com__BTNamedLink * link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&(*template->nameSpace).classes, template->name);
1852 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&(*template->nameSpace).classes, (struct __ecereNameSpace__ecere__sys__BTNode *)link);
1854 __ecereNameSpace__ecere__com__FreeTemplateArgs(template);
1855 (__ecereNameSpace__ecere__com__eSystem_Delete(template->fullName), template->fullName = 0);
1856 (__ecereNameSpace__ecere__com__eSystem_Delete(template->name), template->name = 0);
1857 (__ecereNameSpace__ecere__com__eSystem_Delete(template->templateArgs), template->templateArgs = 0);
1858 while((deriv = template->derivatives.first))
1860 ((struct __ecereNameSpace__ecere__com__Class *)deriv->data)->base = (((void *)0));
1861 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&template->derivatives, deriv);
1863 __ecereNameSpace__ecere__com___free(template);
1866 static void __ecereNameSpace__ecere__com__FreeTemplates(struct __ecereNameSpace__ecere__com__Class * _class)
1868 struct __ecereNameSpace__ecere__sys__OldLink * deriv, * template;
1870 for(deriv = _class->derivatives.first; deriv; deriv = deriv->next)
1872 __ecereNameSpace__ecere__com__FreeTemplates(deriv->data);
1874 __ecereNameSpace__ecere__com__FreeTemplateArgs(_class);
1875 (__ecereNameSpace__ecere__com__eSystem_Delete(_class->templateArgs), _class->templateArgs = 0);
1876 while((template = _class->templatized.first))
1878 __ecereNameSpace__ecere__com__FreeTemplates(template->data);
1879 __ecereNameSpace__ecere__com__FreeTemplate(template->data);
1880 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&_class->templatized, template);
1884 void __ecereMethod___ecereNameSpace__ecere__sys__OldList_Free(struct __ecereNameSpace__ecere__sys__OldList * this, void (* freeFn)(void * ));
1886 void __ecereNameSpace__ecere__com__eClass_Unregister(struct __ecereNameSpace__ecere__com__Class * _class)
1888 struct __ecereNameSpace__ecere__com__BTNamedLink * namedLink;
1889 struct __ecereNameSpace__ecere__com__DataMember * member;
1890 struct __ecereNameSpace__ecere__com__Method * method;
1891 struct __ecereNameSpace__ecere__sys__OldLink * deriv, * template;
1892 struct __ecereNameSpace__ecere__com__ClassProperty * classProp;
1893 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param;
1895 (__ecereNameSpace__ecere__com__eSystem_Delete(_class->_vTbl), _class->_vTbl = 0);
1896 __ecereNameSpace__ecere__com__FreeTemplates(_class);
1897 __ecereNameSpace__ecere__com__FreeTemplateArgs(_class);
1898 (__ecereNameSpace__ecere__com__eSystem_Delete(_class->templateArgs), _class->templateArgs = 0);
1899 while((template = _class->templatized.first))
1901 __ecereNameSpace__ecere__com__FreeTemplate(template->data);
1902 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&_class->templatized, template);
1904 while((member = _class->membersAndProperties.first))
1906 if(!member->isProperty && (member->type == 1 || member->type == 2))
1907 __ecereNameSpace__ecere__com__DataMember_Free(member);
1908 (__ecereNameSpace__ecere__com__eSystem_Delete(member->name), member->name = 0);
1909 (__ecereNameSpace__ecere__com__eSystem_Delete(member->dataTypeString), member->dataTypeString = 0);
1910 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&_class->membersAndProperties, member);
1912 while((member = _class->conversions.first))
1914 (__ecereNameSpace__ecere__com__eSystem_Delete(member->name), member->name = 0);
1915 (__ecereNameSpace__ecere__com__eSystem_Delete(member->dataTypeString), member->dataTypeString = 0);
1916 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&_class->conversions, member);
1918 while((namedLink = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&_class->prop)))
1920 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&_class->prop, (struct __ecereNameSpace__ecere__sys__BTNode *)namedLink);
1922 while((namedLink = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&_class->members)))
1924 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&_class->members, (struct __ecereNameSpace__ecere__sys__BTNode *)namedLink);
1926 while((classProp = (struct __ecereNameSpace__ecere__com__ClassProperty *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&_class->classProperties)))
1928 (__ecereNameSpace__ecere__com__eSystem_Delete(classProp->name), classProp->name = 0);
1929 (__ecereNameSpace__ecere__com__eSystem_Delete(classProp->dataTypeString), classProp->dataTypeString = 0);
1930 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&_class->classProperties, (struct __ecereNameSpace__ecere__sys__BTNode *)classProp);
1932 while((method = (struct __ecereNameSpace__ecere__com__Method *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&_class->methods)))
1934 (__ecereNameSpace__ecere__com__eSystem_Delete(method->name), method->name = 0);
1935 (__ecereNameSpace__ecere__com__eSystem_Delete(method->dataTypeString), method->dataTypeString = 0);
1936 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&_class->methods, (struct __ecereNameSpace__ecere__sys__BTNode *)method);
1938 if(_class->type == 4)
1940 struct __ecereNameSpace__ecere__com__EnumClassData * data = (struct __ecereNameSpace__ecere__com__EnumClassData *)_class->data;
1942 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Free(&data->values, (void *)__ecereNameSpace__ecere__com__FreeEnumValue);
1944 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Free(&_class->delayedCPValues, (((void *)0)));
1945 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Free(&_class->selfWatchers, (((void *)0)));
1948 struct __ecereNameSpace__ecere__com__Class * base = _class->base;
1950 for(deriv = base->derivatives.first; deriv; deriv = deriv->next)
1952 if(deriv->data == _class)
1956 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&base->derivatives, deriv);
1958 while((deriv = _class->derivatives.first))
1960 ((struct __ecereNameSpace__ecere__com__Class *)deriv->data)->base = (((void *)0));
1961 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&_class->derivatives, deriv);
1963 if(_class->nameSpace)
1965 struct __ecereNameSpace__ecere__com__BTNamedLink * link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&(*_class->nameSpace).classes, _class->name);
1967 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&(*_class->nameSpace).classes, (struct __ecereNameSpace__ecere__sys__BTNode *)link);
1969 (__ecereNameSpace__ecere__com__eSystem_Delete(_class->name), _class->name = 0);
1970 (__ecereNameSpace__ecere__com__eSystem_Delete(_class->fullName), _class->fullName = 0);
1971 (__ecereNameSpace__ecere__com__eSystem_Delete(_class->dataTypeString), _class->dataTypeString = 0);
1972 (__ecereNameSpace__ecere__com__eSystem_Delete(_class->data), _class->data = 0);
1973 while((param = _class->templateParams.first))
1978 (__ecereNameSpace__ecere__com__eSystem_Delete(param->defaultArg.dataTypeString), param->defaultArg.dataTypeString = 0);
1981 (__ecereNameSpace__ecere__com__eSystem_Delete(param->defaultArg.memberString), param->defaultArg.memberString = 0);
1986 if(param->type != 1)
1987 (__ecereNameSpace__ecere__com__eSystem_Delete(param->dataTypeString), param->dataTypeString = 0);
1988 (__ecereNameSpace__ecere__com__eSystem_Delete(param->name), param->name = 0);
1989 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&_class->templateParams, param);
1991 __ecereNameSpace__ecere__com___free(_class);
1994 struct __ecereNameSpace__ecere__sys__BTNode * __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Find(struct __ecereNameSpace__ecere__sys__BinaryTree * this, unsigned int key);
1996 static struct __ecereNameSpace__ecere__com__BTNamedLink * __ecereNameSpace__ecere__com__ScanNameSpace(struct __ecereNameSpace__ecere__com__NameSpace * nameSpace, char * name, void * listOffset)
1998 struct __ecereNameSpace__ecere__sys__BinaryTree * tree = (struct __ecereNameSpace__ecere__sys__BinaryTree *)((unsigned char *)nameSpace + (unsigned int)listOffset);
1999 struct __ecereNameSpace__ecere__com__BTNamedLink * link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Find((&*tree), (unsigned int)name);
2000 struct __ecereNameSpace__ecere__com__NameSpace * child;
2004 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)))
2006 link = __ecereNameSpace__ecere__com__ScanNameSpace(child, name, listOffset);
2014 static struct __ecereNameSpace__ecere__com__BTNamedLink * __ecereNameSpace__ecere__com__SearchNameSpace(struct __ecereNameSpace__ecere__com__NameSpace * nameSpace, char * name, void * listOffset)
2020 for(c = 0; (ch = name[c]); c++)
2026 if(level == 0 && (ch == '.' || (ch == ':' && name[c + 1] == ':')))
2028 struct __ecereNameSpace__ecere__com__NameSpace * newSpace;
2029 char * spaceName = __ecereNameSpace__ecere__com___malloc(c - start + 1);
2031 memcpy(spaceName, name + start, c - start);
2032 spaceName[c - start] = '\0';
2033 newSpace = (struct __ecereNameSpace__ecere__com__NameSpace *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&nameSpace->nameSpaces, spaceName);
2034 __ecereNameSpace__ecere__com___free(spaceName);
2036 return (((void *)0));
2037 nameSpace = newSpace;
2038 if(level == 0 && ch == ':')
2045 return __ecereNameSpace__ecere__com__ScanNameSpace(nameSpace, name + start, listOffset);
2047 return (((void *)0));
2050 static struct __ecereNameSpace__ecere__com__BTNamedLink * __ecereNameSpace__ecere__com__SearchModule(struct __ecereNameSpace__ecere__com__Instance * module, char * name, void * listOffset, unsigned int searchPrivate)
2052 struct __ecereNameSpace__ecere__com__SubModule * subModule;
2053 struct __ecereNameSpace__ecere__com__BTNamedLink * link;
2057 link = __ecereNameSpace__ecere__com__SearchNameSpace(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->privateNameSpace, name, listOffset);
2061 link = __ecereNameSpace__ecere__com__SearchNameSpace(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->publicNameSpace, name, listOffset);
2064 for(subModule = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->modules.first; subModule; subModule = subModule->next)
2066 if(searchPrivate || subModule->importMode == 1)
2068 link = __ecereNameSpace__ecere__com__SearchModule(subModule->module, name, listOffset, 0x0);
2073 return (((void *)0));
2076 extern int isspace(int c);
2078 long long __ecereNameSpace__ecere__com___strtoi64(char * string, char ** endString, int base)
2080 long long value = 0;
2085 for(c = 0; (ch = string[c]) && isspace(ch); c++)
2097 if(ch == (char)0 && string[c + 1] == 'x')
2110 for(; (ch = string[c]); c++)
2114 else if(ch >= '1' && ch <= '9')
2116 else if(ch >= 'a' && ch <= 'z')
2118 else if(ch >= 'A' && ch <= 'Z')
2122 *endString = string + c;
2132 *endString = string + c;
2136 return sign * value;
2139 uint64 __ecereNameSpace__ecere__com___strtoui64(char * string, char ** endString, int base)
2146 for(c = 0; (ch = string[c]) && isspace(ch); c++)
2158 if(ch == (char)0 && string[c + 1] == 'x')
2171 for(; (ch = string[c]); c++)
2175 else if(ch >= '1' && ch <= '9')
2177 else if(ch >= 'a' && ch <= 'z')
2179 else if(ch >= 'A' && ch <= 'Z')
2183 *endString = string + c;
2193 *endString = string + c;
2197 return sign * value;
2200 extern char * strcat(char * , const char * );
2202 extern int strlen(const char * );
2204 struct __ecereNameSpace__ecere__com__Class * __ecereNameSpace__ecere__com__eSystem_FindClass(struct __ecereNameSpace__ecere__com__Instance * module, char * name)
2206 void * __ecereTemp1;
2210 struct __ecereNameSpace__ecere__com__BTNamedLink * link;
2212 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);
2215 link = __ecereNameSpace__ecere__com__SearchModule(module, name, &(*((struct __ecereNameSpace__ecere__com__NameSpace *)0)).classes, 0x1);
2219 char noTemplateName[1024];
2220 char * templateParams = strchr(name, '<');
2224 strncpy(noTemplateName, name, templateParams - name);
2225 noTemplateName[templateParams - name] = '\0';
2228 strcpy(noTemplateName, name);
2229 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);
2231 link = __ecereNameSpace__ecere__com__SearchModule(module, noTemplateName, &(*((struct __ecereNameSpace__ecere__com__NameSpace *)0)).classes, 0x1);
2234 struct __ecereNameSpace__ecere__com__Class * _class = link->data;
2235 struct __ecereNameSpace__ecere__com__Class * templatedClass = (((void *)0));
2236 char className[1024];
2238 strcpy(className, _class->fullName);
2239 strcat(className, templateParams);
2240 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);
2243 link = __ecereNameSpace__ecere__com__SearchModule(module, className, &(*((struct __ecereNameSpace__ecere__com__NameSpace *)0)).classes, 0x1);
2246 if(_class && templateParams)
2248 struct __ecereNameSpace__ecere__sys__OldList __simpleStruct1 =
2252 struct __ecereNameSpace__ecere__sys__OldList __simpleStruct0 =
2257 templatedClass = __ecereNameSpace__ecere__com__eSystem_New0(368);
2258 *templatedClass = *_class;
2259 templatedClass->templateClass = _class;
2260 templatedClass->fullName = __ecereNameSpace__ecere__sys__CopyString(className);
2261 templatedClass->name = __ecereNameSpace__ecere__sys__CopyString(templatedClass->fullName + strlen(_class->fullName) - strlen(_class->name));
2262 __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)));
2263 templatedClass->templateArgs = (((void *)0));
2264 templatedClass->numParams = 0;
2265 templatedClass->derivatives = __simpleStruct0;
2266 templatedClass->templatized = __simpleStruct1;
2267 __ecereNameSpace__ecere__com__ComputeClassParameters(templatedClass, templateParams, module);
2268 __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)));
2270 return templatedClass;
2274 return (((void *)0));
2277 static void __ecereNameSpace__ecere__com__CopyTemplateArg(struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param, struct __ecereNameSpace__ecere__com__ClassTemplateArgument * arg)
2282 arg->dataTypeString = __ecereNameSpace__ecere__sys__CopyString(arg->dataTypeString);
2287 arg->memberString = __ecereNameSpace__ecere__sys__CopyString(arg->memberString);
2292 extern char * __ecereNameSpace__ecere__sys__TrimRSpaces(char * string, char * output);
2294 extern unsigned long strtoul(const char * nptr, char * * endptr, int base);
2296 extern double strtod(char * , char * * );
2298 extern int sprintf(char * , char * , ...);
2300 extern char * strstr(char * , const char * );
2302 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);
2304 struct __ecereNameSpace__ecere__com__Method * __ecereNameSpace__ecere__com__eClass_FindMethod(struct __ecereNameSpace__ecere__com__Class * _class, char * name, struct __ecereNameSpace__ecere__com__Instance * module);
2306 struct __ecereNameSpace__ecere__com__Property * __ecereNameSpace__ecere__com__eClass_FindProperty(struct __ecereNameSpace__ecere__com__Class * _class, char * name, struct __ecereNameSpace__ecere__com__Instance * module);
2308 static void __ecereNameSpace__ecere__com__ComputeClassParameters(struct __ecereNameSpace__ecere__com__Class * templatedClass, char * templateParams, struct __ecereNameSpace__ecere__com__Instance * findModule)
2311 char * nextParamStart = templateParams ? (templateParams + 1) : (((void *)0));
2312 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * curParam = (((void *)0));
2313 struct __ecereNameSpace__ecere__com__Class * lastClass = (((void *)0)), * sClass;
2316 struct __ecereNameSpace__ecere__com__Class * _class = templatedClass->templateClass ? templatedClass->templateClass : templatedClass;
2318 for(sClass = _class; sClass; sClass = sClass->base)
2320 if(sClass->templateClass)
2321 sClass = sClass->templateClass;
2322 numParams += sClass->templateParams.count;
2324 if(templatedClass->templateArgs)
2325 __ecereNameSpace__ecere__com__FreeTemplateArgs(templatedClass);
2326 (__ecereNameSpace__ecere__com__eSystem_Delete(templatedClass->templateArgs), templatedClass->templateArgs = 0);
2327 templatedClass->templateArgs = __ecereNameSpace__ecere__com__eSystem_New0(sizeof(struct __ecereNameSpace__ecere__com__ClassTemplateArgument) * (numParams));
2328 templatedClass->numParams = numParams;
2329 if(_class != templatedClass)
2332 if(templatedClass->base && templatedClass->base->templateArgs && _class == templatedClass)
2334 struct __ecereNameSpace__ecere__com__Class * sClass;
2336 memcpy(templatedClass->templateArgs, templatedClass->base->templateArgs, sizeof(struct __ecereNameSpace__ecere__com__ClassTemplateArgument) * (numParams - templatedClass->templateParams.count));
2337 for(sClass = templatedClass->base; sClass; sClass = sClass->base)
2339 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param;
2340 struct __ecereNameSpace__ecere__com__Class * prevClass;
2343 for(prevClass = sClass->base; prevClass; prevClass = prevClass->base)
2345 if(prevClass->templateClass)
2346 prevClass = prevClass->templateClass;
2347 id += prevClass->templateParams.count;
2349 if(sClass->templateClass)
2350 sClass = sClass->templateClass;
2351 for(param = sClass->templateParams.first; param; param = param->next)
2352 __ecereNameSpace__ecere__com__CopyTemplateArg(param, &templatedClass->templateArgs[id++]);
2355 while(nextParamStart)
2357 char * paramStart = nextParamStart;
2361 while(*paramStart == ' ')
2363 paramEnd = paramStart;
2364 while((ch = *paramEnd, ch && (level > 0 || (ch != '>' && ch != ','))))
2372 nextParamStart = (ch == ',') ? (paramEnd + 1) : (((void *)0));
2373 while(*paramEnd == ' ')
2375 if(paramEnd > paramStart)
2377 char * ptr, * equal = (((void *)0));
2379 for(ptr = paramStart; ptr <= paramEnd; ptr++)
2389 char * end = equal - 1;
2394 strncpy(ident, paramStart, end + 1 - paramStart);
2395 ident[end + 1 - paramStart] = (char)0;
2396 for(sClass = _class; sClass; sClass = sClass->base)
2398 if(sClass->templateClass)
2399 sClass = sClass->templateClass;
2400 for(curParam = sClass->templateParams.first; curParam; curParam = curParam->next)
2402 if(!strcmp(curParam->name, ident))
2407 struct __ecereNameSpace__ecere__com__Class * nextClass;
2408 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * prevParam;
2411 for(prevParam = curParam->prev; prevParam; prevParam = prevParam->prev)
2413 for(nextClass = sClass->base; nextClass; nextClass = nextClass->base)
2415 if(nextClass->templateClass)
2416 nextClass = nextClass->templateClass;
2417 curParamID += nextClass->templateParams.count;
2428 curParam = curParam->next;
2433 for(sClass = lastClass ? lastClass->base : _class; sClass; sClass = sClass->base)
2435 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param;
2438 if(sClass->templateClass)
2439 sClass = sClass->templateClass;
2440 for(param = sClass->templateParams.first; param; param = param->next, curParamID++)
2447 struct __ecereNameSpace__ecere__com__Class * nextClass;
2449 for(nextClass = sClass->base; nextClass; nextClass = nextClass->base)
2451 if(nextClass->templateClass)
2452 nextClass = nextClass->templateClass;
2453 curParamID += nextClass->templateParams.count;
2463 struct __ecereNameSpace__ecere__com__ClassTemplateArgument argument =
2472 while(*equal == ' ')
2474 memcpy(value, equal, paramEnd - equal);
2475 value[paramEnd - equal] = (char)0;
2479 memcpy(value, paramStart, paramEnd - paramStart);
2480 value[paramEnd - paramStart] = (char)0;
2482 __ecereNameSpace__ecere__sys__TrimRSpaces(value, value);
2483 switch(curParam->type)
2486 argument.dataTypeString = __ecereNameSpace__ecere__sys__CopyString(value);
2487 argument.dataTypeClass = __ecereNameSpace__ecere__com__eSystem_FindClass(_class->module, value);
2488 if(!argument.dataTypeClass)
2489 argument.dataTypeClass = __ecereNameSpace__ecere__com__eSystem_FindClass(((struct __ecereNameSpace__ecere__com__Module *)(((char *)_class->module + 12)))->application, value);
2490 if(!argument.dataTypeClass)
2491 argument.dataTypeClass = __ecereNameSpace__ecere__com__eSystem_FindClass(findModule, value);
2495 struct __ecereNameSpace__ecere__com__Class * expClass = __ecereNameSpace__ecere__com__eSystem_FindClass(_class->module, curParam->dataTypeString);
2498 expClass = __ecereNameSpace__ecere__com__eSystem_FindClass(((struct __ecereNameSpace__ecere__com__Module *)(((char *)_class->module + 12)))->application, curParam->dataTypeString);
2501 expClass->_vTbl[__ecereVMethodID_class_OnGetDataFromString](expClass, &argument.expression, value);
2503 else if(value[0] == '\"')
2505 char * endQuote = value + strlen(value) - 1;
2507 if(*endQuote != '\"')
2510 argument.expression.p = __ecereNameSpace__ecere__sys__CopyString(value + 1);
2512 else if(value[0] == '\'')
2515 unsigned int ch = __ecereNameSpace__ecere__sys__UTF8GetChar(value + 1, &nb);
2517 argument.expression.ui = ch;
2519 else if(!strcmp(curParam->dataTypeString, "uint"))
2521 argument.expression.ui = strtoul(value, (((void *)0)), 0);
2523 else if(!strcmp(curParam->dataTypeString, "char"))
2525 argument.expression.c = (char)strtol(value, (((void *)0)), 0);
2527 else if(!strcmp(curParam->dataTypeString, "byte"))
2529 argument.expression.uc = (unsigned char)strtoul(value, (((void *)0)), 0);
2531 else if(!strcmp(curParam->dataTypeString, "short"))
2533 argument.expression.s = (short)strtol(value, (((void *)0)), 0);
2535 else if(!strcmp(curParam->dataTypeString, "uint16"))
2537 argument.expression.us = (unsigned short)strtoul(value, (((void *)0)), 0);
2539 else if(!strcmp(curParam->dataTypeString, "int64"))
2541 argument.expression.i64 = __ecereNameSpace__ecere__com___strtoi64(value, (((void *)0)), 0);
2543 else if(!strcmp(curParam->dataTypeString, "uint64"))
2545 argument.expression.ui64 = __ecereNameSpace__ecere__com___strtoui64(value, (((void *)0)), 0);
2547 else if(!strcmp(curParam->dataTypeString, "float"))
2549 argument.expression.f = (float)strtod(value, (((void *)0)));
2551 else if(!strcmp(curParam->dataTypeString, "double"))
2553 argument.expression.d = strtod(value, (((void *)0)));
2557 argument.expression.i = strtol(value, (((void *)0)), 0);
2562 argument.memberString = __ecereNameSpace__ecere__sys__CopyString(value);
2565 __ecereNameSpace__ecere__com__FreeTemplateArg(templatedClass, curParam, curParamID);
2566 templatedClass->templateArgs[curParamID] = argument;
2570 if(templatedClass == _class)
2572 struct __ecereNameSpace__ecere__com__Class * sClass = _class;
2574 struct __ecereNameSpace__ecere__com__Class * nextClass;
2575 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param;
2577 for(nextClass = sClass->base; nextClass; nextClass = nextClass->base)
2579 if(nextClass->templateClass)
2580 nextClass = nextClass->templateClass;
2581 curParamID += nextClass->templateParams.count;
2583 for(param = sClass->templateParams.first; param; param = param->next)
2585 if(!templatedClass->templateArgs[curParamID].dataTypeString)
2587 templatedClass->templateArgs[curParamID] = param->defaultArg;
2588 __ecereNameSpace__ecere__com__CopyTemplateArg(param, &templatedClass->templateArgs[curParamID]);
2589 if(param->type == 0 && param->defaultArg.dataTypeString)
2591 templatedClass->templateArgs[curParamID].dataTypeClass = __ecereNameSpace__ecere__com__eSystem_FindClass(templatedClass->module, param->defaultArg.dataTypeString);
2592 if(!templatedClass->templateArgs[curParamID].dataTypeClass)
2593 templatedClass->templateArgs[curParamID].dataTypeClass = __ecereNameSpace__ecere__com__eSystem_FindClass(((struct __ecereNameSpace__ecere__com__Module *)(((char *)templatedClass->module + 12)))->application, param->defaultArg.dataTypeString);
2594 if(!templatedClass->templateArgs[curParamID].dataTypeClass)
2595 templatedClass->templateArgs[curParamID].dataTypeClass = __ecereNameSpace__ecere__com__eSystem_FindClass(findModule, param->defaultArg.dataTypeString);
2601 if(templatedClass->base && templatedClass->base->templateArgs && numParams - _class->templateParams.count)
2603 int c = numParams - _class->templateParams.count - 1;
2605 for(sClass = _class->base; sClass; sClass = sClass->base)
2607 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param;
2609 if(sClass->templateClass)
2610 sClass = sClass->templateClass;
2611 for(param = sClass->templateParams.last; param; param = param->prev)
2613 struct __ecereNameSpace__ecere__com__ClassTemplateArgument * arg = &templatedClass->templateArgs[c];
2614 struct __ecereNameSpace__ecere__com__ClassTemplateArgument * baseArg = &templatedClass->base->templateArgs[c];
2616 if(!(*arg).dataTypeString)
2618 *arg = templatedClass->base->templateArgs[c];
2619 __ecereNameSpace__ecere__com__CopyTemplateArg(param, arg);
2620 if(param->type == 0)
2622 if((*arg).dataTypeClass && strchr((*arg).dataTypeString, '<') && (*arg).dataTypeClass->templateArgs)
2624 struct __ecereNameSpace__ecere__com__Class * expClass = (*arg).dataTypeClass;
2625 struct __ecereNameSpace__ecere__com__Class * cClass = (((void *)0));
2628 char templateString[1024];
2630 sprintf(templateString, "%s<", expClass->templateClass->fullName);
2631 for(cClass = expClass; cClass; cClass = cClass->base)
2634 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param;
2636 for(param = cClass->templateParams.first; param; param = param->next)
2639 struct __ecereNameSpace__ecere__com__Class * sClass;
2640 struct __ecereNameSpace__ecere__com__ClassTemplateArgument arg;
2642 for(sClass = expClass->base; sClass; sClass = sClass->base)
2643 id += sClass->templateParams.count;
2644 arg = expClass->templateArgs[id];
2646 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * cParam;
2647 int p = numParams - _class->templateParams.count;
2649 for(cParam = _class->templateParams.first; cParam; cParam = cParam->next, p++)
2651 if(cParam->type == 0 && arg.dataTypeString && !strcmp(cParam->name, arg.dataTypeString))
2653 arg.dataTypeString = templatedClass->templateArgs[p].dataTypeString;
2654 arg.dataTypeClass = templatedClass->templateArgs[p].dataTypeClass;
2671 strcat(argument, arg.member->name);
2676 if(arg.dataTypeString)
2677 strcat(argument, arg.dataTypeString);
2684 strcat(templateString, ", ");
2685 if(lastParam != p - 1)
2687 strcat(templateString, param->name);
2688 strcat(templateString, " = ");
2690 strcat(templateString, argument);
2699 int len = strlen(templateString);
2701 if(templateString[len - 1] == '>')
2702 templateString[len++] = ' ';
2703 templateString[len++] = '>';
2704 templateString[len++] = '\0';
2706 __ecereNameSpace__ecere__com__FreeTemplateArg(templatedClass, param, c);
2707 (*arg).dataTypeString = __ecereNameSpace__ecere__sys__CopyString(templateString);
2708 (*arg).dataTypeClass = __ecereNameSpace__ecere__com__eSystem_FindClass(templatedClass->module, templateString);
2709 if(!(*arg).dataTypeClass)
2710 (*arg).dataTypeClass = __ecereNameSpace__ecere__com__eSystem_FindClass(((struct __ecereNameSpace__ecere__com__Module *)(((char *)templatedClass->module + 12)))->application, templateString);
2714 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * cParam;
2715 int p = numParams - _class->templateParams.count;
2717 for(cParam = _class->templateParams.first; cParam; cParam = cParam->next, p++)
2719 if(cParam->type == 0 && (*baseArg).dataTypeString && !strcmp(cParam->name, (*baseArg).dataTypeString))
2721 __ecereNameSpace__ecere__com__FreeTemplateArg(templatedClass, param, c);
2722 (*arg).dataTypeString = templatedClass->templateArgs[p].dataTypeString;
2723 (*arg).dataTypeClass = templatedClass->templateArgs[p].dataTypeClass;
2724 __ecereNameSpace__ecere__com__CopyTemplateArg(cParam, arg);
2736 struct __ecereNameSpace__ecere__com__Class * sClass;
2738 for(sClass = _class; sClass; sClass = sClass->base)
2741 struct __ecereNameSpace__ecere__com__Class * nextClass;
2742 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param;
2744 if(sClass->templateClass)
2745 sClass = sClass->templateClass;
2746 for(nextClass = sClass->base; nextClass; nextClass = nextClass->base)
2748 if(nextClass->templateClass)
2749 nextClass = nextClass->templateClass;
2750 curParamID += nextClass->templateParams.count;
2752 for(param = sClass->templateParams.first; param; param = param->next)
2754 if(!templatedClass->templateArgs[curParamID].dataTypeString)
2756 templatedClass->templateArgs[curParamID] = param->defaultArg;
2757 __ecereNameSpace__ecere__com__CopyTemplateArg(param, &templatedClass->templateArgs[curParamID]);
2758 if(param->type == 0 && param->defaultArg.dataTypeString)
2760 templatedClass->templateArgs[curParamID].dataTypeClass = __ecereNameSpace__ecere__com__eSystem_FindClass(templatedClass->module, param->defaultArg.dataTypeString);
2761 if(!templatedClass->templateArgs[curParamID].dataTypeClass)
2762 templatedClass->templateArgs[curParamID].dataTypeClass = __ecereNameSpace__ecere__com__eSystem_FindClass(((struct __ecereNameSpace__ecere__com__Module *)(((char *)templatedClass->module + 12)))->application, param->defaultArg.dataTypeString);
2763 if(!templatedClass->templateArgs[curParamID].dataTypeClass)
2764 templatedClass->templateArgs[curParamID].dataTypeClass = __ecereNameSpace__ecere__com__eSystem_FindClass(findModule, param->defaultArg.dataTypeString);
2772 int c = numParams - 1;
2774 for(sClass = _class; sClass; sClass = sClass->base)
2776 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param;
2778 if(sClass->templateClass)
2779 sClass = sClass->templateClass;
2780 for(param = sClass->templateParams.last; param; param = param->prev)
2782 if(param->type == 0)
2784 struct __ecereNameSpace__ecere__com__ClassTemplateArgument * arg = &templatedClass->templateArgs[c];
2785 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * cParam;
2786 struct __ecereNameSpace__ecere__com__Class * dClass;
2787 int p = numParams - 1;
2789 for(dClass = _class; dClass; dClass = dClass->base)
2791 if(dClass->templateClass)
2792 dClass = dClass->templateClass;
2793 for(cParam = dClass->templateParams.last; cParam; cParam = cParam->prev, p--)
2795 if(cParam->type == 0 && (*arg).dataTypeString && !strcmp(cParam->name, (*arg).dataTypeString))
2797 if(templatedClass->templateArgs[p].dataTypeString && c != p)
2799 __ecereNameSpace__ecere__com__FreeTemplateArg(templatedClass, param, c);
2800 (*arg).dataTypeString = templatedClass->templateArgs[p].dataTypeString;
2801 (*arg).dataTypeClass = templatedClass->templateArgs[p].dataTypeClass;
2802 __ecereNameSpace__ecere__com__CopyTemplateArg(cParam, arg);
2813 struct __ecereNameSpace__ecere__com__Class * tClass;
2814 int c = numParams - 1;
2816 for(tClass = _class; tClass; tClass = tClass->base)
2818 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param;
2820 if(tClass->templateClass)
2821 tClass = tClass->templateClass;
2822 for(param = tClass->templateParams.last; param; param = param->prev)
2824 struct __ecereNameSpace__ecere__com__ClassTemplateArgument * arg = &templatedClass->templateArgs[c];
2826 if(param->type == 1 && (*arg).memberString)
2828 struct __ecereNameSpace__ecere__com__Class * memberClass = templatedClass;
2829 char * memberString = (*arg).memberString;
2830 char * colon = strstr(memberString, "::");
2831 char * memberName = memberString;
2834 memberName = colon + 2;
2837 memberString = param->defaultArg.memberString;
2838 colon = memberString ? strstr(memberString, "::") : (((void *)0));
2842 char className[1024];
2843 struct __ecereNameSpace__ecere__com__Class * sClass;
2845 memcpy(className, memberString, colon - memberString);
2846 className[colon - memberString] = '\0';
2847 for(sClass = _class; sClass; sClass = sClass->base)
2849 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * cParam;
2850 struct __ecereNameSpace__ecere__com__Class * nextClass;
2853 if(sClass->templateClass)
2854 sClass = sClass->templateClass;
2855 for(nextClass = sClass->base; nextClass; nextClass = nextClass->base)
2857 if(nextClass->templateClass)
2858 nextClass = nextClass->templateClass;
2859 id += nextClass->templateParams.count;
2861 for(cParam = sClass->templateParams.first; cParam; cParam = cParam->next)
2863 if(cParam->type == 0 && !strcmp(cParam->name, className) && templatedClass->templateArgs[id].dataTypeString)
2865 strcpy(className, templatedClass->templateArgs[id].dataTypeString);
2870 memberClass = __ecereNameSpace__ecere__com__eSystem_FindClass(templatedClass->module, className);
2872 memberClass = __ecereNameSpace__ecere__com__eSystem_FindClass(findModule, className);
2874 memberClass = __ecereNameSpace__ecere__com__eSystem_FindClass(((struct __ecereNameSpace__ecere__com__Module *)(((char *)templatedClass->module + 12)))->application, className);
2878 switch(param->memberType)
2881 (*arg).member = __ecereNameSpace__ecere__com__eClass_FindDataMember(memberClass, memberName, memberClass->module, (((void *)0)), (((void *)0)));
2884 (*arg).method = __ecereNameSpace__ecere__com__eClass_FindMethod(memberClass, memberName, memberClass->module);
2887 (*arg).prop = __ecereNameSpace__ecere__com__eClass_FindProperty(memberClass, memberName, memberClass->module);
2898 unsigned int __ecereNameSpace__ecere__com__DefaultFunction()
2903 unsigned int __ecereNameSpace__ecere__com__eClass_IsDerived(struct __ecereNameSpace__ecere__com__Class * _class, struct __ecereNameSpace__ecere__com__Class * from)
2905 if(!_class && !from)
2907 if(_class && from && (_class->templateClass || from->templateClass))
2909 if(__ecereNameSpace__ecere__com__eClass_IsDerived(_class->templateClass ? _class->templateClass : _class, from->templateClass ? from->templateClass : from))
2911 if(!from->templateClass)
2913 else if(!_class->templateClass && _class == from->templateClass)
2917 struct __ecereNameSpace__ecere__com__Class * sClass;
2919 for(sClass = from; sClass; sClass = sClass->base)
2921 if(sClass->templateParams.first)
2923 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param;
2924 struct __ecereNameSpace__ecere__com__Class * nextClass;
2927 for(nextClass = sClass->base; nextClass; nextClass = nextClass->base)
2928 p += nextClass->templateParams.count;
2929 for(param = sClass->templateParams.first; param; param = param->next, p++)
2931 struct __ecereNameSpace__ecere__com__ClassTemplateArgument * arg = &_class->templateArgs[p];
2932 struct __ecereNameSpace__ecere__com__ClassTemplateArgument * fArg = &from->templateArgs[p];
2934 if(param->type == 0)
2936 if((*arg).dataTypeString != (*fArg).dataTypeString && (*arg).dataTypeString && (*fArg).dataTypeString && strcmp((*arg).dataTypeString, (*fArg).dataTypeString))
2939 else if(param->type == 1)
2941 if((*arg).member != (*fArg).member)
2944 else if(param->type == 2)
2946 if((*arg).expression.ui64 != (*fArg).expression.ui64)
2960 for(; _class && from; _class = _class->base)
2962 if(_class == from || _class->templateClass == from || (_class->type == 1000 && from->name && !strcmp(_class->name, from->name)))
2969 static void __ecereNameSpace__ecere__com__FixDerivativeVirtualMethod(struct __ecereNameSpace__ecere__com__Class * base, char * name, int vid, void * origFunction)
2971 struct __ecereNameSpace__ecere__sys__OldLink * derivative;
2973 for(derivative = base->derivatives.first; derivative; derivative = derivative->next)
2975 struct __ecereNameSpace__ecere__com__Class * _class = derivative->data;
2976 struct __ecereNameSpace__ecere__com__Method * method, * next;
2977 void * function = origFunction;
2980 _class->_vTbl = __ecereNameSpace__ecere__com__eSystem_Renew(_class->_vTbl, sizeof(void *) * (_class->vTblSize));
2981 memmove(_class->_vTbl + vid + 1, _class->_vTbl + vid, (_class->vTblSize - vid - 1) * sizeof(void *));
2982 method = (struct __ecereNameSpace__ecere__com__Method *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&_class->methods, name);
2985 if(method->function)
2986 function = method->function;
2987 (__ecereNameSpace__ecere__com__eSystem_Delete(method->name), method->name = 0);
2988 (__ecereNameSpace__ecere__com__eSystem_Delete(method->dataTypeString), method->dataTypeString = 0);
2989 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&_class->methods, (struct __ecereNameSpace__ecere__sys__BTNode *)method);
2991 for(method = (struct __ecereNameSpace__ecere__com__Method *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&_class->methods); method; method = next)
2993 next = (struct __ecereNameSpace__ecere__com__Method *)__ecereProp___ecereNameSpace__ecere__sys__BTNode_Get_next(((struct __ecereNameSpace__ecere__sys__BTNode *)method));
2994 if(method->type == 1)
2997 _class->_vTbl[vid] = function;
2999 struct __ecereNameSpace__ecere__sys__OldLink * templateLink;
3001 for(templateLink = _class->templatized.first; templateLink; templateLink = templateLink->next)
3003 struct __ecereNameSpace__ecere__com__Class * template = templateLink->data;
3005 template->_vTbl = _class->_vTbl;
3008 if(_class->derivatives.first || _class->templatized.first)
3009 __ecereNameSpace__ecere__com__FixDerivativeVirtualMethod(_class, name, vid, function);
3012 struct __ecereNameSpace__ecere__sys__OldLink * templateLink;
3014 for(templateLink = base->templatized.first; templateLink; templateLink = templateLink->next)
3016 struct __ecereNameSpace__ecere__com__Class * template = templateLink->data;
3018 template->_vTbl = base->_vTbl;
3019 __ecereNameSpace__ecere__com__FixDerivativeVirtualMethod(template, name, vid, origFunction);
3024 struct __ecereNameSpace__ecere__com__Method * __ecereNameSpace__ecere__com__eClass_AddMethod(struct __ecereNameSpace__ecere__com__Class * _class, char * name, char * type, void * function, int declMode)
3028 struct __ecereNameSpace__ecere__com__Class * base;
3030 for(base = _class; base; base = base->base)
3032 struct __ecereNameSpace__ecere__com__Method * method = (struct __ecereNameSpace__ecere__com__Method *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&base->methods, name);
3036 if(method->type == 1)
3038 struct __ecereNameSpace__ecere__sys__OldLink * deriv;
3039 void * oldFunction = _class->_vTbl[method->vid];
3041 if(method->vid > _class->vTblSize)
3044 _class->_vTbl[method->vid] = function ? function : __ecereNameSpace__ecere__com__DefaultFunction;
3045 for(deriv = _class->derivatives.first; deriv; deriv = deriv->next)
3047 struct __ecereNameSpace__ecere__com__Class * derivClass = deriv->data;
3049 if(derivClass->_vTbl[method->vid] == oldFunction)
3050 __ecereNameSpace__ecere__com__eClass_AddMethod(derivClass, name, type, function, declMode);
3053 struct __ecereNameSpace__ecere__sys__OldLink * templateLink;
3055 for(templateLink = _class->templatized.first; templateLink; templateLink = templateLink->next)
3057 struct __ecereNameSpace__ecere__com__Class * template = templateLink->data;
3059 for(deriv = template->derivatives.first; deriv; deriv = deriv->next)
3061 struct __ecereNameSpace__ecere__com__Class * derivClass = deriv->data;
3063 if(derivClass->_vTbl[method->vid] == oldFunction)
3064 __ecereNameSpace__ecere__com__eClass_AddMethod(derivClass, name, type, function, declMode);
3075 base = (((void *)0));
3083 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);
3085 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&_class->methods, (struct __ecereNameSpace__ecere__sys__BTNode *)method);
3089 return (((void *)0));
3092 struct __ecereNameSpace__ecere__com__Method * __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(struct __ecereNameSpace__ecere__com__Class * _class, char * name, char * type, void * function, int declMode)
3096 struct __ecereNameSpace__ecere__com__Class * base;
3098 for(base = _class; base; base = base->base)
3100 struct __ecereNameSpace__ecere__com__Method * method = (struct __ecereNameSpace__ecere__com__Method *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&base->methods, name);
3104 if(method->type == 1)
3105 _class->_vTbl[method->vid] = function ? function : __ecereNameSpace__ecere__com__DefaultFunction;
3107 base = (((void *)0));
3113 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);
3115 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&_class->methods, (struct __ecereNameSpace__ecere__sys__BTNode *)method);
3116 _class->_vTbl = __ecereNameSpace__ecere__com__eSystem_Renew(_class->_vTbl, sizeof(void *) * (_class->vTblSize));
3117 _class->_vTbl[method->vid] = function ? function : __ecereNameSpace__ecere__com__DefaultFunction;
3118 if(_class->derivatives.first || _class->templatized.first)
3119 __ecereNameSpace__ecere__com__FixDerivativeVirtualMethod(_class, name, method->vid, function ? function : (void *)__ecereNameSpace__ecere__com__DefaultFunction);
3123 return (((void *)0));
3126 static void __ecereNameSpace__ecere__com__FixDerivativeProperty(struct __ecereNameSpace__ecere__com__Class * base, struct __ecereNameSpace__ecere__com__Property * _property)
3128 struct __ecereNameSpace__ecere__sys__OldLink * derivative;
3130 for(derivative = base->derivatives.first; derivative; derivative = derivative->next)
3132 struct __ecereNameSpace__ecere__com__Class * _class = derivative->data;
3133 struct __ecereNameSpace__ecere__com__Property * prop;
3134 struct __ecereNameSpace__ecere__com__BTNamedLink * link;
3136 link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&_class->prop, _property->name);
3140 if(!prop->Set && !prop->Get && prop->memberAccess == 4)
3142 struct __ecereNameSpace__ecere__com__SelfWatcher * watcher;
3144 for(watcher = _class->selfWatchers.first; watcher; watcher = watcher->next)
3146 if(watcher->_property == prop)
3147 watcher->_property = _property;
3149 _property->selfWatchable = 0x1;
3150 (__ecereNameSpace__ecere__com__eSystem_Delete(prop->name), prop->name = 0);
3151 (__ecereNameSpace__ecere__com__eSystem_Delete(prop->dataTypeString), prop->dataTypeString = 0);
3152 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&_class->membersAndProperties, prop);
3153 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&_class->prop, (struct __ecereNameSpace__ecere__sys__BTNode *)link);
3156 for(prop = _class->membersAndProperties.first; prop; prop = prop->next)
3159 _class->startMemberID++;
3160 __ecereNameSpace__ecere__com__FixDerivativeProperty(_class, _property);
3164 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)
3166 void * __ecereTemp1;
3167 struct __ecereNameSpace__ecere__com__Property * _property = (((void *)0));
3171 if(!__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&_class->prop, (name ? name : dataType)))
3173 _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));
3175 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&_class->membersAndProperties, _property);
3177 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&_class->conversions, _property);
3178 __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)));
3179 if(!_property->conversion)
3181 __ecereNameSpace__ecere__com__FixDerivativeProperty(_class, _property);
3188 static void __ecereNameSpace__ecere__com__SetDelayedCPValues(struct __ecereNameSpace__ecere__com__Class * _class, struct __ecereNameSpace__ecere__com__ClassProperty * _property)
3190 struct __ecereNameSpace__ecere__sys__OldLink * deriv;
3191 struct __ecereNameSpace__ecere__sys__NamedLink * value, * next;
3193 for(value = _class->delayedCPValues.first; value; value = next)
3196 if(!strcmp(value->name, _property->name))
3198 _property->Set(_class, (int)value->data);
3199 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&_class->delayedCPValues, value);
3202 for(deriv = _class->derivatives.first; deriv; deriv = deriv->next)
3204 __ecereNameSpace__ecere__com__SetDelayedCPValues(deriv->data, _property);
3208 struct __ecereNameSpace__ecere__com__ClassProperty * __ecereNameSpace__ecere__com__eClass_AddClassProperty(struct __ecereNameSpace__ecere__com__Class * _class, char * name, char * dataType, void * setStmt, void * getStmt)
3210 if(name && !__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&_class->classProperties, name))
3212 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);
3214 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&_class->classProperties, (struct __ecereNameSpace__ecere__sys__BTNode *)_property);
3215 __ecereNameSpace__ecere__com__SetDelayedCPValues(_class, _property);
3218 return (((void *)0));
3221 struct __ecereNameSpace__ecere__com__ClassProperty * __ecereNameSpace__ecere__com__eClass_FindClassProperty(struct __ecereNameSpace__ecere__com__Class * _class, char * name)
3223 struct __ecereNameSpace__ecere__com__ClassProperty * _property = (((void *)0));
3227 struct __ecereNameSpace__ecere__com__Class * origClass = _class;
3229 for(; _class; _class = _class->base)
3231 _property = (struct __ecereNameSpace__ecere__com__ClassProperty *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&_class->classProperties, name);
3235 if(!_property && origClass->type == 4)
3237 struct __ecereNameSpace__ecere__com__Class * enumClass = __ecereNameSpace__ecere__com__eSystem_FindClass(origClass->module, "enum");
3239 _property = __ecereNameSpace__ecere__com__eClass_FindClassProperty(enumClass, name);
3245 int __ecereNameSpace__ecere__com__eClass_GetProperty(struct __ecereNameSpace__ecere__com__Class * _class, char * name)
3247 struct __ecereNameSpace__ecere__com__ClassProperty * _property = __ecereNameSpace__ecere__com__eClass_FindClassProperty(_class, name);
3249 if(_property && _property->Get && _property->Get != (void *)1)
3251 int result = _property->Get(_class);
3258 void __ecereNameSpace__ecere__com__eClass_SetProperty(struct __ecereNameSpace__ecere__com__Class * _class, char * name, int value)
3260 void * __ecereTemp1;
3261 struct __ecereNameSpace__ecere__com__ClassProperty * _property = __ecereNameSpace__ecere__com__eClass_FindClassProperty(_class, name);
3266 _property->Set(_class, value);
3270 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&_class->delayedCPValues, (__ecereTemp1 = __ecereNameSpace__ecere__com__eSystem_New0(16), ((struct __ecereNameSpace__ecere__sys__NamedLink *)__ecereTemp1)->name = name, ((struct __ecereNameSpace__ecere__sys__NamedLink *)__ecereTemp1)->data = (void *)value, ((struct __ecereNameSpace__ecere__sys__NamedLink *)__ecereTemp1)));
3274 struct __ecereNameSpace__ecere__com__Method * __ecereNameSpace__ecere__com__eClass_FindMethod(struct __ecereNameSpace__ecere__com__Class * _class, char * name, struct __ecereNameSpace__ecere__com__Instance * module)
3278 for(; _class; _class = _class->base)
3280 struct __ecereNameSpace__ecere__com__Method * method;
3282 if(_class->templateClass)
3283 _class = _class->templateClass;
3284 method = (struct __ecereNameSpace__ecere__com__Method *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&_class->methods, name);
3285 if(method && (method->memberAccess == 1 || _class->module == module || !method->dataTypeString))
3287 if(!method->dataTypeString)
3289 if(_class->module != module)
3291 if(method->memberAccess == 1)
3292 module = _class->module;
3295 return (((void *)0));
3304 if(_class->inheritanceAccess == 2 && _class->module != module)
3308 return (((void *)0));
3311 static unsigned int __ecereNameSpace__ecere__com__ConstructInstance(void * instance, struct __ecereNameSpace__ecere__com__Class * _class)
3313 if(_class->templateClass)
3314 _class = _class->templateClass;
3317 if(!__ecereNameSpace__ecere__com__ConstructInstance(instance, _class->base))
3320 if(_class->Initialize)
3322 void (* Initialize)(struct __ecereNameSpace__ecere__com__Instance * module) = (void *)_class->Initialize;
3324 _class->Initialize = (((void *)0));
3325 Initialize(_class->module);
3327 if(_class->Constructor)
3329 if(!_class->Constructor(instance))
3331 for(; _class; _class = _class->base)
3333 if(_class->templateClass)
3334 _class = _class->templateClass;
3335 if(_class->Destructor)
3336 _class->Destructor(instance);
3341 (_class->templateClass ? _class->templateClass : _class)->count++;
3345 void * __ecereNameSpace__ecere__com__eInstance_New(struct __ecereNameSpace__ecere__com__Class * _class)
3347 struct __ecereNameSpace__ecere__com__Instance * instance = (((void *)0));
3351 instance = __ecereNameSpace__ecere__com___calloc(1, _class->structSize);
3352 if(_class->type == 0)
3354 ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class = _class;
3355 ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_vTbl = _class->_vTbl;
3357 if(!__ecereNameSpace__ecere__com__ConstructInstance(instance, _class))
3359 __ecereNameSpace__ecere__com___free(instance);
3360 instance = (((void *)0));
3366 void __ecereNameSpace__ecere__com__eInstance_Evolve(struct __ecereNameSpace__ecere__com__Instance ** instancePtr, struct __ecereNameSpace__ecere__com__Class * _class)
3368 if(_class && instancePtr && *instancePtr)
3370 struct __ecereNameSpace__ecere__com__Instance * instance = (struct __ecereNameSpace__ecere__com__Instance *)__ecereNameSpace__ecere__com__eSystem_Renew(*instancePtr, sizeof(unsigned char) * (_class->structSize));
3372 *instancePtr = instance;
3373 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);
3374 if(!strcmp(((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class->name, "Application"))
3376 struct __ecereNameSpace__ecere__com__Instance * module;
3377 struct __ecereNameSpace__ecere__com__Instance * app = (struct __ecereNameSpace__ecere__com__Instance *)instance;
3378 struct __ecereNameSpace__ecere__com__BTNamedLink * link;
3379 struct __ecereNameSpace__ecere__com__Class * _class;
3380 struct __ecereNameSpace__ecere__com__NameSpace * nameSpace;
3382 for(module = ((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 296)))->allModules.first; module; module = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->next)
3383 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application = app;
3384 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)))
3386 struct __ecereNameSpace__ecere__sys__OldLink * t;
3388 ((struct __ecereNameSpace__ecere__com__Class *)link->data)->nameSpace = &((struct __ecereNameSpace__ecere__com__Module *)(((char *)app + 12)))->privateNameSpace;
3389 for(t = ((struct __ecereNameSpace__ecere__com__Class *)link->data)->templatized.first; t; t = t->next)
3391 struct __ecereNameSpace__ecere__com__Class * template = t->data;
3393 template->nameSpace = ((struct __ecereNameSpace__ecere__com__Class *)link->data)->nameSpace;
3396 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)))
3398 struct __ecereNameSpace__ecere__sys__OldLink * t;
3400 ((struct __ecereNameSpace__ecere__com__Class *)link->data)->nameSpace = &((struct __ecereNameSpace__ecere__com__Module *)(((char *)app + 12)))->publicNameSpace;
3401 for(t = ((struct __ecereNameSpace__ecere__com__Class *)link->data)->templatized.first; t; t = t->next)
3403 struct __ecereNameSpace__ecere__com__Class * template = t->data;
3405 template->nameSpace = ((struct __ecereNameSpace__ecere__com__Class *)link->data)->nameSpace;
3408 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)))
3409 ((struct __ecereNameSpace__ecere__com__DefinedExpression *)link->data)->nameSpace = &((struct __ecereNameSpace__ecere__com__Module *)(((char *)app + 12)))->privateNameSpace;
3410 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)))
3411 ((struct __ecereNameSpace__ecere__com__DefinedExpression *)link->data)->nameSpace = &((struct __ecereNameSpace__ecere__com__Module *)(((char *)app + 12)))->publicNameSpace;
3412 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)))
3413 ((struct __ecereNameSpace__ecere__com__GlobalFunction *)link->data)->nameSpace = &((struct __ecereNameSpace__ecere__com__Module *)(((char *)app + 12)))->privateNameSpace;
3414 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)))
3415 ((struct __ecereNameSpace__ecere__com__GlobalFunction *)link->data)->nameSpace = &((struct __ecereNameSpace__ecere__com__Module *)(((char *)app + 12)))->publicNameSpace;
3416 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)))
3417 (*nameSpace).parent = &((struct __ecereNameSpace__ecere__com__Module *)(((char *)app + 12)))->privateNameSpace;
3418 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)))
3419 (*nameSpace).parent = &((struct __ecereNameSpace__ecere__com__Module *)(((char *)app + 12)))->publicNameSpace;
3420 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)))
3422 struct __ecereNameSpace__ecere__sys__OldLink * t;
3424 ((struct __ecereNameSpace__ecere__com__Class *)link->data)->nameSpace = &((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 296)))->systemNameSpace;
3425 for(t = ((struct __ecereNameSpace__ecere__com__Class *)link->data)->templatized.first; t; t = t->next)
3427 struct __ecereNameSpace__ecere__com__Class * template = t->data;
3429 template->nameSpace = ((struct __ecereNameSpace__ecere__com__Class *)link->data)->nameSpace;
3432 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)))
3433 ((struct __ecereNameSpace__ecere__com__DefinedExpression *)link->data)->nameSpace = &((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 296)))->systemNameSpace;
3434 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)))
3435 ((struct __ecereNameSpace__ecere__com__GlobalFunction *)link->data)->nameSpace = &((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 296)))->systemNameSpace;
3436 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)))
3437 ((struct __ecereNameSpace__ecere__com__GlobalFunction *)link->data)->nameSpace = &((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 296)))->systemNameSpace;
3438 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)))
3439 (*nameSpace).parent = &((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 296)))->systemNameSpace;
3440 for(_class = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)app + 12)))->classes.first; _class; _class = _class->next)
3442 struct __ecereNameSpace__ecere__sys__OldLink * templateLink;
3444 _class->module = (struct __ecereNameSpace__ecere__com__Instance *)app;
3445 for(templateLink = _class->templatized.first; templateLink; templateLink = templateLink->next)
3447 struct __ecereNameSpace__ecere__com__Class * template = templateLink->data;
3449 template->module = _class->module;
3452 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)app + 12)))->application = app;
3455 struct __ecereNameSpace__ecere__com__Class * base;
3457 for(base = ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class; base && base->type == 0 && base->count; base = base->base)
3458 (base->templateClass ? base->templateClass : base)->count--;
3460 ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class = _class;
3461 ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_vTbl = _class->_vTbl;
3462 if(!__ecereNameSpace__ecere__com__ConstructInstance(instance, _class))
3464 __ecereNameSpace__ecere__com___free(instance);
3465 *instancePtr = (((void *)0));
3470 void __ecereNameSpace__ecere__com__eInstance_Delete(struct __ecereNameSpace__ecere__com__Instance * instance)
3474 struct __ecereNameSpace__ecere__com__Class * _class, * base;
3475 unsigned int ownVtbl = ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_vTbl != ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class->_vTbl;
3477 for(_class = ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class; _class; _class = base)
3479 if(_class->templateClass)
3480 _class = _class->templateClass;
3481 if(_class->destructionWatchOffset)
3483 struct __ecereNameSpace__ecere__sys__OldList * watchers = (struct __ecereNameSpace__ecere__sys__OldList *)((unsigned char *)instance + _class->destructionWatchOffset);
3484 struct __ecereNameSpace__ecere__com__Watcher * watcher, * next;
3486 for(watcher = (*watchers).first; watcher; watcher = next)
3488 next = watcher->next;
3489 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove((&*watchers), watcher);
3490 watcher->callback(watcher->object, instance);
3491 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete((&*watchers), watcher);
3494 base = _class->base;
3495 if(base && base->type == 1000)
3496 base = (((void *)0));
3497 if(_class->Destructor)
3498 _class->Destructor(instance);
3500 for(_class = ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class; _class; _class = base)
3502 if(_class->templateClass)
3503 _class = _class->templateClass;
3504 base = _class->base;
3505 (_class->templateClass ? _class->templateClass : _class)->count--;
3506 if(_class->type == 0 && !_class->count && !_class->module)
3508 __ecereNameSpace__ecere__com__eClass_Unregister(_class);
3513 (__ecereNameSpace__ecere__com__eSystem_Delete(((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_vTbl), ((struct __ecereNameSpace__ecere__com__Instance * )(char * )instance)->_vTbl = 0);
3515 __ecereNameSpace__ecere__com___free(instance);
3519 struct __ecereNameSpace__ecere__com__Property * __ecereNameSpace__ecere__com__eClass_FindProperty(struct __ecereNameSpace__ecere__com__Class * _class, char * name, struct __ecereNameSpace__ecere__com__Instance * module)
3523 for(; _class; _class = _class->base)
3525 struct __ecereNameSpace__ecere__com__BTNamedLink * link;
3527 if(_class->templateClass)
3528 _class = _class->templateClass;
3529 link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&_class->prop, name);
3532 struct __ecereNameSpace__ecere__com__Property * _property = (struct __ecereNameSpace__ecere__com__Property *)link->data;
3534 if(_property->memberAccess == 1 || _class->module == module || !_property->dataTypeString)
3536 if(!_property->dataTypeString)
3538 if(_class->module != module)
3540 if(_property->memberAccess == 1)
3541 module = _class->module;
3544 return (((void *)0));
3554 if(_class->inheritanceAccess == 2 && _class->module != module)
3558 return (((void *)0));
3561 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)
3563 struct __ecereNameSpace__ecere__com__BTNamedLink * link;
3564 struct __ecereNameSpace__ecere__com__DataMember * dataMember;
3566 link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(alist, name);
3569 dataMember = link->data;
3570 if(dataMember->type == 0 && (dataMember->memberAccess == 1 || searchPrivate || !dataMember->dataTypeString))
3573 *offset += dataMember->offset;
3575 *id = dataMember->id;
3578 return (((void *)0));
3580 for(dataMember = list->first; dataMember; dataMember = dataMember->next)
3582 if(!dataMember->isProperty && (dataMember->memberAccess == 1 || searchPrivate) && !dataMember->name && (dataMember->type == 1 || dataMember->type == 2))
3584 struct __ecereNameSpace__ecere__com__DataMember * childMember;
3586 if(subMemberStackPos)
3587 subMemberStack[(*subMemberStackPos)++] = dataMember;
3588 childMember = __ecereNameSpace__ecere__com__FindDataMember(&dataMember->members, &dataMember->membersAlpha, name, offset, id, searchPrivate, subMemberStack, subMemberStackPos);
3592 *offset += dataMember->offset;
3594 *id += dataMember->id;
3597 if(subMemberStackPos)
3598 (*subMemberStackPos)--;
3601 return (((void *)0));
3604 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)
3606 struct __ecereNameSpace__ecere__com__DataMember * dataMember = (((void *)0));
3608 if(subMemberStackPos)
3609 *subMemberStackPos = 0;
3612 for(; _class; _class = _class->base)
3614 if(_class->templateClass)
3615 _class = _class->templateClass;
3616 dataMember = __ecereNameSpace__ecere__com__FindDataMember(&_class->membersAndProperties, &_class->members, name, (((void *)0)), (((void *)0)), _class->module == module, subMemberStack, subMemberStackPos);
3619 if(!dataMember->dataTypeString)
3621 if(_class->module != module)
3623 if(dataMember->memberAccess == 1)
3624 module = _class->module;
3627 return (((void *)0));
3630 dataMember = (((void *)0));
3634 dataMember->_class = _class->templateClass ? _class->templateClass : _class;
3638 if(_class->inheritanceAccess == 2 && _class->module != module)
3645 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)
3647 struct __ecereNameSpace__ecere__com__DataMember * dataMember = (((void *)0));
3649 if(subMemberStackPos)
3650 *subMemberStackPos = 0;
3655 for(; _class; _class = _class->base)
3657 if(_class->templateClass)
3658 _class = _class->templateClass;
3659 dataMember = __ecereNameSpace__ecere__com__FindDataMember(&_class->membersAndProperties, &_class->members, name, offset, (((void *)0)), _class->module == module, subMemberStack, subMemberStackPos);
3662 if(!dataMember->dataTypeString)
3664 if(_class->module != module)
3666 if(dataMember->memberAccess == 1)
3667 module = _class->module;
3670 return (((void *)0));
3673 dataMember = (((void *)0));
3677 dataMember->_class = _class;
3681 if(_class->inheritanceAccess == 2 && _class->module != module)
3688 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)
3690 struct __ecereNameSpace__ecere__com__DataMember * dataMember = (((void *)0));
3692 if(subMemberStackPos)
3693 *subMemberStackPos = 0;
3696 for(; _class; _class = _class->base)
3698 if(_class->templateClass)
3699 _class = _class->templateClass;
3700 dataMember = __ecereNameSpace__ecere__com__FindDataMember(&_class->membersAndProperties, &_class->members, name, (((void *)0)), id, _class->module == module, subMemberStack, subMemberStackPos);
3703 if(!dataMember->dataTypeString)
3705 if(_class->module != module)
3707 if(dataMember->memberAccess == 1)
3708 module = _class->module;
3711 return (((void *)0));
3714 dataMember = (((void *)0));
3718 dataMember->_class = _class;
3722 if(_class->inheritanceAccess == 2 && _class->module != module)
3729 void __ecereNameSpace__ecere__com__eClass_FindNextMember(struct __ecereNameSpace__ecere__com__Class * _class, struct __ecereNameSpace__ecere__com__Class ** curClass, struct __ecereNameSpace__ecere__com__DataMember ** curMember, struct __ecereNameSpace__ecere__com__DataMember ** subMemberStack, int * subMemberStackPos)
3733 *curMember = (*curMember)->next;
3734 if(subMemberStackPos && *subMemberStackPos > 0 && subMemberStack[*subMemberStackPos - 1]->type == 1)
3736 *curMember = subMemberStack[--(*subMemberStackPos)];
3737 *curMember = (*curMember)->next;
3739 if(subMemberStackPos && *subMemberStackPos > 0)
3741 while(*curMember && ((*curMember)->memberAccess == 2))
3742 *curMember = (*curMember)->next;
3745 while(*curMember && (*curMember)->name)
3747 struct __ecereNameSpace__ecere__com__DataMember * dataMember = __ecereNameSpace__ecere__com__eClass_FindDataMember(_class, (*curMember)->name, (((void *)0)), (((void *)0)), (((void *)0)));
3750 dataMember = (struct __ecereNameSpace__ecere__com__DataMember *)__ecereNameSpace__ecere__com__eClass_FindProperty(_class, (*curMember)->name, (((void *)0)));
3751 if(dataMember && dataMember->memberAccess != 2)
3753 *curMember = dataMember;
3757 *curMember = (*curMember)->next;
3759 if(subMemberStackPos)
3761 while((*curMember) && !(*curMember)->isProperty && !(*curMember)->name && ((*curMember)->type == 2 || (*curMember)->type == 1))
3763 subMemberStack[(*subMemberStackPos)++] = *curMember;
3764 *curMember = (*curMember)->members.first;
3765 while(*curMember && ((*curMember)->memberAccess == 2))
3766 *curMember = (*curMember)->next;
3774 if(subMemberStackPos && *subMemberStackPos)
3776 *curMember = subMemberStack[--(*subMemberStackPos)];
3777 *curMember = (*curMember)->next;
3781 struct __ecereNameSpace__ecere__com__Class * lastCurClass = *curClass;
3783 if(*curClass == _class)
3785 for(*curClass = _class; (*curClass)->base != lastCurClass && (*curClass)->base->type != 1000 && (*curClass)->inheritanceAccess != 2; *curClass = (*curClass)->base)
3787 *curMember = (*curClass)->membersAndProperties.first;
3789 if(subMemberStackPos && *subMemberStackPos > 0)
3791 while(*curMember && ((*curMember)->memberAccess == 2))
3792 *curMember = (*curMember)->next;
3795 while(*curMember && (*curMember)->name)
3797 struct __ecereNameSpace__ecere__com__DataMember * dataMember = __ecereNameSpace__ecere__com__eClass_FindDataMember(_class, (*curMember)->name, (((void *)0)), (((void *)0)), (((void *)0)));
3800 dataMember = (struct __ecereNameSpace__ecere__com__DataMember *)__ecereNameSpace__ecere__com__eClass_FindProperty(_class, (*curMember)->name, (((void *)0)));
3801 if(dataMember && dataMember->memberAccess != 2)
3803 *curMember = dataMember;
3807 *curMember = (*curMember)->next;
3809 if(subMemberStackPos)
3811 while((*curMember) && !(*curMember)->isProperty && !(*curMember)->name && ((*curMember)->type == 2 || (*curMember)->type == 1))
3813 subMemberStack[(*subMemberStackPos)++] = *curMember;
3814 *curMember = (*curMember)->members.first;
3815 while(*curMember && (*curMember)->memberAccess == 2)
3816 *curMember = (*curMember)->next;
3823 void __ecereNameSpace__ecere__com__eInstance_SetMethod(struct __ecereNameSpace__ecere__com__Instance * instance, char * name, void * function)
3825 if(instance && name)
3827 struct __ecereNameSpace__ecere__com__Class * _class;
3829 for(_class = ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class; _class; _class = _class->base)
3831 struct __ecereNameSpace__ecere__com__Method * method = (struct __ecereNameSpace__ecere__com__Method *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&_class->methods, name);
3833 if(method && method->type == 1)
3835 if(((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_vTbl == ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class->_vTbl)
3837 ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_vTbl = __ecereNameSpace__ecere__com___malloc(sizeof(void *) * ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class->vTblSize);
3838 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);
3840 ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_vTbl[method->vid] = function ? function : __ecereNameSpace__ecere__com__DefaultFunction;
3846 unsigned int __ecereNameSpace__ecere__com__eInstance_IsDerived(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Class * from)
3850 struct __ecereNameSpace__ecere__com__Class * _class = ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class;
3852 for(; _class; _class = _class->base)
3861 void __ecereNameSpace__ecere__com__eInstance_IncRef(struct __ecereNameSpace__ecere__com__Instance * instance)
3864 ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_refCount++;
3867 void __ecereNameSpace__ecere__com__eInstance_DecRef(struct __ecereNameSpace__ecere__com__Instance * instance)
3871 ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_refCount--;
3872 if(((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_refCount <= 0)
3874 __ecereNameSpace__ecere__com__eInstance_Delete(instance);
3879 static void __ecereNameSpace__ecere__com__FixOffsets(struct __ecereNameSpace__ecere__com__Class * _class)
3881 struct __ecereNameSpace__ecere__sys__OldLink * deriv;
3883 _class->structSize += _class->base->structSize - _class->offset;
3884 _class->offset = _class->base->structSize;
3885 for(deriv = _class->derivatives.first; deriv; deriv = deriv->next)
3886 __ecereNameSpace__ecere__com__FixOffsets(deriv->data);
3889 void __ecereNameSpace__ecere__com__eClass_Resize(struct __ecereNameSpace__ecere__com__Class * _class, int newSize)
3891 struct __ecereNameSpace__ecere__sys__OldLink * deriv;
3893 _class->structSize = newSize;
3894 for(deriv = _class->derivatives.first; deriv; deriv = deriv->next)
3895 __ecereNameSpace__ecere__com__FixOffsets(deriv->data);
3898 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)
3900 void * __ecereTemp1;
3904 if(!__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&_class->members, name))
3906 struct __ecereNameSpace__ecere__com__DataMember * dataMember;
3910 int __simpleStruct0;
3912 _class->structAlignment = (__simpleStruct0 = _class->structAlignment, (__simpleStruct0 > alignment) ? __simpleStruct0 : alignment);
3913 if(_class->memberOffset % alignment)
3914 _class->memberOffset += alignment - (_class->memberOffset % alignment);
3916 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));
3917 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&_class->membersAndProperties, dataMember);
3918 _class->memberOffset += size;
3919 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&_class->members, (struct __ecereNameSpace__ecere__sys__BTNode *)(__ecereTemp1 = __ecereNameSpace__ecere__com__eSystem_New0(24), ((struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereTemp1)->name = dataMember->name, ((struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereTemp1)->data = dataMember, ((struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereTemp1)));
3923 return (((void *)0));
3926 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)
3928 void * __ecereTemp1;
3930 if(name && !__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&member->membersAlpha, name))
3932 struct __ecereNameSpace__ecere__com__DataMember * dataMember;
3936 int __simpleStruct0;
3938 member->structAlignment = (__simpleStruct0 = member->structAlignment, (__simpleStruct0 > alignment) ? __simpleStruct0 : alignment);
3939 if(member->memberOffset % alignment)
3940 member->memberOffset += alignment - (member->memberOffset % alignment);
3942 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));
3943 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&member->members, dataMember);
3944 if(member->type == 1)
3946 if(size > member->memberOffset)
3947 member->memberOffset = size;
3950 member->memberOffset += size;
3951 __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)));
3954 return (((void *)0));
3957 struct __ecereNameSpace__ecere__com__DataMember * __ecereNameSpace__ecere__com__eMember_New(int type, int declMode)
3959 void * __ecereTemp1;
3961 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));
3964 static void __ecereNameSpace__ecere__com__SetMemberClass(struct __ecereNameSpace__ecere__com__DataMember * member, struct __ecereNameSpace__ecere__com__Class * _class)
3966 struct __ecereNameSpace__ecere__com__DataMember * dataMember;
3968 member->_class = _class;
3969 for(dataMember = member->members.first; dataMember; dataMember = dataMember->next)
3970 __ecereNameSpace__ecere__com__SetMemberClass(dataMember, _class);
3973 unsigned int __ecereNameSpace__ecere__com__eMember_AddMember(struct __ecereNameSpace__ecere__com__DataMember * addTo, struct __ecereNameSpace__ecere__com__DataMember * dataMember)
3975 void * __ecereTemp1;
3976 int __simpleStruct0, __simpleStruct1;
3978 if(dataMember->name && __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&addTo->membersAlpha, dataMember->name))
3980 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&addTo->members, dataMember);
3981 if(dataMember->name)
3982 __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)));
3983 dataMember->_class = addTo->_class;
3984 dataMember->id = addTo->memberID;
3985 if(dataMember->type == 1)
3986 addTo->memberID += 1;
3988 addTo->memberID += dataMember->memberID;
3989 addTo->structAlignment = (__simpleStruct0 = addTo->structAlignment, __simpleStruct1 = dataMember->structAlignment, (__simpleStruct0 > __simpleStruct1) ? __simpleStruct0 : __simpleStruct1);
3990 dataMember->offset = (addTo->type == 1) ? 0 : addTo->memberOffset;
3991 if(addTo->type == 1)
3993 if(dataMember->memberOffset > addTo->memberOffset)
3994 addTo->memberOffset = dataMember->memberOffset;
3997 addTo->memberOffset += dataMember->memberOffset;
4001 unsigned int __ecereNameSpace__ecere__com__eClass_AddMember(struct __ecereNameSpace__ecere__com__Class * _class, struct __ecereNameSpace__ecere__com__DataMember * dataMember)
4003 void * __ecereTemp1;
4004 int __simpleStruct0, __simpleStruct1;
4006 if(!_class || _class->comRedefinition || (dataMember->name && __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&_class->members, dataMember->name)))
4008 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&_class->membersAndProperties, dataMember);
4009 if(dataMember->name)
4010 __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)));
4011 __ecereNameSpace__ecere__com__SetMemberClass(dataMember, _class);
4012 dataMember->id = _class->memberID;
4013 _class->structAlignment = (__simpleStruct0 = _class->structAlignment, __simpleStruct1 = dataMember->structAlignment, (__simpleStruct0 > __simpleStruct1) ? __simpleStruct0 : __simpleStruct1);
4014 if(dataMember->type == 1)
4015 _class->memberID += 1;
4017 _class->memberID += dataMember->memberID;
4018 dataMember->offset = _class->memberOffset;
4019 _class->memberOffset += dataMember->memberOffset;
4023 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)
4025 void * __ecereTemp1;
4027 if(_class && name && !__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&_class->members, name))
4031 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);
4033 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&_class->membersAndProperties, bitMember);
4036 bitMember->pos = (bitPos == -1) ? _class->memberOffset : bitPos;
4037 bitMember->size = bitSize;
4038 _class->memberOffset = bitMember->pos + bitMember->size;
4039 for(c = 0; c < bitSize; c++)
4045 bitMember->mask = mask << bitMember->pos;
4047 __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)));
4050 return (((void *)0));
4053 static struct __ecereNameSpace__ecere__com__Instance * __ecereNameSpace__ecere__com__Module_Load(struct __ecereNameSpace__ecere__com__Instance * fromModule, char * name, int importAccess, unsigned int ensureCOM)
4055 void * __ecereTemp1;
4056 unsigned int (__attribute__((__stdcall__)) * Load)(struct __ecereNameSpace__ecere__com__Instance * module) = (((void *)0));
4057 void (__attribute__((__stdcall__)) * Unload)(struct __ecereNameSpace__ecere__com__Instance * module) = (((void *)0));
4058 struct __ecereNameSpace__ecere__com__Instance * module;
4060 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)
4062 if(!strcmp(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->name, name))
4065 if(ensureCOM && (!strcmp(name, "ecereCOM") || !strcmp(name, "ecere")))
4067 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)
4069 if(!strcmp(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->name, "ecere") || !strcmp(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->name, "ecereCOM"))
4075 void * library = (((void *)0));
4077 if(ensureCOM && !strcmp(name, "ecereCOM"))
4079 Load = __ecereDll_Load_ecere;
4080 Unload = __ecereDll_Unload_ecere;
4084 library = Instance_Module_Load(name, &Load, &Unload);
4088 module = (struct __ecereNameSpace__ecere__com__Instance *)__ecereNameSpace__ecere__com__eInstance_New(__ecereNameSpace__ecere__com__eSystem_FindClass(fromModule, "Module"));
4089 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)fromModule + 12)))->application;
4090 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->library = library;
4091 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->name = __ecereNameSpace__ecere__sys__CopyString(name);
4092 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->Unload = Unload;
4095 __ecereNameSpace__ecere__com__eInstance_Delete((struct __ecereNameSpace__ecere__com__Instance *)module);
4096 module = (((void *)0));
4099 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)fromModule + 12)))->application + 296)))->allModules, module);
4101 if(ensureCOM && !strcmp(name, "ecere") && module)
4103 name = !strcmp(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->name, "ecereCOM") ? "ecere" : "ecereCOM";
4104 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))
4106 struct __ecereNameSpace__ecere__com__Instance * module;
4108 for(module = ((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)fromModule + 12)))->application + 296)))->allModules.first; module; module = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->next)
4110 if(!strcmp(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->name, name))
4115 Load = __ecereDll_Load_ecere;
4116 Unload = __ecereDll_Unload_ecere;
4117 module = (struct __ecereNameSpace__ecere__com__Instance *)__ecereNameSpace__ecere__com__eInstance_New(__ecereNameSpace__ecere__com__eSystem_FindClass(fromModule, "Module"));
4118 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)fromModule + 12)))->application;
4119 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->library = (((void *)0));
4120 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->name = __ecereNameSpace__ecere__sys__CopyString(name);
4121 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->Unload = Unload;
4124 __ecereNameSpace__ecere__com__eInstance_Delete((struct __ecereNameSpace__ecere__com__Instance *)module);
4125 module = (((void *)0));
4127 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)fromModule + 12)))->application + 296)))->allModules, module);
4133 __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)));
4135 module->_refCount++;
4143 __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)));
4145 module->_refCount++;
4150 struct __ecereNameSpace__ecere__com__Instance * __ecereNameSpace__ecere__com__eModule_Load(struct __ecereNameSpace__ecere__com__Instance * fromModule, char * name, int importAccess)
4152 return __ecereNameSpace__ecere__com__Module_Load(fromModule, name, importAccess, 0x1);
4155 struct __ecereNameSpace__ecere__com__Instance * __ecereNameSpace__ecere__com__eModule_LoadStrict(struct __ecereNameSpace__ecere__com__Instance * fromModule, char * name, int importAccess)
4157 return __ecereNameSpace__ecere__com__Module_Load(fromModule, name, importAccess, 0x0);
4160 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))
4162 void * __ecereTemp1;
4163 struct __ecereNameSpace__ecere__com__Instance * module;
4165 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)
4167 if(!strcmp(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->name, name))
4174 module = (struct __ecereNameSpace__ecere__com__Instance *)__ecereNameSpace__ecere__com__eInstance_New(__ecereNameSpace__ecere__com__eSystem_FindClass(fromModule, "Module"));
4175 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)fromModule + 12)))->application;
4176 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->name = __ecereNameSpace__ecere__sys__CopyString(name);
4177 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->Unload = (void *)Unload;
4180 __ecereNameSpace__ecere__com__eInstance_Delete((struct __ecereNameSpace__ecere__com__Instance *)module);
4181 module = (((void *)0));
4184 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)fromModule + 12)))->application + 296)))->allModules, module);
4190 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)fromModule + 12)))->modules, (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass___ecereNameSpace__ecere__com__SubModule), ((struct __ecereNameSpace__ecere__com__SubModule *)__ecereTemp1)->module = module, ((struct __ecereNameSpace__ecere__com__SubModule *)__ecereTemp1)->importMode = importAccess, ((struct __ecereNameSpace__ecere__com__SubModule *)__ecereTemp1)));
4192 module->_refCount++;
4197 void __ecereNameSpace__ecere__com__eModule_Unload(struct __ecereNameSpace__ecere__com__Instance * fromModule, struct __ecereNameSpace__ecere__com__Instance * module)
4199 struct __ecereNameSpace__ecere__sys__OldLink * m;
4201 for(m = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)fromModule + 12)))->modules.first; m; m = m->next)
4203 if(m->data == module)
4208 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)fromModule + 12)))->modules, m);
4209 (__ecereNameSpace__ecere__com__eInstance_DecRef(module), module = 0);
4213 void __ecereNameSpace__ecere__com__eEnum_AddFixedValue(struct __ecereNameSpace__ecere__com__Class * _class, char * string, int value)
4215 void * __ecereTemp1;
4217 if(_class && _class->type == 4)
4219 struct __ecereNameSpace__ecere__com__EnumClassData * data = (struct __ecereNameSpace__ecere__com__EnumClassData *)_class->data;
4220 struct __ecereNameSpace__ecere__sys__NamedLink * item;
4222 for(item = data->values.first; item; item = item->next)
4223 if(!strcmp(item->name, string))
4227 __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)));
4228 if(value > data->largest)
4229 data->largest = value;
4234 int __ecereNameSpace__ecere__com__eEnum_AddValue(struct __ecereNameSpace__ecere__com__Class * _class, char * string)
4236 void * __ecereTemp1;
4238 if(_class && _class->type == 4)
4240 struct __ecereNameSpace__ecere__com__EnumClassData * data = (struct __ecereNameSpace__ecere__com__EnumClassData *)_class->data;
4241 int value = data->largest + 1;
4242 struct __ecereNameSpace__ecere__sys__NamedLink * item;
4244 for(item = data->values.first; item; item = item->next)
4245 if(!strcmp(item->name, string))
4249 __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)));
4250 if(value > data->largest)
4251 data->largest = value;
4258 static void __ecereNameSpace__ecere__com__NameSpace_Free(struct __ecereNameSpace__ecere__com__NameSpace * parentNameSpace)
4260 struct __ecereNameSpace__ecere__com__NameSpace * nameSpace;
4262 (__ecereNameSpace__ecere__com__eSystem_Delete(parentNameSpace->name), parentNameSpace->name = 0);
4263 while((nameSpace = (struct __ecereNameSpace__ecere__com__NameSpace *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&parentNameSpace->nameSpaces)))
4265 __ecereNameSpace__ecere__com__NameSpace_Free(nameSpace);
4266 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&parentNameSpace->nameSpaces, (struct __ecereNameSpace__ecere__sys__BTNode *)nameSpace);
4270 static void __ecereNameSpace__ecere__com__Application_Destructor(struct __ecereNameSpace__ecere__com__Instance * app)
4272 if(((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 296)))->parsedCommand)
4274 (__ecereNameSpace__ecere__com__eSystem_Delete(((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 296)))->argv), ((struct __ecereNameSpace__ecere__com__Application * )(((char * )app + 296)))->argv = 0);
4275 (__ecereNameSpace__ecere__com__eSystem_Delete(((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 296)))->parsedCommand), ((struct __ecereNameSpace__ecere__com__Application * )(((char * )app + 296)))->parsedCommand = 0);
4279 static unsigned int __ecereNameSpace__ecere__com__Module_Constructor(struct __ecereNameSpace__ecere__com__Instance * module)
4281 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->privateNameSpace.classes.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
4282 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->privateNameSpace.defines.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
4283 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->privateNameSpace.functions.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
4284 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->privateNameSpace.nameSpaces.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
4285 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->publicNameSpace.classes.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
4286 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->publicNameSpace.defines.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
4287 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->publicNameSpace.functions.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
4288 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->publicNameSpace.nameSpaces.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
4292 static void __ecereNameSpace__ecere__com__Module_Destructor(struct __ecereNameSpace__ecere__com__Instance * module)
4294 struct __ecereNameSpace__ecere__com__Class * _class;
4295 struct __ecereNameSpace__ecere__com__DefinedExpression * def;
4296 struct __ecereNameSpace__ecere__com__GlobalFunction * function;
4297 struct __ecereNameSpace__ecere__com__Instance * m;
4298 struct __ecereNameSpace__ecere__com__SubModule * handle;
4300 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)
4302 struct __ecereNameSpace__ecere__com__SubModule * next;
4304 for(handle = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)m + 12)))->modules.first; handle; handle = next)
4306 next = handle->next;
4307 if(handle->module == module)
4308 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)m + 12)))->modules, handle);
4311 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->Unload)
4313 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->importType == 1)
4315 unsigned int (* Unload)(struct __ecereNameSpace__ecere__com__Instance * module) = (void *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->Unload;
4321 unsigned int (__attribute__((__stdcall__)) * Unload)(struct __ecereNameSpace__ecere__com__Instance * module) = (void *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->Unload;
4327 struct __ecereNameSpace__ecere__com__Instance * ourWorld = __ecereClass___ecereNameSpace__ecere__com__Class->module;
4328 void * ourHandle = (((void *)0));
4330 while((handle = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->modules.last))
4332 struct __ecereNameSpace__ecere__com__Instance * depModule = handle->module;
4334 if(depModule == ourWorld)
4336 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->modules, handle);
4341 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->modules, handle);
4342 (__ecereNameSpace__ecere__com__eInstance_DecRef(depModule), depModule = 0);
4347 (__ecereNameSpace__ecere__com__eSystem_Delete(ourHandle), ourHandle = 0);
4348 (__ecereNameSpace__ecere__com__eInstance_DecRef(ourWorld), ourWorld = 0);
4351 for(; (_class = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->classes.first); )
4353 if(_class->nameSpace)
4355 struct __ecereNameSpace__ecere__com__BTNamedLink * classLink = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&(*_class->nameSpace).classes, _class->name);
4356 struct __ecereNameSpace__ecere__sys__OldLink * t;
4358 for(t = _class->templatized.first; t; t = t->next)
4360 struct __ecereNameSpace__ecere__com__Class * template = t->data;
4361 struct __ecereNameSpace__ecere__com__BTNamedLink * link;
4363 link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&(*template->nameSpace).classes, template->name);
4364 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&(*template->nameSpace).classes, (struct __ecereNameSpace__ecere__sys__BTNode *)link);
4365 template->nameSpace = (((void *)0));
4367 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&(*_class->nameSpace).classes, (struct __ecereNameSpace__ecere__sys__BTNode *)classLink);
4368 _class->nameSpace = (((void *)0));
4370 _class->module = (((void *)0));
4371 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->classes, _class);
4372 if(!_class->count || _class->type != 0)
4373 __ecereNameSpace__ecere__com__eClass_Unregister(_class);
4378 for(; (def = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->defines.first); )
4382 struct __ecereNameSpace__ecere__com__BTNamedLink * defLink;
4384 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)))
4385 if(defLink->data == def)
4387 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&(*def->nameSpace).defines, (struct __ecereNameSpace__ecere__sys__BTNode *)defLink);
4391 (__ecereNameSpace__ecere__com__eSystem_Delete(def->name), def->name = 0);
4392 (__ecereNameSpace__ecere__com__eSystem_Delete(def->value), def->value = 0);
4393 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->defines, def);
4395 for(; (function = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->functions.first); )
4397 if(function->nameSpace)
4399 struct __ecereNameSpace__ecere__com__BTNamedLink * functionLink;
4401 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)))
4402 if(functionLink->data == function)
4404 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&(*function->nameSpace).functions, (struct __ecereNameSpace__ecere__sys__BTNode *)functionLink);
4408 (__ecereNameSpace__ecere__com__eSystem_Delete(function->name), function->name = 0);
4409 (__ecereNameSpace__ecere__com__eSystem_Delete(function->dataTypeString), function->dataTypeString = 0);
4410 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->functions, function);
4412 (__ecereNameSpace__ecere__com__eSystem_Delete(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->name), ((struct __ecereNameSpace__ecere__com__Module * )(((char * )module + 12)))->name = 0);
4413 __ecereNameSpace__ecere__com__NameSpace_Free(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->privateNameSpace);
4414 __ecereNameSpace__ecere__com__NameSpace_Free(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->publicNameSpace);
4415 if(module != ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application)
4416 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove(&((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application + 296)))->allModules, module);
4418 __ecereNameSpace__ecere__com__NameSpace_Free(&((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application + 296)))->systemNameSpace);
4419 Instance_Module_Free(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->library);
4422 static int __ecereNameSpace__ecere__com__GetEnumSize(struct __ecereNameSpace__ecere__com__Class * _class)
4424 struct __ecereNameSpace__ecere__com__EnumClassData * data = (struct __ecereNameSpace__ecere__com__EnumClassData *)_class->data;
4426 return data->largest + 1;
4429 char * strlwr(char * string)
4433 for(c = 0; string[c]; c++)
4434 if(string[c] >= 'A' && string[c] <= 'Z')
4435 string[c] += 'a' - 'A';
4439 char * strupr(char * string)
4443 for(c = 0; string[c]; c++)
4444 if(string[c] >= 'a' && string[c] <= 'z')
4445 string[c] -= 'a' - 'A';
4449 struct __ecereNameSpace__ecere__com__DefinedExpression * __ecereNameSpace__ecere__com__eSystem_RegisterDefine(char * name, char * value, struct __ecereNameSpace__ecere__com__Instance * module, int declMode)
4451 void * __ecereTemp1;
4452 struct __ecereNameSpace__ecere__com__NameSpace * nameSpace = (((void *)0));
4455 nameSpace = (declMode == 1) ? &((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->publicNameSpace : &((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->privateNameSpace;
4457 nameSpace = &((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application + 296)))->systemNameSpace;
4460 for(c = 0; name[c]; c++)
4462 if(name[c] == '.' || (name[c] == ':' && name[c + 1] == ':'))
4464 struct __ecereNameSpace__ecere__com__NameSpace * newSpace;
4465 char * spaceName = __ecereNameSpace__ecere__com___malloc(c - start + 1);
4467 strncpy(spaceName, name + start, c - start);
4468 spaceName[c - start] = '\0';
4469 newSpace = (struct __ecereNameSpace__ecere__com__NameSpace *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&(*nameSpace).nameSpaces, spaceName);
4472 newSpace = __ecereNameSpace__ecere__com__eSystem_New0(sizeof(struct __ecereNameSpace__ecere__com__NameSpace) * (1));
4473 (*newSpace).classes.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
4474 (*newSpace).defines.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
4475 (*newSpace).functions.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
4476 (*newSpace).nameSpaces.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
4477 (*newSpace).name = spaceName;
4478 (*newSpace).parent = nameSpace;
4479 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&(*nameSpace).nameSpaces, (struct __ecereNameSpace__ecere__sys__BTNode *)newSpace);
4482 (__ecereNameSpace__ecere__com__eSystem_Delete(spaceName), spaceName = 0);
4483 nameSpace = newSpace;
4492 if(c - start && !__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&(*nameSpace).defines, name + start))
4494 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);
4496 __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)));
4497 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->defines, def);
4500 return (((void *)0));
4503 struct __ecereNameSpace__ecere__com__GlobalFunction * __ecereNameSpace__ecere__com__eSystem_RegisterFunction(char * name, char * type, void * func, struct __ecereNameSpace__ecere__com__Instance * module, int declMode)
4505 void * __ecereTemp1;
4506 struct __ecereNameSpace__ecere__com__NameSpace * nameSpace = (((void *)0));
4509 nameSpace = (declMode == 1) ? &((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->publicNameSpace : &((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->privateNameSpace;
4511 nameSpace = &((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application + 296)))->systemNameSpace;
4514 for(c = 0; name[c]; c++)
4516 if(name[c] == '.' || (name[c] == ':' && name[c + 1] == ':'))
4518 struct __ecereNameSpace__ecere__com__NameSpace * newSpace;
4519 char * spaceName = __ecereNameSpace__ecere__com___malloc(c - start + 1);
4521 strncpy(spaceName, name + start, c - start);
4522 spaceName[c - start] = '\0';
4523 newSpace = (struct __ecereNameSpace__ecere__com__NameSpace *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&(*nameSpace).nameSpaces, spaceName);
4526 newSpace = __ecereNameSpace__ecere__com__eSystem_New0(sizeof(struct __ecereNameSpace__ecere__com__NameSpace) * (1));
4527 (*newSpace).classes.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
4528 (*newSpace).defines.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
4529 (*newSpace).functions.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
4530 (*newSpace).nameSpaces.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
4531 (*newSpace).name = spaceName;
4532 (*newSpace).parent = nameSpace;
4533 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&(*nameSpace).nameSpaces, (struct __ecereNameSpace__ecere__sys__BTNode *)newSpace);
4536 (__ecereNameSpace__ecere__com__eSystem_Delete(spaceName), spaceName = 0);
4537 nameSpace = newSpace;
4546 if(c - start && !__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&(*nameSpace).functions, name + start))
4548 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);
4550 __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)));
4551 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->functions, function);
4554 return (((void *)0));
4557 struct __ecereNameSpace__ecere__com__DefinedExpression * __ecereNameSpace__ecere__com__eSystem_FindDefine(struct __ecereNameSpace__ecere__com__Instance * module, char * name)
4561 struct __ecereNameSpace__ecere__com__BTNamedLink * link;
4563 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);
4566 link = __ecereNameSpace__ecere__com__SearchModule(module, name, &(*((struct __ecereNameSpace__ecere__com__NameSpace *)0)).defines, 0x1);
4570 return (((void *)0));
4573 struct __ecereNameSpace__ecere__com__GlobalFunction * __ecereNameSpace__ecere__com__eSystem_FindFunction(struct __ecereNameSpace__ecere__com__Instance * module, char * name)
4577 struct __ecereNameSpace__ecere__com__BTNamedLink * link;
4579 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);
4582 link = __ecereNameSpace__ecere__com__SearchModule(module, name, &(*((struct __ecereNameSpace__ecere__com__NameSpace *)0)).functions, 0x1);
4586 return (((void *)0));
4589 void * __ecereNameSpace__ecere__com__eSystem_Renew(void * memory, unsigned int size)
4591 return __ecereNameSpace__ecere__com___realloc(memory, size);
4594 void * __ecereNameSpace__ecere__com__eSystem_Renew0(void * memory, unsigned int size)
4596 return __ecereNameSpace__ecere__com___crealloc(memory, size);
4599 void * __ecereNameSpace__ecere__com__eSystem_New(unsigned int size)
4601 return __ecereNameSpace__ecere__com___malloc(size);
4604 void * __ecereNameSpace__ecere__com__eSystem_New0(unsigned int size)
4606 return __ecereNameSpace__ecere__com___calloc(1, size);
4609 void __ecereNameSpace__ecere__com__eSystem_Delete(void * memory)
4612 __ecereNameSpace__ecere__com___free(memory);
4615 void __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property)
4617 if(instance && _property && _property->selfWatchable)
4619 struct __ecereNameSpace__ecere__com__Class * _class;
4621 for(_class = ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class; _class; _class = _class->base)
4623 struct __ecereNameSpace__ecere__com__SelfWatcher * selfWatcher, * next;
4625 for(selfWatcher = _class->selfWatchers.first; selfWatcher; selfWatcher = next)
4627 next = selfWatcher->next;
4628 if(selfWatcher->_property == _property)
4629 selfWatcher->callback(instance);
4635 void __ecereNameSpace__ecere__com__eInstance_FireWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property)
4637 if(instance && _property && _property->isWatchable)
4639 struct __ecereNameSpace__ecere__sys__OldList * watchers = (struct __ecereNameSpace__ecere__sys__OldList *)((unsigned char *)instance + _property->watcherOffset);
4640 struct __ecereNameSpace__ecere__com__Watcher * watcher, * next;
4642 for(watcher = (*watchers).first; watcher; watcher = next)
4644 next = watcher->next;
4645 watcher->callback(watcher->object, instance);
4650 void __ecereNameSpace__ecere__com__eProperty_Watchable(struct __ecereNameSpace__ecere__com__Property * _property)
4652 if(!_property->isWatchable)
4654 struct __ecereNameSpace__ecere__com__Class * _class = _property->_class;
4656 if(!_class->computeSize)
4658 _property->watcherOffset = _class->structSize;
4659 _class->structSize += sizeof(struct __ecereNameSpace__ecere__sys__OldList);
4660 __ecereNameSpace__ecere__com__FixDerivativesBase(_class, _class);
4662 _property->isWatchable = 0x1;
4666 void __ecereNameSpace__ecere__com__eClass_DestructionWatchable(struct __ecereNameSpace__ecere__com__Class * _class)
4668 if(!_class->destructionWatchOffset)
4670 _class->destructionWatchOffset = _class->structSize;
4671 _class->structSize += sizeof(struct __ecereNameSpace__ecere__sys__OldList);
4672 __ecereNameSpace__ecere__com__FixDerivativesBase(_class, _class);
4676 void __ecereNameSpace__ecere__com__eProperty_SelfWatch(struct __ecereNameSpace__ecere__com__Class * _class, char * name, void (* callback)(void *))
4678 void * __ecereTemp1;
4682 struct __ecereNameSpace__ecere__com__Property * _property = __ecereNameSpace__ecere__com__eClass_FindProperty(_class, name, _class->module);
4685 _property = __ecereNameSpace__ecere__com__eClass_AddProperty(_class, name, (((void *)0)), (((void *)0)), (((void *)0)), 4);
4686 __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)));
4687 _property->selfWatchable = 0x1;
4691 void __ecereNameSpace__ecere__com__eInstance_Watch(void * instance, struct __ecereNameSpace__ecere__com__Property * _property, void * object, void (* callback)(void *, void *))
4693 void * __ecereTemp1;
4695 if(_property->isWatchable)
4697 struct __ecereNameSpace__ecere__sys__OldList * watchers = (struct __ecereNameSpace__ecere__sys__OldList *)((unsigned char *)instance + _property->watcherOffset);
4699 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*watchers), (__ecereTemp1 = __ecereNameSpace__ecere__com__eSystem_New0(16), ((struct __ecereNameSpace__ecere__com__Watcher *)__ecereTemp1)->callback = callback, ((struct __ecereNameSpace__ecere__com__Watcher *)__ecereTemp1)->object = object, ((struct __ecereNameSpace__ecere__com__Watcher *)__ecereTemp1)));
4703 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 *))
4705 void * __ecereTemp1;
4706 struct __ecereNameSpace__ecere__sys__OldList * watchers = (struct __ecereNameSpace__ecere__sys__OldList *)((unsigned char *)instance + ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class->destructionWatchOffset);
4708 __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)));
4711 void __ecereNameSpace__ecere__com__eInstance_StopWatching(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, struct __ecereNameSpace__ecere__com__Instance * object)
4713 if(instance && (!_property || _property->isWatchable))
4717 struct __ecereNameSpace__ecere__sys__OldList * watchers = (struct __ecereNameSpace__ecere__sys__OldList *)((unsigned char *)instance + _property->watcherOffset);
4718 struct __ecereNameSpace__ecere__com__Watcher * watcher;
4720 for(watcher = (*watchers).first; watcher; watcher = watcher->next)
4721 if(watcher->object == object)
4723 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete((&*watchers), watcher);
4729 struct __ecereNameSpace__ecere__com__Class * _class, * base;
4731 for(_class = ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class; _class; _class = base)
4733 if(_class->destructionWatchOffset)
4735 struct __ecereNameSpace__ecere__sys__OldList * watchers = (struct __ecereNameSpace__ecere__sys__OldList *)((unsigned char *)instance + _class->destructionWatchOffset);
4736 struct __ecereNameSpace__ecere__com__Watcher * watcher;
4738 for(watcher = (*watchers).first; watcher; watcher = watcher->next)
4740 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete((&*watchers), watcher);
4744 for(_property = (struct __ecereNameSpace__ecere__com__Property *)_class->membersAndProperties.first; _property; _property = _property->next)
4746 if(_property->isProperty && _property->isWatchable)
4748 struct __ecereNameSpace__ecere__sys__OldList * watchers = (struct __ecereNameSpace__ecere__sys__OldList *)((unsigned char *)instance + _property->watcherOffset);
4749 struct __ecereNameSpace__ecere__com__Watcher * watcher;
4751 for(watcher = (*watchers).first; watcher; watcher = watcher->next)
4752 if(watcher->object == object)
4754 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete((&*watchers), watcher);
4759 base = _class->base;
4760 if(base && base->type == 1000)
4761 base = (((void *)0));
4767 struct __ecereNameSpace__ecere__com__Class * __ecereNameSpace__ecere__com__eClass_GetDesigner(struct __ecereNameSpace__ecere__com__Class * _class)
4769 for(; _class; _class = _class->base)
4771 if(_class->designerClass)
4772 return (struct __ecereNameSpace__ecere__com__Class *)__ecereNameSpace__ecere__com__eSystem_FindClass(_class->module, _class->designerClass);
4774 return (((void *)0));
4777 struct __ecereNameSpace__ecere__com__Class * __ecereNameSpace__ecere__com__eInstance_GetDesigner(struct __ecereNameSpace__ecere__com__Instance * instance)
4780 return __ecereNameSpace__ecere__com__eClass_GetDesigner(((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class);
4781 return (((void *)0));
4784 unsigned int __ecereNameSpace__ecere__com__LocateModule(char * name, char * fileName)
4786 return Instance_LocateModule(name, fileName);
4789 extern void __ecereNameSpace__ecere__com__InitializeDataTypes1(struct __ecereNameSpace__ecere__com__Instance * module);
4791 extern void __ecereNameSpace__ecere__com__InitializeDataTypes(struct __ecereNameSpace__ecere__com__Instance * module);
4793 extern double sin(struct __ecereNameSpace__ecere__com__Instance * number);
4795 extern double sinh(struct __ecereNameSpace__ecere__com__Instance * number);
4797 extern double cosh(struct __ecereNameSpace__ecere__com__Instance * number);
4799 extern double tanh(struct __ecereNameSpace__ecere__com__Instance * number);
4801 extern double sqrt(double number);
4803 extern double cos(struct __ecereNameSpace__ecere__com__Instance * number);
4805 extern double tan(struct __ecereNameSpace__ecere__com__Instance * number);
4807 extern struct __ecereNameSpace__ecere__com__Instance * atan2(double y, double x);
4809 extern struct __ecereNameSpace__ecere__com__Instance * asin(double number);
4811 extern struct __ecereNameSpace__ecere__com__Instance * acos(double number);
4813 extern struct __ecereNameSpace__ecere__com__Instance * atan(double number);
4815 extern double pow(double number, double number2);
4817 extern double fmod(double x, double y);
4819 extern double fabs(double number);
4821 extern double log(double number);
4823 extern double log10(double number);
4825 extern double ceil(double number);
4827 extern double floor(double number);
4829 extern double exp(double number);
4831 extern void qsort(void * , unsigned int, unsigned int, int (* )(void * , void * ));
4833 extern int system(const char * );
4835 extern int atoi(const char * );
4837 extern float atof(const char * );
4839 extern int tolower(int);
4841 extern int toupper(int);
4843 extern unsigned int isdigit(int);
4845 extern char * getenv(const char * name);
4847 extern int rename(const char * oldpath, const char * newpath);
4849 extern char * strncat(char * , const char * , int n);
4851 extern int strcasecmp(const char * , const char * );
4853 extern int strncasecmp(const char * , const char * , int n);
4855 extern int strncmp(const char * , const char * , int n);
4857 extern int vsprintf(char * , const char * , __builtin_va_list);
4859 extern int puts(char * );
4861 extern int fputs(char * , void * stream);
4863 extern int isalnum(int c);
4865 extern int isalpha(int c);
4867 extern int islower(int c);
4869 extern int isupper(int c);
4871 extern int isprint(int c);
4873 static void __ecereNameSpace__ecere__com__LoadCOM(struct __ecereNameSpace__ecere__com__Instance * module)
4875 struct __ecereNameSpace__ecere__com__Class * applicationClass;
4876 struct __ecereNameSpace__ecere__com__Class * enumClass, * structClass, * boolClass;
4877 struct __ecereNameSpace__ecere__com__Class * moduleClass;
4878 struct __ecereNameSpace__ecere__com__Class * baseClass = __ecereNameSpace__ecere__com__eSystem_RegisterClass(0, "class", (((void *)0)), 0, 0, (((void *)0)), (((void *)0)), module, 4, 1);
4880 baseClass->type = 1000;
4881 baseClass->memberOffset = 0;
4882 baseClass->offset = 0;
4883 baseClass->structSize = 0;
4884 baseClass->typeSize = 0;
4886 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);
4888 instanceClass->type = 1000;
4889 instanceClass->fixed = 0x1;
4890 instanceClass->memberOffset = 0;
4891 instanceClass->offset = 0;
4892 instanceClass->memberID = -3;
4893 instanceClass->startMemberID = -3;
4894 __ecereNameSpace__ecere__com__eClass_AddDataMember(instanceClass, "_vTbl", "int (**)()", sizeof(int (**)()), 4, 1);
4895 __ecereNameSpace__ecere__com__eClass_AddDataMember(instanceClass, "_class", "ecere::com::Class", sizeof(struct __ecereNameSpace__ecere__com__Class *), 4, 1);
4896 __ecereNameSpace__ecere__com__eClass_AddDataMember(instanceClass, "_refCount", "int", sizeof(int (**)()), 4, 1);
4898 __ecereNameSpace__ecere__com__InitializeDataTypes1(module);
4899 enumClass = __ecereNameSpace__ecere__com__eSystem_RegisterClass(0, "enum", (((void *)0)), 0, sizeof(struct __ecereNameSpace__ecere__com__EnumClassData), (((void *)0)), (((void *)0)), module, 4, 1);
4900 __ecereNameSpace__ecere__com__eClass_AddClassProperty(enumClass, "enumSize", "int", (((void *)0)), __ecereNameSpace__ecere__com__GetEnumSize)->constant = 0x1;
4901 enumClass->type = 1000;
4902 (__ecereNameSpace__ecere__com__eSystem_Delete(enumClass->dataTypeString), enumClass->dataTypeString = 0);
4903 enumClass->dataTypeString = __ecereNameSpace__ecere__sys__CopyString("int");
4904 structClass = __ecereNameSpace__ecere__com__eSystem_RegisterClass(0, "struct", (((void *)0)), 0, 0, (((void *)0)), (((void *)0)), module, 4, 1);
4905 structClass->type = 1000;
4906 structClass->memberOffset = 0;
4907 structClass->offset = 0;
4908 structClass->structSize = 0;
4909 structClass->typeSize = 0;
4910 __ecereNameSpace__ecere__com__InitializeDataTypes(module);
4911 boolClass = __ecereNameSpace__ecere__com__eSystem_RegisterClass(4, "bool", "uint", 0, 0, (((void *)0)), (((void *)0)), module, 4, 1);
4912 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(boolClass, "true", (unsigned int)0x1);
4913 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(boolClass, "false", (unsigned int)0x0);
4914 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);
4915 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(moduleClass, "OnLoad", "bool()", (((void *)0)), 1);
4916 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(moduleClass, "OnUnload", "void()", (((void *)0)), 1);
4917 __ecereNameSpace__ecere__com__eClass_AddMethod(moduleClass, "Load", "Module(char * name, AccessMode importAccess)", __ecereNameSpace__ecere__com__eModule_Load, 1);
4918 __ecereNameSpace__ecere__com__eClass_AddMethod(moduleClass, "Unload", "void(Module module)", __ecereNameSpace__ecere__com__eModule_Unload, 1);
4919 __ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "application", "Application", sizeof(struct __ecereNameSpace__ecere__com__Instance *), 4, 1);
4920 __ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "classes", "OldList", sizeof(struct __ecereNameSpace__ecere__sys__OldList), 4, 1);
4921 __ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "defines", "OldList", sizeof(struct __ecereNameSpace__ecere__sys__OldList), 4, 1);
4922 __ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "functions", "OldList", sizeof(struct __ecereNameSpace__ecere__sys__OldList), 4, 1);
4923 __ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "modules", "OldList", sizeof(struct __ecereNameSpace__ecere__sys__OldList), 4, 1);
4924 __ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "prev", "Module", sizeof(struct __ecereNameSpace__ecere__com__Instance *), 4, 1);
4925 __ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "next", "Module", sizeof(struct __ecereNameSpace__ecere__com__Instance *), 4, 1);
4926 __ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "name", "char *", sizeof(char *), 4, 1);
4927 __ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "library", "void *", sizeof(void *), 4, 1);
4928 __ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "Unload", "void *", sizeof(void *), 4, 1);
4929 __ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "importType", "ImportType", sizeof(int), 4, 1);
4930 __ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "privateNameSpace", "NameSpace", sizeof(struct __ecereNameSpace__ecere__com__NameSpace), 4, 1);
4931 __ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "publicNameSpace", "NameSpace", sizeof(struct __ecereNameSpace__ecere__com__NameSpace), 4, 1);
4932 moduleClass->fixed = 0x1;
4933 moduleClass->count++;
4934 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);
4935 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(applicationClass, "Main", "void()", (((void *)0)), 1);
4936 __ecereNameSpace__ecere__com__eClass_AddDataMember(applicationClass, "argc", "int", sizeof(int), 4, 1);
4937 __ecereNameSpace__ecere__com__eClass_AddDataMember(applicationClass, "argv", "char **", sizeof(char **), 4, 1);
4938 __ecereNameSpace__ecere__com__eClass_AddDataMember(applicationClass, "exitCode", "int", sizeof(int), 4, 1);
4939 __ecereNameSpace__ecere__com__eClass_AddDataMember(applicationClass, "isGUIApp", "bool", sizeof(unsigned int), 4, 1);
4940 __ecereNameSpace__ecere__com__eClass_AddDataMember(applicationClass, "allModules", "OldList", sizeof(struct __ecereNameSpace__ecere__sys__OldList), 4, 1);
4941 __ecereNameSpace__ecere__com__eClass_AddDataMember(applicationClass, "parsedCommand", "char *", sizeof(char *), 4, 1);
4942 __ecereNameSpace__ecere__com__eClass_AddDataMember(applicationClass, "systemNameSpace", "NameSpace", sizeof(struct __ecereNameSpace__ecere__com__NameSpace), 4, 1);
4943 applicationClass->fixed = 0x1;
4944 applicationClass->count++;
4945 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("sin", "double sin(Angle number)", sin, module, 4);
4946 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("sinh", "double sinh(Angle number)", sinh, module, 4);
4947 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("cosh", "double cosh(Angle number)", cosh, module, 4);
4948 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("tanh", "double tanh(Angle number)", tanh, module, 4);
4949 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("sqrt", "double sqrt(double number)", sqrt, module, 4);
4950 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("cos", "double cos(Angle number)", cos, module, 4);
4951 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("tan", "double tan(Angle number)", tan, module, 4);
4952 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("atan2", "Angle atan2(double y, double x)", atan2, module, 4);
4953 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("asin", "Angle asin(double number)", asin, module, 4);
4954 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("acos", "Angle acos(double number)", acos, module, 4);
4955 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("atan", "Angle atan(double number)", atan, module, 4);
4956 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("pow", "double pow(double number, double number2)", pow, module, 4);
4957 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("fmod", "double fmod(double x, double y)", fmod, module, 4);
4958 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("fabs", "double fabs(double number)", fabs, module, 4);
4959 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("log", "double log(double number)", log, module, 4);
4960 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("log10", "double log10(double number)", log10, module, 4);
4961 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ceil", "double ceil(double number)", ceil, module, 4);
4962 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("floor", "double floor(double number)", floor, module, 4);
4963 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("exp", "double exp(double number)", exp, module, 4);
4964 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("qsort", "void qsort(void *, uint, uint, int (*)(void *, void *))", qsort, module, 4);
4965 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strtod", "double strtod(char*, char**)", strtod, module, 4);
4966 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strtol", "int strtol(char*, char**, int base)", strtol, module, 4);
4967 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("system", "int system(const char*)", system, module, 4);
4968 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("atoi", "int atoi(const char*)", atoi, module, 4);
4969 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("atof", "float atof(const char*)", atof, module, 4);
4970 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("tolower", "int tolower(int)", tolower, module, 4);
4971 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("toupper", "int toupper(int)", toupper, module, 4);
4972 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("isdigit", "bool isdigit(int)", isdigit, module, 4);
4973 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("memset", "void memset(void * area, byte value, uint count)", memset, module, 4);
4974 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("getenv", "char * getenv(const char * name)", getenv, module, 4);
4975 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("rename", "int rename(const char *oldpath, const char *newpath)", rename, module, 4);
4976 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strlen", "int strlen(const char *)", strlen, module, 4);
4977 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strcat", "char * strcat(char *, const char *)", strcat, module, 4);
4978 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strncat", "char * strncat(char *, const char *, int n)", strncat, module, 4);
4979 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strchr", "char * strchr(char *, int)", strchr, module, 4);
4980 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strstr", "char * strstr(char *, const char *)", strstr, module, 4);
4981 __ecereNameSpace__ecere__com__eSystem_RegisterDefine("fstrcmp", "(GetRuntimePlatform() == win32) ? strcmpi : strcmp", module, 4);
4982 __ecereNameSpace__ecere__com__eSystem_RegisterDefine("strcmpi", "strcasecmp", module, 4);
4983 __ecereNameSpace__ecere__com__eSystem_RegisterDefine("strnicmp", "strncasecmp", module, 4);
4984 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strcasecmp", "int strcasecmp(const char *, const char *)", strcasecmp, module, 4);
4985 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strncasecmp", "int strncasecmp(const char *, const char *, int n)", strncasecmp, module, 4);
4986 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strcmp", "int strcmp(const char *, const char *)", strcmp, module, 4);
4987 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strncmp", "int strncmp(const char *, const char *, int n)", strncmp, module, 4);
4988 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strlwr", "char * strlwr(char *)", strlwr, module, 4);
4989 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strupr", "char * strupr(char *)", strupr, module, 4);
4990 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strcpy", "char * strcpy(char *, const char *)", strcpy, module, 4);
4991 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strncpy", "char * strncpy(char *, const char *, int n)", strncpy, module, 4);
4992 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("memcpy", "void * memcpy(void *, const void *, uint size)", memcpy, module, 4);
4993 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("memmove", "void * memmove(void *, const void *, uint size)", memmove, module, 4);
4994 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("sprintf", "int sprintf(char *, char *, ...)", sprintf, module, 4);
4995 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("printf", "int printf(char *, ...)", printf, module, 4);
4996 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("vsprintf", "int vsprintf(char*, const char*, __builtin_va_list)", vsprintf, module, 4);
4997 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("puts", "int puts(char *)", puts, module, 4);
4998 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("fputs", "int fputs(char *, void * stream)", fputs, module, 4);
4999 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("isalnum", "int isalnum(int c)", isalnum, module, 4);
5000 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("isspace", "int isspace(int c)", isspace, module, 4);
5001 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("isalpha", "int isalpha(int c)", isalpha, module, 4);
5002 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("islower", "int islower(int c)", islower, module, 4);
5003 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("isupper", "int isupper(int c)", isupper, module, 4);
5004 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("isprint", "int isprint(int c)", isprint, module, 4);
5005 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strtoul", "unsigned long strtoul(const char * nptr, char ** endptr, int base)", strtoul, module, 4);
5008 struct __ecereNameSpace__ecere__com__Instance * __ecereNameSpace__ecere__com____ecere_COM_Initialize(unsigned int guiApp, int argc, char * argv[])
5010 struct __ecereNameSpace__ecere__com__Instance * app;
5012 app = __ecereNameSpace__ecere__com___calloc(1, 424);
5013 __ecereNameSpace__ecere__com__Module_Constructor(app);
5014 ((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 296)))->systemNameSpace.classes.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
5015 ((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 296)))->systemNameSpace.defines.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
5016 ((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 296)))->systemNameSpace.functions.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
5017 ((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 296)))->systemNameSpace.nameSpaces.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
5018 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);
5019 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)app + 12)))->application = app;
5020 ((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 296)))->allModules.offset = 12 + (unsigned int)&(*((struct __ecereNameSpace__ecere__com__Module *)0)).prev;
5021 ((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 296)))->isGUIApp = guiApp;
5022 __ecereNameSpace__ecere__com__LoadCOM(app);
5023 ((struct __ecereNameSpace__ecere__com__Instance *)(char *)app)->_class = __ecereNameSpace__ecere__com__eSystem_FindClass(app, "Application");
5027 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)
5029 void * __ecereTemp1;
5033 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param;
5035 for(param = _class->templateParams.first; param; param = param->next)
5037 if(!strcmp(param->name, name))
5040 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));
5041 if(defaultArg != (((void *)0)))
5043 param->defaultArg = *defaultArg;
5044 __ecereNameSpace__ecere__com__CopyTemplateArg(param, ¶m->defaultArg);
5046 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&_class->templateParams, param);
5049 return (((void *)0));
5052 void __ecereNameSpace__ecere__com__eClass_DoneAddingTemplateParameters(struct __ecereNameSpace__ecere__com__Class * base)
5056 struct __ecereNameSpace__ecere__sys__OldLink * derivative;
5057 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param;
5060 void * first = base->templateParams.first;
5061 int count = base->templateParams.count;
5063 base->templateParams.first = (((void *)0));
5064 base->templateParams.count = 0;
5065 __ecereNameSpace__ecere__com__FreeTemplateArgs(base);
5066 (__ecereNameSpace__ecere__com__eSystem_Delete(base->templateArgs), base->templateArgs = 0);
5067 __ecereNameSpace__ecere__com__FreeTemplatesDerivatives(base);
5068 base->templateParams.first = first;
5069 base->templateParams.count = count;
5071 for(param = base->templateParams.first; param; param = param->next)
5073 if(param->type == 1 && param->defaultArg.memberString)
5075 struct __ecereNameSpace__ecere__com__Class * memberClass = base;
5076 char * colon = strstr(param->defaultArg.memberString, "::");
5081 char className[1024];
5082 struct __ecereNameSpace__ecere__com__Class * sClass;
5084 memcpy(className, param->defaultArg.memberString, colon - param->defaultArg.memberString);
5085 className[colon - param->defaultArg.memberString] = '\0';
5086 memberName = colon + 2;
5087 for(sClass = base; sClass; sClass = sClass->base)
5089 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * cParam;
5090 struct __ecereNameSpace__ecere__com__Class * nextClass;
5093 for(nextClass = sClass->base; nextClass; nextClass = nextClass->base)
5094 id += nextClass->templateParams.count;
5095 if(sClass == base || base->templateArgs)
5097 for(cParam = sClass->templateParams.first; cParam; cParam = cParam->next)
5099 if(cParam->type == 0 && !strcmp(cParam->name, className))
5100 strcpy(className, (sClass == base) ? cParam->defaultArg.dataTypeString : base->templateArgs[id].dataTypeString);
5105 memberClass = __ecereNameSpace__ecere__com__eSystem_FindClass(base->module, className);
5107 memberClass = __ecereNameSpace__ecere__com__eSystem_FindClass(((struct __ecereNameSpace__ecere__com__Module *)(((char *)base->module + 12)))->application, className);
5110 memberName = param->defaultArg.memberString;
5113 switch(param->memberType)
5116 param->defaultArg.member = __ecereNameSpace__ecere__com__eClass_FindDataMember(memberClass, memberName, memberClass->module, (((void *)0)), (((void *)0)));
5119 param->defaultArg.method = __ecereNameSpace__ecere__com__eClass_FindMethod(memberClass, memberName, memberClass->module);
5122 param->defaultArg.prop = __ecereNameSpace__ecere__com__eClass_FindProperty(memberClass, memberName, memberClass->module);
5128 __ecereNameSpace__ecere__com__FixDerivativesBase(base, base);
5132 static void __ecereNameSpace__ecere__com__FreeTemplatesDerivatives(struct __ecereNameSpace__ecere__com__Class * base)
5134 struct __ecereNameSpace__ecere__sys__OldLink * derivative, * templateLink;
5136 for(derivative = base->derivatives.first; derivative; derivative = derivative->next)
5138 struct __ecereNameSpace__ecere__com__Class * _class = derivative->data;
5140 if(_class->templateArgs)
5142 __ecereNameSpace__ecere__com__FreeTemplateArgs(_class);
5143 (__ecereNameSpace__ecere__com__eSystem_Delete(_class->templateArgs), _class->templateArgs = 0);
5145 __ecereNameSpace__ecere__com__FreeTemplatesDerivatives(_class);
5147 for(templateLink = base->templatized.first; templateLink; templateLink = templateLink->next)
5149 struct __ecereNameSpace__ecere__com__Class * _class = templateLink->data;
5151 if(_class->templateArgs)
5153 __ecereNameSpace__ecere__com__FreeTemplateArgs(_class);
5154 (__ecereNameSpace__ecere__com__eSystem_Delete(_class->templateArgs), _class->templateArgs = 0);
5156 __ecereNameSpace__ecere__com__FreeTemplatesDerivatives(_class);
5160 static const char * __ecereNameSpace__ecere__com__platformNames[4] =
5162 "", "win32", "linux", "apple"
5165 static const int __ecereNameSpace__ecere__com__firstPlatform = 1;
5167 static struct __ecereNameSpace__ecere__com__Property * __ecereProp___ecereNameSpace__ecere__com__Platform_char__PTR_, * __ecerePropM___ecereNameSpace__ecere__com__Platform_char__PTR_;
5169 static const int __ecereNameSpace__ecere__com__lastPlatform = 3;
5171 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Platform;
5173 int __ecereVMethodID_class_OnGetString;
5175 char * __ecereProp___ecereNameSpace__ecere__com__Platform_Get_char__PTR_(int this)
5177 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)));
5180 int __ecereProp___ecereNameSpace__ecere__com__Platform_Set_char__PTR_(char * value)
5186 for(c = __ecereNameSpace__ecere__com__firstPlatform; c <= __ecereNameSpace__ecere__com__lastPlatform; c++)
5187 if(!strcasecmp(value, __ecereNameSpace__ecere__com__platformNames[c]))
5193 char * __ecereMethod___ecereNameSpace__ecere__com__Platform_OnGetString(struct __ecereNameSpace__ecere__com__Class * class, int * this, char * tempString, void * fieldData, unsigned int * needClass)
5195 if((*(this)) >= __ecereNameSpace__ecere__com__firstPlatform && (*(this)) <= __ecereNameSpace__ecere__com__lastPlatform)
5198 strcpy(tempString, __ecereNameSpace__ecere__com__platformNames[*(int *)this]);
5199 return __ecereNameSpace__ecere__com__platformNames[*(int *)this];
5201 if(tempString && tempString[0])
5202 tempString[0] = '\0';
5203 return (((void *)0));
5206 unsigned int __ecereMethod___ecereNameSpace__ecere__com__Platform_OnGetDataFromString(struct __ecereNameSpace__ecere__com__Class * class, int * this, char * string)
5208 (*(this)) = __ecereProp___ecereNameSpace__ecere__com__Platform_Set_char__PTR_(string);
5209 return (unsigned int)*(int *)this;
5212 extern int runtimePlatform;
5214 int __ecereNameSpace__ecere__com__GetRuntimePlatform()
5216 return runtimePlatform;
5219 struct __ecereNameSpace__ecere__com__ObjectInfo
5221 struct __ecereNameSpace__ecere__com__ObjectInfo * prev, * next;
5222 struct __ecereNameSpace__ecere__com__Instance * instance;
5224 struct __ecereNameSpace__ecere__com__Instance * instCode;
5225 unsigned int deleted;
5226 struct __ecereNameSpace__ecere__com__ObjectInfo * oClass;
5227 struct __ecereNameSpace__ecere__sys__OldList instances;
5228 struct __ecereNameSpace__ecere__com__Instance * classDefinition;
5229 unsigned int modified;
5232 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__ObjectInfo;
5234 static struct __ecereNameSpace__ecere__com__Property * __ecereProp___ecereNameSpace__ecere__com__DesignerBase_classDesigner, * __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_classDesigner;
5236 static struct __ecereNameSpace__ecere__com__Property * __ecereProp___ecereNameSpace__ecere__com__DesignerBase_objectClass, * __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_objectClass;
5238 static struct __ecereNameSpace__ecere__com__Property * __ecereProp___ecereNameSpace__ecere__com__DesignerBase_isDragging, * __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_isDragging;
5240 struct __ecereNameSpace__ecere__com__DesignerBase
5242 struct __ecereNameSpace__ecere__com__Instance * classDesigner;
5244 unsigned int isDragging;
5247 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__DesignerBase;
5249 struct __ecereNameSpace__ecere__com__Instance * __ecereProp___ecereNameSpace__ecere__com__DesignerBase_Get_classDesigner(struct __ecereNameSpace__ecere__com__Instance * this)
5251 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);
5253 return __ecerePointer___ecereNameSpace__ecere__com__DesignerBase->classDesigner;
5256 void __ecereProp___ecereNameSpace__ecere__com__DesignerBase_Set_classDesigner(struct __ecereNameSpace__ecere__com__Instance * this, struct __ecereNameSpace__ecere__com__Instance * value)
5258 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);
5260 __ecerePointer___ecereNameSpace__ecere__com__DesignerBase->classDesigner = value;
5261 __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(this, __ecereProp___ecereNameSpace__ecere__com__DesignerBase_classDesigner), __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(this, __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_classDesigner);
5264 char * __ecereProp___ecereNameSpace__ecere__com__DesignerBase_Get_objectClass(struct __ecereNameSpace__ecere__com__Instance * this)
5266 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);
5268 return __ecerePointer___ecereNameSpace__ecere__com__DesignerBase->objectClass;
5271 void __ecereProp___ecereNameSpace__ecere__com__DesignerBase_Set_objectClass(struct __ecereNameSpace__ecere__com__Instance * this, char * value)
5273 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);
5275 __ecerePointer___ecereNameSpace__ecere__com__DesignerBase->objectClass = value;
5276 __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(this, __ecereProp___ecereNameSpace__ecere__com__DesignerBase_objectClass), __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(this, __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_objectClass);
5279 unsigned int __ecereProp___ecereNameSpace__ecere__com__DesignerBase_Get_isDragging(struct __ecereNameSpace__ecere__com__Instance * this)
5281 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);
5283 return __ecerePointer___ecereNameSpace__ecere__com__DesignerBase->isDragging;
5286 void __ecereProp___ecereNameSpace__ecere__com__DesignerBase_Set_isDragging(struct __ecereNameSpace__ecere__com__Instance * this, unsigned int value)
5288 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);
5290 __ecerePointer___ecereNameSpace__ecere__com__DesignerBase->isDragging = value;
5291 __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(this, __ecereProp___ecereNameSpace__ecere__com__DesignerBase_isDragging), __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(this, __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_isDragging);
5294 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__ClassDesignerBase;
5296 struct __ecereNameSpace__ecere__com__Instance * __ecereNameSpace__ecere__com__activeDesigner;
5298 void __ecereNameSpace__ecere__com__SetActiveDesigner(struct __ecereNameSpace__ecere__com__Instance * designer)
5300 __ecereNameSpace__ecere__com__activeDesigner = designer;
5303 struct __ecereNameSpace__ecere__com__Instance * __ecereNameSpace__ecere__com__GetActiveDesigner()
5305 return __ecereNameSpace__ecere__com__activeDesigner;
5310 unsigned int __ecereNameSpace__ecere__sys__UTF8Validate(char * source)
5316 for(c = 0; source[c]; )
5318 unsigned char ch = source[c];
5319 unsigned int codePoint = 0;
5322 unsigned char mask = (unsigned char)0x7F;
5324 if(ch & (unsigned char)0x80)
5326 if(ch & (unsigned char)0x40)
5330 if(ch & (unsigned char)0x20)
5334 if(ch & (unsigned char)0x10)
5336 if(ch & (unsigned char)0x08)
5346 for(i = 0; i < numBytes && (ch = source[c]); i++, c++)
5349 codePoint |= ch & mask;
5350 mask = (unsigned char)0x3F;
5353 if(!(ch & (unsigned char)0x80) || (ch & (unsigned char)0x40))
5359 if(codePoint > 0x10FFFF || (codePoint >= 0xD800 && codePoint <= 0xDFFF) || (codePoint < 0x80 && numBytes > 1) || (codePoint < 0x800 && numBytes > 2) || (codePoint < 0x10000 && numBytes > 3))
5366 int __ecereNameSpace__ecere__sys__ISO8859_1toUTF8(char * source, char * dest, int max)
5371 for(c = 0; source[c]; c++)
5373 unsigned int ch = ((unsigned char *)source)[c];
5379 dest[d++] = (char)ch;
5385 dest[d++] = (unsigned char)0xC0 | (unsigned char)((ch & 0x7C0) >> 6);
5386 dest[d++] = (unsigned char)0x80 | (unsigned char)(ch & 0x03F);
5388 else if(ch < 0x10000)
5392 dest[d++] = (unsigned char)0xE0 | (unsigned char)((ch & 0xF000) >> 12);
5393 dest[d++] = (unsigned char)0x80 | (unsigned char)((ch & 0xFC0) >> 6);
5394 dest[d++] = (unsigned char)0x80 | (unsigned char)(ch & 0x03F);
5400 dest[d++] = (unsigned char)0xF0 | (unsigned char)((ch & 0x1C0000) >> 18);
5401 dest[d++] = (unsigned char)0x80 | (unsigned char)((ch & 0x3F000) >> 12);
5402 dest[d++] = (unsigned char)0x80 | (unsigned char)((ch & 0xFC0) >> 6);
5403 dest[d++] = (unsigned char)0x80 | (unsigned char)(ch & 0x03F);
5410 char * __ecereNameSpace__ecere__sys__UTF16toUTF8(unsigned short * source)
5417 unsigned int invert = 0x0;
5419 for(len = 0; source[len]; len++)
5421 dest = __ecereNameSpace__ecere__com__eSystem_New(sizeof(char) * (len * 3 + 1));
5422 for(c = 0; (u16 = source[c]); c++)
5426 if(!c && (u16 == (unsigned short)0xFFFE || u16 == (unsigned short)0xFEFF))
5428 if(u16 == (unsigned short)0xFFFE)
5434 u16 = ((u16 & (unsigned short)0xFF00) >> (unsigned short)8) | ((u16 & (unsigned short)0x00FF) << (unsigned short)8);
5436 if(u16 < (unsigned short)0xD800 || u16 > (unsigned short)0xDBFF)
5439 ch = (u16 << 10) + source[c++] + (0x10000 - (0xD800 << 10) - 0xDC00);
5442 dest[d++] = (char)ch;
5446 dest[d++] = (unsigned char)0xC0 | (unsigned char)((ch & 0x7C0) >> 6);
5447 dest[d++] = (unsigned char)0x80 | (unsigned char)(ch & 0x03F);
5449 else if(ch < 0x10000)
5451 dest[d++] = (unsigned char)0xE0 | (unsigned char)((ch & 0xF000) >> 12);
5452 dest[d++] = (unsigned char)0x80 | (unsigned char)((ch & 0xFC0) >> 6);
5453 dest[d++] = (unsigned char)0x80 | (unsigned char)(ch & 0x03F);
5457 dest[d++] = (unsigned char)0xF0 | (unsigned char)((ch & 0x1C0000) >> 18);
5458 dest[d++] = (unsigned char)0x80 | (unsigned char)((ch & 0x3F000) >> 12);
5459 dest[d++] = (unsigned char)0x80 | (unsigned char)((ch & 0xFC0) >> 6);
5460 dest[d++] = (unsigned char)0x80 | (unsigned char)(ch & 0x03F);
5464 dest = __ecereNameSpace__ecere__com__eSystem_Renew(dest, sizeof(char) * (d + 1));
5468 int __ecereNameSpace__ecere__sys__UTF16toUTF8Buffer(unsigned short * source, unsigned char * dest, int max)
5474 for(c = 0; (u16 = source[c]); c++)
5478 if(u16 < (unsigned short)0xD800 || u16 > (unsigned short)0xDBFF)
5481 ch = (u16 << 10) + source[c++] + (0x10000 - (0xD800 << 10) - 0xDC00);
5486 dest[d++] = (char)ch;
5492 dest[d++] = (unsigned char)0xC0 | (unsigned char)((ch & 0x7C0) >> 6);
5493 dest[d++] = (unsigned char)0x80 | (unsigned char)(ch & 0x03F);
5495 else if(ch < 0x10000)
5499 dest[d++] = (unsigned char)0xE0 | (unsigned char)((ch & 0xF000) >> 12);
5500 dest[d++] = (unsigned char)0x80 | (unsigned char)((ch & 0xFC0) >> 6);
5501 dest[d++] = (unsigned char)0x80 | (unsigned char)(ch & 0x03F);
5507 dest[d++] = (unsigned char)0xF0 | (unsigned char)((ch & 0x1C0000) >> 18);
5508 dest[d++] = (unsigned char)0x80 | (unsigned char)((ch & 0x3F000) >> 12);
5509 dest[d++] = (unsigned char)0x80 | (unsigned char)((ch & 0xFC0) >> 6);
5510 dest[d++] = (unsigned char)0x80 | (unsigned char)(ch & 0x03F);
5513 dest[d] = (unsigned char)0;
5517 unsigned int __ecereNameSpace__ecere__sys__UTF8GetChar(char * string, int * numBytes)
5520 unsigned char b = ((unsigned char *)string)[0];
5522 unsigned char mask = (unsigned char)0x7F;
5526 if(b & (unsigned char)0x80)
5528 if(b & (unsigned char)0x40)
5532 if(b & (unsigned char)0x20)
5536 if(b & (unsigned char)0x10)
5538 if(b & (unsigned char)0x08)
5550 for(i = 0; i < nb; i++)
5553 ch |= (b = ((unsigned char *)string)[i]) & mask;
5554 mask = (unsigned char)0x3F;
5555 if(i > 1 && (!(b & (unsigned char)0x80) || (b & (unsigned char)0x40)))
5561 if(i < nb || ch > 0x10FFFF || (ch >= 0xD800 && ch <= 0xDFFF) || (ch < 0x80 && nb > 1) || (ch < 0x800 && nb > 2) || (ch < 0x10000 && nb > 3))
5571 int __ecereNameSpace__ecere__sys__UTF8toUTF16Buffer(char * source, unsigned short * dest, int max)
5578 for(c = 0; source[c]; )
5580 unsigned char ch = source[c];
5581 unsigned int codePoint = 0;
5584 unsigned char mask = (unsigned char)0x7F;
5586 if(ch & (unsigned char)0x80 && ch & (unsigned char)0x40)
5590 if(ch & (unsigned char)0x20)
5594 if(ch & (unsigned char)0x10)
5601 for(i = 0; i < numBytes; i++)
5604 codePoint |= source[c++] & mask;
5605 mask = (unsigned char)0x3F;
5607 if(codePoint > 0xFFFF)
5609 unsigned short lead = (unsigned short)((0xD800 - (0x10000 >> 10)) + (codePoint >> 10));
5610 unsigned short trail = (unsigned short)0xDC00 + (unsigned short)(codePoint & 0x3FF);
5621 dest[d++] = (unsigned short)codePoint;
5624 dest[d] = (unsigned short)0;
5630 int __ecereNameSpace__ecere__sys__UTF32toUTF8Len(unsigned int * source, int count, unsigned char * dest, int max)
5636 for(c = 0; c < count && (ch = source[c]); c++)
5642 dest[d++] = (char)ch;
5648 dest[d++] = (unsigned char)0xC0 | (unsigned char)((ch & 0x7C0) >> 6);
5649 dest[d++] = (unsigned char)0x80 | (unsigned char)(ch & 0x03F);
5651 else if(ch < 0x10000)
5655 dest[d++] = (unsigned char)0xE0 | (unsigned char)((ch & 0xF000) >> 12);
5656 dest[d++] = (unsigned char)0x80 | (unsigned char)((ch & 0xFC0) >> 6);
5657 dest[d++] = (unsigned char)0x80 | (unsigned char)(ch & 0x03F);
5663 dest[d++] = (unsigned char)0xF0 | (unsigned char)((ch & 0x1C0000) >> 18);
5664 dest[d++] = (unsigned char)0x80 | (unsigned char)((ch & 0x3F000) >> 12);
5665 dest[d++] = (unsigned char)0x80 | (unsigned char)((ch & 0xFC0) >> 6);
5666 dest[d++] = (unsigned char)0x80 | (unsigned char)(ch & 0x03F);
5669 dest[d] = (unsigned char)0;
5673 unsigned short * __ecereNameSpace__ecere__sys__UTF8toUTF16(char * source, int * wordCount)
5677 int len = strlen(source);
5678 unsigned short * dest = __ecereNameSpace__ecere__com__eSystem_New(sizeof(unsigned short) * (len + 1));
5682 for(c = 0; source[c]; )
5684 unsigned char ch = source[c];
5685 unsigned int codePoint = 0;
5688 unsigned char mask = (unsigned char)0x7F;
5690 if(ch & (unsigned char)0x80 && ch & (unsigned char)0x40)
5694 if(ch & (unsigned char)0x20)
5698 if(ch & (unsigned char)0x10)
5705 for(i = 0; i < numBytes; i++)
5708 codePoint |= source[c++] & mask;
5709 mask = (unsigned char)0x3F;
5711 if(codePoint > 0xFFFF)
5713 unsigned short lead = (unsigned short)((0xD800 - (0x10000 >> 10)) + (codePoint >> 10));
5714 unsigned short trail = (unsigned short)0xDC00 + (unsigned short)(codePoint & 0x3FF);
5721 dest[d++] = (unsigned short)codePoint;
5724 dest[d] = (unsigned short)0;
5729 return (((void *)0));
5732 int __ecereVMethodID___ecereNameSpace__ecere__com__DesignerBase_FindObject;
5734 int __ecereVMethodID___ecereNameSpace__ecere__com__DesignerBase_RenameObject;
5736 int __ecereVMethodID___ecereNameSpace__ecere__com__DesignerBase_SelectObjectFromDesigner;
5738 int __ecereVMethodID___ecereNameSpace__ecere__com__DesignerBase_CodeAddObject;
5740 int __ecereVMethodID___ecereNameSpace__ecere__com__DesignerBase_SheetAddObject;
5742 int __ecereVMethodID___ecereNameSpace__ecere__com__DesignerBase_AddToolBoxClass;
5744 int __ecereVMethodID___ecereNameSpace__ecere__com__DesignerBase_AddDefaultMethod;
5746 int __ecereVMethodID___ecereNameSpace__ecere__com__DesignerBase_DeleteObject;
5748 int __ecereVMethodID___ecereNameSpace__ecere__com__DesignerBase_ObjectContainsCode;
5750 int __ecereVMethodID___ecereNameSpace__ecere__com__DesignerBase_ModifyCode;
5752 int __ecereVMethodID___ecereNameSpace__ecere__com__DesignerBase_UpdateProperties;
5754 int __ecereVMethodID___ecereNameSpace__ecere__com__ClassDesignerBase_Reset;
5756 int __ecereVMethodID___ecereNameSpace__ecere__com__ClassDesignerBase_AddObject;
5758 int __ecereVMethodID___ecereNameSpace__ecere__com__ClassDesignerBase_SelectObject;
5760 int __ecereVMethodID___ecereNameSpace__ecere__com__ClassDesignerBase_ListToolBoxClasses;
5762 int __ecereVMethodID___ecereNameSpace__ecere__com__ClassDesignerBase_PrepareTestObject;
5764 int __ecereVMethodID___ecereNameSpace__ecere__com__ClassDesignerBase_CreateObject;
5766 int __ecereVMethodID___ecereNameSpace__ecere__com__ClassDesignerBase_PostCreateObject;
5768 int __ecereVMethodID___ecereNameSpace__ecere__com__ClassDesignerBase_DroppedObject;
5770 int __ecereVMethodID___ecereNameSpace__ecere__com__ClassDesignerBase_DestroyObject;
5772 int __ecereVMethodID___ecereNameSpace__ecere__com__ClassDesignerBase_FixProperty;
5774 int __ecereVMethodID___ecereNameSpace__ecere__com__ClassDesignerBase_CreateNew;
5776 void __ecereRegisterModule_instance(struct __ecereNameSpace__ecere__com__Instance * module)
5778 struct __ecereNameSpace__ecere__com__Class * class;
5780 __ecereNameSpace__ecere__com__eSystem_RegisterDefine("ecere::com::null", "((void *)0)", module, 4);
5781 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(3, "ecere::com::unichar", "uint", 0, 0, 0, 0, module, 4, 1);
5782 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
5783 __ecereClass___ecereNameSpace__ecere__com__unichar = class;
5784 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "OnGetString", 0, __ecereMethod___ecereNameSpace__ecere__com__unichar_OnGetString, 1);
5785 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "OnGetDataFromString", 0, __ecereMethod___ecereNameSpace__ecere__com__unichar_OnGetDataFromString, 1);
5786 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::Property", 0, sizeof(struct __ecereNameSpace__ecere__com__Property), 0, 0, 0, module, 4, 1);
5787 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
5788 __ecereClass___ecereNameSpace__ecere__com__Property = class;
5789 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "prev", "ecere::com::Property", 4, 4, 1);
5790 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "next", "ecere::com::Property", 4, 4, 1);
5791 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "name", "char *", 4, 4, 1);
5792 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "isProperty", "bool", 4, 4, 1);
5793 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "memberAccess", "ecere::com::AccessMode", 4, 4, 1);
5794 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "id", "int", 4, 4, 1);
5795 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "_class", "ecere::com::Class", 4, 4, 1);
5796 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataTypeString", "char *", 4, 4, 1);
5797 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataTypeClass", "ecere::com::Class", 4, 4, 1);
5798 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataType", "Type", 4, 4, 1);
5799 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "Set", "void( *)()", 4, 4, 1);
5800 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "Get", "int( *)()", 4, 4, 1);
5801 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "IsSet", "bool( *)()", 4, 4, 1);
5802 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "data", "void *", 4, 4, 1);
5803 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "symbol", "void *", 4, 4, 1);
5804 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "vid", "int", 4, 4, 1);
5805 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "conversion", "bool", 4, 4, 1);
5806 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "watcherOffset", "uint", 4, 4, 1);
5807 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "category", "char *", 4, 4, 1);
5808 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "compiled", "bool", 4, 4, 1);
5809 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "selfWatchable", "bool", 4, 4, 1);
5810 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "isWatchable", "bool", 4, 4, 1);
5812 class->fixed = (unsigned int)1;
5813 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::MemoryGuard_PushLoc", "void ecere::com::MemoryGuard_PushLoc(char * loc)", __ecereNameSpace__ecere__com__MemoryGuard_PushLoc, module, 4);
5814 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::MemoryGuard_PopLoc", "void ecere::com::MemoryGuard_PopLoc(void)", __ecereNameSpace__ecere__com__MemoryGuard_PopLoc, module, 4);
5815 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::BTNamedLink", 0, sizeof(struct __ecereNameSpace__ecere__com__BTNamedLink), 0, 0, 0, module, 4, 1);
5816 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
5817 __ecereClass___ecereNameSpace__ecere__com__BTNamedLink = class;
5818 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "name", "char *", 4, 4, 1);
5819 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "parent", "ecere::com::BTNamedLink", 4, 4, 1);
5820 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "left", "ecere::com::BTNamedLink", 4, 4, 1);
5821 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "right", "ecere::com::BTNamedLink", 4, 4, 1);
5822 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "depth", "int", 4, 4, 1);
5823 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "data", "void *", 4, 4, 1);
5825 class->fixed = (unsigned int)1;
5826 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::SelfWatcher", 0, sizeof(struct __ecereNameSpace__ecere__com__SelfWatcher), 0, 0, 0, module, 2, 1);
5827 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
5828 __ecereClass___ecereNameSpace__ecere__com__SelfWatcher = class;
5830 class->fixed = (unsigned int)1;
5831 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(4, "ecere::com::AccessMode", 0, 0, 0, 0, 0, module, 4, 1);
5832 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
5833 __ecereClass___ecereNameSpace__ecere__com__AccessMode = class;
5834 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "defaultAccess", 0);
5835 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "publicAccess", 1);
5836 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "privateAccess", 2);
5837 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "staticAccess", 3);
5838 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "baseSystemAccess", 4);
5839 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::SubModule", 0, sizeof(struct __ecereNameSpace__ecere__com__SubModule), 0, 0, 0, module, 4, 1);
5840 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
5841 __ecereClass___ecereNameSpace__ecere__com__SubModule = class;
5842 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "prev", "ecere::com::SubModule", 4, 4, 1);
5843 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "next", "ecere::com::SubModule", 4, 4, 1);
5844 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "module", "ecere::com::Module", 4, 4, 1);
5845 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "importMode", "ecere::com::AccessMode", 4, 4, 1);
5846 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(4, "ecere::com::DataMemberType", 0, 0, 0, 0, 0, module, 4, 1);
5847 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
5848 __ecereClass___ecereNameSpace__ecere__com__DataMemberType = class;
5849 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "normalMember", 0);
5850 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "unionMember", 1);
5851 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "structMember", 2);
5852 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(4, "ecere::com::ClassType", 0, 0, 0, 0, 0, module, 4, 1);
5853 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
5854 __ecereClass___ecereNameSpace__ecere__com__ClassType = class;
5855 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "normalClass", 0);
5856 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "structClass", 1);
5857 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "bitClass", 2);
5858 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "unitClass", 3);
5859 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "enumClass", 4);
5860 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "noHeadClass", 5);
5861 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "unionClass", 6);
5862 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "systemClass", 1000);
5863 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::Class", 0, sizeof(struct __ecereNameSpace__ecere__com__Class), 0, 0, 0, module, 4, 1);
5864 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
5865 __ecereClass___ecereNameSpace__ecere__com__Class = class;
5866 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "OnFree", 0, __ecereMethod___ecereNameSpace__ecere__com__Class_OnFree, 1);
5867 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "OnGetString", 0, __ecereMethod___ecereNameSpace__ecere__com__Class_OnGetString, 1);
5868 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "OnGetDataFromString", 0, __ecereMethod___ecereNameSpace__ecere__com__Class_OnGetDataFromString, 1);
5869 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "OnSerialize", 0, __ecereMethod___ecereNameSpace__ecere__com__Class_OnSerialize, 1);
5870 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "OnUnserialize", 0, __ecereMethod___ecereNameSpace__ecere__com__Class_OnUnserialize, 1);
5871 __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);
5872 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "prev", "ecere::com::Class", 4, 4, 1);
5873 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "next", "ecere::com::Class", 4, 4, 1);
5874 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "name", "char *", 4, 4, 1);
5875 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "offset", "int", 4, 4, 1);
5876 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "structSize", "int", 4, 4, 1);
5877 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "_vTbl", "int( * *)()", 4, 4, 1);
5878 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "vTblSize", "int", 4, 4, 1);
5879 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "Constructor", "int( *)(ecere::com::Instance)", 4, 4, 1);
5880 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "Destructor", "void( *)(ecere::com::Instance)", 4, 4, 1);
5881 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "offsetClass", "int", 4, 4, 1);
5882 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "sizeClass", "int", 4, 4, 1);
5883 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "base", "ecere::com::Class", 4, 4, 1);
5884 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "methods", "ecere::sys::BinaryTree", 16, 4, 1);
5885 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "members", "ecere::sys::BinaryTree", 16, 4, 1);
5886 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "prop", "ecere::sys::BinaryTree", 16, 4, 1);
5887 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "membersAndProperties", "ecere::sys::OldList", 20, 4, 1);
5888 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "classProperties", "ecere::sys::BinaryTree", 16, 4, 1);
5889 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "derivatives", "ecere::sys::OldList", 20, 4, 1);
5890 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "memberID", "int", 4, 4, 1);
5891 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "startMemberID", "int", 4, 4, 1);
5892 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "type", "ecere::com::ClassType", 4, 4, 1);
5893 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "module", "ecere::com::Module", 4, 4, 1);
5894 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "nameSpace", "ecere::com::NameSpace *", 4, 4, 1);
5895 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataTypeString", "char *", 4, 4, 1);
5896 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataType", "Type", 4, 4, 1);
5897 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "typeSize", "int", 4, 4, 1);
5898 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "defaultAlignment", "int", 4, 4, 1);
5899 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "Initialize", "void( *)()", 4, 4, 1);
5900 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "memberOffset", "int", 4, 4, 1);
5901 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "selfWatchers", "ecere::sys::OldList", 20, 4, 1);
5902 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "designerClass", "char *", 4, 4, 1);
5903 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "noExpansion", "bool", 4, 4, 1);
5904 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "defaultProperty", "char *", 4, 4, 1);
5905 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "comRedefinition", "bool", 4, 4, 1);
5906 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "count", "int", 4, 4, 1);
5907 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "isRemote", "bool", 4, 4, 1);
5908 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "internalDecl", "bool", 4, 4, 1);
5909 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "data", "void *", 4, 4, 1);
5910 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "computeSize", "bool", 4, 4, 1);
5911 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "structAlignment", "int", 4, 4, 1);
5912 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "destructionWatchOffset", "int", 4, 4, 1);
5913 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "fixed", "bool", 4, 4, 1);
5914 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "delayedCPValues", "ecere::sys::OldList", 20, 4, 1);
5915 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "inheritanceAccess", "ecere::com::AccessMode", 4, 4, 1);
5916 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "fullName", "char *", 4, 4, 1);
5917 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "symbol", "void *", 4, 4, 1);
5918 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "conversions", "ecere::sys::OldList", 20, 4, 1);
5919 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "templateParams", "ecere::sys::OldList", 20, 4, 1);
5920 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "templateArgs", "ecere::com::ClassTemplateArgument *", 4, 4, 1);
5921 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "templateClass", "ecere::com::Class", 4, 4, 1);
5922 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "templatized", "ecere::sys::OldList", 20, 4, 1);
5923 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "numParams", "int", 4, 4, 1);
5925 class->fixed = (unsigned int)1;
5927 class->noExpansion = (unsigned int)1;
5928 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(4, "ecere::com::TemplateParameterType", 0, 0, 0, 0, 0, module, 4, 1);
5929 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
5930 __ecereClass___ecereNameSpace__ecere__com__TemplateParameterType = class;
5931 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "type", 0);
5932 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "identifier", 1);
5933 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "expression", 2);
5934 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(4, "ecere::com::TemplateMemberType", 0, 0, 0, 0, 0, module, 4, 1);
5935 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
5936 __ecereClass___ecereNameSpace__ecere__com__TemplateMemberType = class;
5937 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "dataMember", 0);
5938 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "method", 1);
5939 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "prop", 2);
5940 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(1, "ecere::com::ClassTemplateArgument", 0, sizeof(struct __ecereNameSpace__ecere__com__ClassTemplateArgument), 0, 0, 0, module, 4, 1);
5941 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
5942 __ecereClass___ecereNameSpace__ecere__com__ClassTemplateArgument = class;
5944 struct __ecereNameSpace__ecere__com__DataMember * dataMember0 = __ecereNameSpace__ecere__com__eMember_New(1, 1);
5947 struct __ecereNameSpace__ecere__com__DataMember * dataMember1 = __ecereNameSpace__ecere__com__eMember_New(2, 1);
5949 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember1, "dataTypeString", "char *", 4, 4, 1);
5950 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember1, "dataTypeClass", "ecere::com::Class", 4, 4, 1);
5951 __ecereNameSpace__ecere__com__eMember_AddMember(dataMember0, dataMember1);
5953 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember0, "expression", "ecere::com::DataValue", 8, 8, 1);
5955 struct __ecereNameSpace__ecere__com__DataMember * dataMember1 = __ecereNameSpace__ecere__com__eMember_New(2, 1);
5957 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember1, "memberString", "char *", 4, 4, 1);
5959 struct __ecereNameSpace__ecere__com__DataMember * dataMember2 = __ecereNameSpace__ecere__com__eMember_New(1, 1);
5961 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember2, "member", "ecere::com::DataMember", 4, 4, 1);
5962 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember2, "prop", "ecere::com::Property", 4, 4, 1);
5963 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember2, "method", "ecere::com::Method", 4, 4, 1);
5964 __ecereNameSpace__ecere__com__eMember_AddMember(dataMember1, dataMember2);
5966 __ecereNameSpace__ecere__com__eMember_AddMember(dataMember0, dataMember1);
5968 __ecereNameSpace__ecere__com__eClass_AddMember(class, dataMember0);
5970 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::ClassTemplateParameter", 0, sizeof(struct __ecereNameSpace__ecere__com__ClassTemplateParameter), 0, 0, 0, module, 4, 1);
5971 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
5972 __ecereClass___ecereNameSpace__ecere__com__ClassTemplateParameter = class;
5973 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "prev", "ecere::com::ClassTemplateParameter", 4, 4, 1);
5974 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "next", "ecere::com::ClassTemplateParameter", 4, 4, 1);
5975 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "name", "char *", 4, 4, 1);
5976 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "type", "ecere::com::TemplateParameterType", 4, 4, 1);
5978 struct __ecereNameSpace__ecere__com__DataMember * dataMember0 = __ecereNameSpace__ecere__com__eMember_New(1, 1);
5980 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember0, "dataTypeString", "char *", 4, 4, 1);
5981 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember0, "memberType", "ecere::com::TemplateMemberType", 4, 4, 1);
5982 __ecereNameSpace__ecere__com__eClass_AddMember(class, dataMember0);
5984 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "defaultArg", "ecere::com::ClassTemplateArgument", 8, 8, 1);
5985 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "param", "void *", 4, 4, 1);
5987 class->fixed = (unsigned int)1;
5988 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(4, "ecere::com::MethodType", 0, 0, 0, 0, 0, module, 4, 1);
5989 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
5990 __ecereClass___ecereNameSpace__ecere__com__MethodType = class;
5991 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "normalMethod", 0);
5992 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "virtualMethod", 1);
5993 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::Method", 0, sizeof(struct __ecereNameSpace__ecere__com__Method), 0, 0, 0, module, 4, 1);
5994 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
5995 __ecereClass___ecereNameSpace__ecere__com__Method = class;
5996 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "name", "char *", 4, 4, 1);
5997 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "parent", "ecere::com::Method", 4, 4, 1);
5998 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "left", "ecere::com::Method", 4, 4, 1);
5999 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "right", "ecere::com::Method", 4, 4, 1);
6000 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "depth", "int", 4, 4, 1);
6001 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "function", "int( *)()", 4, 4, 1);
6002 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "vid", "int", 4, 4, 1);
6003 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "type", "ecere::com::MethodType", 4, 4, 1);
6004 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "_class", "ecere::com::Class", 4, 4, 1);
6005 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "symbol", "void *", 4, 4, 1);
6006 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataTypeString", "char *", 4, 4, 1);
6007 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataType", "Type", 4, 4, 1);
6008 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "memberAccess", "ecere::com::AccessMode", 4, 4, 1);
6010 class->fixed = (unsigned int)1;
6011 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(4, "ecere::com::ImportType", 0, 0, 0, 0, 0, module, 4, 1);
6012 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6013 __ecereClass___ecereNameSpace__ecere__com__ImportType = class;
6014 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "normalImport", 0);
6015 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "staticImport", 1);
6016 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "remoteImport", 2);
6017 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "preDeclImport", 3);
6018 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "comCheckImport", 4);
6019 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(1, "ecere::com::NameSpace", 0, sizeof(struct __ecereNameSpace__ecere__com__NameSpace), 0, 0, 0, module, 4, 1);
6020 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6021 __ecereClass___ecereNameSpace__ecere__com__NameSpace = class;
6022 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "name", "char *", 4, 4, 1);
6023 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "btParent", "ecere::com::NameSpace *", 4, 4, 1);
6024 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "left", "ecere::com::NameSpace *", 4, 4, 1);
6025 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "right", "ecere::com::NameSpace *", 4, 4, 1);
6026 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "depth", "int", 4, 4, 1);
6027 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "parent", "ecere::com::NameSpace *", 4, 4, 1);
6028 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "nameSpaces", "ecere::sys::BinaryTree", 16, 4, 1);
6029 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "classes", "ecere::sys::BinaryTree", 16, 4, 1);
6030 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "defines", "ecere::sys::BinaryTree", 16, 4, 1);
6031 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "functions", "ecere::sys::BinaryTree", 16, 4, 1);
6032 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(1, "ecere::com::DataValue", 0, sizeof(struct __ecereNameSpace__ecere__com__DataValue), 0, 0, 0, module, 4, 1);
6033 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6034 __ecereClass___ecereNameSpace__ecere__com__DataValue = class;
6036 struct __ecereNameSpace__ecere__com__DataMember * dataMember0 = __ecereNameSpace__ecere__com__eMember_New(1, 1);
6038 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember0, "c", "char", 1, 1, 1);
6039 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember0, "uc", "byte", 1, 1, 1);
6040 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember0, "s", "short", 2, 2, 1);
6041 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember0, "us", "uint16", 2, 2, 1);
6042 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember0, "i", "int", 4, 4, 1);
6043 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember0, "ui", "uint", 4, 4, 1);
6044 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember0, "p", "void *", 4, 4, 1);
6045 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember0, "f", "float", 4, 4, 1);
6046 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember0, "d", "double", 8, 8, 1);
6047 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember0, "i64", "int64", 8, 8, 1);
6048 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember0, "ui64", "uint64", 8, 8, 1);
6049 __ecereNameSpace__ecere__com__eClass_AddMember(class, dataMember0);
6051 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::DataMember", 0, sizeof(struct __ecereNameSpace__ecere__com__DataMember), 0, 0, 0, module, 4, 1);
6052 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6053 __ecereClass___ecereNameSpace__ecere__com__DataMember = class;
6054 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "prev", "ecere::com::DataMember", 4, 4, 1);
6055 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "next", "ecere::com::DataMember", 4, 4, 1);
6056 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "name", "char *", 4, 4, 1);
6057 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "isProperty", "bool", 4, 4, 1);
6058 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "memberAccess", "ecere::com::AccessMode", 4, 4, 1);
6059 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "id", "int", 4, 4, 1);
6060 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "_class", "ecere::com::Class", 4, 4, 1);
6061 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataTypeString", "char *", 4, 4, 1);
6062 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataTypeClass", "ecere::com::Class", 4, 4, 1);
6063 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataType", "Type", 4, 4, 1);
6064 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "type", "ecere::com::DataMemberType", 4, 4, 1);
6065 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "offset", "int", 4, 4, 1);
6066 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "memberID", "int", 4, 4, 1);
6067 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "members", "ecere::sys::OldList", 20, 4, 1);
6068 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "membersAlpha", "ecere::sys::BinaryTree", 16, 4, 1);
6069 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "memberOffset", "int", 4, 4, 1);
6070 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "structAlignment", "int", 4, 4, 1);
6072 class->fixed = (unsigned int)1;
6073 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::BitMember", 0, sizeof(struct __ecereNameSpace__ecere__com__BitMember), 0, 0, 0, module, 4, 1);
6074 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6075 __ecereClass___ecereNameSpace__ecere__com__BitMember = class;
6076 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "prev", "ecere::com::BitMember", 4, 4, 1);
6077 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "next", "ecere::com::BitMember", 4, 4, 1);
6078 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "name", "char *", 4, 4, 1);
6079 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "isProperty", "bool", 4, 4, 1);
6080 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "memberAccess", "ecere::com::AccessMode", 4, 4, 1);
6081 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "id", "int", 4, 4, 1);
6082 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "_class", "ecere::com::Class", 4, 4, 1);
6083 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataTypeString", "char *", 4, 4, 1);
6084 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataTypeClass", "ecere::com::Class", 4, 4, 1);
6085 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataType", "Type", 4, 4, 1);
6086 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "type", "ecere::com::DataMemberType", 4, 4, 1);
6087 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "size", "int", 4, 4, 1);
6088 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "pos", "int", 4, 4, 1);
6089 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "mask", "uint64", 8, 8, 1);
6091 class->fixed = (unsigned int)1;
6092 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::ClassProperty", 0, sizeof(struct __ecereNameSpace__ecere__com__ClassProperty), 0, 0, 0, module, 4, 1);
6093 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6094 __ecereClass___ecereNameSpace__ecere__com__ClassProperty = class;
6095 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "name", "char *", 4, 4, 1);
6096 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "parent", "ecere::com::ClassProperty", 4, 4, 1);
6097 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "left", "ecere::com::ClassProperty", 4, 4, 1);
6098 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "right", "ecere::com::ClassProperty", 4, 4, 1);
6099 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "depth", "int", 4, 4, 1);
6100 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "Set", "void( *)(ecere::com::Class, int)", 4, 4, 1);
6101 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "Get", "int( *)(ecere::com::Class)", 4, 4, 1);
6102 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataTypeString", "char *", 4, 4, 1);
6103 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataType", "Type", 4, 4, 1);
6104 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "constant", "bool", 4, 4, 1);
6106 class->fixed = (unsigned int)1;
6107 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::DefinedExpression", 0, sizeof(struct __ecereNameSpace__ecere__com__DefinedExpression), 0, 0, 0, module, 4, 1);
6108 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6109 __ecereClass___ecereNameSpace__ecere__com__DefinedExpression = class;
6110 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "prev", "ecere::com::DefinedExpression", 4, 4, 1);
6111 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "next", "ecere::com::DefinedExpression", 4, 4, 1);
6112 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "name", "char *", 4, 4, 1);
6113 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "value", "char *", 4, 4, 1);
6114 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "nameSpace", "ecere::com::NameSpace *", 4, 4, 1);
6116 class->fixed = (unsigned int)1;
6117 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::GlobalFunction", 0, sizeof(struct __ecereNameSpace__ecere__com__GlobalFunction), 0, 0, 0, module, 4, 1);
6118 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6119 __ecereClass___ecereNameSpace__ecere__com__GlobalFunction = class;
6120 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "prev", "ecere::com::GlobalFunction", 4, 4, 1);
6121 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "next", "ecere::com::GlobalFunction", 4, 4, 1);
6122 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "name", "char *", 4, 4, 1);
6123 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "function", "int( *)()", 4, 4, 1);
6124 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "module", "ecere::com::Module", 4, 4, 1);
6125 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "nameSpace", "ecere::com::NameSpace *", 4, 4, 1);
6126 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataTypeString", "char *", 4, 4, 1);
6127 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataType", "Type", 4, 4, 1);
6128 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "symbol", "void *", 4, 4, 1);
6130 class->fixed = (unsigned int)1;
6131 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::EnumClassData", 0, sizeof(struct __ecereNameSpace__ecere__com__EnumClassData), 0, 0, 0, module, 4, 1);
6132 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6133 __ecereClass___ecereNameSpace__ecere__com__EnumClassData = class;
6134 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "values", "ecere::sys::OldList", 20, 4, 1);
6135 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "largest", "int", 4, 4, 1);
6137 class->fixed = (unsigned int)1;
6138 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::Watcher", 0, sizeof(struct __ecereNameSpace__ecere__com__Watcher), 0, 0, 0, module, 2, 1);
6139 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6140 __ecereClass___ecereNameSpace__ecere__com__Watcher = class;
6142 class->fixed = (unsigned int)1;
6143 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::MemBlock", 0, sizeof(struct __ecereNameSpace__ecere__com__MemBlock), 0, 0, 0, module, 2, 1);
6144 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6145 __ecereClass___ecereNameSpace__ecere__com__MemBlock = class;
6146 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::MemPart", 0, sizeof(struct __ecereNameSpace__ecere__com__MemPart), 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__MemPart = class;
6149 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(1, "ecere::com::BlockPool", 0, sizeof(struct __ecereNameSpace__ecere__com__BlockPool), 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__BlockPool = class;
6152 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "Add", "ecere::com::MemBlock Add()", __ecereMethod___ecereNameSpace__ecere__com__BlockPool_Add, 1);
6153 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "Expand", "bool Expand(unsigned int numBlocks)", __ecereMethod___ecereNameSpace__ecere__com__BlockPool_Expand, 1);
6154 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "Remove", "void Remove(ecere::com::MemBlock block)", __ecereMethod___ecereNameSpace__ecere__com__BlockPool_Remove, 1);
6155 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "first", "ecere::com::MemBlock", 4, 4, 1);
6156 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "last", "ecere::com::MemBlock", 4, 4, 1);
6157 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "free", "ecere::com::MemBlock", 4, 4, 1);
6158 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "blockSize", "uint", 4, 4, 1);
6159 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "blockSpace", "uint", 4, 4, 1);
6160 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "numParts", "int", 4, 4, 1);
6161 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "numBlocks", "int", 4, 4, 1);
6162 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "totalSize", "uint", 4, 4, 1);
6163 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "usedSpace", "uint", 4, 4, 1);
6164 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::log2i", "uint ecere::com::log2i(uint number)", __ecereNameSpace__ecere__com__log2i, module, 4);
6165 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::pow2i", "uint ecere::com::pow2i(uint number)", __ecereNameSpace__ecere__com__pow2i, module, 4);
6166 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::memswap", "void ecere::com::memswap(byte * a, byte * b, uint size)", __ecereNameSpace__ecere__com__memswap, module, 4);
6167 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::CheckMemory", "void ecere::com::CheckMemory(void)", __ecereNameSpace__ecere__com__CheckMemory, module, 4);
6168 __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);
6169 __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);
6170 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::_strtoi64", "int64 ecere::com::_strtoi64(char * string, char * * endString, int base)", __ecereNameSpace__ecere__com___strtoi64, module, 4);
6171 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::_strtoui64", "uint64 ecere::com::_strtoui64(char * string, char * * endString, int base)", __ecereNameSpace__ecere__com___strtoui64, module, 4);
6172 __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);
6173 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::DefaultFunction", "bool ecere::com::DefaultFunction(void)", __ecereNameSpace__ecere__com__DefaultFunction, module, 2);
6174 __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);
6175 __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);
6176 __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);
6177 __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);
6178 __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);
6179 __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);
6180 __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);
6181 __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);
6182 __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);
6183 __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);
6184 __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);
6185 __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);
6186 __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);
6187 __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);
6188 __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);
6189 __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);
6190 __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);
6191 __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);
6192 __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);
6193 __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);
6194 __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);
6195 __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);
6196 __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);
6197 __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);
6198 __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);
6199 __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);
6200 __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);
6201 __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);
6202 __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);
6203 __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);
6204 __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);
6205 __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);
6206 __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);
6207 __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);
6208 __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);
6209 __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);
6210 __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);
6211 __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);
6212 __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);
6213 __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);
6214 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eSystem_New", "void * ecere::com::eSystem_New(uint size)", __ecereNameSpace__ecere__com__eSystem_New, module, 4);
6215 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eSystem_New0", "void * ecere::com::eSystem_New0(uint size)", __ecereNameSpace__ecere__com__eSystem_New0, module, 4);
6216 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eSystem_Delete", "void ecere::com::eSystem_Delete(void * memory)", __ecereNameSpace__ecere__com__eSystem_Delete, module, 4);
6217 __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);
6218 __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);
6219 __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);
6220 __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);
6221 __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);
6222 __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);
6223 __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);
6224 __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);
6225 __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);
6226 __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);
6227 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::LocateModule", "bool ecere::com::LocateModule(char * name, char * fileName)", __ecereNameSpace__ecere__com__LocateModule, module, 4);
6228 __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);
6229 __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);
6230 __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);
6231 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(4, "ecere::com::Platform", 0, 0, 0, 0, 0, module, 4, 1);
6232 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6233 __ecereClass___ecereNameSpace__ecere__com__Platform = class;
6234 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "OnGetString", 0, __ecereMethod___ecereNameSpace__ecere__com__Platform_OnGetString, 1);
6235 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "OnGetDataFromString", 0, __ecereMethod___ecereNameSpace__ecere__com__Platform_OnGetDataFromString, 1);
6236 __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);
6237 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "unknown", 0);
6238 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "win32", 1);
6239 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "tux", 2);
6240 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "apple", 3);
6241 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::GetRuntimePlatform", "ecere::com::Platform ecere::com::GetRuntimePlatform(void)", __ecereNameSpace__ecere__com__GetRuntimePlatform, module, 4);
6242 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::ObjectInfo", 0, sizeof(struct __ecereNameSpace__ecere__com__ObjectInfo), 0, 0, 0, module, 4, 1);
6243 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6244 __ecereClass___ecereNameSpace__ecere__com__ObjectInfo = class;
6245 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "prev", "ecere::com::ObjectInfo", 4, 4, 1);
6246 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "next", "ecere::com::ObjectInfo", 4, 4, 1);
6247 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "instance", "ecere::com::Instance", 4, 4, 1);
6248 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "name", "char *", 4, 4, 1);
6249 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "instCode", "Instantiation", 4, 4, 1);
6250 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "deleted", "bool", 4, 4, 1);
6251 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "oClass", "ecere::com::ObjectInfo", 4, 4, 1);
6252 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "instances", "ecere::sys::OldList", 20, 4, 1);
6253 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "classDefinition", "ClassDefinition", 4, 4, 1);
6254 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "modified", "bool", 4, 4, 1);
6255 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);
6256 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6257 __ecereClass___ecereNameSpace__ecere__com__DesignerBase = class;
6258 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "FindObject", "bool FindObject(ecere::com::Instance * instance, char * string)", 0, 1);
6259 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "RenameObject", "void RenameObject(ecere::com::ObjectInfo object, char * name)", 0, 1);
6260 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "SelectObjectFromDesigner", "void SelectObjectFromDesigner(ecere::com::ObjectInfo object)", 0, 1);
6261 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "CodeAddObject", "void CodeAddObject(ecere::com::Instance instance, ecere::com::ObjectInfo * object)", 0, 1);
6262 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "SheetAddObject", "void SheetAddObject(ecere::com::ObjectInfo object)", 0, 1);
6263 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "AddToolBoxClass", "void AddToolBoxClass(ecere::com::Class _class)", 0, 1);
6264 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "AddDefaultMethod", "void AddDefaultMethod(ecere::com::Instance instance, ecere::com::Instance classInstance)", 0, 1);
6265 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "DeleteObject", "void DeleteObject(ecere::com::ObjectInfo object)", 0, 1);
6266 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "ObjectContainsCode", "bool ObjectContainsCode(ecere::com::ObjectInfo object)", 0, 1);
6267 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "ModifyCode", "void ModifyCode(void)", 0, 1);
6268 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "UpdateProperties", "void UpdateProperties(void)", 0, 1);
6269 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "classDesigner", "ecere::com::ClassDesignerBase", 4, 4, 1);
6270 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "objectClass", "char *", 4, 4, 1);
6271 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "isDragging", "bool", 4, 4, 1);
6272 __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);
6273 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application)
6274 __ecereProp___ecereNameSpace__ecere__com__DesignerBase_classDesigner = __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_classDesigner, __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_classDesigner = (void *)0;
6275 __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);
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_objectClass = __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_objectClass, __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_objectClass = (void *)0;
6278 __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);
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_isDragging = __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_isDragging, __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_isDragging = (void *)0;
6281 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(0, "ecere::com::ClassDesignerBase", "ecere::gui::Window", 0, 0, 0, 0, module, 4, 1);
6282 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6283 __ecereClass___ecereNameSpace__ecere__com__ClassDesignerBase = class;
6284 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "Reset", "void Reset(void)", 0, 1);
6285 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "AddObject", "void AddObject(void)", 0, 1);
6286 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "SelectObject", "void SelectObject(ecere::com::ObjectInfo object, ecere::com::Instance control)", 0, 1);
6287 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "ListToolBoxClasses", "void ListToolBoxClasses(ecere::com::DesignerBase designer)", 0, 1);
6288 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "PrepareTestObject", "void ::PrepareTestObject(ecere::com::DesignerBase designer, ecere::com::Instance test)", 0, 1);
6289 __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);
6290 __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);
6291 __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);
6292 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "DestroyObject", "void ::DestroyObject(ecere::com::Instance object)", 0, 1);
6293 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "FixProperty", "void ::FixProperty(ecere::com::Property prop, ecere::com::Instance object)", 0, 1);
6294 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "CreateNew", "void ::CreateNew(EditBox editBox, Size clientSize, char * name, char * inherit)", 0, 1);
6295 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::SetActiveDesigner", "void ecere::com::SetActiveDesigner(ecere::com::DesignerBase designer)", __ecereNameSpace__ecere__com__SetActiveDesigner, module, 4);
6296 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::GetActiveDesigner", "ecere::com::DesignerBase ecere::com::GetActiveDesigner(void)", __ecereNameSpace__ecere__com__GetActiveDesigner, module, 4);
6297 __ecereNameSpace__ecere__com__eSystem_RegisterDefine("ecere::sys::LEAD_OFFSET", "0xD800 - (0x10000 >> 10)", module, 2);
6298 __ecereNameSpace__ecere__com__eSystem_RegisterDefine("ecere::sys::SURROGATE_OFFSET", "0x10000 - (0xD800 << 10) - 0xDC00", module, 2);
6299 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::UTF8Validate", "bool ecere::sys::UTF8Validate(char * source)", __ecereNameSpace__ecere__sys__UTF8Validate, module, 4);
6300 __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);
6301 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::UTF16toUTF8", "char * ecere::sys::UTF16toUTF8(uint16 * source)", __ecereNameSpace__ecere__sys__UTF16toUTF8, module, 4);
6302 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::UTF16toUTF8Buffer", "int ecere::sys::UTF16toUTF8Buffer(uint16 * source, byte * dest, int max)", __ecereNameSpace__ecere__sys__UTF16toUTF8Buffer, module, 4);
6303 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::UTF8GetChar", "ecere::com::unichar ecere::sys::UTF8GetChar(char * string, int * numBytes)", __ecereNameSpace__ecere__sys__UTF8GetChar, module, 4);
6304 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::UTF8toUTF16Buffer", "int ecere::sys::UTF8toUTF16Buffer(char * source, uint16 * dest, int max)", __ecereNameSpace__ecere__sys__UTF8toUTF16Buffer, module, 4);
6305 __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);
6306 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::UTF8toUTF16", "uint16 * ecere::sys::UTF8toUTF16(char * source, int * wordCount)", __ecereNameSpace__ecere__sys__UTF8toUTF16, module, 4);
6309 void __ecereUnregisterModule_instance(struct __ecereNameSpace__ecere__com__Instance * module)
6312 __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_classDesigner = (void *)0;
6313 __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_objectClass = (void *)0;
6314 __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_isDragging = (void *)0;