2 typedef long long int64;
3 typedef unsigned long long uint64;
5 #define stdcall __attribute__((__stdcall__))
9 #elif defined(__TINYC__)
11 #define __builtin_va_list va_list
12 #define __builtin_va_start va_start
13 #define __builtin_va_end va_end
15 #define strcasecmp stricmp
16 #define strncasecmp strnicmp
17 #define __declspec(x) __attribute__((x))
18 #define stdcall __attribute__((__stdcall__))
22 typedef long long int64;
23 typedef unsigned long long uint64;
25 typedef __int64 int64;
26 typedef unsigned __int64 uint64;
29 #define __ENDIAN_PAD(x) (8 - (x))
31 #define __ENDIAN_PAD(x) 0
33 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__BTNode;
35 struct __ecereNameSpace__ecere__sys__BTNode;
37 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__BinaryTree;
39 struct __ecereNameSpace__ecere__sys__BinaryTree
41 struct __ecereNameSpace__ecere__sys__BTNode * root;
43 int (* CompareKey)(struct __ecereNameSpace__ecere__sys__BinaryTree * tree, unsigned int a, unsigned int b);
44 void (* FreeKey)(void * key);
47 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__OldList;
49 struct __ecereNameSpace__ecere__sys__OldList
58 struct __ecereNameSpace__ecere__com__Class
60 struct __ecereNameSpace__ecere__com__Class * prev, * next;
62 int offset, structSize;
65 int (* Constructor)(struct __ecereNameSpace__ecere__com__Instance *);
66 void (* Destructor)(struct __ecereNameSpace__ecere__com__Instance *);
67 int offsetClass, sizeClass;
68 struct __ecereNameSpace__ecere__com__Class * base;
69 struct __ecereNameSpace__ecere__sys__BinaryTree methods;
70 struct __ecereNameSpace__ecere__sys__BinaryTree members;
71 struct __ecereNameSpace__ecere__sys__BinaryTree prop;
72 struct __ecereNameSpace__ecere__sys__OldList membersAndProperties;
73 struct __ecereNameSpace__ecere__sys__BinaryTree classProperties;
74 struct __ecereNameSpace__ecere__sys__OldList derivatives;
75 int memberID, startMemberID;
77 struct __ecereNameSpace__ecere__com__Instance * module;
78 struct __ecereNameSpace__ecere__com__NameSpace * nameSpace;
79 char * dataTypeString;
80 struct __ecereNameSpace__ecere__com__Instance * dataType;
83 void (* Initialize)();
85 struct __ecereNameSpace__ecere__sys__OldList selfWatchers;
87 unsigned int noExpansion;
88 char * defaultProperty;
89 unsigned int comRedefinition;
91 unsigned int isRemote;
92 unsigned int internalDecl;
94 unsigned int computeSize;
96 int destructionWatchOffset;
98 struct __ecereNameSpace__ecere__sys__OldList delayedCPValues;
99 int inheritanceAccess;
102 struct __ecereNameSpace__ecere__sys__OldList conversions;
103 struct __ecereNameSpace__ecere__sys__OldList templateParams;
104 struct __ecereNameSpace__ecere__com__ClassTemplateArgument * templateArgs;
105 struct __ecereNameSpace__ecere__com__Class * templateClass;
106 struct __ecereNameSpace__ecere__sys__OldList templatized;
110 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Class;
112 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Instance;
114 struct __ecereNameSpace__ecere__com__Instance
117 struct __ecereNameSpace__ecere__com__Class * _class;
121 struct __ecereNameSpace__ecere__com__Property
123 struct __ecereNameSpace__ecere__com__Property * prev, * next;
125 unsigned int isProperty;
128 struct __ecereNameSpace__ecere__com__Class * _class;
129 char * dataTypeString;
130 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
131 struct __ecereNameSpace__ecere__com__Instance * dataType;
134 unsigned int (* IsSet)();
138 unsigned int conversion;
139 unsigned int watcherOffset;
141 unsigned int compiled;
142 unsigned int selfWatchable, isWatchable;
145 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Property;
147 struct __ecereNameSpace__ecere__com__DataMember
149 struct __ecereNameSpace__ecere__com__DataMember * prev, * next;
151 unsigned int isProperty;
154 struct __ecereNameSpace__ecere__com__Class * _class;
155 char * dataTypeString;
156 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
157 struct __ecereNameSpace__ecere__com__Instance * dataType;
161 struct __ecereNameSpace__ecere__sys__OldList members;
162 struct __ecereNameSpace__ecere__sys__BinaryTree membersAlpha;
167 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__DataMember;
169 struct __ecereNameSpace__ecere__com__Method
172 struct __ecereNameSpace__ecere__com__Method * parent, * left, * right;
177 struct __ecereNameSpace__ecere__com__Class * _class;
179 char * dataTypeString;
180 struct __ecereNameSpace__ecere__com__Instance * dataType;
184 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Method;
186 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__SerialBuffer;
188 struct __ecereNameSpace__ecere__com__SerialBuffer
190 unsigned char * _buffer;
196 struct __ecereNameSpace__ecere__com__DataValue
214 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__DataValue;
216 struct __ecereNameSpace__ecere__com__ClassTemplateArgument
222 char * dataTypeString;
223 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
225 struct __ecereNameSpace__ecere__com__DataValue expression;
231 struct __ecereNameSpace__ecere__com__DataMember * member;
232 struct __ecereNameSpace__ecere__com__Property * prop;
233 struct __ecereNameSpace__ecere__com__Method * method;
239 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__ClassTemplateArgument;
241 typedef unsigned int size_t;
243 void exit(int status);
245 void * calloc(size_t nmemb, size_t size);
247 void free(void * ptr);
249 void * malloc(size_t size);
251 void * realloc(void * ptr, size_t size);
253 long int strtol(const char * nptr, char ** endptr, int base);
255 long long int strtoll(const char * nptr, char ** endptr, int base);
257 unsigned long long int strtoull(const char * nptr, char ** endptr, int base);
259 typedef __builtin_va_list __gnuc_va_list;
261 typedef __gnuc_va_list va_list;
265 FILE * bsl_stdin(void);
267 FILE * bsl_stdout(void);
269 FILE * bsl_stderr(void);
271 char * fgets(char * s, int size, FILE * stream);
273 FILE * fopen(const char * path, const char * mode);
275 int fclose(FILE * fp);
277 int fflush(FILE * stream);
279 int fgetc(FILE * stream);
281 int fprintf(FILE * stream, const char * format, ...);
283 int fputc(int c, FILE * stream);
285 size_t fread(void * ptr, size_t size, size_t nmemb, FILE * stream);
287 size_t fwrite(const void * ptr, size_t size, size_t nmemb, FILE * stream);
289 int fseek(FILE * stream, long offset, int whence);
291 long ftell(FILE * stream);
293 int feof(FILE * stream);
295 int ferror(FILE * stream);
297 int fileno(FILE * stream);
300 struct __ecereNameSpace__ecere__com__Class * __ecereNameSpace__ecere__com__eSystem_FindClass(struct __ecereNameSpace__ecere__com__Instance * module, char * name);
302 void * __ecereNameSpace__ecere__com__eSystem_Renew(void * memory, unsigned int size);
304 void * __ecereNameSpace__ecere__com__eSystem_Renew0(void * memory, unsigned int size);
306 void * __ecereNameSpace__ecere__com__eSystem_New(unsigned int size);
308 void * __ecereNameSpace__ecere__com__eSystem_New0(unsigned int size);
310 void __ecereNameSpace__ecere__com__eSystem_Delete(void * memory);
312 void * __ecereNameSpace__ecere__com__eInstance_New(struct __ecereNameSpace__ecere__com__Class * _class);
314 extern int __ecereVMethodID_class_OnGetDataFromString;
316 unsigned int Instance_LocateModule(char * name, char * fileName);
318 void Instance_COM_Initialize(int argc, char ** argv, char ** parsedCommand, int * argcPtr, char *** argvPtr);
320 void * Instance_Module_Load(char * name, void ** Load, void ** Unload);
322 void Instance_Module_Free(void * library);
324 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__unichar;
326 int __ecereNameSpace__ecere__sys__UTF32toUTF8Len(unsigned int * source, int count, unsigned char * dest, int max);
328 char * __ecereMethod___ecereNameSpace__ecere__com__unichar_OnGetString(struct __ecereNameSpace__ecere__com__Class * class, unsigned int * this, char * tempString, void * fieldData, unsigned int * needClass)
330 __ecereNameSpace__ecere__sys__UTF32toUTF8Len(&(*(this)), 1, tempString, 5);
334 unsigned int __ecereNameSpace__ecere__sys__UTF8GetChar(char * string, int * numBytes);
336 unsigned int __ecereMethod___ecereNameSpace__ecere__com__unichar_OnGetDataFromString(struct __ecereNameSpace__ecere__com__Class * class, unsigned int * this, char * string)
340 (*(this)) = __ecereNameSpace__ecere__sys__UTF8GetChar(string, &nb);
344 void __ecereNameSpace__ecere__com__eInstance_FireWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property);
346 void __ecereNameSpace__ecere__com__MemoryGuard_PushLoc(char * loc)
350 void __ecereNameSpace__ecere__com__MemoryGuard_PopLoc()
354 extern unsigned int __ecereDll_Load_ecere(struct __ecereNameSpace__ecere__com__Instance * module);
356 extern unsigned int __ecereDll_Unload_ecere(struct __ecereNameSpace__ecere__com__Instance * module);
358 struct __ecereNameSpace__ecere__com__BTNamedLink
361 struct __ecereNameSpace__ecere__com__BTNamedLink * parent, * left, * right;
366 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__BTNamedLink;
368 struct __ecereNameSpace__ecere__com__SelfWatcher
370 struct __ecereNameSpace__ecere__com__SelfWatcher * prev, * next;
371 void (* callback)(struct __ecereNameSpace__ecere__com__Instance *);
372 struct __ecereNameSpace__ecere__com__Property * _property;
375 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__SelfWatcher;
377 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__AccessMode;
379 struct __ecereNameSpace__ecere__com__SubModule
381 struct __ecereNameSpace__ecere__com__SubModule * prev, * next;
382 struct __ecereNameSpace__ecere__com__Instance * module;
386 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__SubModule;
388 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__DataMemberType;
390 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__ClassType;
392 static struct __ecereNameSpace__ecere__com__Property * __ecereProp___ecereNameSpace__ecere__com__Class_char__PTR_, * __ecerePropM___ecereNameSpace__ecere__com__Class_char__PTR_;
394 char * __ecereProp___ecereNameSpace__ecere__com__Class_Get_char__PTR_(struct __ecereNameSpace__ecere__com__Class * this)
399 extern struct __ecereNameSpace__ecere__com__Instance * __thisModule;
401 struct __ecereNameSpace__ecere__com__Class * __ecereProp___ecereNameSpace__ecere__com__Class_Set_char__PTR_(char * value)
403 struct __ecereNameSpace__ecere__com__Class * theClass = __ecereNameSpace__ecere__com__eSystem_FindClass(__thisModule, value);
408 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)
413 struct __ecereNameSpace__ecere__com__NameSpace
416 struct __ecereNameSpace__ecere__com__NameSpace * btParent, * left, * right;
418 struct __ecereNameSpace__ecere__com__NameSpace * parent;
419 struct __ecereNameSpace__ecere__sys__BinaryTree nameSpaces;
420 struct __ecereNameSpace__ecere__sys__BinaryTree classes;
421 struct __ecereNameSpace__ecere__sys__BinaryTree defines;
422 struct __ecereNameSpace__ecere__sys__BinaryTree functions;
425 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__NameSpace;
427 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Module;
429 struct __ecereNameSpace__ecere__com__Module
431 struct __ecereNameSpace__ecere__com__Instance * application;
432 struct __ecereNameSpace__ecere__sys__OldList classes;
433 struct __ecereNameSpace__ecere__sys__OldList defines;
434 struct __ecereNameSpace__ecere__sys__OldList functions;
435 struct __ecereNameSpace__ecere__sys__OldList modules;
436 struct __ecereNameSpace__ecere__com__Instance * prev;
437 struct __ecereNameSpace__ecere__com__Instance * next;
443 struct __ecereNameSpace__ecere__com__NameSpace privateNameSpace;
444 struct __ecereNameSpace__ecere__com__NameSpace publicNameSpace;
447 unsigned int __ecereMethod___ecereNameSpace__ecere__com__Class_OnGetDataFromString(struct __ecereNameSpace__ecere__com__Class * class, struct __ecereNameSpace__ecere__com__Class ** this, char * string)
449 struct __ecereNameSpace__ecere__com__Class * theClass;
451 theClass = __ecereNameSpace__ecere__com__eSystem_FindClass(__thisModule, string);
453 theClass = __ecereNameSpace__ecere__com__eSystem_FindClass(((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application, string);
454 (*(this)) = (void *)theClass;
455 return theClass != (((void *)0));
458 void __ecereMethod___ecereNameSpace__ecere__com__IOChannel_Serialize(struct __ecereNameSpace__ecere__com__Instance * this, struct __ecereNameSpace__ecere__com__Class * class, void * data);
460 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_char__PTR_;
462 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)
464 __ecereMethod___ecereNameSpace__ecere__com__IOChannel_Serialize(channel, __ecereClass_char__PTR_, this->fullName);
467 void __ecereMethod___ecereNameSpace__ecere__com__Class_OnFree(struct __ecereNameSpace__ecere__com__Class * class, struct __ecereNameSpace__ecere__com__Class * this)
471 void __ecereMethod___ecereNameSpace__ecere__com__IOChannel_Unserialize(struct __ecereNameSpace__ecere__com__Instance * this, struct __ecereNameSpace__ecere__com__Class * class, void * * data);
473 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_String;
475 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)
477 struct __ecereNameSpace__ecere__com__Class * theClass;
480 __ecereMethod___ecereNameSpace__ecere__com__IOChannel_Unserialize(channel, __ecereClass_String, &string);
481 theClass = __ecereNameSpace__ecere__com__eSystem_FindClass(__thisModule, string);
483 theClass = __ecereNameSpace__ecere__com__eSystem_FindClass(((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application, string);
484 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
485 (*(this)) = (void *)theClass;
488 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__TemplateParameterType;
490 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__TemplateMemberType;
492 struct __ecereNameSpace__ecere__com__ClassTemplateParameter
494 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * prev, * next;
499 char * dataTypeString;
502 struct __ecereNameSpace__ecere__com__ClassTemplateArgument defaultArg;
506 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__ClassTemplateParameter;
508 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__MethodType;
510 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__ImportType;
512 struct __ecereNameSpace__ecere__com__BitMember
514 struct __ecereNameSpace__ecere__com__BitMember * prev, * next;
516 unsigned int isProperty;
519 struct __ecereNameSpace__ecere__com__Class * _class;
520 char * dataTypeString;
521 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
522 struct __ecereNameSpace__ecere__com__Instance * dataType;
529 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__BitMember;
531 struct __ecereNameSpace__ecere__com__ClassProperty
534 struct __ecereNameSpace__ecere__com__ClassProperty * parent, * left, * right;
536 void (* Set)(struct __ecereNameSpace__ecere__com__Class *, int);
537 int (* Get)(struct __ecereNameSpace__ecere__com__Class *);
538 char * dataTypeString;
539 struct __ecereNameSpace__ecere__com__Instance * dataType;
540 unsigned int constant;
543 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__ClassProperty;
545 struct __ecereNameSpace__ecere__com__DefinedExpression
547 struct __ecereNameSpace__ecere__com__DefinedExpression * prev, * next;
550 struct __ecereNameSpace__ecere__com__NameSpace * nameSpace;
553 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__DefinedExpression;
555 struct __ecereNameSpace__ecere__com__GlobalFunction
557 struct __ecereNameSpace__ecere__com__GlobalFunction * prev, * next;
560 struct __ecereNameSpace__ecere__com__Instance * module;
561 struct __ecereNameSpace__ecere__com__NameSpace * nameSpace;
562 char * dataTypeString;
563 struct __ecereNameSpace__ecere__com__Instance * dataType;
567 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__GlobalFunction;
569 struct __ecereNameSpace__ecere__com__EnumClassData
571 struct __ecereNameSpace__ecere__sys__OldList values;
575 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__EnumClassData;
577 struct __ecereNameSpace__ecere__com__Watcher
579 struct __ecereNameSpace__ecere__com__Watcher * prev, * next;
580 void (* callback)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__Instance *);
581 struct __ecereNameSpace__ecere__com__Instance * object;
584 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Watcher;
586 static unsigned int __ecereNameSpace__ecere__com__TOTAL_MEM = 0;
588 static unsigned int __ecereNameSpace__ecere__com__OUTSIDE_MEM = 0;
590 struct __ecereNameSpace__ecere__com__MemBlock
592 struct __ecereNameSpace__ecere__com__MemBlock * prev, * next;
593 struct __ecereNameSpace__ecere__com__MemPart * part;
597 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__MemBlock;
599 struct __ecereNameSpace__ecere__com__MemPart
604 struct __ecereNameSpace__ecere__com__BlockPool * pool;
607 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__MemPart;
609 static int __ecereNameSpace__ecere__com__power15[] =
611 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
614 struct __ecereNameSpace__ecere__com__BlockPool
616 struct __ecereNameSpace__ecere__com__MemBlock * first, * last;
617 struct __ecereNameSpace__ecere__com__MemBlock * free;
618 unsigned int blockSize;
619 unsigned int blockSpace;
622 unsigned int totalSize;
623 unsigned int usedSpace;
626 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__BlockPool;
628 unsigned int __ecereMethod___ecereNameSpace__ecere__com__BlockPool_Expand(struct __ecereNameSpace__ecere__com__BlockPool * this, unsigned int numBlocks)
630 unsigned char * memory = malloc(numBlocks * this->blockSpace);
632 __ecereNameSpace__ecere__com__TOTAL_MEM += numBlocks * this->blockSpace;
636 struct __ecereNameSpace__ecere__com__MemBlock * block = (struct __ecereNameSpace__ecere__com__MemBlock *)memory;
637 struct __ecereNameSpace__ecere__com__MemPart * part = calloc(1, sizeof(struct __ecereNameSpace__ecere__com__MemPart));
639 __ecereNameSpace__ecere__com__TOTAL_MEM += sizeof(struct __ecereNameSpace__ecere__com__MemPart);
641 for(c = 0; c < numBlocks - 1; c++)
644 block->prev = (((void *)0));
645 block->next = (struct __ecereNameSpace__ecere__com__MemBlock *)((unsigned char *)block + this->blockSpace);
648 part->blocksUsed = 0;
650 part->memory = memory;
651 part->size = numBlocks;
653 block->prev = (((void *)0));
654 block->next = (((void *)0));
655 this->totalSize += numBlocks;
662 struct __ecereNameSpace__ecere__com__MemBlock * __ecereMethod___ecereNameSpace__ecere__com__BlockPool_Add(struct __ecereNameSpace__ecere__com__BlockPool * this)
665 struct __ecereNameSpace__ecere__com__MemBlock * block = (((void *)0));
668 __ecereMethod___ecereNameSpace__ecere__com__BlockPool_Expand(this, (__simpleStruct0 = this->numBlocks / 2, (1 > __simpleStruct0) ? 1 : __simpleStruct0));
672 block->prev = this->last;
674 block->prev->next = block;
678 this->free = block->next;
679 block->next = (((void *)0));
680 block->part->blocksUsed++;
686 void __ecereMethod___ecereNameSpace__ecere__com__BlockPool_Remove(struct __ecereNameSpace__ecere__com__BlockPool * this, struct __ecereNameSpace__ecere__com__MemBlock * block)
689 block->prev->next = block->next;
691 block->next->prev = block->prev;
692 if(this->first == block)
693 this->first = block->next;
694 if(this->last == block)
695 this->last = block->prev;
696 block->next = this->free;
698 block->part->blocksUsed--;
700 (*block->part->pool).usedSpace -= block->size;
701 if(!block->part->blocksUsed && this->numBlocks && this->totalSize > this->numBlocks + this->numBlocks / 2)
703 struct __ecereNameSpace__ecere__com__MemBlock * next = this->free, * prev = (((void *)0));
704 struct __ecereNameSpace__ecere__com__MemPart * part = block->part;
706 this->free = (((void *)0));
707 this->totalSize -= part->size;
710 if(next->part != part)
722 prev->next = (((void *)0));
723 __ecereNameSpace__ecere__com__TOTAL_MEM -= part->size * this->blockSpace;
724 __ecereNameSpace__ecere__com__TOTAL_MEM -= sizeof(struct __ecereNameSpace__ecere__com__MemPart);
731 static struct __ecereNameSpace__ecere__com__BlockPool * __ecereNameSpace__ecere__com__pools;
733 static unsigned int __ecereNameSpace__ecere__com__PosFibonacci(unsigned int number)
736 unsigned int last = 1, prev = 0;
737 unsigned int current = 1;
739 for(pos = 0; ; pos++)
744 if(current >= number)
750 static unsigned int __ecereNameSpace__ecere__com__NthFibonacci(unsigned int number)
753 unsigned int last = 1, prev = 0;
754 unsigned int current = 1;
756 for(pos = 0; pos <= number; pos++)
765 static unsigned int __ecereNameSpace__ecere__com__NextFibonacci(unsigned int number)
768 unsigned int last = 1, prev = 0;
769 unsigned int current = 1;
771 for(pos = 0; ; pos++)
776 if(current >= number)
781 static unsigned int __ecereNameSpace__ecere__com__log1_5i(unsigned int number)
786 for(pos = 0; pos < 31; pos++)
788 if(current >= number)
790 current = current * 3 / 2;
797 static unsigned int __ecereNameSpace__ecere__com__pow1_5(unsigned int number)
802 for(pos = 0; pos < number; pos++)
804 current = current * 3 / 2;
808 return (unsigned int)current;
811 static unsigned int __ecereNameSpace__ecere__com__pow1_5i(unsigned int number)
816 for(pos = 0; pos < 31; pos++)
818 if(current >= number)
819 return (unsigned int)current;
820 current = current * 3 / 2;
824 return (unsigned int)current;
827 unsigned int __ecereNameSpace__ecere__com__log2i(unsigned int number)
831 for(power = 0; power < 32; power++)
832 if((1L << power) >= number)
837 unsigned int __ecereNameSpace__ecere__com__pow2i(unsigned int number)
839 return 1 << __ecereNameSpace__ecere__com__log2i(number);
842 static unsigned int __ecereNameSpace__ecere__com__memoryInitialized = 0x0;
844 static void __ecereNameSpace__ecere__com__InitMemory()
848 __ecereNameSpace__ecere__com__memoryInitialized = 0x1;
849 __ecereNameSpace__ecere__com__pools = calloc(1, sizeof(struct __ecereNameSpace__ecere__com__BlockPool) * 31);
850 for(c = 0; c < 31; c++)
854 __ecereNameSpace__ecere__com__pools[c].blockSize = __ecereNameSpace__ecere__com__pow1_5(c);
855 if(__ecereNameSpace__ecere__com__pools[c].blockSize % 4)
856 __ecereNameSpace__ecere__com__pools[c].blockSize += 4 - (__ecereNameSpace__ecere__com__pools[c].blockSize % 4);
857 __ecereNameSpace__ecere__com__pools[c].blockSpace = __ecereNameSpace__ecere__com__pools[c].blockSize;
858 __ecereNameSpace__ecere__com__pools[c].blockSpace += sizeof(struct __ecereNameSpace__ecere__com__MemBlock);
859 expansion = (__ecereNameSpace__ecere__com__pools[c].blockSize < 128) ? 1024 : (131072 / __ecereNameSpace__ecere__com__pools[c].blockSize);
861 __ecereMethod___ecereNameSpace__ecere__com__BlockPool_Expand(&__ecereNameSpace__ecere__com__pools[c], ((1 > expansion) ? 1 : expansion));
865 static void * __ecereNameSpace__ecere__com___mymalloc(unsigned int size)
867 struct __ecereNameSpace__ecere__com__MemBlock * block = (((void *)0));
871 unsigned int p = __ecereNameSpace__ecere__com__log1_5i(size);
873 if(!__ecereNameSpace__ecere__com__memoryInitialized)
874 __ecereNameSpace__ecere__com__InitMemory();
877 block = __ecereMethod___ecereNameSpace__ecere__com__BlockPool_Add(&__ecereNameSpace__ecere__com__pools[p]);
881 __ecereNameSpace__ecere__com__pools[p].usedSpace += size;
886 block = malloc(sizeof(struct __ecereNameSpace__ecere__com__MemBlock) + size);
889 __ecereNameSpace__ecere__com__TOTAL_MEM += sizeof(struct __ecereNameSpace__ecere__com__MemBlock) + size;
890 __ecereNameSpace__ecere__com__OUTSIDE_MEM += sizeof(struct __ecereNameSpace__ecere__com__MemBlock) + size;
891 block->part = (((void *)0));
895 return block ? ((struct __ecereNameSpace__ecere__com__MemBlock *)block + 1) : (((void *)0));
898 extern void memset(void * area, unsigned char value, unsigned int count);
900 static void * __ecereNameSpace__ecere__com___mycalloc(int n, unsigned int size)
902 void * pointer = __ecereNameSpace__ecere__com___mymalloc(size);
905 memset(pointer, (unsigned char)0, size);
909 static void __ecereNameSpace__ecere__com___myfree(void * pointer)
913 struct __ecereNameSpace__ecere__com__MemBlock * block = (struct __ecereNameSpace__ecere__com__MemBlock *)((unsigned char *)pointer - sizeof(struct __ecereNameSpace__ecere__com__MemBlock));
914 struct __ecereNameSpace__ecere__com__MemPart * part = block->part;
915 struct __ecereNameSpace__ecere__com__BlockPool * pool = part ? part->pool : (((void *)0));
918 __ecereMethod___ecereNameSpace__ecere__com__BlockPool_Remove((&*pool), block);
921 __ecereNameSpace__ecere__com__TOTAL_MEM -= sizeof(struct __ecereNameSpace__ecere__com__MemBlock) + block->size;
922 __ecereNameSpace__ecere__com__OUTSIDE_MEM -= sizeof(struct __ecereNameSpace__ecere__com__MemBlock) + block->size;
928 extern void * memcpy(void * , const void * , unsigned int size);
930 static void * __ecereNameSpace__ecere__com___myrealloc(void * pointer, unsigned int size)
932 struct __ecereNameSpace__ecere__com__MemBlock * block = pointer ? ((struct __ecereNameSpace__ecere__com__MemBlock *)((unsigned char *)pointer - sizeof(struct __ecereNameSpace__ecere__com__MemBlock))) : (((void *)0));
933 void * newPointer = (((void *)0));
934 struct __ecereNameSpace__ecere__com__MemPart * part = block ? block->part : (((void *)0));
935 struct __ecereNameSpace__ecere__com__BlockPool * pool = part ? part->pool : (((void *)0));
941 unsigned int ns = __ecereNameSpace__ecere__com__pow1_5i(size);
942 unsigned int mod = ns % 4;
946 if(ns == (*pool).blockSize)
948 newPointer = pointer;
949 (*pool).usedSpace += size - block->size;
955 struct __ecereNameSpace__ecere__com__MemBlock * newBlock = realloc(block, sizeof(struct __ecereNameSpace__ecere__com__MemBlock) + size);
959 __ecereNameSpace__ecere__com__TOTAL_MEM += size - newBlock->size;
960 __ecereNameSpace__ecere__com__OUTSIDE_MEM += size - newBlock->size;
961 newPointer = ((struct __ecereNameSpace__ecere__com__MemBlock *)newBlock + 1);
967 newPointer = __ecereNameSpace__ecere__com___mymalloc(size);
968 if(pointer && newPointer)
970 unsigned int __simpleStruct0;
972 memcpy(newPointer, pointer, (__simpleStruct0 = block->size, (size < __simpleStruct0) ? size : __simpleStruct0));
973 __ecereNameSpace__ecere__com___myfree(pointer);
979 static void * __ecereNameSpace__ecere__com___mycrealloc(void * pointer, unsigned int size)
981 struct __ecereNameSpace__ecere__com__MemBlock * block = pointer ? ((struct __ecereNameSpace__ecere__com__MemBlock *)((unsigned char *)pointer - sizeof(struct __ecereNameSpace__ecere__com__MemBlock))) : (((void *)0));
982 void * newPointer = (((void *)0));
983 struct __ecereNameSpace__ecere__com__MemPart * part = block ? block->part : (((void *)0));
984 struct __ecereNameSpace__ecere__com__BlockPool * pool = part ? part->pool : (((void *)0));
990 unsigned int ns = __ecereNameSpace__ecere__com__pow1_5i(size);
991 unsigned int mod = ns % 4;
995 if(ns == (*pool).blockSize)
997 int extra = size - block->size;
999 newPointer = pointer;
1000 (*pool).usedSpace += extra;
1002 memset((unsigned char *)pointer + block->size, (unsigned char)0, extra);
1008 struct __ecereNameSpace__ecere__com__MemBlock * newBlock = realloc(block, sizeof(struct __ecereNameSpace__ecere__com__MemBlock) + size);
1012 int extra = size - newBlock->size;
1014 __ecereNameSpace__ecere__com__TOTAL_MEM += extra;
1015 __ecereNameSpace__ecere__com__OUTSIDE_MEM += extra;
1016 newPointer = ((struct __ecereNameSpace__ecere__com__MemBlock *)newBlock + 1);
1018 memset((unsigned char *)newPointer + newBlock->size, (unsigned char)0, extra);
1019 newBlock->size = size;
1025 newPointer = __ecereNameSpace__ecere__com___mymalloc(size);
1030 unsigned int __simpleStruct0;
1032 memcpy(newPointer, pointer, (__simpleStruct0 = block->size, (size < __simpleStruct0) ? size : __simpleStruct0));
1033 if(size > block->size)
1034 memset((unsigned char *)newPointer + block->size, (unsigned char)0, size - block->size);
1035 __ecereNameSpace__ecere__com___myfree(pointer);
1038 memset((unsigned char *)newPointer, (unsigned char)0, size);
1044 static void * __ecereNameSpace__ecere__com___malloc(unsigned int size)
1048 pointer = __ecereNameSpace__ecere__com___mymalloc(size + 2 * 0);
1049 return (unsigned char *)pointer + 0;
1052 static void * __ecereNameSpace__ecere__com___calloc(int n, unsigned int size)
1056 pointer = __ecereNameSpace__ecere__com___mycalloc(n, size + 2 * 0);
1057 return (unsigned char *)pointer + 0;
1060 static void __ecereNameSpace__ecere__com___free(void * pointer);
1062 static void * __ecereNameSpace__ecere__com___realloc(void * pointer, unsigned int size)
1066 __ecereNameSpace__ecere__com___free(pointer);
1067 return (((void *)0));
1069 pointer = __ecereNameSpace__ecere__com___myrealloc(pointer, size);
1070 return (unsigned char *)pointer + 0;
1073 static void * __ecereNameSpace__ecere__com___crealloc(void * pointer, unsigned int size)
1076 return (((void *)0));
1077 pointer = __ecereNameSpace__ecere__com___mycrealloc(pointer, size);
1078 return (unsigned char *)pointer + 0;
1081 static void __ecereNameSpace__ecere__com___free(void * pointer)
1085 __ecereNameSpace__ecere__com___myfree(pointer);
1089 void __ecereNameSpace__ecere__com__memswap(unsigned char * a, unsigned char * b, unsigned int size)
1092 unsigned char buffer[1024];
1094 for(c = 0; c < size; )
1096 int s = sizeof buffer;
1100 memcpy(buffer, a + c, s);
1101 memcpy(a + c, b + c, s);
1102 memcpy(b + c, buffer, s);
1107 void __ecereNameSpace__ecere__com__CheckMemory()
1111 static void __ecereNameSpace__ecere__com__ComputeClassParameters(struct __ecereNameSpace__ecere__com__Class * templatedClass, char * templateParams, struct __ecereNameSpace__ecere__com__Instance * findModule);
1113 extern char * strchr(char * , int);
1115 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__OldLink;
1117 struct __ecereNameSpace__ecere__sys__OldLink
1119 struct __ecereNameSpace__ecere__sys__OldLink * prev;
1120 struct __ecereNameSpace__ecere__sys__OldLink * next;
1124 extern char * __ecereNameSpace__ecere__sys__CopyString(char * string);
1126 extern void * memmove(void * , const void * , unsigned int size);
1128 static void __ecereNameSpace__ecere__com__SetDelayedCPValues(struct __ecereNameSpace__ecere__com__Class * _class, struct __ecereNameSpace__ecere__com__ClassProperty * _property);
1130 struct __ecereNameSpace__ecere__sys__BTNode * __ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(struct __ecereNameSpace__ecere__sys__BinaryTree * this);
1132 extern struct __ecereNameSpace__ecere__com__Property ** __ecereProp___ecereNameSpace__ecere__sys__BinaryTree_first;
1134 struct __ecereNameSpace__ecere__sys__BTNode * __ecereProp___ecereNameSpace__ecere__sys__BTNode_Get_next(struct __ecereNameSpace__ecere__sys__BTNode * this);
1136 extern struct __ecereNameSpace__ecere__com__Property ** __ecereProp___ecereNameSpace__ecere__sys__BTNode_next;
1138 struct __ecereNameSpace__ecere__sys__BTNode * __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(struct __ecereNameSpace__ecere__sys__BinaryTree * this, char * key);
1140 void __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(struct __ecereNameSpace__ecere__sys__BinaryTree * this, struct __ecereNameSpace__ecere__sys__BTNode * node);
1142 void __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(struct __ecereNameSpace__ecere__sys__OldList * this, void * item);
1144 static void __ecereNameSpace__ecere__com__FixDerivativesBase(struct __ecereNameSpace__ecere__com__Class * base, struct __ecereNameSpace__ecere__com__Class * mod)
1146 struct __ecereNameSpace__ecere__sys__OldLink * derivative;
1147 struct __ecereNameSpace__ecere__sys__OldLink * templateLink;
1149 __ecereNameSpace__ecere__com__ComputeClassParameters(base, strchr(base->name, '<'), (((void *)0)));
1150 for(derivative = base->derivatives.first; derivative; derivative = derivative->next)
1152 struct __ecereNameSpace__ecere__com__Class * _class = derivative->data;
1153 int type = _class->type;
1154 int size = _class->structSize - _class->offset;
1155 int oldSizeClass = _class->sizeClass;
1156 int sizeClass = _class->sizeClass - _class->offsetClass;
1157 struct __ecereNameSpace__ecere__com__Class * enumBase = (((void *)0));
1158 char * dataTypeString = (((void *)0));
1159 struct __ecereNameSpace__ecere__com__Class * baseClass;
1160 unsigned int offsetBefore = _class->offset;
1161 int offsetClass, totalSizeClass;
1163 for(baseClass = base; baseClass->base; baseClass = baseClass->base)
1165 if(base && !base->internalDecl && (base->type == 5 || base->type == 1 || base->type == 0))
1167 if(base->type == 1 && type == 0)
1172 if(base && (_class->type == 0 || _class->type == 5 || _class->type == 1) && (base->type == 3 || base->type == 2 || base->type == 4))
1181 base = __ecereNameSpace__ecere__com__eSystem_FindClass(_class->module, "enum");
1184 dataTypeString = enumBase ? enumBase->dataTypeString : base->dataTypeString;
1185 offsetClass = base ? (base->templateClass ? base->templateClass->sizeClass : base->sizeClass) : (type == 5 ? 0 : 0);
1186 totalSizeClass = offsetClass + sizeClass;
1187 if(type == 0 || type == 5)
1188 _class->offset = (base && (base->templateClass ? base->templateClass->structSize : base->structSize) && base->type != 1000) ? (base->templateClass ? base->templateClass->structSize : base->structSize) : ((type == 5) ? 0 : 12);
1191 _class->memberOffset = (base && (base->templateClass ? base->templateClass->structSize : base->structSize) && base->type != 1000) ? (base->templateClass ? base->templateClass->structSize : base->structSize) : 0;
1192 _class->typeSize = _class->structSize = _class->memberOffset + size;
1194 else if(type == 2 || type == 4 || type == 3)
1196 struct __ecereNameSpace__ecere__com__Class * dataTypeClass = __ecereNameSpace__ecere__com__eSystem_FindClass(_class->module, dataTypeString);
1199 _class->typeSize = dataTypeClass->typeSize;
1200 _class->structSize = 0;
1202 else if(type == 0 || type == 5)
1204 _class->structSize = _class->offset + size;
1205 _class->typeSize = sizeof(void *);
1207 if(_class->type != 1000)
1208 _class->type = type;
1209 (__ecereNameSpace__ecere__com__eSystem_Delete(_class->dataTypeString), _class->dataTypeString = 0);
1210 _class->dataTypeString = __ecereNameSpace__ecere__sys__CopyString(dataTypeString);
1211 if(totalSizeClass != oldSizeClass)
1213 _class->data = __ecereNameSpace__ecere__com__eSystem_Renew(_class->data, sizeof(unsigned char) * (totalSizeClass));
1214 memmove((unsigned char *)_class->data + mod->offsetClass, (unsigned char *)_class->data, totalSizeClass - mod->sizeClass);
1215 if(base->type != 1000 && base->type != 4)
1216 memcpy((unsigned char *)_class->data, (unsigned char *)base->data, totalSizeClass - _class->sizeClass);
1218 memset((unsigned char *)_class->data, (unsigned char)0, totalSizeClass - _class->sizeClass);
1220 _class->offsetClass = offsetClass;
1221 _class->sizeClass = totalSizeClass;
1223 struct __ecereNameSpace__ecere__com__Method * method, * next;
1224 struct __ecereNameSpace__ecere__com__Class * b;
1226 if(mod->base && mod->base->base && mod->base->vTblSize > baseClass->vTblSize && (mod != (base->templateClass ? base->templateClass : base) || _class->vTblSize != mod->vTblSize))
1228 _class->vTblSize += mod->base->vTblSize - baseClass->vTblSize;
1229 _class->_vTbl = __ecereNameSpace__ecere__com__eSystem_Renew(_class->_vTbl, sizeof(void *) * (_class->vTblSize));
1230 memmove(_class->_vTbl + mod->base->vTblSize, _class->_vTbl + baseClass->vTblSize, (_class->vTblSize - mod->vTblSize) * sizeof(void *));
1231 for(method = (struct __ecereNameSpace__ecere__com__Method *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&_class->methods); method; method = next)
1233 next = (struct __ecereNameSpace__ecere__com__Method *)__ecereProp___ecereNameSpace__ecere__sys__BTNode_Get_next(((struct __ecereNameSpace__ecere__sys__BTNode *)method));
1234 if(method->type == 1)
1235 method->vid += mod->base->vTblSize - baseClass->vTblSize;
1238 for(b = mod->base; b && b != (((void *)0)); b = b->base)
1240 struct __ecereNameSpace__ecere__com__Method * vMethod;
1242 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)))
1244 if(vMethod->type == 1)
1246 method = (struct __ecereNameSpace__ecere__com__Method *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&_class->methods, vMethod->name);
1249 if(method->function)
1250 _class->_vTbl[vMethod->vid] = method->function;
1253 (__ecereNameSpace__ecere__com__eSystem_Delete(method->name), method->name = 0);
1254 (__ecereNameSpace__ecere__com__eSystem_Delete(method->dataTypeString), method->dataTypeString = 0);
1255 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&_class->methods, (struct __ecereNameSpace__ecere__sys__BTNode *)method);
1259 (__ecereNameSpace__ecere__com__eSystem_Delete(method->dataTypeString), method->dataTypeString = 0);
1260 method->type = vMethod->type;
1261 method->dataTypeString = __ecereNameSpace__ecere__sys__CopyString(vMethod->dataTypeString);
1262 method->_class = vMethod->_class;
1266 _class->_vTbl[vMethod->vid] = _class->base->_vTbl[vMethod->vid];
1271 if(type == 0 || type == 5 || type == 1)
1273 struct __ecereNameSpace__ecere__com__Property * prop;
1274 struct __ecereNameSpace__ecere__com__DataMember * member;
1275 struct __ecereNameSpace__ecere__com__Class * c;
1277 for(c = mod->base; c; c = c->base)
1279 struct __ecereNameSpace__ecere__com__Property * _property;
1281 for(_property = c->membersAndProperties.first; _property; _property = _property->next)
1283 if(_property->isProperty)
1285 struct __ecereNameSpace__ecere__com__BTNamedLink * link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&_class->prop, _property->name);
1290 if(!prop->Set && !prop->Get && prop->memberAccess == 4)
1292 struct __ecereNameSpace__ecere__com__SelfWatcher * watcher;
1294 for(watcher = _class->selfWatchers.first; watcher; watcher = watcher->next)
1296 if(watcher->_property == prop)
1297 watcher->_property = _property;
1299 _property->selfWatchable = 0x1;
1300 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&_class->prop, (struct __ecereNameSpace__ecere__sys__BTNode *)link);
1301 (__ecereNameSpace__ecere__com__eSystem_Delete(prop->name), prop->name = 0);
1302 (__ecereNameSpace__ecere__com__eSystem_Delete(prop->dataTypeString), prop->dataTypeString = 0);
1303 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&_class->membersAndProperties, prop);
1310 for(member = _class->membersAndProperties.first; member; member = member->next)
1312 int offsetDiff = _class->offset - offsetBefore;
1314 if(!member->isProperty && offsetDiff > 0)
1316 member->offset += offsetDiff;
1317 member->memberOffset += offsetDiff;
1319 member->id += mod->base->memberID;
1321 _class->memberID += mod->base->memberID;
1322 _class->startMemberID += mod->base->memberID;
1325 __ecereNameSpace__ecere__com__FixDerivativesBase(_class, mod);
1327 struct __ecereNameSpace__ecere__com__Class * c;
1329 for(c = mod->base; c; c = c->base)
1331 struct __ecereNameSpace__ecere__com__ClassProperty * _property;
1333 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)))
1335 __ecereNameSpace__ecere__com__SetDelayedCPValues(_class, _property);
1341 struct __ecereNameSpace__ecere__sys__OldLink * templateLink;
1343 for(templateLink = base->templatized.first; templateLink; templateLink = templateLink->next)
1345 struct __ecereNameSpace__ecere__com__Class * template = templateLink->data;
1346 char * templateParams = strchr(template->name, '<');
1348 template->base = base->base;
1349 template->_vTbl = base->_vTbl;
1350 template->data = base->data;
1351 template->offset = base->offset;
1352 template->offsetClass = base->offsetClass;
1353 template->sizeClass = base->sizeClass;
1354 template->structSize = base->structSize;
1355 template->vTblSize = base->vTblSize;
1356 __ecereNameSpace__ecere__com__FixDerivativesBase(template, mod);
1361 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Application;
1363 struct __ecereNameSpace__ecere__com__Application
1368 unsigned int isGUIApp;
1369 struct __ecereNameSpace__ecere__sys__OldList allModules;
1370 char * parsedCommand;
1371 struct __ecereNameSpace__ecere__com__NameSpace systemNameSpace;
1374 extern char * strncpy(char * , const char * , int n);
1376 extern int strcmp(const char * , const char * );
1378 static void __ecereNameSpace__ecere__com__FreeTemplatesDerivatives(struct __ecereNameSpace__ecere__com__Class * base);
1380 extern int printf(char * , ...);
1382 static void __ecereNameSpace__ecere__com__NameSpace_Free(struct __ecereNameSpace__ecere__com__NameSpace * parentNameSpace);
1384 static struct __ecereNameSpace__ecere__com__BTNamedLink * __ecereNameSpace__ecere__com__SearchNameSpace(struct __ecereNameSpace__ecere__com__NameSpace * nameSpace, char * name, void * listOffset);
1386 extern char * strcpy(char * , const char * );
1388 static void __ecereNameSpace__ecere__com__FreeTemplateArgs(struct __ecereNameSpace__ecere__com__Class * template);
1390 static void __ecereNameSpace__ecere__com__CopyTemplateArg(struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param, struct __ecereNameSpace__ecere__com__ClassTemplateArgument * arg);
1392 int __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString(struct __ecereNameSpace__ecere__sys__BinaryTree * this, char * a, char * b);
1394 unsigned int __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(struct __ecereNameSpace__ecere__sys__BinaryTree * this, struct __ecereNameSpace__ecere__sys__BTNode * node);
1396 void __ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove(struct __ecereNameSpace__ecere__sys__OldList * this, void * item);
1398 struct __ecereNameSpace__ecere__sys__OldLink * __ecereMethod___ecereNameSpace__ecere__sys__OldList_FindLink(struct __ecereNameSpace__ecere__sys__OldList * this, void * data);
1400 void __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(struct __ecereNameSpace__ecere__sys__OldList * this, void * item);
1402 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)
1404 void * __ecereTemp1;
1406 struct __ecereNameSpace__ecere__com__NameSpace * nameSpace = (((void *)0));
1409 nameSpace = (declMode == 1) ? &((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->publicNameSpace : &((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->privateNameSpace;
1411 nameSpace = &((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application + 300)))->systemNameSpace;
1413 for(c = 0; name[c]; c++)
1415 if(name[c] == '.' || (name[c] == ':' && name[c + 1] == ':'))
1417 struct __ecereNameSpace__ecere__com__NameSpace * newSpace;
1418 char * spaceName = __ecereNameSpace__ecere__com___malloc(c - start + 1);
1420 strncpy(spaceName, name + start, c - start);
1421 spaceName[c - start] = '\0';
1422 newSpace = (struct __ecereNameSpace__ecere__com__NameSpace *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&(*nameSpace).nameSpaces, spaceName);
1425 newSpace = __ecereNameSpace__ecere__com__eSystem_New0(sizeof(struct __ecereNameSpace__ecere__com__NameSpace) * (1));
1426 (*newSpace).classes.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
1427 (*newSpace).defines.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
1428 (*newSpace).functions.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
1429 (*newSpace).nameSpaces.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
1430 (*newSpace).name = spaceName;
1431 (*newSpace).parent = nameSpace;
1432 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&(*nameSpace).nameSpaces, (struct __ecereNameSpace__ecere__sys__BTNode *)newSpace);
1435 (__ecereNameSpace__ecere__com__eSystem_Delete(spaceName), spaceName = 0);
1436 nameSpace = newSpace;
1448 struct __ecereNameSpace__ecere__com__BTNamedLink * classLink = (((void *)0));
1449 struct __ecereNameSpace__ecere__com__Class * _class = (((void *)0));
1450 char * dataTypeString = (((void *)0));
1451 struct __ecereNameSpace__ecere__com__Class * enumBase = (((void *)0));
1452 struct __ecereNameSpace__ecere__com__Class * base = (baseName && baseName[0]) ? __ecereNameSpace__ecere__com__eSystem_FindClass(module, baseName) : (((void *)0));
1453 unsigned int refine = 0x0;
1455 if(base && !base->internalDecl && (base->type == 5 || base->type == 1 || base->type == 0))
1457 if(base->type == 1 && type == 0)
1462 if(base && (type == 0 || type == 5 || type == 1) && (base->type == 3 || base->type == 2 || base->type == 4))
1466 if(!base || base->type == 1000)
1470 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"))
1472 base = __ecereNameSpace__ecere__com__eSystem_FindClass(module, "enum");
1473 dataTypeString = (baseName && baseName[0]) ? baseName : "int";
1477 base = __ecereNameSpace__ecere__com__eSystem_RegisterClass((int)0, baseName, (((void *)0)), 0, 0, (((void *)0)), (((void *)0)), module, declMode, 1);
1478 base->internalDecl = 0x1;
1480 base = __ecereNameSpace__ecere__com__eSystem_FindClass(module, "enum");
1483 else if(type == 1 && (!baseName || !baseName[0]))
1485 base = __ecereNameSpace__ecere__com__eSystem_FindClass(module, "struct");
1486 dataTypeString = name + start;
1491 dataTypeString = "struct __ecereNameSpace__ecere__com__Instance";
1493 dataTypeString = "void *";
1495 dataTypeString = (baseName && baseName[0]) ? baseName : "unsigned int";
1497 dataTypeString = (baseName && baseName[0]) ? baseName : "int";
1499 dataTypeString = name + start;
1500 if(base || (!baseName || !baseName[0]) || type == 2 || type == 3)
1502 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"))
1504 if(type == 0 && strcmp(name, "ecere::com::Instance") && strcmp(name, "enum") && strcmp(name, "struct"))
1505 base = __ecereNameSpace__ecere__com__eSystem_FindClass(module, "ecere::com::Instance");
1507 base = __ecereNameSpace__ecere__com__eSystem_FindClass(module, "class");
1522 base = __ecereNameSpace__ecere__com__eSystem_FindClass(module, "enum");
1525 dataTypeString = enumBase ? enumBase->dataTypeString : base->dataTypeString;
1527 offsetClass = base ? base->sizeClass : (type == 5 ? 0 : 0);
1528 totalSizeClass = offsetClass + sizeClass;
1529 if((_class = __ecereNameSpace__ecere__com__eSystem_FindClass(module, name)))
1531 __ecereNameSpace__ecere__com__FreeTemplatesDerivatives(_class);
1532 if(!_class->internalDecl)
1535 printf("error: Redefinition of class %s\n", name);
1538 _class->comRedefinition = 0x1;
1541 return (((void *)0));
1543 classLink = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&(*_class->nameSpace).classes, name + start);
1544 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&(*_class->nameSpace).classes, (struct __ecereNameSpace__ecere__sys__BTNode *)classLink);
1546 struct __ecereNameSpace__ecere__sys__OldLink * t;
1548 for(t = _class->templatized.first; t; t = t->next)
1550 struct __ecereNameSpace__ecere__com__Class * template = t->data;
1552 classLink = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&(*_class->nameSpace).classes, template->name);
1553 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&(*_class->nameSpace).classes, (struct __ecereNameSpace__ecere__sys__BTNode *)classLink);
1557 struct __ecereNameSpace__ecere__com__NameSpace * ns = _class->nameSpace;
1559 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))
1561 struct __ecereNameSpace__ecere__com__NameSpace * parent = (*ns).parent;
1563 __ecereNameSpace__ecere__com__NameSpace_Free(ns);
1564 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&(*parent).nameSpaces, (struct __ecereNameSpace__ecere__sys__BTNode *)ns);
1572 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);
1574 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);
1576 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);
1578 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);
1580 _class = classLink->data;
1581 if(_class && _class->internalDecl)
1583 __ecereNameSpace__ecere__com__FreeTemplatesDerivatives(_class);
1584 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&(*_class->nameSpace).classes, (struct __ecereNameSpace__ecere__sys__BTNode *)classLink);
1586 struct __ecereNameSpace__ecere__sys__OldLink * t;
1588 for(t = _class->templatized.first; t; t = t->next)
1590 struct __ecereNameSpace__ecere__com__Class * template = t->data;
1592 classLink = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&(*_class->nameSpace).classes, template->name);
1593 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&(*_class->nameSpace).classes, (struct __ecereNameSpace__ecere__sys__BTNode *)classLink);
1597 (__ecereNameSpace__ecere__com__eSystem_Delete(_class->fullName), _class->fullName = 0);
1598 _class->fullName = __ecereNameSpace__ecere__sys__CopyString(name);
1602 _class = __ecereNameSpace__ecere__com___calloc(1, sizeof(struct __ecereNameSpace__ecere__com__Class));
1603 _class->methods.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
1604 _class->members.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
1605 _class->prop.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
1606 _class->classProperties.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
1607 _class->name = __ecereNameSpace__ecere__sys__CopyString(name + start);
1608 _class->fullName = __ecereNameSpace__ecere__sys__CopyString(name);
1613 __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)));
1615 struct __ecereNameSpace__ecere__sys__OldLink * t;
1617 for(t = _class->templatized.first; t; t = t->next)
1619 struct __ecereNameSpace__ecere__com__Class * template = t->data;
1621 __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)));
1627 if(!base && baseName && strcmp(baseName, name))
1629 if(strchr(baseName, '<'))
1631 char templateClassName[1024];
1632 struct __ecereNameSpace__ecere__com__Class * templateBase;
1634 strcpy(templateClassName, baseName);
1635 *strchr(templateClassName, '<') = '\0';
1636 templateBase = __ecereNameSpace__ecere__com__eSystem_FindClass(module, templateClassName);
1639 templateBase = __ecereNameSpace__ecere__com__eSystem_RegisterClass((int)0, templateClassName, (((void *)0)), 0, 0, (((void *)0)), (((void *)0)), module, declMode, 1);
1640 templateBase->internalDecl = 0x1;
1642 base = __ecereNameSpace__ecere__com__eSystem_FindClass(module, baseName);
1646 base = __ecereNameSpace__ecere__com__eSystem_RegisterClass((int)0, baseName, (((void *)0)), 0, 0, (((void *)0)), (((void *)0)), module, declMode, 1);
1647 base->internalDecl = 0x1;
1651 _class->internalDecl = 0x0;
1654 _class->data = __ecereNameSpace__ecere__com__eSystem_Renew(_class->data, sizeof(unsigned char) * (totalSizeClass));
1655 if(base && base->type != 1000 && base->type != 4)
1656 memcpy(_class->data, base->data, offsetClass);
1658 memset(_class->data, (unsigned char)0, offsetClass);
1659 memset((unsigned char *)_class->data + offsetClass, (unsigned char)0, sizeClass);
1661 (__ecereNameSpace__ecere__com__eSystem_Delete(_class->dataTypeString), _class->dataTypeString = 0);
1662 _class->dataTypeString = __ecereNameSpace__ecere__sys__CopyString(dataTypeString);
1663 _class->defaultAlignment = base ? base->defaultAlignment : 0;
1666 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)_class->module + 12)))->classes, _class);
1670 struct __ecereNameSpace__ecere__com__Class * base = _class->base;
1671 struct __ecereNameSpace__ecere__sys__OldLink * deriv = __ecereMethod___ecereNameSpace__ecere__sys__OldList_FindLink(&base->derivatives, _class);
1673 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&base->derivatives, deriv);
1677 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->classes, _class);
1679 _class->nameSpace = nameSpace;
1681 struct __ecereNameSpace__ecere__sys__OldLink * t;
1683 for(t = _class->templatized.first; t; t = t->next)
1685 struct __ecereNameSpace__ecere__com__Class * template = t->data;
1687 template->nameSpace = nameSpace;
1690 _class->module = module;
1691 _class->base = base;
1695 struct __ecereNameSpace__ecere__com__Class * sClass;
1697 for(sClass = base; sClass; sClass = sClass->base)
1699 if(sClass->templateClass)
1700 sClass = sClass->templateClass;
1701 numParams += sClass->templateParams.count;
1705 if(_class->templateArgs)
1707 __ecereNameSpace__ecere__com__FreeTemplateArgs(_class);
1709 (__ecereNameSpace__ecere__com__eSystem_Delete(_class->templateArgs), _class->templateArgs = 0);
1710 _class->templateArgs = __ecereNameSpace__ecere__com__eSystem_New0(sizeof(struct __ecereNameSpace__ecere__com__ClassTemplateArgument) * (numParams));
1711 _class->numParams = numParams;
1712 for(sClass = _class; sClass; sClass = sClass->base)
1714 struct __ecereNameSpace__ecere__com__Class * prevClass;
1715 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param;
1718 if(sClass->templateClass)
1719 sClass = sClass->templateClass;
1720 for(prevClass = sClass->base; prevClass; prevClass = prevClass->base)
1722 if(prevClass->templateClass)
1723 prevClass = prevClass->templateClass;
1724 id += prevClass->templateParams.count;
1726 if(base->templateArgs)
1728 for(param = sClass->templateParams.first; param; param = param->next)
1730 _class->templateArgs[id] = base->templateArgs[id];
1731 __ecereNameSpace__ecere__com__CopyTemplateArg(param, &_class->templateArgs[id]);
1738 _class->memberID = _class->startMemberID = (base && (type == 0 || type == 5 || type == 1)) ? base->memberID : 0;
1739 if(type == 0 || type == 5)
1740 _class->offset = (base && base->structSize && base->type != 1000) ? base->structSize : ((type == 5) ? 0 : 12);
1743 _class->memberOffset = (base && base->structSize && base->type != 1000) ? base->structSize : 0;
1744 _class->typeSize = _class->structSize = _class->memberOffset + size;
1746 else if(type == 2 || type == 4 || type == 3)
1748 struct __ecereNameSpace__ecere__com__Class * dataTypeClass = __ecereNameSpace__ecere__com__eSystem_FindClass(_class->module, dataTypeString);
1751 _class->typeSize = dataTypeClass->typeSize;
1752 _class->structSize = 0;
1754 else if(type == 0 || type == 5)
1756 _class->structSize = _class->offset + size;
1757 _class->typeSize = sizeof(void *);
1759 _class->offsetClass = offsetClass;
1760 _class->sizeClass = totalSizeClass;
1761 _class->Constructor = (void *)Constructor;
1762 _class->Destructor = Destructor;
1763 if(_class->type != 1000)
1764 _class->type = type;
1766 _class->computeSize = 0x1;
1768 _class->computeSize = 0x0;
1769 _class->inheritanceAccess = inheritanceAccess;
1773 _class->base = base = enumBase;
1775 struct __ecereNameSpace__ecere__com__EnumClassData * data = (struct __ecereNameSpace__ecere__com__EnumClassData *)_class->data;
1777 if(base && base->type != 4)
1780 data->largest = ((struct __ecereNameSpace__ecere__com__EnumClassData *)base->data)->largest;
1783 if(base && base->vTblSize)
1785 _class->vTblSize = base->vTblSize;
1786 (__ecereNameSpace__ecere__com__eSystem_Delete(_class->_vTbl), _class->_vTbl = 0);
1787 _class->_vTbl = __ecereNameSpace__ecere__com___malloc(sizeof(int (*)()) * _class->vTblSize);
1788 memcpy(_class->_vTbl, base->_vTbl, sizeof(int (*)()) * _class->vTblSize);
1792 struct __ecereNameSpace__ecere__sys__OldLink * link = (link = __ecereNameSpace__ecere__com__eSystem_New0(12), link->data = _class, link);
1794 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&_class->base->derivatives, link);
1796 __ecereNameSpace__ecere__com__FixDerivativesBase(_class, _class);
1800 return (((void *)0));
1803 static void __ecereNameSpace__ecere__com__DataMember_Free(struct __ecereNameSpace__ecere__com__DataMember * parentMember)
1805 struct __ecereNameSpace__ecere__com__DataMember * member;
1806 struct __ecereNameSpace__ecere__com__BTNamedLink * namedLink;
1808 (__ecereNameSpace__ecere__com__eSystem_Delete(parentMember->name), parentMember->name = 0);
1809 (__ecereNameSpace__ecere__com__eSystem_Delete(parentMember->dataTypeString), parentMember->dataTypeString = 0);
1810 while((member = parentMember->members.first))
1812 __ecereNameSpace__ecere__com__DataMember_Free(member);
1813 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&parentMember->members, member);
1815 while((namedLink = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&parentMember->membersAlpha)))
1817 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&parentMember->membersAlpha, (struct __ecereNameSpace__ecere__sys__BTNode *)namedLink);
1821 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__NamedLink;
1823 struct __ecereNameSpace__ecere__sys__NamedLink
1825 struct __ecereNameSpace__ecere__sys__NamedLink * prev;
1826 struct __ecereNameSpace__ecere__sys__NamedLink * next;
1831 static void __ecereNameSpace__ecere__com__FreeEnumValue(struct __ecereNameSpace__ecere__sys__NamedLink * value)
1833 (__ecereNameSpace__ecere__com__eSystem_Delete(value->name), value->name = 0);
1836 static void __ecereNameSpace__ecere__com__FreeTemplateArg(struct __ecereNameSpace__ecere__com__Class * template, struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param, int id)
1841 (__ecereNameSpace__ecere__com__eSystem_Delete(template->templateArgs[id].dataTypeString), template->templateArgs[id].dataTypeString = 0);
1844 (__ecereNameSpace__ecere__com__eSystem_Delete(template->templateArgs[id].memberString), template->templateArgs[id].memberString = 0);
1851 static void __ecereNameSpace__ecere__com__FreeTemplateArgs(struct __ecereNameSpace__ecere__com__Class * template)
1853 if(template->templateArgs)
1855 struct __ecereNameSpace__ecere__com__Class * _class;
1857 for(_class = template; _class; _class = _class->base)
1859 struct __ecereNameSpace__ecere__com__Class * prevClass;
1860 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param;
1863 if(_class->templateClass)
1864 _class = _class->templateClass;
1865 for(prevClass = _class->base; prevClass; prevClass = prevClass->base)
1867 if(prevClass->templateClass)
1868 prevClass = prevClass->templateClass;
1869 id += prevClass->templateParams.count;
1871 if(id < template->numParams)
1873 for(param = _class->templateParams.first; param; param = param->next)
1878 (__ecereNameSpace__ecere__com__eSystem_Delete(template->templateArgs[id].dataTypeString), template->templateArgs[id].dataTypeString = 0);
1881 (__ecereNameSpace__ecere__com__eSystem_Delete(template->templateArgs[id].memberString), template->templateArgs[id].memberString = 0);
1893 static void __ecereNameSpace__ecere__com__FreeTemplate(struct __ecereNameSpace__ecere__com__Class * template)
1895 struct __ecereNameSpace__ecere__sys__OldLink * deriv;
1897 if(template->nameSpace)
1899 struct __ecereNameSpace__ecere__com__BTNamedLink * link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&(*template->nameSpace).classes, template->name);
1901 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&(*template->nameSpace).classes, (struct __ecereNameSpace__ecere__sys__BTNode *)link);
1903 __ecereNameSpace__ecere__com__FreeTemplateArgs(template);
1904 (__ecereNameSpace__ecere__com__eSystem_Delete(template->fullName), template->fullName = 0);
1905 (__ecereNameSpace__ecere__com__eSystem_Delete(template->name), template->name = 0);
1906 (__ecereNameSpace__ecere__com__eSystem_Delete(template->templateArgs), template->templateArgs = 0);
1907 while((deriv = template->derivatives.first))
1909 ((struct __ecereNameSpace__ecere__com__Class *)deriv->data)->base = (((void *)0));
1910 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&template->derivatives, deriv);
1912 __ecereNameSpace__ecere__com___free(template);
1915 static void __ecereNameSpace__ecere__com__FreeTemplates(struct __ecereNameSpace__ecere__com__Class * _class)
1917 struct __ecereNameSpace__ecere__sys__OldLink * deriv, * template;
1919 for(deriv = _class->derivatives.first; deriv; deriv = deriv->next)
1921 __ecereNameSpace__ecere__com__FreeTemplates(deriv->data);
1923 __ecereNameSpace__ecere__com__FreeTemplateArgs(_class);
1924 (__ecereNameSpace__ecere__com__eSystem_Delete(_class->templateArgs), _class->templateArgs = 0);
1925 while((template = _class->templatized.first))
1927 __ecereNameSpace__ecere__com__FreeTemplates(template->data);
1928 __ecereNameSpace__ecere__com__FreeTemplate(template->data);
1929 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&_class->templatized, template);
1933 void __ecereMethod___ecereNameSpace__ecere__sys__OldList_Free(struct __ecereNameSpace__ecere__sys__OldList * this, void (* freeFn)(void * ));
1935 void __ecereNameSpace__ecere__com__eClass_Unregister(struct __ecereNameSpace__ecere__com__Class * _class)
1937 struct __ecereNameSpace__ecere__com__BTNamedLink * namedLink;
1938 struct __ecereNameSpace__ecere__com__DataMember * member;
1939 struct __ecereNameSpace__ecere__com__Method * method;
1940 struct __ecereNameSpace__ecere__sys__OldLink * deriv, * template;
1941 struct __ecereNameSpace__ecere__com__ClassProperty * classProp;
1942 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param;
1944 (__ecereNameSpace__ecere__com__eSystem_Delete(_class->_vTbl), _class->_vTbl = 0);
1945 __ecereNameSpace__ecere__com__FreeTemplates(_class);
1946 __ecereNameSpace__ecere__com__FreeTemplateArgs(_class);
1947 (__ecereNameSpace__ecere__com__eSystem_Delete(_class->templateArgs), _class->templateArgs = 0);
1948 while((template = _class->templatized.first))
1950 __ecereNameSpace__ecere__com__FreeTemplate(template->data);
1951 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&_class->templatized, template);
1953 while((member = _class->membersAndProperties.first))
1955 if(!member->isProperty && (member->type == 1 || member->type == 2))
1956 __ecereNameSpace__ecere__com__DataMember_Free(member);
1957 (__ecereNameSpace__ecere__com__eSystem_Delete(member->name), member->name = 0);
1958 (__ecereNameSpace__ecere__com__eSystem_Delete(member->dataTypeString), member->dataTypeString = 0);
1959 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&_class->membersAndProperties, member);
1961 while((member = _class->conversions.first))
1963 (__ecereNameSpace__ecere__com__eSystem_Delete(member->name), member->name = 0);
1964 (__ecereNameSpace__ecere__com__eSystem_Delete(member->dataTypeString), member->dataTypeString = 0);
1965 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&_class->conversions, member);
1967 while((namedLink = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&_class->prop)))
1969 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&_class->prop, (struct __ecereNameSpace__ecere__sys__BTNode *)namedLink);
1971 while((namedLink = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&_class->members)))
1973 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&_class->members, (struct __ecereNameSpace__ecere__sys__BTNode *)namedLink);
1975 while((classProp = (struct __ecereNameSpace__ecere__com__ClassProperty *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&_class->classProperties)))
1977 (__ecereNameSpace__ecere__com__eSystem_Delete(classProp->name), classProp->name = 0);
1978 (__ecereNameSpace__ecere__com__eSystem_Delete(classProp->dataTypeString), classProp->dataTypeString = 0);
1979 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&_class->classProperties, (struct __ecereNameSpace__ecere__sys__BTNode *)classProp);
1981 while((method = (struct __ecereNameSpace__ecere__com__Method *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&_class->methods)))
1983 (__ecereNameSpace__ecere__com__eSystem_Delete(method->name), method->name = 0);
1984 (__ecereNameSpace__ecere__com__eSystem_Delete(method->dataTypeString), method->dataTypeString = 0);
1985 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&_class->methods, (struct __ecereNameSpace__ecere__sys__BTNode *)method);
1987 if(_class->type == 4)
1989 struct __ecereNameSpace__ecere__com__EnumClassData * data = (struct __ecereNameSpace__ecere__com__EnumClassData *)_class->data;
1991 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Free(&data->values, (void *)__ecereNameSpace__ecere__com__FreeEnumValue);
1993 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Free(&_class->delayedCPValues, (((void *)0)));
1994 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Free(&_class->selfWatchers, (((void *)0)));
1997 struct __ecereNameSpace__ecere__com__Class * base = _class->base;
1999 for(deriv = base->derivatives.first; deriv; deriv = deriv->next)
2001 if(deriv->data == _class)
2005 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&base->derivatives, deriv);
2007 while((deriv = _class->derivatives.first))
2009 ((struct __ecereNameSpace__ecere__com__Class *)deriv->data)->base = (((void *)0));
2010 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&_class->derivatives, deriv);
2012 if(_class->nameSpace)
2014 struct __ecereNameSpace__ecere__com__BTNamedLink * link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&(*_class->nameSpace).classes, _class->name);
2016 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&(*_class->nameSpace).classes, (struct __ecereNameSpace__ecere__sys__BTNode *)link);
2018 (__ecereNameSpace__ecere__com__eSystem_Delete(_class->name), _class->name = 0);
2019 (__ecereNameSpace__ecere__com__eSystem_Delete(_class->fullName), _class->fullName = 0);
2020 (__ecereNameSpace__ecere__com__eSystem_Delete(_class->dataTypeString), _class->dataTypeString = 0);
2021 (__ecereNameSpace__ecere__com__eSystem_Delete(_class->data), _class->data = 0);
2022 while((param = _class->templateParams.first))
2027 (__ecereNameSpace__ecere__com__eSystem_Delete(param->defaultArg.dataTypeString), param->defaultArg.dataTypeString = 0);
2030 (__ecereNameSpace__ecere__com__eSystem_Delete(param->defaultArg.memberString), param->defaultArg.memberString = 0);
2035 if(param->type != 1)
2036 (__ecereNameSpace__ecere__com__eSystem_Delete(param->dataTypeString), param->dataTypeString = 0);
2037 (__ecereNameSpace__ecere__com__eSystem_Delete(param->name), param->name = 0);
2038 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&_class->templateParams, param);
2040 __ecereNameSpace__ecere__com___free(_class);
2043 struct __ecereNameSpace__ecere__sys__BTNode * __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Find(struct __ecereNameSpace__ecere__sys__BinaryTree * this, unsigned int key);
2045 static struct __ecereNameSpace__ecere__com__BTNamedLink * __ecereNameSpace__ecere__com__ScanNameSpace(struct __ecereNameSpace__ecere__com__NameSpace * nameSpace, char * name, void * listOffset)
2047 struct __ecereNameSpace__ecere__sys__BinaryTree * tree = (struct __ecereNameSpace__ecere__sys__BinaryTree *)((unsigned char *)nameSpace + (unsigned int)listOffset);
2048 struct __ecereNameSpace__ecere__com__BTNamedLink * link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Find((&*tree), (unsigned int)name);
2049 struct __ecereNameSpace__ecere__com__NameSpace * child;
2053 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)))
2055 link = __ecereNameSpace__ecere__com__ScanNameSpace(child, name, listOffset);
2063 static struct __ecereNameSpace__ecere__com__BTNamedLink * __ecereNameSpace__ecere__com__SearchNameSpace(struct __ecereNameSpace__ecere__com__NameSpace * nameSpace, char * name, void * listOffset)
2069 for(c = 0; (ch = name[c]); c++)
2075 if(level == 0 && (ch == '.' || (ch == ':' && name[c + 1] == ':')))
2077 struct __ecereNameSpace__ecere__com__NameSpace * newSpace;
2078 char * spaceName = __ecereNameSpace__ecere__com___malloc(c - start + 1);
2080 memcpy(spaceName, name + start, c - start);
2081 spaceName[c - start] = '\0';
2082 newSpace = (struct __ecereNameSpace__ecere__com__NameSpace *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&nameSpace->nameSpaces, spaceName);
2083 __ecereNameSpace__ecere__com___free(spaceName);
2085 return (((void *)0));
2086 nameSpace = newSpace;
2087 if(level == 0 && ch == ':')
2094 return __ecereNameSpace__ecere__com__ScanNameSpace(nameSpace, name + start, listOffset);
2096 return (((void *)0));
2099 static struct __ecereNameSpace__ecere__com__BTNamedLink * __ecereNameSpace__ecere__com__SearchModule(struct __ecereNameSpace__ecere__com__Instance * module, char * name, void * listOffset, unsigned int searchPrivate)
2101 struct __ecereNameSpace__ecere__com__SubModule * subModule;
2102 struct __ecereNameSpace__ecere__com__BTNamedLink * link;
2106 link = __ecereNameSpace__ecere__com__SearchNameSpace(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->privateNameSpace, name, listOffset);
2110 link = __ecereNameSpace__ecere__com__SearchNameSpace(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->publicNameSpace, name, listOffset);
2113 for(subModule = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->modules.first; subModule; subModule = subModule->next)
2115 if(searchPrivate || subModule->importMode == 1)
2117 link = __ecereNameSpace__ecere__com__SearchModule(subModule->module, name, listOffset, 0x0);
2122 return (((void *)0));
2125 extern int isspace(int c);
2127 long long __ecereNameSpace__ecere__com___strtoi64(char * string, char ** endString, int base)
2129 long long value = 0;
2134 for(c = 0; (ch = string[c]) && isspace(ch); c++)
2146 if(ch == (char)0 && string[c + 1] == 'x')
2159 for(; (ch = string[c]); c++)
2163 else if(ch >= '1' && ch <= '9')
2165 else if(ch >= 'a' && ch <= 'z')
2167 else if(ch >= 'A' && ch <= 'Z')
2171 *endString = string + c;
2181 *endString = string + c;
2185 return sign * value;
2188 uint64 __ecereNameSpace__ecere__com___strtoui64(char * string, char ** endString, int base)
2195 for(c = 0; (ch = string[c]) && isspace(ch); c++)
2207 if(ch == (char)0 && string[c + 1] == 'x')
2220 for(; (ch = string[c]); c++)
2224 else if(ch >= '1' && ch <= '9')
2226 else if(ch >= 'a' && ch <= 'z')
2228 else if(ch >= 'A' && ch <= 'Z')
2232 *endString = string + c;
2242 *endString = string + c;
2246 return sign * value;
2249 extern char * strcat(char * , const char * );
2251 extern int strlen(const char * );
2253 struct __ecereNameSpace__ecere__com__Class * __ecereNameSpace__ecere__com__eSystem_FindClass(struct __ecereNameSpace__ecere__com__Instance * module, char * name)
2255 void * __ecereTemp1;
2259 struct __ecereNameSpace__ecere__com__BTNamedLink * link;
2261 link = __ecereNameSpace__ecere__com__SearchNameSpace(&((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application + 300)))->systemNameSpace, name, &(*((struct __ecereNameSpace__ecere__com__NameSpace *)0)).classes);
2264 link = __ecereNameSpace__ecere__com__SearchModule(module, name, &(*((struct __ecereNameSpace__ecere__com__NameSpace *)0)).classes, 0x1);
2268 char noTemplateName[1024];
2269 char * templateParams = strchr(name, '<');
2273 strncpy(noTemplateName, name, templateParams - name);
2274 noTemplateName[templateParams - name] = '\0';
2277 strcpy(noTemplateName, name);
2278 link = __ecereNameSpace__ecere__com__SearchNameSpace(&((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application + 300)))->systemNameSpace, noTemplateName, &(*((struct __ecereNameSpace__ecere__com__NameSpace *)0)).classes);
2280 link = __ecereNameSpace__ecere__com__SearchModule(module, noTemplateName, &(*((struct __ecereNameSpace__ecere__com__NameSpace *)0)).classes, 0x1);
2283 struct __ecereNameSpace__ecere__com__Class * _class = link->data;
2284 struct __ecereNameSpace__ecere__com__Class * templatedClass = (((void *)0));
2285 char className[1024];
2287 strcpy(className, _class->fullName);
2288 strcat(className, templateParams);
2289 link = __ecereNameSpace__ecere__com__SearchNameSpace(&((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application + 300)))->systemNameSpace, className, &(*((struct __ecereNameSpace__ecere__com__NameSpace *)0)).classes);
2292 link = __ecereNameSpace__ecere__com__SearchModule(module, className, &(*((struct __ecereNameSpace__ecere__com__NameSpace *)0)).classes, 0x1);
2295 if(_class && templateParams)
2297 struct __ecereNameSpace__ecere__sys__OldList __simpleStruct1 =
2301 struct __ecereNameSpace__ecere__sys__OldList __simpleStruct0 =
2306 templatedClass = __ecereNameSpace__ecere__com__eSystem_New0(368);
2307 *templatedClass = *_class;
2308 templatedClass->templateClass = _class;
2309 templatedClass->fullName = __ecereNameSpace__ecere__sys__CopyString(className);
2310 templatedClass->name = __ecereNameSpace__ecere__sys__CopyString(templatedClass->fullName + strlen(_class->fullName) - strlen(_class->name));
2311 __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)));
2312 templatedClass->templateArgs = (((void *)0));
2313 templatedClass->numParams = 0;
2314 templatedClass->derivatives = __simpleStruct0;
2315 templatedClass->templatized = __simpleStruct1;
2316 __ecereNameSpace__ecere__com__ComputeClassParameters(templatedClass, templateParams, module);
2317 __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)));
2319 return templatedClass;
2323 return (((void *)0));
2326 static void __ecereNameSpace__ecere__com__CopyTemplateArg(struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param, struct __ecereNameSpace__ecere__com__ClassTemplateArgument * arg)
2331 arg->dataTypeString = __ecereNameSpace__ecere__sys__CopyString(arg->dataTypeString);
2336 arg->memberString = __ecereNameSpace__ecere__sys__CopyString(arg->memberString);
2341 extern char * __ecereNameSpace__ecere__sys__TrimRSpaces(char * string, char * output);
2343 extern unsigned long strtoul(const char * nptr, char * * endptr, int base);
2345 extern double strtod(char * , char * * );
2347 extern int sprintf(char * , char * , ...);
2349 extern char * strstr(char * , const char * );
2351 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);
2353 struct __ecereNameSpace__ecere__com__Method * __ecereNameSpace__ecere__com__eClass_FindMethod(struct __ecereNameSpace__ecere__com__Class * _class, char * name, struct __ecereNameSpace__ecere__com__Instance * module);
2355 struct __ecereNameSpace__ecere__com__Property * __ecereNameSpace__ecere__com__eClass_FindProperty(struct __ecereNameSpace__ecere__com__Class * _class, char * name, struct __ecereNameSpace__ecere__com__Instance * module);
2357 static void __ecereNameSpace__ecere__com__ComputeClassParameters(struct __ecereNameSpace__ecere__com__Class * templatedClass, char * templateParams, struct __ecereNameSpace__ecere__com__Instance * findModule)
2360 char * nextParamStart = templateParams ? (templateParams + 1) : (((void *)0));
2361 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * curParam = (((void *)0));
2362 struct __ecereNameSpace__ecere__com__Class * lastClass = (((void *)0)), * sClass;
2365 struct __ecereNameSpace__ecere__com__Class * _class = templatedClass->templateClass ? templatedClass->templateClass : templatedClass;
2367 for(sClass = _class; sClass; sClass = sClass->base)
2369 if(sClass->templateClass)
2370 sClass = sClass->templateClass;
2371 numParams += sClass->templateParams.count;
2373 if(templatedClass->templateArgs)
2374 __ecereNameSpace__ecere__com__FreeTemplateArgs(templatedClass);
2375 (__ecereNameSpace__ecere__com__eSystem_Delete(templatedClass->templateArgs), templatedClass->templateArgs = 0);
2376 templatedClass->templateArgs = __ecereNameSpace__ecere__com__eSystem_New0(sizeof(struct __ecereNameSpace__ecere__com__ClassTemplateArgument) * (numParams));
2377 templatedClass->numParams = numParams;
2378 if(_class != templatedClass)
2381 if(templatedClass->base && templatedClass->base->templateArgs && _class == templatedClass)
2383 struct __ecereNameSpace__ecere__com__Class * sClass;
2385 memcpy(templatedClass->templateArgs, templatedClass->base->templateArgs, sizeof(struct __ecereNameSpace__ecere__com__ClassTemplateArgument) * (numParams - templatedClass->templateParams.count));
2386 for(sClass = templatedClass->base; sClass; sClass = sClass->base)
2388 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param;
2389 struct __ecereNameSpace__ecere__com__Class * prevClass;
2392 for(prevClass = sClass->base; prevClass; prevClass = prevClass->base)
2394 if(prevClass->templateClass)
2395 prevClass = prevClass->templateClass;
2396 id += prevClass->templateParams.count;
2398 if(sClass->templateClass)
2399 sClass = sClass->templateClass;
2400 for(param = sClass->templateParams.first; param; param = param->next)
2401 __ecereNameSpace__ecere__com__CopyTemplateArg(param, &templatedClass->templateArgs[id++]);
2404 while(nextParamStart)
2406 char * paramStart = nextParamStart;
2410 while(*paramStart == ' ')
2412 paramEnd = paramStart;
2413 while((ch = *paramEnd, ch && (level > 0 || (ch != '>' && ch != ','))))
2421 nextParamStart = (ch == ',') ? (paramEnd + 1) : (((void *)0));
2422 while(*paramEnd == ' ')
2424 if(paramEnd > paramStart)
2426 char * ptr, * equal = (((void *)0));
2428 for(ptr = paramStart; ptr <= paramEnd; ptr++)
2438 char * end = equal - 1;
2443 strncpy(ident, paramStart, end + 1 - paramStart);
2444 ident[end + 1 - paramStart] = (char)0;
2445 for(sClass = _class; sClass; sClass = sClass->base)
2447 if(sClass->templateClass)
2448 sClass = sClass->templateClass;
2449 for(curParam = sClass->templateParams.first; curParam; curParam = curParam->next)
2451 if(!strcmp(curParam->name, ident))
2456 struct __ecereNameSpace__ecere__com__Class * nextClass;
2457 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * prevParam;
2460 for(prevParam = curParam->prev; prevParam; prevParam = prevParam->prev)
2462 for(nextClass = sClass->base; nextClass; nextClass = nextClass->base)
2464 if(nextClass->templateClass)
2465 nextClass = nextClass->templateClass;
2466 curParamID += nextClass->templateParams.count;
2477 curParam = curParam->next;
2482 for(sClass = lastClass ? lastClass->base : _class; sClass; sClass = sClass->base)
2484 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param;
2487 if(sClass->templateClass)
2488 sClass = sClass->templateClass;
2489 for(param = sClass->templateParams.first; param; param = param->next, curParamID++)
2496 struct __ecereNameSpace__ecere__com__Class * nextClass;
2498 for(nextClass = sClass->base; nextClass; nextClass = nextClass->base)
2500 if(nextClass->templateClass)
2501 nextClass = nextClass->templateClass;
2502 curParamID += nextClass->templateParams.count;
2512 struct __ecereNameSpace__ecere__com__ClassTemplateArgument argument =
2521 while(*equal == ' ')
2523 memcpy(value, equal, paramEnd - equal);
2524 value[paramEnd - equal] = (char)0;
2528 memcpy(value, paramStart, paramEnd - paramStart);
2529 value[paramEnd - paramStart] = (char)0;
2531 __ecereNameSpace__ecere__sys__TrimRSpaces(value, value);
2532 switch(curParam->type)
2535 argument.dataTypeString = __ecereNameSpace__ecere__sys__CopyString(value);
2536 argument.dataTypeClass = __ecereNameSpace__ecere__com__eSystem_FindClass(_class->module, value);
2537 if(!argument.dataTypeClass)
2538 argument.dataTypeClass = __ecereNameSpace__ecere__com__eSystem_FindClass(((struct __ecereNameSpace__ecere__com__Module *)(((char *)_class->module + 12)))->application, value);
2539 if(!argument.dataTypeClass)
2540 argument.dataTypeClass = __ecereNameSpace__ecere__com__eSystem_FindClass(findModule, value);
2544 struct __ecereNameSpace__ecere__com__Class * expClass = __ecereNameSpace__ecere__com__eSystem_FindClass(_class->module, curParam->dataTypeString);
2547 expClass = __ecereNameSpace__ecere__com__eSystem_FindClass(((struct __ecereNameSpace__ecere__com__Module *)(((char *)_class->module + 12)))->application, curParam->dataTypeString);
2550 expClass->_vTbl[__ecereVMethodID_class_OnGetDataFromString](expClass, &argument.expression, value);
2552 else if(value[0] == '\"')
2554 char * endQuote = value + strlen(value) - 1;
2556 if(*endQuote != '\"')
2559 argument.expression.p = __ecereNameSpace__ecere__sys__CopyString(value + 1);
2561 else if(value[0] == '\'')
2564 unsigned int ch = __ecereNameSpace__ecere__sys__UTF8GetChar(value + 1, &nb);
2566 argument.expression.ui = ch;
2568 else if(!strcmp(curParam->dataTypeString, "uint"))
2570 argument.expression.ui = strtoul(value, (((void *)0)), 0);
2572 else if(!strcmp(curParam->dataTypeString, "char"))
2574 argument.expression.c = (char)strtol(value, (((void *)0)), 0);
2576 else if(!strcmp(curParam->dataTypeString, "byte"))
2578 argument.expression.uc = (unsigned char)strtoul(value, (((void *)0)), 0);
2580 else if(!strcmp(curParam->dataTypeString, "short"))
2582 argument.expression.s = (short)strtol(value, (((void *)0)), 0);
2584 else if(!strcmp(curParam->dataTypeString, "uint16"))
2586 argument.expression.us = (unsigned short)strtoul(value, (((void *)0)), 0);
2588 else if(!strcmp(curParam->dataTypeString, "int64"))
2590 argument.expression.i64 = __ecereNameSpace__ecere__com___strtoi64(value, (((void *)0)), 0);
2592 else if(!strcmp(curParam->dataTypeString, "uint64"))
2594 argument.expression.ui64 = __ecereNameSpace__ecere__com___strtoui64(value, (((void *)0)), 0);
2596 else if(!strcmp(curParam->dataTypeString, "float"))
2598 argument.expression.f = (float)strtod(value, (((void *)0)));
2600 else if(!strcmp(curParam->dataTypeString, "double"))
2602 argument.expression.d = strtod(value, (((void *)0)));
2606 argument.expression.i = strtol(value, (((void *)0)), 0);
2611 argument.memberString = __ecereNameSpace__ecere__sys__CopyString(value);
2614 __ecereNameSpace__ecere__com__FreeTemplateArg(templatedClass, curParam, curParamID);
2615 templatedClass->templateArgs[curParamID] = argument;
2619 if(templatedClass == _class)
2621 struct __ecereNameSpace__ecere__com__Class * sClass = _class;
2623 struct __ecereNameSpace__ecere__com__Class * nextClass;
2624 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param;
2626 for(nextClass = sClass->base; nextClass; nextClass = nextClass->base)
2628 if(nextClass->templateClass)
2629 nextClass = nextClass->templateClass;
2630 curParamID += nextClass->templateParams.count;
2632 for(param = sClass->templateParams.first; param; param = param->next)
2634 if(!templatedClass->templateArgs[curParamID].dataTypeString)
2636 templatedClass->templateArgs[curParamID] = param->defaultArg;
2637 __ecereNameSpace__ecere__com__CopyTemplateArg(param, &templatedClass->templateArgs[curParamID]);
2638 if(param->type == 0 && param->defaultArg.dataTypeString)
2640 templatedClass->templateArgs[curParamID].dataTypeClass = __ecereNameSpace__ecere__com__eSystem_FindClass(templatedClass->module, param->defaultArg.dataTypeString);
2641 if(!templatedClass->templateArgs[curParamID].dataTypeClass)
2642 templatedClass->templateArgs[curParamID].dataTypeClass = __ecereNameSpace__ecere__com__eSystem_FindClass(((struct __ecereNameSpace__ecere__com__Module *)(((char *)templatedClass->module + 12)))->application, param->defaultArg.dataTypeString);
2643 if(!templatedClass->templateArgs[curParamID].dataTypeClass)
2644 templatedClass->templateArgs[curParamID].dataTypeClass = __ecereNameSpace__ecere__com__eSystem_FindClass(findModule, param->defaultArg.dataTypeString);
2650 if(templatedClass->base && templatedClass->base->templateArgs && numParams - _class->templateParams.count)
2652 int c = numParams - _class->templateParams.count - 1;
2654 for(sClass = _class->base; sClass; sClass = sClass->base)
2656 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param;
2658 if(sClass->templateClass)
2659 sClass = sClass->templateClass;
2660 for(param = sClass->templateParams.last; param; param = param->prev)
2662 struct __ecereNameSpace__ecere__com__ClassTemplateArgument * arg = &templatedClass->templateArgs[c];
2663 struct __ecereNameSpace__ecere__com__ClassTemplateArgument * baseArg = &templatedClass->base->templateArgs[c];
2665 if(!(*arg).dataTypeString)
2667 *arg = templatedClass->base->templateArgs[c];
2668 __ecereNameSpace__ecere__com__CopyTemplateArg(param, arg);
2669 if(param->type == 0)
2671 if((*arg).dataTypeClass && strchr((*arg).dataTypeString, '<') && (*arg).dataTypeClass->templateArgs)
2673 struct __ecereNameSpace__ecere__com__Class * expClass = (*arg).dataTypeClass;
2674 struct __ecereNameSpace__ecere__com__Class * cClass = (((void *)0));
2677 char templateString[1024];
2679 sprintf(templateString, "%s<", expClass->templateClass->fullName);
2680 for(cClass = expClass; cClass; cClass = cClass->base)
2683 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param;
2685 for(param = cClass->templateParams.first; param; param = param->next)
2688 struct __ecereNameSpace__ecere__com__Class * sClass;
2689 struct __ecereNameSpace__ecere__com__ClassTemplateArgument arg;
2691 for(sClass = expClass->base; sClass; sClass = sClass->base)
2692 id += sClass->templateParams.count;
2693 arg = expClass->templateArgs[id];
2695 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * cParam;
2696 int p = numParams - _class->templateParams.count;
2698 for(cParam = _class->templateParams.first; cParam; cParam = cParam->next, p++)
2700 if(cParam->type == 0 && arg.dataTypeString && !strcmp(cParam->name, arg.dataTypeString))
2702 arg.dataTypeString = templatedClass->templateArgs[p].dataTypeString;
2703 arg.dataTypeClass = templatedClass->templateArgs[p].dataTypeClass;
2720 strcat(argument, arg.member->name);
2725 if(arg.dataTypeString)
2726 strcat(argument, arg.dataTypeString);
2733 strcat(templateString, ", ");
2734 if(lastParam != p - 1)
2736 strcat(templateString, param->name);
2737 strcat(templateString, " = ");
2739 strcat(templateString, argument);
2748 int len = strlen(templateString);
2750 if(templateString[len - 1] == '>')
2751 templateString[len++] = ' ';
2752 templateString[len++] = '>';
2753 templateString[len++] = '\0';
2755 __ecereNameSpace__ecere__com__FreeTemplateArg(templatedClass, param, c);
2756 (*arg).dataTypeString = __ecereNameSpace__ecere__sys__CopyString(templateString);
2757 (*arg).dataTypeClass = __ecereNameSpace__ecere__com__eSystem_FindClass(templatedClass->module, templateString);
2758 if(!(*arg).dataTypeClass)
2759 (*arg).dataTypeClass = __ecereNameSpace__ecere__com__eSystem_FindClass(((struct __ecereNameSpace__ecere__com__Module *)(((char *)templatedClass->module + 12)))->application, templateString);
2763 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * cParam;
2764 int p = numParams - _class->templateParams.count;
2766 for(cParam = _class->templateParams.first; cParam; cParam = cParam->next, p++)
2768 if(cParam->type == 0 && (*baseArg).dataTypeString && !strcmp(cParam->name, (*baseArg).dataTypeString))
2770 __ecereNameSpace__ecere__com__FreeTemplateArg(templatedClass, param, c);
2771 (*arg).dataTypeString = templatedClass->templateArgs[p].dataTypeString;
2772 (*arg).dataTypeClass = templatedClass->templateArgs[p].dataTypeClass;
2773 __ecereNameSpace__ecere__com__CopyTemplateArg(cParam, arg);
2785 struct __ecereNameSpace__ecere__com__Class * sClass;
2787 for(sClass = _class; sClass; sClass = sClass->base)
2790 struct __ecereNameSpace__ecere__com__Class * nextClass;
2791 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param;
2793 if(sClass->templateClass)
2794 sClass = sClass->templateClass;
2795 for(nextClass = sClass->base; nextClass; nextClass = nextClass->base)
2797 if(nextClass->templateClass)
2798 nextClass = nextClass->templateClass;
2799 curParamID += nextClass->templateParams.count;
2801 for(param = sClass->templateParams.first; param; param = param->next)
2803 if(!templatedClass->templateArgs[curParamID].dataTypeString)
2805 templatedClass->templateArgs[curParamID] = param->defaultArg;
2806 __ecereNameSpace__ecere__com__CopyTemplateArg(param, &templatedClass->templateArgs[curParamID]);
2807 if(param->type == 0 && param->defaultArg.dataTypeString)
2809 templatedClass->templateArgs[curParamID].dataTypeClass = __ecereNameSpace__ecere__com__eSystem_FindClass(templatedClass->module, param->defaultArg.dataTypeString);
2810 if(!templatedClass->templateArgs[curParamID].dataTypeClass)
2811 templatedClass->templateArgs[curParamID].dataTypeClass = __ecereNameSpace__ecere__com__eSystem_FindClass(((struct __ecereNameSpace__ecere__com__Module *)(((char *)templatedClass->module + 12)))->application, param->defaultArg.dataTypeString);
2812 if(!templatedClass->templateArgs[curParamID].dataTypeClass)
2813 templatedClass->templateArgs[curParamID].dataTypeClass = __ecereNameSpace__ecere__com__eSystem_FindClass(findModule, param->defaultArg.dataTypeString);
2821 int c = numParams - 1;
2823 for(sClass = _class; sClass; sClass = sClass->base)
2825 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param;
2827 if(sClass->templateClass)
2828 sClass = sClass->templateClass;
2829 for(param = sClass->templateParams.last; param; param = param->prev)
2831 if(param->type == 0)
2833 struct __ecereNameSpace__ecere__com__ClassTemplateArgument * arg = &templatedClass->templateArgs[c];
2834 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * cParam;
2835 struct __ecereNameSpace__ecere__com__Class * dClass;
2836 int p = numParams - 1;
2838 for(dClass = _class; dClass; dClass = dClass->base)
2840 if(dClass->templateClass)
2841 dClass = dClass->templateClass;
2842 for(cParam = dClass->templateParams.last; cParam; cParam = cParam->prev, p--)
2844 if(cParam->type == 0 && (*arg).dataTypeString && !strcmp(cParam->name, (*arg).dataTypeString))
2846 if(templatedClass->templateArgs[p].dataTypeString && c != p)
2848 __ecereNameSpace__ecere__com__FreeTemplateArg(templatedClass, param, c);
2849 (*arg).dataTypeString = templatedClass->templateArgs[p].dataTypeString;
2850 (*arg).dataTypeClass = templatedClass->templateArgs[p].dataTypeClass;
2851 __ecereNameSpace__ecere__com__CopyTemplateArg(cParam, arg);
2862 struct __ecereNameSpace__ecere__com__Class * tClass;
2863 int c = numParams - 1;
2865 for(tClass = _class; tClass; tClass = tClass->base)
2867 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param;
2869 if(tClass->templateClass)
2870 tClass = tClass->templateClass;
2871 for(param = tClass->templateParams.last; param; param = param->prev)
2873 struct __ecereNameSpace__ecere__com__ClassTemplateArgument * arg = &templatedClass->templateArgs[c];
2875 if(param->type == 1 && (*arg).memberString)
2877 struct __ecereNameSpace__ecere__com__Class * memberClass = templatedClass;
2878 char * memberString = (*arg).memberString;
2879 char * colon = strstr(memberString, "::");
2880 char * memberName = memberString;
2883 memberName = colon + 2;
2886 memberString = param->defaultArg.memberString;
2887 colon = memberString ? strstr(memberString, "::") : (((void *)0));
2891 char className[1024];
2892 struct __ecereNameSpace__ecere__com__Class * sClass;
2894 memcpy(className, memberString, colon - memberString);
2895 className[colon - memberString] = '\0';
2896 for(sClass = _class; sClass; sClass = sClass->base)
2898 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * cParam;
2899 struct __ecereNameSpace__ecere__com__Class * nextClass;
2902 if(sClass->templateClass)
2903 sClass = sClass->templateClass;
2904 for(nextClass = sClass->base; nextClass; nextClass = nextClass->base)
2906 if(nextClass->templateClass)
2907 nextClass = nextClass->templateClass;
2908 id += nextClass->templateParams.count;
2910 for(cParam = sClass->templateParams.first; cParam; cParam = cParam->next)
2912 if(cParam->type == 0 && !strcmp(cParam->name, className) && templatedClass->templateArgs[id].dataTypeString)
2914 strcpy(className, templatedClass->templateArgs[id].dataTypeString);
2919 memberClass = __ecereNameSpace__ecere__com__eSystem_FindClass(templatedClass->module, className);
2921 memberClass = __ecereNameSpace__ecere__com__eSystem_FindClass(findModule, className);
2923 memberClass = __ecereNameSpace__ecere__com__eSystem_FindClass(((struct __ecereNameSpace__ecere__com__Module *)(((char *)templatedClass->module + 12)))->application, className);
2927 switch(param->memberType)
2930 (*arg).member = __ecereNameSpace__ecere__com__eClass_FindDataMember(memberClass, memberName, memberClass->module, (((void *)0)), (((void *)0)));
2933 (*arg).method = __ecereNameSpace__ecere__com__eClass_FindMethod(memberClass, memberName, memberClass->module);
2936 (*arg).prop = __ecereNameSpace__ecere__com__eClass_FindProperty(memberClass, memberName, memberClass->module);
2947 unsigned int __ecereNameSpace__ecere__com__DefaultFunction()
2952 unsigned int __ecereNameSpace__ecere__com__eClass_IsDerived(struct __ecereNameSpace__ecere__com__Class * _class, struct __ecereNameSpace__ecere__com__Class * from)
2954 if(!_class && !from)
2956 if(_class && from && (_class->templateClass || from->templateClass))
2958 if(__ecereNameSpace__ecere__com__eClass_IsDerived(_class->templateClass ? _class->templateClass : _class, from->templateClass ? from->templateClass : from))
2960 if(!from->templateClass)
2962 else if(!_class->templateClass && _class == from->templateClass)
2966 struct __ecereNameSpace__ecere__com__Class * sClass;
2968 for(sClass = from; sClass; sClass = sClass->base)
2970 if(sClass->templateParams.first)
2972 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param;
2973 struct __ecereNameSpace__ecere__com__Class * nextClass;
2976 for(nextClass = sClass->base; nextClass; nextClass = nextClass->base)
2977 p += nextClass->templateParams.count;
2978 for(param = sClass->templateParams.first; param; param = param->next, p++)
2980 struct __ecereNameSpace__ecere__com__ClassTemplateArgument * arg = &_class->templateArgs[p];
2981 struct __ecereNameSpace__ecere__com__ClassTemplateArgument * fArg = &from->templateArgs[p];
2983 if(param->type == 0)
2985 if((*arg).dataTypeString != (*fArg).dataTypeString && (*arg).dataTypeString && (*fArg).dataTypeString && strcmp((*arg).dataTypeString, (*fArg).dataTypeString))
2988 else if(param->type == 1)
2990 if((*arg).member != (*fArg).member)
2993 else if(param->type == 2)
2995 if((*arg).expression.ui64 != (*fArg).expression.ui64)
3009 for(; _class && from; _class = _class->base)
3011 if(_class == from || _class->templateClass == from || (_class->type == 1000 && from->name && !strcmp(_class->name, from->name)))
3018 static void __ecereNameSpace__ecere__com__FixDerivativeVirtualMethod(struct __ecereNameSpace__ecere__com__Class * base, char * name, int vid, void * origFunction, char * type)
3020 struct __ecereNameSpace__ecere__sys__OldLink * derivative;
3022 for(derivative = base->derivatives.first; derivative; derivative = derivative->next)
3024 struct __ecereNameSpace__ecere__com__Class * _class = derivative->data;
3025 struct __ecereNameSpace__ecere__com__Method * method, * next;
3026 void * function = origFunction;
3029 _class->_vTbl = __ecereNameSpace__ecere__com__eSystem_Renew(_class->_vTbl, sizeof(void *) * (_class->vTblSize));
3030 memmove(_class->_vTbl + vid + 1, _class->_vTbl + vid, (_class->vTblSize - vid - 1) * sizeof(void *));
3031 method = (struct __ecereNameSpace__ecere__com__Method *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&_class->methods, name);
3034 if(method->function)
3035 function = method->function;
3038 (__ecereNameSpace__ecere__com__eSystem_Delete(method->name), method->name = 0);
3039 (__ecereNameSpace__ecere__com__eSystem_Delete(method->dataTypeString), method->dataTypeString = 0);
3040 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&_class->methods, (struct __ecereNameSpace__ecere__sys__BTNode *)method);
3044 (__ecereNameSpace__ecere__com__eSystem_Delete(method->dataTypeString), method->dataTypeString = 0);
3046 method->dataTypeString = __ecereNameSpace__ecere__sys__CopyString(type);
3047 method->_class = base;
3050 for(method = (struct __ecereNameSpace__ecere__com__Method *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&_class->methods); method; method = next)
3052 next = (struct __ecereNameSpace__ecere__com__Method *)__ecereProp___ecereNameSpace__ecere__sys__BTNode_Get_next(((struct __ecereNameSpace__ecere__sys__BTNode *)method));
3053 if(method->type == 1)
3056 _class->_vTbl[vid] = function;
3058 struct __ecereNameSpace__ecere__sys__OldLink * templateLink;
3060 for(templateLink = _class->templatized.first; templateLink; templateLink = templateLink->next)
3062 struct __ecereNameSpace__ecere__com__Class * template = templateLink->data;
3064 template->_vTbl = _class->_vTbl;
3067 if(_class->derivatives.first || _class->templatized.first)
3068 __ecereNameSpace__ecere__com__FixDerivativeVirtualMethod(_class, name, vid, function, type);
3071 struct __ecereNameSpace__ecere__sys__OldLink * templateLink;
3073 for(templateLink = base->templatized.first; templateLink; templateLink = templateLink->next)
3075 struct __ecereNameSpace__ecere__com__Class * template = templateLink->data;
3077 template->_vTbl = base->_vTbl;
3078 __ecereNameSpace__ecere__com__FixDerivativeVirtualMethod(template, name, vid, origFunction, type);
3083 struct __ecereNameSpace__ecere__com__Method * __ecereNameSpace__ecere__com__eClass_AddMethod(struct __ecereNameSpace__ecere__com__Class * _class, char * name, char * type, void * function, int declMode)
3087 struct __ecereNameSpace__ecere__com__Class * base;
3089 for(base = _class; base; base = base->base)
3091 struct __ecereNameSpace__ecere__com__Method * method = (struct __ecereNameSpace__ecere__com__Method *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&base->methods, name);
3095 if(method->type == 1)
3097 struct __ecereNameSpace__ecere__sys__OldLink * deriv;
3098 void * oldFunction = _class->_vTbl[method->vid];
3100 if(method->vid > _class->vTblSize)
3103 _class->_vTbl[method->vid] = function ? function : __ecereNameSpace__ecere__com__DefaultFunction;
3104 for(deriv = _class->derivatives.first; deriv; deriv = deriv->next)
3106 struct __ecereNameSpace__ecere__com__Class * derivClass = deriv->data;
3108 if(derivClass->_vTbl[method->vid] == oldFunction)
3109 __ecereNameSpace__ecere__com__eClass_AddMethod(derivClass, name, type, function, declMode);
3112 struct __ecereNameSpace__ecere__sys__OldLink * templateLink;
3114 for(templateLink = _class->templatized.first; templateLink; templateLink = templateLink->next)
3116 struct __ecereNameSpace__ecere__com__Class * template = templateLink->data;
3118 for(deriv = template->derivatives.first; deriv; deriv = deriv->next)
3120 struct __ecereNameSpace__ecere__com__Class * derivClass = deriv->data;
3122 if(derivClass->_vTbl[method->vid] == oldFunction)
3123 __ecereNameSpace__ecere__com__eClass_AddMethod(derivClass, name, type, function, declMode);
3134 base = (((void *)0));
3142 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);
3144 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&_class->methods, (struct __ecereNameSpace__ecere__sys__BTNode *)method);
3148 return (((void *)0));
3151 struct __ecereNameSpace__ecere__com__Method * __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(struct __ecereNameSpace__ecere__com__Class * _class, char * name, char * type, void * function, int declMode)
3155 struct __ecereNameSpace__ecere__com__Class * base;
3157 for(base = _class; base; base = base->base)
3159 struct __ecereNameSpace__ecere__com__Method * method = (struct __ecereNameSpace__ecere__com__Method *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&base->methods, name);
3163 if(method->type == 1)
3164 _class->_vTbl[method->vid] = function ? function : __ecereNameSpace__ecere__com__DefaultFunction;
3166 base = (((void *)0));
3172 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);
3174 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&_class->methods, (struct __ecereNameSpace__ecere__sys__BTNode *)method);
3175 _class->_vTbl = __ecereNameSpace__ecere__com__eSystem_Renew(_class->_vTbl, sizeof(void *) * (_class->vTblSize));
3176 _class->_vTbl[method->vid] = function ? function : __ecereNameSpace__ecere__com__DefaultFunction;
3177 if(_class->derivatives.first || _class->templatized.first)
3178 __ecereNameSpace__ecere__com__FixDerivativeVirtualMethod(_class, name, method->vid, function ? function : (void *)__ecereNameSpace__ecere__com__DefaultFunction, type);
3182 return (((void *)0));
3185 static void __ecereNameSpace__ecere__com__FixDerivativeProperty(struct __ecereNameSpace__ecere__com__Class * base, struct __ecereNameSpace__ecere__com__Property * _property)
3187 struct __ecereNameSpace__ecere__sys__OldLink * derivative;
3189 for(derivative = base->derivatives.first; derivative; derivative = derivative->next)
3191 struct __ecereNameSpace__ecere__com__Class * _class = derivative->data;
3192 struct __ecereNameSpace__ecere__com__Property * prop;
3193 struct __ecereNameSpace__ecere__com__BTNamedLink * link;
3195 link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&_class->prop, _property->name);
3199 if(!prop->Set && !prop->Get && prop->memberAccess == 4)
3201 struct __ecereNameSpace__ecere__com__SelfWatcher * watcher;
3203 for(watcher = _class->selfWatchers.first; watcher; watcher = watcher->next)
3205 if(watcher->_property == prop)
3206 watcher->_property = _property;
3208 _property->selfWatchable = 0x1;
3209 (__ecereNameSpace__ecere__com__eSystem_Delete(prop->name), prop->name = 0);
3210 (__ecereNameSpace__ecere__com__eSystem_Delete(prop->dataTypeString), prop->dataTypeString = 0);
3211 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&_class->membersAndProperties, prop);
3212 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&_class->prop, (struct __ecereNameSpace__ecere__sys__BTNode *)link);
3215 for(prop = _class->membersAndProperties.first; prop; prop = prop->next)
3218 _class->startMemberID++;
3219 __ecereNameSpace__ecere__com__FixDerivativeProperty(_class, _property);
3223 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)
3225 void * __ecereTemp1;
3226 struct __ecereNameSpace__ecere__com__Property * _property = (((void *)0));
3230 if(!__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&_class->prop, (name ? name : dataType)))
3232 _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));
3234 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&_class->membersAndProperties, _property);
3236 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&_class->conversions, _property);
3237 __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)));
3238 if(!_property->conversion)
3240 __ecereNameSpace__ecere__com__FixDerivativeProperty(_class, _property);
3247 static void __ecereNameSpace__ecere__com__SetDelayedCPValues(struct __ecereNameSpace__ecere__com__Class * _class, struct __ecereNameSpace__ecere__com__ClassProperty * _property)
3249 struct __ecereNameSpace__ecere__sys__OldLink * deriv;
3250 struct __ecereNameSpace__ecere__sys__NamedLink * value, * next;
3252 for(value = _class->delayedCPValues.first; value; value = next)
3255 if(!strcmp(value->name, _property->name))
3257 _property->Set(_class, (int)value->data);
3258 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&_class->delayedCPValues, value);
3261 for(deriv = _class->derivatives.first; deriv; deriv = deriv->next)
3263 __ecereNameSpace__ecere__com__SetDelayedCPValues(deriv->data, _property);
3267 struct __ecereNameSpace__ecere__com__ClassProperty * __ecereNameSpace__ecere__com__eClass_AddClassProperty(struct __ecereNameSpace__ecere__com__Class * _class, char * name, char * dataType, void * setStmt, void * getStmt)
3269 if(name && !__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&_class->classProperties, name))
3271 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);
3273 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&_class->classProperties, (struct __ecereNameSpace__ecere__sys__BTNode *)_property);
3274 __ecereNameSpace__ecere__com__SetDelayedCPValues(_class, _property);
3277 return (((void *)0));
3280 struct __ecereNameSpace__ecere__com__ClassProperty * __ecereNameSpace__ecere__com__eClass_FindClassProperty(struct __ecereNameSpace__ecere__com__Class * _class, char * name)
3282 struct __ecereNameSpace__ecere__com__ClassProperty * _property = (((void *)0));
3286 struct __ecereNameSpace__ecere__com__Class * origClass = _class;
3288 for(; _class; _class = _class->base)
3290 _property = (struct __ecereNameSpace__ecere__com__ClassProperty *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&_class->classProperties, name);
3294 if(!_property && origClass->type == 4)
3296 struct __ecereNameSpace__ecere__com__Class * enumClass = __ecereNameSpace__ecere__com__eSystem_FindClass(origClass->module, "enum");
3298 _property = __ecereNameSpace__ecere__com__eClass_FindClassProperty(enumClass, name);
3304 int __ecereNameSpace__ecere__com__eClass_GetProperty(struct __ecereNameSpace__ecere__com__Class * _class, char * name)
3306 struct __ecereNameSpace__ecere__com__ClassProperty * _property = __ecereNameSpace__ecere__com__eClass_FindClassProperty(_class, name);
3308 if(_property && _property->Get && _property->Get != (void *)1)
3310 int result = _property->Get(_class);
3317 void __ecereNameSpace__ecere__com__eClass_SetProperty(struct __ecereNameSpace__ecere__com__Class * _class, char * name, int value)
3319 void * __ecereTemp1;
3320 struct __ecereNameSpace__ecere__com__ClassProperty * _property = __ecereNameSpace__ecere__com__eClass_FindClassProperty(_class, name);
3325 _property->Set(_class, value);
3329 __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)));
3333 struct __ecereNameSpace__ecere__com__Method * __ecereNameSpace__ecere__com__eClass_FindMethod(struct __ecereNameSpace__ecere__com__Class * _class, char * name, struct __ecereNameSpace__ecere__com__Instance * module)
3337 for(; _class; _class = _class->base)
3339 struct __ecereNameSpace__ecere__com__Method * method;
3341 if(_class->templateClass)
3342 _class = _class->templateClass;
3343 method = (struct __ecereNameSpace__ecere__com__Method *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&_class->methods, name);
3344 if(method && (method->memberAccess == 1 || _class->module == module || !method->dataTypeString))
3346 if(!method->dataTypeString)
3348 if(_class->module != module)
3350 if(method->memberAccess == 1)
3351 module = _class->module;
3354 return (((void *)0));
3363 if(_class->inheritanceAccess == 2 && _class->module != module)
3367 return (((void *)0));
3370 static unsigned int __ecereNameSpace__ecere__com__ConstructInstance(void * instance, struct __ecereNameSpace__ecere__com__Class * _class, struct __ecereNameSpace__ecere__com__Class * from)
3372 if(_class->templateClass)
3373 _class = _class->templateClass;
3374 if(_class->base && from != _class->base)
3376 if(!__ecereNameSpace__ecere__com__ConstructInstance(instance, _class->base, from))
3379 if(_class->Initialize)
3381 void (* Initialize)(struct __ecereNameSpace__ecere__com__Instance * module) = (void *)_class->Initialize;
3383 _class->Initialize = (((void *)0));
3384 Initialize(_class->module);
3386 if(_class->Constructor)
3388 if(!_class->Constructor(instance))
3390 for(; _class; _class = _class->base)
3392 if(_class->templateClass)
3393 _class = _class->templateClass;
3394 if(_class->Destructor)
3395 _class->Destructor(instance);
3400 (_class->templateClass ? _class->templateClass : _class)->count++;
3404 void * __ecereNameSpace__ecere__com__eInstance_New(struct __ecereNameSpace__ecere__com__Class * _class)
3406 struct __ecereNameSpace__ecere__com__Instance * instance = (((void *)0));
3410 instance = __ecereNameSpace__ecere__com___calloc(1, _class->structSize);
3411 if(_class->type == 0)
3413 ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class = _class;
3414 ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_vTbl = _class->_vTbl;
3416 if(!__ecereNameSpace__ecere__com__ConstructInstance(instance, _class, (((void *)0))))
3418 __ecereNameSpace__ecere__com___free(instance);
3419 instance = (((void *)0));
3425 void __ecereNameSpace__ecere__com__eInstance_Evolve(struct __ecereNameSpace__ecere__com__Instance ** instancePtr, struct __ecereNameSpace__ecere__com__Class * _class)
3427 if(_class && instancePtr && *instancePtr)
3429 unsigned int wasApp = 0x0, wasGuiApp = 0x0;
3430 struct __ecereNameSpace__ecere__com__Instance * instance = (struct __ecereNameSpace__ecere__com__Instance *)__ecereNameSpace__ecere__com__eSystem_Renew(*instancePtr, sizeof(unsigned char) * (_class->structSize));
3431 struct __ecereNameSpace__ecere__com__Class * fromClass = ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class;
3433 *instancePtr = instance;
3434 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);
3435 if((wasApp = !strcmp(((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class->name, "Application")) || (wasGuiApp = !strcmp(((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class->name, "GuiApplication")))
3437 struct __ecereNameSpace__ecere__com__Instance * module;
3438 struct __ecereNameSpace__ecere__com__Instance * app = (struct __ecereNameSpace__ecere__com__Instance *)instance;
3439 struct __ecereNameSpace__ecere__com__BTNamedLink * link;
3440 struct __ecereNameSpace__ecere__com__Class * _class;
3441 struct __ecereNameSpace__ecere__com__NameSpace * nameSpace;
3443 for(module = ((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 300)))->allModules.first; module; module = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->next)
3444 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application = app;
3445 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)))
3447 struct __ecereNameSpace__ecere__sys__OldLink * t;
3449 ((struct __ecereNameSpace__ecere__com__Class *)link->data)->nameSpace = &((struct __ecereNameSpace__ecere__com__Module *)(((char *)app + 12)))->privateNameSpace;
3450 for(t = ((struct __ecereNameSpace__ecere__com__Class *)link->data)->templatized.first; t; t = t->next)
3452 struct __ecereNameSpace__ecere__com__Class * template = t->data;
3454 template->nameSpace = ((struct __ecereNameSpace__ecere__com__Class *)link->data)->nameSpace;
3457 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)))
3459 struct __ecereNameSpace__ecere__sys__OldLink * t;
3461 ((struct __ecereNameSpace__ecere__com__Class *)link->data)->nameSpace = &((struct __ecereNameSpace__ecere__com__Module *)(((char *)app + 12)))->publicNameSpace;
3462 for(t = ((struct __ecereNameSpace__ecere__com__Class *)link->data)->templatized.first; t; t = t->next)
3464 struct __ecereNameSpace__ecere__com__Class * template = t->data;
3466 template->nameSpace = ((struct __ecereNameSpace__ecere__com__Class *)link->data)->nameSpace;
3469 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)))
3470 ((struct __ecereNameSpace__ecere__com__DefinedExpression *)link->data)->nameSpace = &((struct __ecereNameSpace__ecere__com__Module *)(((char *)app + 12)))->privateNameSpace;
3471 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)))
3472 ((struct __ecereNameSpace__ecere__com__DefinedExpression *)link->data)->nameSpace = &((struct __ecereNameSpace__ecere__com__Module *)(((char *)app + 12)))->publicNameSpace;
3473 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)))
3474 ((struct __ecereNameSpace__ecere__com__GlobalFunction *)link->data)->nameSpace = &((struct __ecereNameSpace__ecere__com__Module *)(((char *)app + 12)))->privateNameSpace;
3475 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)))
3476 ((struct __ecereNameSpace__ecere__com__GlobalFunction *)link->data)->nameSpace = &((struct __ecereNameSpace__ecere__com__Module *)(((char *)app + 12)))->publicNameSpace;
3477 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)))
3478 (*nameSpace).parent = &((struct __ecereNameSpace__ecere__com__Module *)(((char *)app + 12)))->privateNameSpace;
3479 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)))
3480 (*nameSpace).parent = &((struct __ecereNameSpace__ecere__com__Module *)(((char *)app + 12)))->publicNameSpace;
3481 for(link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 300)))->systemNameSpace.classes); link; link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereProp___ecereNameSpace__ecere__sys__BTNode_Get_next(((struct __ecereNameSpace__ecere__sys__BTNode *)link)))
3483 struct __ecereNameSpace__ecere__sys__OldLink * t;
3485 ((struct __ecereNameSpace__ecere__com__Class *)link->data)->nameSpace = &((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 300)))->systemNameSpace;
3486 for(t = ((struct __ecereNameSpace__ecere__com__Class *)link->data)->templatized.first; t; t = t->next)
3488 struct __ecereNameSpace__ecere__com__Class * template = t->data;
3490 template->nameSpace = ((struct __ecereNameSpace__ecere__com__Class *)link->data)->nameSpace;
3493 for(link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 300)))->systemNameSpace.defines); link; link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereProp___ecereNameSpace__ecere__sys__BTNode_Get_next(((struct __ecereNameSpace__ecere__sys__BTNode *)link)))
3494 ((struct __ecereNameSpace__ecere__com__DefinedExpression *)link->data)->nameSpace = &((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 300)))->systemNameSpace;
3495 for(link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 300)))->systemNameSpace.functions); link; link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereProp___ecereNameSpace__ecere__sys__BTNode_Get_next(((struct __ecereNameSpace__ecere__sys__BTNode *)link)))
3496 ((struct __ecereNameSpace__ecere__com__GlobalFunction *)link->data)->nameSpace = &((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 300)))->systemNameSpace;
3497 for(link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 300)))->systemNameSpace.functions); link; link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereProp___ecereNameSpace__ecere__sys__BTNode_Get_next(((struct __ecereNameSpace__ecere__sys__BTNode *)link)))
3498 ((struct __ecereNameSpace__ecere__com__GlobalFunction *)link->data)->nameSpace = &((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 300)))->systemNameSpace;
3499 for(nameSpace = (struct __ecereNameSpace__ecere__com__NameSpace *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 300)))->systemNameSpace.nameSpaces); nameSpace; nameSpace = (struct __ecereNameSpace__ecere__com__NameSpace *)__ecereProp___ecereNameSpace__ecere__sys__BTNode_Get_next(((struct __ecereNameSpace__ecere__sys__BTNode *)nameSpace)))
3500 (*nameSpace).parent = &((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 300)))->systemNameSpace;
3501 for(_class = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)app + 12)))->classes.first; _class; _class = _class->next)
3503 struct __ecereNameSpace__ecere__sys__OldLink * templateLink;
3505 _class->module = (struct __ecereNameSpace__ecere__com__Instance *)app;
3506 for(templateLink = _class->templatized.first; templateLink; templateLink = templateLink->next)
3508 struct __ecereNameSpace__ecere__com__Class * template = templateLink->data;
3510 template->module = _class->module;
3513 for(module = ((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 300)))->allModules.first; module; module = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->next)
3515 for(_class = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->classes.first; _class; _class = _class->next)
3517 struct __ecereNameSpace__ecere__sys__OldLink * templateLink;
3519 _class->module = module;
3520 for(templateLink = _class->templatized.first; templateLink; templateLink = templateLink->next)
3522 struct __ecereNameSpace__ecere__com__Class * template = templateLink->data;
3524 template->module = _class->module;
3528 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)app + 12)))->application = app;
3531 struct __ecereNameSpace__ecere__com__Class * base;
3533 for(base = ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class; base && base->type == 0 && base->count; base = base->base)
3534 (base->templateClass ? base->templateClass : base)->count--;
3536 ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class = _class;
3537 ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_vTbl = _class->_vTbl;
3538 if(!__ecereNameSpace__ecere__com__ConstructInstance(instance, _class, fromClass))
3540 __ecereNameSpace__ecere__com___free(instance);
3541 *instancePtr = (((void *)0));
3546 void __ecereNameSpace__ecere__com__eInstance_Delete(struct __ecereNameSpace__ecere__com__Instance * instance)
3550 struct __ecereNameSpace__ecere__com__Class * _class, * base;
3551 unsigned int ownVtbl;
3553 ownVtbl = ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_vTbl != ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class->_vTbl;
3554 for(_class = ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class; _class; _class = base)
3556 if(_class->templateClass)
3557 _class = _class->templateClass;
3558 if(_class->destructionWatchOffset)
3560 struct __ecereNameSpace__ecere__sys__OldList * watchers = (struct __ecereNameSpace__ecere__sys__OldList *)((unsigned char *)instance + _class->destructionWatchOffset);
3561 struct __ecereNameSpace__ecere__com__Watcher * watcher, * next;
3563 for(watcher = (*watchers).first; watcher; watcher = next)
3565 next = watcher->next;
3566 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove((&*watchers), watcher);
3567 watcher->callback(watcher->object, instance);
3568 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete((&*watchers), watcher);
3571 base = _class->base;
3572 if(base && base->type == 1000)
3573 base = (((void *)0));
3574 if(_class->Destructor)
3575 _class->Destructor(instance);
3577 for(_class = ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class; _class; _class = base)
3579 if(_class->templateClass)
3580 _class = _class->templateClass;
3581 base = _class->base;
3582 (_class->templateClass ? _class->templateClass : _class)->count--;
3583 if(_class->type == 0 && !_class->count && !_class->module)
3585 __ecereNameSpace__ecere__com__eClass_Unregister(_class);
3590 (__ecereNameSpace__ecere__com__eSystem_Delete(((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_vTbl), ((struct __ecereNameSpace__ecere__com__Instance * )(char * )instance)->_vTbl = 0);
3592 __ecereNameSpace__ecere__com___free(instance);
3596 struct __ecereNameSpace__ecere__com__Property * __ecereNameSpace__ecere__com__eClass_FindProperty(struct __ecereNameSpace__ecere__com__Class * _class, char * name, struct __ecereNameSpace__ecere__com__Instance * module)
3600 for(; _class; _class = _class->base)
3602 struct __ecereNameSpace__ecere__com__BTNamedLink * link;
3604 if(_class->templateClass)
3605 _class = _class->templateClass;
3606 link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&_class->prop, name);
3609 struct __ecereNameSpace__ecere__com__Property * _property = (struct __ecereNameSpace__ecere__com__Property *)link->data;
3611 if(_property->memberAccess == 1 || _class->module == module || !_property->dataTypeString)
3613 if(!_property->dataTypeString)
3615 if(_class->module != module)
3617 if(_property->memberAccess == 1)
3618 module = _class->module;
3621 return (((void *)0));
3631 if(_class->inheritanceAccess == 2 && _class->module != module)
3635 return (((void *)0));
3638 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)
3640 struct __ecereNameSpace__ecere__com__BTNamedLink * link;
3641 struct __ecereNameSpace__ecere__com__DataMember * dataMember;
3643 link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(alist, name);
3646 dataMember = link->data;
3647 if(dataMember->type == 0 && (dataMember->memberAccess == 1 || searchPrivate || !dataMember->dataTypeString))
3650 *offset += dataMember->offset;
3652 *id = dataMember->id;
3655 return (((void *)0));
3657 for(dataMember = list->first; dataMember; dataMember = dataMember->next)
3659 if(!dataMember->isProperty && (dataMember->memberAccess == 1 || searchPrivate) && !dataMember->name && (dataMember->type == 1 || dataMember->type == 2))
3661 struct __ecereNameSpace__ecere__com__DataMember * childMember;
3663 if(subMemberStackPos)
3664 subMemberStack[(*subMemberStackPos)++] = dataMember;
3665 childMember = __ecereNameSpace__ecere__com__FindDataMember(&dataMember->members, &dataMember->membersAlpha, name, offset, id, searchPrivate, subMemberStack, subMemberStackPos);
3669 *offset += dataMember->offset;
3671 *id += dataMember->id;
3674 if(subMemberStackPos)
3675 (*subMemberStackPos)--;
3678 return (((void *)0));
3681 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)
3683 struct __ecereNameSpace__ecere__com__DataMember * dataMember = (((void *)0));
3685 if(subMemberStackPos)
3686 *subMemberStackPos = 0;
3689 for(; _class; _class = _class->base)
3691 if(_class->templateClass)
3692 _class = _class->templateClass;
3693 dataMember = __ecereNameSpace__ecere__com__FindDataMember(&_class->membersAndProperties, &_class->members, name, (((void *)0)), (((void *)0)), _class->module == module, subMemberStack, subMemberStackPos);
3696 if(!dataMember->dataTypeString)
3698 if(_class->module != module)
3700 if(dataMember->memberAccess == 1)
3701 module = _class->module;
3704 return (((void *)0));
3707 dataMember = (((void *)0));
3711 dataMember->_class = _class->templateClass ? _class->templateClass : _class;
3715 if(_class->inheritanceAccess == 2 && _class->module != module)
3722 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)
3724 struct __ecereNameSpace__ecere__com__DataMember * dataMember = (((void *)0));
3726 if(subMemberStackPos)
3727 *subMemberStackPos = 0;
3732 for(; _class; _class = _class->base)
3734 if(_class->templateClass)
3735 _class = _class->templateClass;
3736 dataMember = __ecereNameSpace__ecere__com__FindDataMember(&_class->membersAndProperties, &_class->members, name, offset, (((void *)0)), _class->module == module, subMemberStack, subMemberStackPos);
3739 if(!dataMember->dataTypeString)
3741 if(_class->module != module)
3743 if(dataMember->memberAccess == 1)
3744 module = _class->module;
3747 return (((void *)0));
3750 dataMember = (((void *)0));
3754 dataMember->_class = _class;
3758 if(_class->inheritanceAccess == 2 && _class->module != module)
3765 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)
3767 struct __ecereNameSpace__ecere__com__DataMember * dataMember = (((void *)0));
3769 if(subMemberStackPos)
3770 *subMemberStackPos = 0;
3773 for(; _class; _class = _class->base)
3775 if(_class->templateClass)
3776 _class = _class->templateClass;
3777 dataMember = __ecereNameSpace__ecere__com__FindDataMember(&_class->membersAndProperties, &_class->members, name, (((void *)0)), id, _class->module == module, subMemberStack, subMemberStackPos);
3780 if(!dataMember->dataTypeString)
3782 if(_class->module != module)
3784 if(dataMember->memberAccess == 1)
3785 module = _class->module;
3788 return (((void *)0));
3791 dataMember = (((void *)0));
3795 dataMember->_class = _class;
3799 if(_class->inheritanceAccess == 2 && _class->module != module)
3806 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)
3810 *curMember = (*curMember)->next;
3811 if(subMemberStackPos && *subMemberStackPos > 0 && subMemberStack[*subMemberStackPos - 1]->type == 1)
3813 *curMember = subMemberStack[--(*subMemberStackPos)];
3814 *curMember = (*curMember)->next;
3816 if(subMemberStackPos && *subMemberStackPos > 0)
3818 while(*curMember && ((*curMember)->memberAccess == 2))
3819 *curMember = (*curMember)->next;
3822 while(*curMember && (*curMember)->name)
3824 struct __ecereNameSpace__ecere__com__DataMember * dataMember = __ecereNameSpace__ecere__com__eClass_FindDataMember(_class, (*curMember)->name, (((void *)0)), (((void *)0)), (((void *)0)));
3827 dataMember = (struct __ecereNameSpace__ecere__com__DataMember *)__ecereNameSpace__ecere__com__eClass_FindProperty(_class, (*curMember)->name, (((void *)0)));
3828 if(dataMember && dataMember->memberAccess != 2)
3830 *curMember = dataMember;
3834 *curMember = (*curMember)->next;
3836 if(subMemberStackPos)
3838 while((*curMember) && !(*curMember)->isProperty && !(*curMember)->name && ((*curMember)->type == 2 || (*curMember)->type == 1))
3840 subMemberStack[(*subMemberStackPos)++] = *curMember;
3841 *curMember = (*curMember)->members.first;
3842 while(*curMember && ((*curMember)->memberAccess == 2))
3843 *curMember = (*curMember)->next;
3851 if(subMemberStackPos && *subMemberStackPos)
3853 *curMember = subMemberStack[--(*subMemberStackPos)];
3854 *curMember = (*curMember)->next;
3858 struct __ecereNameSpace__ecere__com__Class * lastCurClass = *curClass;
3860 if(*curClass == _class)
3862 for(*curClass = _class; (*curClass)->base != lastCurClass && (*curClass)->base->type != 1000 && (*curClass)->inheritanceAccess != 2; *curClass = (*curClass)->base)
3864 *curMember = (*curClass)->membersAndProperties.first;
3866 if(subMemberStackPos && *subMemberStackPos > 0)
3868 while(*curMember && ((*curMember)->memberAccess == 2))
3869 *curMember = (*curMember)->next;
3872 while(*curMember && (*curMember)->name)
3874 struct __ecereNameSpace__ecere__com__DataMember * dataMember = __ecereNameSpace__ecere__com__eClass_FindDataMember(_class, (*curMember)->name, (((void *)0)), (((void *)0)), (((void *)0)));
3877 dataMember = (struct __ecereNameSpace__ecere__com__DataMember *)__ecereNameSpace__ecere__com__eClass_FindProperty(_class, (*curMember)->name, (((void *)0)));
3878 if(dataMember && dataMember->memberAccess != 2)
3880 *curMember = dataMember;
3884 *curMember = (*curMember)->next;
3886 if(subMemberStackPos)
3888 while((*curMember) && !(*curMember)->isProperty && !(*curMember)->name && ((*curMember)->type == 2 || (*curMember)->type == 1))
3890 subMemberStack[(*subMemberStackPos)++] = *curMember;
3891 *curMember = (*curMember)->members.first;
3892 while(*curMember && (*curMember)->memberAccess == 2)
3893 *curMember = (*curMember)->next;
3900 void __ecereNameSpace__ecere__com__eInstance_SetMethod(struct __ecereNameSpace__ecere__com__Instance * instance, char * name, void * function)
3902 if(instance && name)
3904 struct __ecereNameSpace__ecere__com__Class * _class;
3906 for(_class = ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class; _class; _class = _class->base)
3908 struct __ecereNameSpace__ecere__com__Method * method = (struct __ecereNameSpace__ecere__com__Method *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&_class->methods, name);
3910 if(method && method->type == 1)
3912 if(((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_vTbl == ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class->_vTbl)
3914 ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_vTbl = __ecereNameSpace__ecere__com___malloc(sizeof(void *) * ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class->vTblSize);
3915 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);
3917 ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_vTbl[method->vid] = function ? function : __ecereNameSpace__ecere__com__DefaultFunction;
3923 unsigned int __ecereNameSpace__ecere__com__eInstance_IsDerived(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Class * from)
3927 struct __ecereNameSpace__ecere__com__Class * _class = ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class;
3929 for(; _class; _class = _class->base)
3938 void __ecereNameSpace__ecere__com__eInstance_IncRef(struct __ecereNameSpace__ecere__com__Instance * instance)
3941 ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_refCount++;
3944 void __ecereNameSpace__ecere__com__eInstance_DecRef(struct __ecereNameSpace__ecere__com__Instance * instance)
3948 ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_refCount--;
3949 if(((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_refCount <= 0)
3951 __ecereNameSpace__ecere__com__eInstance_Delete(instance);
3956 static void __ecereNameSpace__ecere__com__FixOffsets(struct __ecereNameSpace__ecere__com__Class * _class)
3958 struct __ecereNameSpace__ecere__sys__OldLink * deriv;
3960 _class->structSize += _class->base->structSize - _class->offset;
3961 _class->offset = _class->base->structSize;
3962 for(deriv = _class->derivatives.first; deriv; deriv = deriv->next)
3963 __ecereNameSpace__ecere__com__FixOffsets(deriv->data);
3966 void __ecereNameSpace__ecere__com__eClass_Resize(struct __ecereNameSpace__ecere__com__Class * _class, int newSize)
3968 struct __ecereNameSpace__ecere__sys__OldLink * deriv;
3970 _class->structSize = newSize;
3971 for(deriv = _class->derivatives.first; deriv; deriv = deriv->next)
3972 __ecereNameSpace__ecere__com__FixOffsets(deriv->data);
3975 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)
3977 void * __ecereTemp1;
3981 if(!__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&_class->members, name))
3983 struct __ecereNameSpace__ecere__com__DataMember * dataMember;
3987 int __simpleStruct0;
3989 _class->structAlignment = (__simpleStruct0 = _class->structAlignment, (__simpleStruct0 > alignment) ? __simpleStruct0 : alignment);
3990 if(_class->memberOffset % alignment)
3991 _class->memberOffset += alignment - (_class->memberOffset % alignment);
3993 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));
3994 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&_class->membersAndProperties, dataMember);
3995 _class->memberOffset += size;
3996 __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)));
4000 return (((void *)0));
4003 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)
4005 void * __ecereTemp1;
4007 if(name && !__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&member->membersAlpha, name))
4009 struct __ecereNameSpace__ecere__com__DataMember * dataMember;
4013 int __simpleStruct0;
4015 member->structAlignment = (__simpleStruct0 = member->structAlignment, (__simpleStruct0 > alignment) ? __simpleStruct0 : alignment);
4016 if(member->memberOffset % alignment)
4017 member->memberOffset += alignment - (member->memberOffset % alignment);
4019 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));
4020 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&member->members, dataMember);
4021 if(member->type == 1)
4023 if(size > member->memberOffset)
4024 member->memberOffset = size;
4027 member->memberOffset += size;
4028 __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)));
4031 return (((void *)0));
4034 struct __ecereNameSpace__ecere__com__DataMember * __ecereNameSpace__ecere__com__eMember_New(int type, int declMode)
4036 void * __ecereTemp1;
4038 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));
4041 static void __ecereNameSpace__ecere__com__SetMemberClass(struct __ecereNameSpace__ecere__com__DataMember * member, struct __ecereNameSpace__ecere__com__Class * _class)
4043 struct __ecereNameSpace__ecere__com__DataMember * dataMember;
4045 member->_class = _class;
4046 for(dataMember = member->members.first; dataMember; dataMember = dataMember->next)
4047 __ecereNameSpace__ecere__com__SetMemberClass(dataMember, _class);
4050 unsigned int __ecereNameSpace__ecere__com__eMember_AddMember(struct __ecereNameSpace__ecere__com__DataMember * addTo, struct __ecereNameSpace__ecere__com__DataMember * dataMember)
4052 void * __ecereTemp1;
4053 int __simpleStruct0, __simpleStruct1;
4055 if(dataMember->name && __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&addTo->membersAlpha, dataMember->name))
4057 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&addTo->members, dataMember);
4058 if(dataMember->name)
4059 __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)));
4060 dataMember->_class = addTo->_class;
4061 dataMember->id = addTo->memberID;
4062 if(dataMember->type == 1)
4063 addTo->memberID += 1;
4065 addTo->memberID += dataMember->memberID;
4066 addTo->structAlignment = (__simpleStruct0 = addTo->structAlignment, __simpleStruct1 = dataMember->structAlignment, (__simpleStruct0 > __simpleStruct1) ? __simpleStruct0 : __simpleStruct1);
4067 dataMember->offset = (addTo->type == 1) ? 0 : addTo->memberOffset;
4068 if(addTo->type == 1)
4070 if(dataMember->memberOffset > addTo->memberOffset)
4071 addTo->memberOffset = dataMember->memberOffset;
4074 addTo->memberOffset += dataMember->memberOffset;
4078 unsigned int __ecereNameSpace__ecere__com__eClass_AddMember(struct __ecereNameSpace__ecere__com__Class * _class, struct __ecereNameSpace__ecere__com__DataMember * dataMember)
4080 void * __ecereTemp1;
4081 int __simpleStruct0, __simpleStruct1;
4083 if(!_class || _class->comRedefinition || (dataMember->name && __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&_class->members, dataMember->name)))
4085 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&_class->membersAndProperties, dataMember);
4086 if(dataMember->name)
4087 __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)));
4088 __ecereNameSpace__ecere__com__SetMemberClass(dataMember, _class);
4089 dataMember->id = _class->memberID;
4090 _class->structAlignment = (__simpleStruct0 = _class->structAlignment, __simpleStruct1 = dataMember->structAlignment, (__simpleStruct0 > __simpleStruct1) ? __simpleStruct0 : __simpleStruct1);
4091 if(dataMember->type == 1)
4092 _class->memberID += 1;
4094 _class->memberID += dataMember->memberID;
4095 dataMember->offset = _class->memberOffset;
4096 _class->memberOffset += dataMember->memberOffset;
4100 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)
4102 void * __ecereTemp1;
4104 if(_class && name && !__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&_class->members, name))
4108 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);
4110 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&_class->membersAndProperties, bitMember);
4113 bitMember->pos = (bitPos == -1) ? _class->memberOffset : bitPos;
4114 bitMember->size = bitSize;
4115 _class->memberOffset = bitMember->pos + bitMember->size;
4116 for(c = 0; c < bitSize; c++)
4122 bitMember->mask = mask << bitMember->pos;
4124 __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)));
4127 return (((void *)0));
4130 static struct __ecereNameSpace__ecere__com__Instance * __ecereNameSpace__ecere__com__Module_Load(struct __ecereNameSpace__ecere__com__Instance * fromModule, char * name, int importAccess, unsigned int ensureCOM)
4132 void * __ecereTemp1;
4133 unsigned int (stdcall * Load)(struct __ecereNameSpace__ecere__com__Instance * module) = (((void *)0));
4134 unsigned int (stdcall * Unload)(struct __ecereNameSpace__ecere__com__Instance * module) = (((void *)0));
4135 struct __ecereNameSpace__ecere__com__Instance * module;
4137 for(module = ((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)fromModule + 12)))->application + 300)))->allModules.first; module; module = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->next)
4139 if(!strcmp(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->name, name))
4142 if(ensureCOM && (!strcmp(name, "ecereCOM") || !strcmp(name, "ecere")))
4144 for(module = ((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)fromModule + 12)))->application + 300)))->allModules.first; module; module = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->next)
4146 if(!strcmp(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->name, "ecere") || !strcmp(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->name, "ecereCOM"))
4152 void * library = (((void *)0));
4154 if(ensureCOM && !strcmp(name, "ecereCOM"))
4156 Load = __ecereDll_Load_ecere;
4157 Unload = __ecereDll_Unload_ecere;
4161 library = Instance_Module_Load(name, &Load, &Unload);
4165 module = (struct __ecereNameSpace__ecere__com__Instance *)__ecereNameSpace__ecere__com__eInstance_New(__ecereNameSpace__ecere__com__eSystem_FindClass(fromModule, "Module"));
4166 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)fromModule + 12)))->application;
4167 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->library = library;
4168 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->name = __ecereNameSpace__ecere__sys__CopyString(name);
4169 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->Unload = Unload;
4170 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->origImportType = 0;
4173 __ecereNameSpace__ecere__com__eInstance_Delete((struct __ecereNameSpace__ecere__com__Instance *)module);
4174 module = (((void *)0));
4177 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)fromModule + 12)))->application + 300)))->allModules, module);
4179 if(ensureCOM && !strcmp(name, "ecere") && module)
4181 name = !strcmp(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->name, "ecereCOM") ? "ecere" : "ecereCOM";
4182 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))
4184 struct __ecereNameSpace__ecere__com__Instance * module;
4186 for(module = ((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)fromModule + 12)))->application + 300)))->allModules.first; module; module = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->next)
4188 if(!strcmp(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->name, name))
4193 Load = __ecereDll_Load_ecere;
4194 Unload = __ecereDll_Unload_ecere;
4195 module = (struct __ecereNameSpace__ecere__com__Instance *)__ecereNameSpace__ecere__com__eInstance_New(__ecereNameSpace__ecere__com__eSystem_FindClass(fromModule, "Module"));
4196 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)fromModule + 12)))->application;
4197 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->library = (((void *)0));
4198 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->name = __ecereNameSpace__ecere__sys__CopyString(name);
4199 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->Unload = Unload;
4202 __ecereNameSpace__ecere__com__eInstance_Delete((struct __ecereNameSpace__ecere__com__Instance *)module);
4203 module = (((void *)0));
4205 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)fromModule + 12)))->application + 300)))->allModules, module);
4211 __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)));
4213 module->_refCount++;
4221 __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)));
4223 module->_refCount++;
4228 struct __ecereNameSpace__ecere__com__Instance * __ecereNameSpace__ecere__com__eModule_Load(struct __ecereNameSpace__ecere__com__Instance * fromModule, char * name, int importAccess)
4230 return __ecereNameSpace__ecere__com__Module_Load(fromModule, name, importAccess, 0x1);
4233 struct __ecereNameSpace__ecere__com__Instance * __ecereNameSpace__ecere__com__eModule_LoadStrict(struct __ecereNameSpace__ecere__com__Instance * fromModule, char * name, int importAccess)
4235 return __ecereNameSpace__ecere__com__Module_Load(fromModule, name, importAccess, 0x0);
4238 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))
4240 void * __ecereTemp1;
4241 struct __ecereNameSpace__ecere__com__Instance * module;
4243 for(module = ((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)fromModule + 12)))->application + 300)))->allModules.first; module; module = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->next)
4245 if(!strcmp(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->name, name))
4252 module = (struct __ecereNameSpace__ecere__com__Instance *)__ecereNameSpace__ecere__com__eInstance_New(__ecereNameSpace__ecere__com__eSystem_FindClass(fromModule, "Module"));
4253 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)fromModule + 12)))->application;
4254 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->name = __ecereNameSpace__ecere__sys__CopyString(name);
4255 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->origImportType = 1;
4256 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->Unload = (void *)Unload;
4259 __ecereNameSpace__ecere__com__eInstance_Delete((struct __ecereNameSpace__ecere__com__Instance *)module);
4260 module = (((void *)0));
4263 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)fromModule + 12)))->application + 300)))->allModules, module);
4269 __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)));
4271 module->_refCount++;
4276 void __ecereNameSpace__ecere__com__eModule_Unload(struct __ecereNameSpace__ecere__com__Instance * fromModule, struct __ecereNameSpace__ecere__com__Instance * module)
4278 struct __ecereNameSpace__ecere__sys__OldLink * m;
4280 for(m = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)fromModule + 12)))->modules.first; m; m = m->next)
4282 if(m->data == module)
4287 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)fromModule + 12)))->modules, m);
4288 (__ecereNameSpace__ecere__com__eInstance_DecRef(module), module = 0);
4292 void __ecereNameSpace__ecere__com__eEnum_AddFixedValue(struct __ecereNameSpace__ecere__com__Class * _class, char * string, int value)
4294 void * __ecereTemp1;
4296 if(_class && _class->type == 4)
4298 struct __ecereNameSpace__ecere__com__EnumClassData * data = (struct __ecereNameSpace__ecere__com__EnumClassData *)_class->data;
4299 struct __ecereNameSpace__ecere__sys__NamedLink * item;
4301 for(item = data->values.first; item; item = item->next)
4302 if(!strcmp(item->name, string))
4306 __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)));
4307 if(value > data->largest)
4308 data->largest = value;
4313 int __ecereNameSpace__ecere__com__eEnum_AddValue(struct __ecereNameSpace__ecere__com__Class * _class, char * string)
4315 void * __ecereTemp1;
4317 if(_class && _class->type == 4)
4319 struct __ecereNameSpace__ecere__com__EnumClassData * data = (struct __ecereNameSpace__ecere__com__EnumClassData *)_class->data;
4320 int value = data->largest + 1;
4321 struct __ecereNameSpace__ecere__sys__NamedLink * item;
4323 for(item = data->values.first; item; item = item->next)
4324 if(!strcmp(item->name, string))
4328 __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)));
4329 if(value > data->largest)
4330 data->largest = value;
4337 static void __ecereNameSpace__ecere__com__NameSpace_Free(struct __ecereNameSpace__ecere__com__NameSpace * parentNameSpace)
4339 struct __ecereNameSpace__ecere__com__NameSpace * nameSpace;
4341 (__ecereNameSpace__ecere__com__eSystem_Delete(parentNameSpace->name), parentNameSpace->name = 0);
4342 while((nameSpace = (struct __ecereNameSpace__ecere__com__NameSpace *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&parentNameSpace->nameSpaces)))
4344 __ecereNameSpace__ecere__com__NameSpace_Free(nameSpace);
4345 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&parentNameSpace->nameSpaces, (struct __ecereNameSpace__ecere__sys__BTNode *)nameSpace);
4349 static void __ecereNameSpace__ecere__com__Application_Destructor(struct __ecereNameSpace__ecere__com__Instance * app)
4351 if(((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 300)))->parsedCommand)
4353 (__ecereNameSpace__ecere__com__eSystem_Delete(((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 300)))->argv), ((struct __ecereNameSpace__ecere__com__Application * )(((char * )app + 300)))->argv = 0);
4354 (__ecereNameSpace__ecere__com__eSystem_Delete(((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 300)))->parsedCommand), ((struct __ecereNameSpace__ecere__com__Application * )(((char * )app + 300)))->parsedCommand = 0);
4358 static unsigned int __ecereNameSpace__ecere__com__Module_Constructor(struct __ecereNameSpace__ecere__com__Instance * module)
4360 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->privateNameSpace.classes.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
4361 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->privateNameSpace.defines.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
4362 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->privateNameSpace.functions.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
4363 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->privateNameSpace.nameSpaces.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
4364 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->publicNameSpace.classes.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
4365 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->publicNameSpace.defines.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
4366 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->publicNameSpace.functions.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
4367 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->publicNameSpace.nameSpaces.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
4371 static void __ecereNameSpace__ecere__com__Module_Destructor(struct __ecereNameSpace__ecere__com__Instance * module)
4373 struct __ecereNameSpace__ecere__com__Class * _class;
4374 struct __ecereNameSpace__ecere__com__DefinedExpression * def;
4375 struct __ecereNameSpace__ecere__com__GlobalFunction * function;
4376 struct __ecereNameSpace__ecere__com__Instance * m;
4377 struct __ecereNameSpace__ecere__com__SubModule * handle;
4379 for(m = ((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application + 300)))->allModules.first; m; m = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)m + 12)))->next)
4381 struct __ecereNameSpace__ecere__com__SubModule * next;
4383 for(handle = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)m + 12)))->modules.first; handle; handle = next)
4385 next = handle->next;
4386 if(handle->module == module)
4387 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)m + 12)))->modules, handle);
4390 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->Unload)
4392 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->origImportType == 1)
4394 unsigned int (* Unload)(struct __ecereNameSpace__ecere__com__Instance * module) = (void *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->Unload;
4400 unsigned int (stdcall * Unload)(struct __ecereNameSpace__ecere__com__Instance * module) = (void *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->Unload;
4406 struct __ecereNameSpace__ecere__com__Instance * ourWorld = __ecereClass___ecereNameSpace__ecere__com__Class->module;
4407 void * ourHandle = (((void *)0));
4409 while((handle = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->modules.last))
4411 struct __ecereNameSpace__ecere__com__Instance * depModule = handle->module;
4413 if(depModule == ourWorld)
4415 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->modules, handle);
4420 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->modules, handle);
4421 (__ecereNameSpace__ecere__com__eInstance_DecRef(depModule), depModule = 0);
4426 (__ecereNameSpace__ecere__com__eSystem_Delete(ourHandle), ourHandle = 0);
4427 (__ecereNameSpace__ecere__com__eInstance_DecRef(ourWorld), ourWorld = 0);
4430 for(; (_class = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->classes.first); )
4432 if(_class->nameSpace)
4434 struct __ecereNameSpace__ecere__com__BTNamedLink * classLink = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&(*_class->nameSpace).classes, _class->name);
4435 struct __ecereNameSpace__ecere__sys__OldLink * t;
4437 for(t = _class->templatized.first; t; t = t->next)
4439 struct __ecereNameSpace__ecere__com__Class * template = t->data;
4440 struct __ecereNameSpace__ecere__com__BTNamedLink * link;
4442 link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&(*template->nameSpace).classes, template->name);
4443 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&(*template->nameSpace).classes, (struct __ecereNameSpace__ecere__sys__BTNode *)link);
4444 template->nameSpace = (((void *)0));
4446 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&(*_class->nameSpace).classes, (struct __ecereNameSpace__ecere__sys__BTNode *)classLink);
4447 _class->nameSpace = (((void *)0));
4449 _class->module = (((void *)0));
4450 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->classes, _class);
4451 if(!_class->count || _class->type != 0)
4452 __ecereNameSpace__ecere__com__eClass_Unregister(_class);
4457 for(; (def = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->defines.first); )
4461 struct __ecereNameSpace__ecere__com__BTNamedLink * defLink;
4463 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)))
4464 if(defLink->data == def)
4466 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&(*def->nameSpace).defines, (struct __ecereNameSpace__ecere__sys__BTNode *)defLink);
4470 (__ecereNameSpace__ecere__com__eSystem_Delete(def->name), def->name = 0);
4471 (__ecereNameSpace__ecere__com__eSystem_Delete(def->value), def->value = 0);
4472 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->defines, def);
4474 for(; (function = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->functions.first); )
4476 if(function->nameSpace)
4478 struct __ecereNameSpace__ecere__com__BTNamedLink * functionLink;
4480 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)))
4481 if(functionLink->data == function)
4483 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&(*function->nameSpace).functions, (struct __ecereNameSpace__ecere__sys__BTNode *)functionLink);
4487 (__ecereNameSpace__ecere__com__eSystem_Delete(function->name), function->name = 0);
4488 (__ecereNameSpace__ecere__com__eSystem_Delete(function->dataTypeString), function->dataTypeString = 0);
4489 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->functions, function);
4491 (__ecereNameSpace__ecere__com__eSystem_Delete(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->name), ((struct __ecereNameSpace__ecere__com__Module * )(((char * )module + 12)))->name = 0);
4492 __ecereNameSpace__ecere__com__NameSpace_Free(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->privateNameSpace);
4493 __ecereNameSpace__ecere__com__NameSpace_Free(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->publicNameSpace);
4494 if(module != ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application)
4495 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove(&((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application + 300)))->allModules, module);
4497 __ecereNameSpace__ecere__com__NameSpace_Free(&((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application + 300)))->systemNameSpace);
4498 Instance_Module_Free(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->library);
4501 static int __ecereNameSpace__ecere__com__GetEnumSize(struct __ecereNameSpace__ecere__com__Class * _class)
4503 struct __ecereNameSpace__ecere__com__EnumClassData * data = (struct __ecereNameSpace__ecere__com__EnumClassData *)_class->data;
4505 return data->largest + 1;
4508 char * strlwr(char * string)
4512 for(c = 0; string[c]; c++)
4513 if(string[c] >= 'A' && string[c] <= 'Z')
4514 string[c] += 'a' - 'A';
4518 char * strupr(char * string)
4522 for(c = 0; string[c]; c++)
4523 if(string[c] >= 'a' && string[c] <= 'z')
4524 string[c] -= 'a' - 'A';
4528 struct __ecereNameSpace__ecere__com__DefinedExpression * __ecereNameSpace__ecere__com__eSystem_RegisterDefine(char * name, char * value, struct __ecereNameSpace__ecere__com__Instance * module, int declMode)
4530 void * __ecereTemp1;
4531 struct __ecereNameSpace__ecere__com__NameSpace * nameSpace = (((void *)0));
4534 nameSpace = (declMode == 1) ? &((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->publicNameSpace : &((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->privateNameSpace;
4536 nameSpace = &((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application + 300)))->systemNameSpace;
4539 for(c = 0; name[c]; c++)
4541 if(name[c] == '.' || (name[c] == ':' && name[c + 1] == ':'))
4543 struct __ecereNameSpace__ecere__com__NameSpace * newSpace;
4544 char * spaceName = __ecereNameSpace__ecere__com___malloc(c - start + 1);
4546 strncpy(spaceName, name + start, c - start);
4547 spaceName[c - start] = '\0';
4548 newSpace = (struct __ecereNameSpace__ecere__com__NameSpace *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&(*nameSpace).nameSpaces, spaceName);
4551 newSpace = __ecereNameSpace__ecere__com__eSystem_New0(sizeof(struct __ecereNameSpace__ecere__com__NameSpace) * (1));
4552 (*newSpace).classes.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
4553 (*newSpace).defines.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
4554 (*newSpace).functions.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
4555 (*newSpace).nameSpaces.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
4556 (*newSpace).name = spaceName;
4557 (*newSpace).parent = nameSpace;
4558 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&(*nameSpace).nameSpaces, (struct __ecereNameSpace__ecere__sys__BTNode *)newSpace);
4561 (__ecereNameSpace__ecere__com__eSystem_Delete(spaceName), spaceName = 0);
4562 nameSpace = newSpace;
4571 if(c - start && !__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&(*nameSpace).defines, name + start))
4573 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);
4575 __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)));
4576 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->defines, def);
4579 return (((void *)0));
4582 struct __ecereNameSpace__ecere__com__GlobalFunction * __ecereNameSpace__ecere__com__eSystem_RegisterFunction(char * name, char * type, void * func, struct __ecereNameSpace__ecere__com__Instance * module, int declMode)
4584 void * __ecereTemp1;
4585 struct __ecereNameSpace__ecere__com__NameSpace * nameSpace = (((void *)0));
4588 nameSpace = (declMode == 1) ? &((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->publicNameSpace : &((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->privateNameSpace;
4590 nameSpace = &((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application + 300)))->systemNameSpace;
4593 for(c = 0; name[c]; c++)
4595 if(name[c] == '.' || (name[c] == ':' && name[c + 1] == ':'))
4597 struct __ecereNameSpace__ecere__com__NameSpace * newSpace;
4598 char * spaceName = __ecereNameSpace__ecere__com___malloc(c - start + 1);
4600 strncpy(spaceName, name + start, c - start);
4601 spaceName[c - start] = '\0';
4602 newSpace = (struct __ecereNameSpace__ecere__com__NameSpace *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&(*nameSpace).nameSpaces, spaceName);
4605 newSpace = __ecereNameSpace__ecere__com__eSystem_New0(sizeof(struct __ecereNameSpace__ecere__com__NameSpace) * (1));
4606 (*newSpace).classes.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
4607 (*newSpace).defines.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
4608 (*newSpace).functions.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
4609 (*newSpace).nameSpaces.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
4610 (*newSpace).name = spaceName;
4611 (*newSpace).parent = nameSpace;
4612 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&(*nameSpace).nameSpaces, (struct __ecereNameSpace__ecere__sys__BTNode *)newSpace);
4615 (__ecereNameSpace__ecere__com__eSystem_Delete(spaceName), spaceName = 0);
4616 nameSpace = newSpace;
4625 if(c - start && !__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&(*nameSpace).functions, name + start))
4627 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);
4629 __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)));
4630 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->functions, function);
4633 return (((void *)0));
4636 struct __ecereNameSpace__ecere__com__DefinedExpression * __ecereNameSpace__ecere__com__eSystem_FindDefine(struct __ecereNameSpace__ecere__com__Instance * module, char * name)
4640 struct __ecereNameSpace__ecere__com__BTNamedLink * link;
4642 link = __ecereNameSpace__ecere__com__SearchNameSpace(&((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application + 300)))->systemNameSpace, name, &(*((struct __ecereNameSpace__ecere__com__NameSpace *)0)).defines);
4645 link = __ecereNameSpace__ecere__com__SearchModule(module, name, &(*((struct __ecereNameSpace__ecere__com__NameSpace *)0)).defines, 0x1);
4649 return (((void *)0));
4652 struct __ecereNameSpace__ecere__com__GlobalFunction * __ecereNameSpace__ecere__com__eSystem_FindFunction(struct __ecereNameSpace__ecere__com__Instance * module, char * name)
4656 struct __ecereNameSpace__ecere__com__BTNamedLink * link;
4658 link = __ecereNameSpace__ecere__com__SearchNameSpace(&((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application + 300)))->systemNameSpace, name, &(*((struct __ecereNameSpace__ecere__com__NameSpace *)0)).functions);
4661 link = __ecereNameSpace__ecere__com__SearchModule(module, name, &(*((struct __ecereNameSpace__ecere__com__NameSpace *)0)).functions, 0x1);
4665 return (((void *)0));
4668 void * __ecereNameSpace__ecere__com__eSystem_Renew(void * memory, unsigned int size)
4670 return __ecereNameSpace__ecere__com___realloc(memory, size);
4673 void * __ecereNameSpace__ecere__com__eSystem_Renew0(void * memory, unsigned int size)
4675 return __ecereNameSpace__ecere__com___crealloc(memory, size);
4678 void * __ecereNameSpace__ecere__com__eSystem_New(unsigned int size)
4680 return __ecereNameSpace__ecere__com___malloc(size);
4683 void * __ecereNameSpace__ecere__com__eSystem_New0(unsigned int size)
4685 return __ecereNameSpace__ecere__com___calloc(1, size);
4688 void __ecereNameSpace__ecere__com__eSystem_Delete(void * memory)
4691 __ecereNameSpace__ecere__com___free(memory);
4694 void __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property)
4696 if(instance && _property && _property->selfWatchable)
4698 struct __ecereNameSpace__ecere__com__Class * _class;
4700 for(_class = ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class; _class; _class = _class->base)
4702 struct __ecereNameSpace__ecere__com__SelfWatcher * selfWatcher, * next;
4704 for(selfWatcher = _class->selfWatchers.first; selfWatcher; selfWatcher = next)
4706 next = selfWatcher->next;
4707 if(selfWatcher->_property == _property)
4708 selfWatcher->callback(instance);
4714 void __ecereNameSpace__ecere__com__eInstance_FireWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property)
4716 if(instance && _property && _property->isWatchable)
4718 struct __ecereNameSpace__ecere__sys__OldList * watchers = (struct __ecereNameSpace__ecere__sys__OldList *)((unsigned char *)instance + _property->watcherOffset);
4719 struct __ecereNameSpace__ecere__com__Watcher * watcher, * next;
4721 for(watcher = (*watchers).first; watcher; watcher = next)
4723 next = watcher->next;
4724 watcher->callback(watcher->object, instance);
4729 void __ecereNameSpace__ecere__com__eProperty_Watchable(struct __ecereNameSpace__ecere__com__Property * _property)
4731 if(!_property->isWatchable)
4733 struct __ecereNameSpace__ecere__com__Class * _class = _property->_class;
4735 if(!_class->computeSize)
4737 _property->watcherOffset = _class->structSize;
4738 _class->structSize += sizeof(struct __ecereNameSpace__ecere__sys__OldList);
4739 __ecereNameSpace__ecere__com__FixDerivativesBase(_class, _class);
4741 _property->isWatchable = 0x1;
4745 void __ecereNameSpace__ecere__com__eClass_DestructionWatchable(struct __ecereNameSpace__ecere__com__Class * _class)
4747 if(!_class->destructionWatchOffset)
4749 _class->destructionWatchOffset = _class->structSize;
4750 _class->structSize += sizeof(struct __ecereNameSpace__ecere__sys__OldList);
4751 __ecereNameSpace__ecere__com__FixDerivativesBase(_class, _class);
4755 void __ecereNameSpace__ecere__com__eProperty_SelfWatch(struct __ecereNameSpace__ecere__com__Class * _class, char * name, void (* callback)(void *))
4757 void * __ecereTemp1;
4761 struct __ecereNameSpace__ecere__com__Property * _property = __ecereNameSpace__ecere__com__eClass_FindProperty(_class, name, _class->module);
4764 _property = __ecereNameSpace__ecere__com__eClass_AddProperty(_class, name, (((void *)0)), (((void *)0)), (((void *)0)), 4);
4765 __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)));
4766 _property->selfWatchable = 0x1;
4770 void __ecereNameSpace__ecere__com__eInstance_Watch(void * instance, struct __ecereNameSpace__ecere__com__Property * _property, void * object, void (* callback)(void *, void *))
4772 void * __ecereTemp1;
4774 if(_property->isWatchable)
4776 struct __ecereNameSpace__ecere__sys__OldList * watchers = (struct __ecereNameSpace__ecere__sys__OldList *)((unsigned char *)instance + _property->watcherOffset);
4778 __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)));
4782 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 *))
4784 void * __ecereTemp1;
4785 struct __ecereNameSpace__ecere__sys__OldList * watchers = (struct __ecereNameSpace__ecere__sys__OldList *)((unsigned char *)instance + ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class->destructionWatchOffset);
4787 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*watchers), (__ecereTemp1 = __ecereNameSpace__ecere__com__eSystem_New0(16), ((struct __ecereNameSpace__ecere__com__Watcher *)__ecereTemp1)->callback = callback, ((struct __ecereNameSpace__ecere__com__Watcher *)__ecereTemp1)->object = object, ((struct __ecereNameSpace__ecere__com__Watcher *)__ecereTemp1)));
4790 void __ecereNameSpace__ecere__com__eInstance_StopWatching(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, struct __ecereNameSpace__ecere__com__Instance * object)
4792 if(instance && (!_property || _property->isWatchable))
4796 struct __ecereNameSpace__ecere__sys__OldList * watchers = (struct __ecereNameSpace__ecere__sys__OldList *)((unsigned char *)instance + _property->watcherOffset);
4797 struct __ecereNameSpace__ecere__com__Watcher * watcher;
4799 for(watcher = (*watchers).first; watcher; watcher = watcher->next)
4800 if(watcher->object == object)
4802 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete((&*watchers), watcher);
4808 struct __ecereNameSpace__ecere__com__Class * _class, * base;
4810 for(_class = ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class; _class; _class = base)
4812 if(_class->destructionWatchOffset)
4814 struct __ecereNameSpace__ecere__sys__OldList * watchers = (struct __ecereNameSpace__ecere__sys__OldList *)((unsigned char *)instance + _class->destructionWatchOffset);
4815 struct __ecereNameSpace__ecere__com__Watcher * watcher;
4817 for(watcher = (*watchers).first; watcher; watcher = watcher->next)
4819 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete((&*watchers), watcher);
4823 for(_property = (struct __ecereNameSpace__ecere__com__Property *)_class->membersAndProperties.first; _property; _property = _property->next)
4825 if(_property->isProperty && _property->isWatchable)
4827 struct __ecereNameSpace__ecere__sys__OldList * watchers = (struct __ecereNameSpace__ecere__sys__OldList *)((unsigned char *)instance + _property->watcherOffset);
4828 struct __ecereNameSpace__ecere__com__Watcher * watcher;
4830 for(watcher = (*watchers).first; watcher; watcher = watcher->next)
4831 if(watcher->object == object)
4833 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete((&*watchers), watcher);
4838 base = _class->base;
4839 if(base && base->type == 1000)
4840 base = (((void *)0));
4846 struct __ecereNameSpace__ecere__com__Class * __ecereNameSpace__ecere__com__eClass_GetDesigner(struct __ecereNameSpace__ecere__com__Class * _class)
4848 for(; _class; _class = _class->base)
4850 if(_class->designerClass)
4851 return (struct __ecereNameSpace__ecere__com__Class *)__ecereNameSpace__ecere__com__eSystem_FindClass(_class->module, _class->designerClass);
4853 return (((void *)0));
4856 struct __ecereNameSpace__ecere__com__Class * __ecereNameSpace__ecere__com__eInstance_GetDesigner(struct __ecereNameSpace__ecere__com__Instance * instance)
4859 return __ecereNameSpace__ecere__com__eClass_GetDesigner(((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class);
4860 return (((void *)0));
4863 unsigned int __ecereNameSpace__ecere__com__LocateModule(char * name, char * fileName)
4865 return Instance_LocateModule(name, fileName);
4868 extern void __ecereNameSpace__ecere__com__InitializeDataTypes1(struct __ecereNameSpace__ecere__com__Instance * module);
4870 extern void __ecereNameSpace__ecere__com__InitializeDataTypes(struct __ecereNameSpace__ecere__com__Instance * module);
4872 extern double sin(struct __ecereNameSpace__ecere__com__Instance * number);
4874 extern double sinh(struct __ecereNameSpace__ecere__com__Instance * number);
4876 extern double cosh(struct __ecereNameSpace__ecere__com__Instance * number);
4878 extern double tanh(struct __ecereNameSpace__ecere__com__Instance * number);
4880 extern double sqrt(double number);
4882 extern double cos(struct __ecereNameSpace__ecere__com__Instance * number);
4884 extern double tan(struct __ecereNameSpace__ecere__com__Instance * number);
4886 extern struct __ecereNameSpace__ecere__com__Instance * atan2(double y, double x);
4888 extern struct __ecereNameSpace__ecere__com__Instance * asin(double number);
4890 extern struct __ecereNameSpace__ecere__com__Instance * acos(double number);
4892 extern struct __ecereNameSpace__ecere__com__Instance * atan(double number);
4894 extern double pow(double number, double number2);
4896 extern double fmod(double x, double y);
4898 extern double fabs(double number);
4900 extern double log(double number);
4902 extern double log10(double number);
4904 extern double ceil(double number);
4906 extern double floor(double number);
4908 extern double exp(double number);
4910 extern void qsort(void * , unsigned int, unsigned int, int (* )(void * , void * ));
4912 extern int system(const char * );
4914 extern int atoi(const char * );
4916 extern float atof(const char * );
4918 extern int tolower(int);
4920 extern int toupper(int);
4922 extern unsigned int isdigit(int);
4924 extern char * getenv(const char * name);
4926 extern int rename(const char * oldpath, const char * newpath);
4928 extern char * strncat(char * , const char * , int n);
4930 extern int strcasecmp(const char * , const char * );
4932 extern int strncasecmp(const char * , const char * , int n);
4934 extern int strncmp(const char * , const char * , int n);
4936 extern int vsprintf(char * , const char * , __builtin_va_list);
4938 extern int puts(char * );
4940 extern int fputs(char * , void * stream);
4942 extern int isalnum(int c);
4944 extern int isalpha(int c);
4946 extern int islower(int c);
4948 extern int isupper(int c);
4950 extern int isprint(int c);
4952 static void __ecereNameSpace__ecere__com__LoadCOM(struct __ecereNameSpace__ecere__com__Instance * module)
4954 struct __ecereNameSpace__ecere__com__Class * applicationClass;
4955 struct __ecereNameSpace__ecere__com__Class * enumClass, * structClass, * boolClass;
4956 struct __ecereNameSpace__ecere__com__Class * moduleClass;
4957 struct __ecereNameSpace__ecere__com__Class * baseClass = __ecereNameSpace__ecere__com__eSystem_RegisterClass(0, "class", (((void *)0)), 0, 0, (((void *)0)), (((void *)0)), module, 4, 1);
4959 baseClass->type = 1000;
4960 baseClass->memberOffset = 0;
4961 baseClass->offset = 0;
4962 baseClass->structSize = 0;
4963 baseClass->typeSize = 0;
4965 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);
4967 instanceClass->type = 1000;
4968 instanceClass->fixed = 0x1;
4969 instanceClass->memberOffset = 0;
4970 instanceClass->offset = 0;
4971 instanceClass->memberID = -3;
4972 instanceClass->startMemberID = -3;
4973 __ecereNameSpace__ecere__com__eClass_AddDataMember(instanceClass, "_vTbl", "int (**)()", sizeof(int (**)()), 4, 1);
4974 __ecereNameSpace__ecere__com__eClass_AddDataMember(instanceClass, "_class", "ecere::com::Class", sizeof(struct __ecereNameSpace__ecere__com__Class *), 4, 1);
4975 __ecereNameSpace__ecere__com__eClass_AddDataMember(instanceClass, "_refCount", "int", sizeof(int (**)()), 4, 1);
4977 __ecereNameSpace__ecere__com__InitializeDataTypes1(module);
4978 enumClass = __ecereNameSpace__ecere__com__eSystem_RegisterClass(0, "enum", (((void *)0)), 0, sizeof(struct __ecereNameSpace__ecere__com__EnumClassData), (((void *)0)), (((void *)0)), module, 4, 1);
4979 __ecereNameSpace__ecere__com__eClass_AddClassProperty(enumClass, "enumSize", "int", (((void *)0)), __ecereNameSpace__ecere__com__GetEnumSize)->constant = 0x1;
4980 enumClass->type = 1000;
4981 (__ecereNameSpace__ecere__com__eSystem_Delete(enumClass->dataTypeString), enumClass->dataTypeString = 0);
4982 enumClass->dataTypeString = __ecereNameSpace__ecere__sys__CopyString("int");
4983 structClass = __ecereNameSpace__ecere__com__eSystem_RegisterClass(0, "struct", (((void *)0)), 0, 0, (((void *)0)), (((void *)0)), module, 4, 1);
4984 structClass->type = 1000;
4985 structClass->memberOffset = 0;
4986 structClass->offset = 0;
4987 structClass->structSize = 0;
4988 structClass->typeSize = 0;
4989 __ecereNameSpace__ecere__com__InitializeDataTypes(module);
4990 boolClass = __ecereNameSpace__ecere__com__eSystem_RegisterClass(4, "bool", "uint", 0, 0, (((void *)0)), (((void *)0)), module, 4, 1);
4991 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(boolClass, "true", (unsigned int)0x1);
4992 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(boolClass, "false", (unsigned int)0x0);
4993 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);
4994 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(moduleClass, "OnLoad", "bool()", (((void *)0)), 1);
4995 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(moduleClass, "OnUnload", "void()", (((void *)0)), 1);
4996 __ecereNameSpace__ecere__com__eClass_AddMethod(moduleClass, "Load", "Module(char * name, AccessMode importAccess)", __ecereNameSpace__ecere__com__eModule_Load, 1);
4997 __ecereNameSpace__ecere__com__eClass_AddMethod(moduleClass, "Unload", "void(Module module)", __ecereNameSpace__ecere__com__eModule_Unload, 1);
4998 __ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "application", "Application", sizeof(struct __ecereNameSpace__ecere__com__Instance *), 4, 1);
4999 __ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "classes", "OldList", sizeof(struct __ecereNameSpace__ecere__sys__OldList), 4, 1);
5000 __ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "defines", "OldList", sizeof(struct __ecereNameSpace__ecere__sys__OldList), 4, 1);
5001 __ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "functions", "OldList", sizeof(struct __ecereNameSpace__ecere__sys__OldList), 4, 1);
5002 __ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "modules", "OldList", sizeof(struct __ecereNameSpace__ecere__sys__OldList), 4, 1);
5003 __ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "prev", "Module", sizeof(struct __ecereNameSpace__ecere__com__Instance *), 4, 1);
5004 __ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "next", "Module", sizeof(struct __ecereNameSpace__ecere__com__Instance *), 4, 1);
5005 __ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "name", "char *", sizeof(char *), 4, 1);
5006 __ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "library", "void *", sizeof(void *), 4, 1);
5007 __ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "Unload", "void *", sizeof(void *), 4, 1);
5008 __ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "importType", "ImportType", sizeof(int), 4, 1);
5009 __ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "origImportType", "ImportType", sizeof(int), 4, 1);
5010 __ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "privateNameSpace", "NameSpace", sizeof(struct __ecereNameSpace__ecere__com__NameSpace), 4, 1);
5011 __ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "publicNameSpace", "NameSpace", sizeof(struct __ecereNameSpace__ecere__com__NameSpace), 4, 1);
5012 moduleClass->fixed = 0x1;
5013 moduleClass->count++;
5014 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);
5015 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(applicationClass, "Main", "void()", (((void *)0)), 1);
5016 __ecereNameSpace__ecere__com__eClass_AddDataMember(applicationClass, "argc", "int", sizeof(int), 4, 1);
5017 __ecereNameSpace__ecere__com__eClass_AddDataMember(applicationClass, "argv", "char **", sizeof(char **), 4, 1);
5018 __ecereNameSpace__ecere__com__eClass_AddDataMember(applicationClass, "exitCode", "int", sizeof(int), 4, 1);
5019 __ecereNameSpace__ecere__com__eClass_AddDataMember(applicationClass, "isGUIApp", "bool", sizeof(unsigned int), 4, 1);
5020 __ecereNameSpace__ecere__com__eClass_AddDataMember(applicationClass, "allModules", "OldList", sizeof(struct __ecereNameSpace__ecere__sys__OldList), 4, 1);
5021 __ecereNameSpace__ecere__com__eClass_AddDataMember(applicationClass, "parsedCommand", "char *", sizeof(char *), 4, 1);
5022 __ecereNameSpace__ecere__com__eClass_AddDataMember(applicationClass, "systemNameSpace", "NameSpace", sizeof(struct __ecereNameSpace__ecere__com__NameSpace), 4, 1);
5023 applicationClass->fixed = 0x1;
5024 applicationClass->count++;
5025 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("sin", "double sin(Angle number)", sin, module, 4);
5026 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("sinh", "double sinh(Angle number)", sinh, module, 4);
5027 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("cosh", "double cosh(Angle number)", cosh, module, 4);
5028 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("tanh", "double tanh(Angle number)", tanh, module, 4);
5029 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("sqrt", "double sqrt(double number)", sqrt, module, 4);
5030 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("cos", "double cos(Angle number)", cos, module, 4);
5031 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("tan", "double tan(Angle number)", tan, module, 4);
5032 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("atan2", "Angle atan2(double y, double x)", atan2, module, 4);
5033 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("asin", "Angle asin(double number)", asin, module, 4);
5034 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("acos", "Angle acos(double number)", acos, module, 4);
5035 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("atan", "Angle atan(double number)", atan, module, 4);
5036 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("pow", "double pow(double number, double number2)", pow, module, 4);
5037 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("fmod", "double fmod(double x, double y)", fmod, module, 4);
5038 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("fabs", "double fabs(double number)", fabs, module, 4);
5039 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("log", "double log(double number)", log, module, 4);
5040 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("log10", "double log10(double number)", log10, module, 4);
5041 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ceil", "double ceil(double number)", ceil, module, 4);
5042 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("floor", "double floor(double number)", floor, module, 4);
5043 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("exp", "double exp(double number)", exp, module, 4);
5044 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("qsort", "void qsort(void *, uint, uint, int (*)(void *, void *))", qsort, module, 4);
5045 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strtod", "double strtod(char*, char**)", strtod, module, 4);
5046 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strtol", "int strtol(char*, char**, int base)", strtol, module, 4);
5047 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("system", "int system(const char*)", system, module, 4);
5048 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("atoi", "int atoi(const char*)", atoi, module, 4);
5049 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("atof", "float atof(const char*)", atof, module, 4);
5050 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("tolower", "int tolower(int)", tolower, module, 4);
5051 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("toupper", "int toupper(int)", toupper, module, 4);
5052 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("isdigit", "bool isdigit(int)", isdigit, module, 4);
5053 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("memset", "void memset(void * area, byte value, uint count)", memset, module, 4);
5054 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("getenv", "char * getenv(const char * name)", getenv, module, 4);
5055 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("rename", "int rename(const char *oldpath, const char *newpath)", rename, module, 4);
5056 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strlen", "int strlen(const char *)", strlen, module, 4);
5057 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strcat", "char * strcat(char *, const char *)", strcat, module, 4);
5058 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strncat", "char * strncat(char *, const char *, int n)", strncat, module, 4);
5059 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strchr", "char * strchr(char *, int)", strchr, module, 4);
5060 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strstr", "char * strstr(char *, const char *)", strstr, module, 4);
5061 __ecereNameSpace__ecere__com__eSystem_RegisterDefine("fstrcmp", "(GetRuntimePlatform() == win32) ? strcmpi : strcmp", module, 4);
5062 __ecereNameSpace__ecere__com__eSystem_RegisterDefine("strcmpi", "strcasecmp", module, 4);
5063 __ecereNameSpace__ecere__com__eSystem_RegisterDefine("strnicmp", "strncasecmp", module, 4);
5064 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strcasecmp", "int strcasecmp(const char *, const char *)", strcasecmp, module, 4);
5065 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strncasecmp", "int strncasecmp(const char *, const char *, int n)", strncasecmp, module, 4);
5066 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strcmp", "int strcmp(const char *, const char *)", strcmp, module, 4);
5067 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strncmp", "int strncmp(const char *, const char *, int n)", strncmp, module, 4);
5068 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strlwr", "char * strlwr(char *)", strlwr, module, 4);
5069 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strupr", "char * strupr(char *)", strupr, module, 4);
5070 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strcpy", "char * strcpy(char *, const char *)", strcpy, module, 4);
5071 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strncpy", "char * strncpy(char *, const char *, int n)", strncpy, module, 4);
5072 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("memcpy", "void * memcpy(void *, const void *, uint size)", memcpy, module, 4);
5073 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("memmove", "void * memmove(void *, const void *, uint size)", memmove, module, 4);
5074 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("sprintf", "int sprintf(char *, char *, ...)", sprintf, module, 4);
5075 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("printf", "int printf(char *, ...)", printf, module, 4);
5076 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("vsprintf", "int vsprintf(char*, const char*, __builtin_va_list)", vsprintf, module, 4);
5077 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("puts", "int puts(char *)", puts, module, 4);
5078 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("fputs", "int fputs(char *, void * stream)", fputs, module, 4);
5079 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("isalnum", "int isalnum(int c)", isalnum, module, 4);
5080 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("isspace", "int isspace(int c)", isspace, module, 4);
5081 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("isalpha", "int isalpha(int c)", isalpha, module, 4);
5082 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("islower", "int islower(int c)", islower, module, 4);
5083 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("isupper", "int isupper(int c)", isupper, module, 4);
5084 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("isprint", "int isprint(int c)", isprint, module, 4);
5085 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strtoul", "unsigned long strtoul(const char * nptr, char ** endptr, int base)", strtoul, module, 4);
5088 struct __ecereNameSpace__ecere__com__Instance * __ecereNameSpace__ecere__com____ecere_COM_Initialize(unsigned int guiApp, int argc, char * argv[])
5090 struct __ecereNameSpace__ecere__com__Instance * app;
5092 __ecereNameSpace__ecere__com__memoryInitialized = 0x0;
5093 __ecereNameSpace__ecere__com__pools = (((void *)0));
5094 app = __ecereNameSpace__ecere__com___calloc(1, 428);
5095 __ecereNameSpace__ecere__com__Module_Constructor(app);
5096 ((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 300)))->systemNameSpace.classes.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
5097 ((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 300)))->systemNameSpace.defines.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
5098 ((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 300)))->systemNameSpace.functions.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
5099 ((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 300)))->systemNameSpace.nameSpaces.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
5100 Instance_COM_Initialize(argc, argv, &((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 300)))->parsedCommand, &((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 300)))->argc, &((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 300)))->argv);
5101 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)app + 12)))->application = app;
5102 ((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 300)))->allModules.offset = 12 + (unsigned int)&(*((struct __ecereNameSpace__ecere__com__Module *)0)).prev;
5103 ((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 300)))->isGUIApp = guiApp;
5104 __ecereNameSpace__ecere__com__LoadCOM(app);
5105 ((struct __ecereNameSpace__ecere__com__Instance *)(char *)app)->_class = __ecereNameSpace__ecere__com__eSystem_FindClass(app, "Application");
5109 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)
5111 void * __ecereTemp1;
5115 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param;
5117 for(param = _class->templateParams.first; param; param = param->next)
5119 if(!strcmp(param->name, name))
5122 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));
5123 if(defaultArg != (((void *)0)))
5125 param->defaultArg = *defaultArg;
5126 __ecereNameSpace__ecere__com__CopyTemplateArg(param, ¶m->defaultArg);
5128 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&_class->templateParams, param);
5131 return (((void *)0));
5134 void __ecereNameSpace__ecere__com__eClass_DoneAddingTemplateParameters(struct __ecereNameSpace__ecere__com__Class * base)
5138 struct __ecereNameSpace__ecere__sys__OldLink * derivative;
5139 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param;
5142 void * first = base->templateParams.first;
5143 int count = base->templateParams.count;
5145 base->templateParams.first = (((void *)0));
5146 base->templateParams.count = 0;
5147 __ecereNameSpace__ecere__com__FreeTemplateArgs(base);
5148 (__ecereNameSpace__ecere__com__eSystem_Delete(base->templateArgs), base->templateArgs = 0);
5149 __ecereNameSpace__ecere__com__FreeTemplatesDerivatives(base);
5150 base->templateParams.first = first;
5151 base->templateParams.count = count;
5153 for(param = base->templateParams.first; param; param = param->next)
5155 if(param->type == 1 && param->defaultArg.memberString)
5157 struct __ecereNameSpace__ecere__com__Class * memberClass = base;
5158 char * colon = strstr(param->defaultArg.memberString, "::");
5163 char className[1024];
5164 struct __ecereNameSpace__ecere__com__Class * sClass;
5166 memcpy(className, param->defaultArg.memberString, colon - param->defaultArg.memberString);
5167 className[colon - param->defaultArg.memberString] = '\0';
5168 memberName = colon + 2;
5169 for(sClass = base; sClass; sClass = sClass->base)
5171 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * cParam;
5172 struct __ecereNameSpace__ecere__com__Class * nextClass;
5175 for(nextClass = sClass->base; nextClass; nextClass = nextClass->base)
5176 id += nextClass->templateParams.count;
5177 if(sClass == base || base->templateArgs)
5179 for(cParam = sClass->templateParams.first; cParam; cParam = cParam->next)
5181 if(cParam->type == 0 && !strcmp(cParam->name, className))
5182 strcpy(className, (sClass == base) ? cParam->defaultArg.dataTypeString : base->templateArgs[id].dataTypeString);
5187 memberClass = __ecereNameSpace__ecere__com__eSystem_FindClass(base->module, className);
5189 memberClass = __ecereNameSpace__ecere__com__eSystem_FindClass(((struct __ecereNameSpace__ecere__com__Module *)(((char *)base->module + 12)))->application, className);
5192 memberName = param->defaultArg.memberString;
5195 switch(param->memberType)
5198 param->defaultArg.member = __ecereNameSpace__ecere__com__eClass_FindDataMember(memberClass, memberName, memberClass->module, (((void *)0)), (((void *)0)));
5201 param->defaultArg.method = __ecereNameSpace__ecere__com__eClass_FindMethod(memberClass, memberName, memberClass->module);
5204 param->defaultArg.prop = __ecereNameSpace__ecere__com__eClass_FindProperty(memberClass, memberName, memberClass->module);
5210 __ecereNameSpace__ecere__com__FixDerivativesBase(base, base);
5214 static void __ecereNameSpace__ecere__com__FreeTemplatesDerivatives(struct __ecereNameSpace__ecere__com__Class * base)
5216 struct __ecereNameSpace__ecere__sys__OldLink * derivative, * templateLink;
5218 for(derivative = base->derivatives.first; derivative; derivative = derivative->next)
5220 struct __ecereNameSpace__ecere__com__Class * _class = derivative->data;
5222 if(_class->templateArgs)
5224 __ecereNameSpace__ecere__com__FreeTemplateArgs(_class);
5225 (__ecereNameSpace__ecere__com__eSystem_Delete(_class->templateArgs), _class->templateArgs = 0);
5227 __ecereNameSpace__ecere__com__FreeTemplatesDerivatives(_class);
5229 for(templateLink = base->templatized.first; templateLink; templateLink = templateLink->next)
5231 struct __ecereNameSpace__ecere__com__Class * _class = templateLink->data;
5233 if(_class->templateArgs)
5235 __ecereNameSpace__ecere__com__FreeTemplateArgs(_class);
5236 (__ecereNameSpace__ecere__com__eSystem_Delete(_class->templateArgs), _class->templateArgs = 0);
5238 __ecereNameSpace__ecere__com__FreeTemplatesDerivatives(_class);
5242 static const char * __ecereNameSpace__ecere__com__platformNames[4] =
5244 "", "win32", "linux", "apple"
5247 static const int __ecereNameSpace__ecere__com__firstPlatform = 1;
5249 static struct __ecereNameSpace__ecere__com__Property * __ecereProp___ecereNameSpace__ecere__com__Platform_char__PTR_, * __ecerePropM___ecereNameSpace__ecere__com__Platform_char__PTR_;
5251 static const int __ecereNameSpace__ecere__com__lastPlatform = 3;
5253 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Platform;
5255 int __ecereVMethodID_class_OnGetString;
5257 char * __ecereProp___ecereNameSpace__ecere__com__Platform_Get_char__PTR_(int this)
5259 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)));
5262 int __ecereProp___ecereNameSpace__ecere__com__Platform_Set_char__PTR_(char * value)
5268 for(c = __ecereNameSpace__ecere__com__firstPlatform; c <= __ecereNameSpace__ecere__com__lastPlatform; c++)
5269 if(!strcasecmp(value, __ecereNameSpace__ecere__com__platformNames[c]))
5275 char * __ecereMethod___ecereNameSpace__ecere__com__Platform_OnGetString(struct __ecereNameSpace__ecere__com__Class * class, int * this, char * tempString, void * fieldData, unsigned int * needClass)
5277 if((*(this)) >= __ecereNameSpace__ecere__com__firstPlatform && (*(this)) <= __ecereNameSpace__ecere__com__lastPlatform)
5280 strcpy(tempString, __ecereNameSpace__ecere__com__platformNames[*(int *)this]);
5281 return __ecereNameSpace__ecere__com__platformNames[*(int *)this];
5283 if(tempString && tempString[0])
5284 tempString[0] = '\0';
5285 return (((void *)0));
5288 unsigned int __ecereMethod___ecereNameSpace__ecere__com__Platform_OnGetDataFromString(struct __ecereNameSpace__ecere__com__Class * class, int * this, char * string)
5290 (*(this)) = __ecereProp___ecereNameSpace__ecere__com__Platform_Set_char__PTR_(string);
5291 return (unsigned int)*(int *)this;
5294 extern int runtimePlatform;
5296 int __ecereNameSpace__ecere__com__GetRuntimePlatform()
5298 return runtimePlatform;
5301 struct __ecereNameSpace__ecere__com__ObjectInfo
5303 struct __ecereNameSpace__ecere__com__ObjectInfo * prev, * next;
5304 struct __ecereNameSpace__ecere__com__Instance * instance;
5306 struct __ecereNameSpace__ecere__com__Instance * instCode;
5307 unsigned int deleted;
5308 struct __ecereNameSpace__ecere__com__ObjectInfo * oClass;
5309 struct __ecereNameSpace__ecere__sys__OldList instances;
5310 struct __ecereNameSpace__ecere__com__Instance * classDefinition;
5311 unsigned int modified;
5314 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__ObjectInfo;
5316 static struct __ecereNameSpace__ecere__com__Property * __ecereProp___ecereNameSpace__ecere__com__DesignerBase_classDesigner, * __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_classDesigner;
5318 static struct __ecereNameSpace__ecere__com__Property * __ecereProp___ecereNameSpace__ecere__com__DesignerBase_objectClass, * __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_objectClass;
5320 static struct __ecereNameSpace__ecere__com__Property * __ecereProp___ecereNameSpace__ecere__com__DesignerBase_isDragging, * __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_isDragging;
5322 struct __ecereNameSpace__ecere__com__DesignerBase
5324 struct __ecereNameSpace__ecere__com__Instance * classDesigner;
5326 unsigned int isDragging;
5329 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__DesignerBase;
5331 struct __ecereNameSpace__ecere__com__Instance * __ecereProp___ecereNameSpace__ecere__com__DesignerBase_Get_classDesigner(struct __ecereNameSpace__ecere__com__Instance * this)
5333 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);
5335 return __ecerePointer___ecereNameSpace__ecere__com__DesignerBase->classDesigner;
5338 void __ecereProp___ecereNameSpace__ecere__com__DesignerBase_Set_classDesigner(struct __ecereNameSpace__ecere__com__Instance * this, struct __ecereNameSpace__ecere__com__Instance * value)
5340 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);
5342 __ecerePointer___ecereNameSpace__ecere__com__DesignerBase->classDesigner = value;
5343 __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(this, __ecereProp___ecereNameSpace__ecere__com__DesignerBase_classDesigner), __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(this, __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_classDesigner);
5346 char * __ecereProp___ecereNameSpace__ecere__com__DesignerBase_Get_objectClass(struct __ecereNameSpace__ecere__com__Instance * this)
5348 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);
5350 return __ecerePointer___ecereNameSpace__ecere__com__DesignerBase->objectClass;
5353 void __ecereProp___ecereNameSpace__ecere__com__DesignerBase_Set_objectClass(struct __ecereNameSpace__ecere__com__Instance * this, char * value)
5355 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);
5357 __ecerePointer___ecereNameSpace__ecere__com__DesignerBase->objectClass = value;
5358 __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(this, __ecereProp___ecereNameSpace__ecere__com__DesignerBase_objectClass), __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(this, __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_objectClass);
5361 unsigned int __ecereProp___ecereNameSpace__ecere__com__DesignerBase_Get_isDragging(struct __ecereNameSpace__ecere__com__Instance * this)
5363 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);
5365 return __ecerePointer___ecereNameSpace__ecere__com__DesignerBase->isDragging;
5368 void __ecereProp___ecereNameSpace__ecere__com__DesignerBase_Set_isDragging(struct __ecereNameSpace__ecere__com__Instance * this, unsigned int value)
5370 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);
5372 __ecerePointer___ecereNameSpace__ecere__com__DesignerBase->isDragging = value;
5373 __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(this, __ecereProp___ecereNameSpace__ecere__com__DesignerBase_isDragging), __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(this, __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_isDragging);
5376 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__ClassDesignerBase;
5378 struct __ecereNameSpace__ecere__com__Instance * __ecereNameSpace__ecere__com__activeDesigner;
5380 void __ecereNameSpace__ecere__com__SetActiveDesigner(struct __ecereNameSpace__ecere__com__Instance * designer)
5382 __ecereNameSpace__ecere__com__activeDesigner = designer;
5385 struct __ecereNameSpace__ecere__com__Instance * __ecereNameSpace__ecere__com__GetActiveDesigner()
5387 return __ecereNameSpace__ecere__com__activeDesigner;
5392 unsigned int __ecereNameSpace__ecere__sys__UTF8Validate(char * source)
5398 for(c = 0; source[c]; )
5400 unsigned char ch = source[c];
5401 unsigned int codePoint = 0;
5404 unsigned char mask = (unsigned char)0x7F;
5406 if(ch & (unsigned char)0x80)
5408 if(ch & (unsigned char)0x40)
5412 if(ch & (unsigned char)0x20)
5416 if(ch & (unsigned char)0x10)
5418 if(ch & (unsigned char)0x08)
5428 for(i = 0; i < numBytes && (ch = source[c]); i++, c++)
5431 codePoint |= ch & mask;
5432 mask = (unsigned char)0x3F;
5435 if(!(ch & (unsigned char)0x80) || (ch & (unsigned char)0x40))
5441 if(codePoint > 0x10FFFF || (codePoint >= 0xD800 && codePoint <= 0xDFFF) || (codePoint < 0x80 && numBytes > 1) || (codePoint < 0x800 && numBytes > 2) || (codePoint < 0x10000 && numBytes > 3))
5448 int __ecereNameSpace__ecere__sys__ISO8859_1toUTF8(char * source, char * dest, int max)
5453 for(c = 0; source[c]; c++)
5455 unsigned int ch = ((unsigned char *)source)[c];
5461 dest[d++] = (char)ch;
5467 dest[d++] = (unsigned char)0xC0 | (unsigned char)((ch & 0x7C0) >> 6);
5468 dest[d++] = (unsigned char)0x80 | (unsigned char)(ch & 0x03F);
5470 else if(ch < 0x10000)
5474 dest[d++] = (unsigned char)0xE0 | (unsigned char)((ch & 0xF000) >> 12);
5475 dest[d++] = (unsigned char)0x80 | (unsigned char)((ch & 0xFC0) >> 6);
5476 dest[d++] = (unsigned char)0x80 | (unsigned char)(ch & 0x03F);
5482 dest[d++] = (unsigned char)0xF0 | (unsigned char)((ch & 0x1C0000) >> 18);
5483 dest[d++] = (unsigned char)0x80 | (unsigned char)((ch & 0x3F000) >> 12);
5484 dest[d++] = (unsigned char)0x80 | (unsigned char)((ch & 0xFC0) >> 6);
5485 dest[d++] = (unsigned char)0x80 | (unsigned char)(ch & 0x03F);
5492 char * __ecereNameSpace__ecere__sys__UTF16toUTF8(unsigned short * source)
5499 unsigned int invert = 0x0;
5501 for(len = 0; source[len]; len++)
5503 dest = __ecereNameSpace__ecere__com__eSystem_New(sizeof(char) * (len * 3 + 1));
5504 for(c = 0; (u16 = source[c]); c++)
5508 if(!c && (u16 == (unsigned short)0xFFFE || u16 == (unsigned short)0xFEFF))
5510 if(u16 == (unsigned short)0xFFFE)
5516 u16 = ((u16 & (unsigned short)0xFF00) >> (unsigned short)8) | ((u16 & (unsigned short)0x00FF) << (unsigned short)8);
5518 if(u16 < (unsigned short)0xD800 || u16 > (unsigned short)0xDBFF)
5521 ch = (u16 << 10) + source[c++] + (0x10000 - (0xD800 << 10) - 0xDC00);
5524 dest[d++] = (char)ch;
5528 dest[d++] = (unsigned char)0xC0 | (unsigned char)((ch & 0x7C0) >> 6);
5529 dest[d++] = (unsigned char)0x80 | (unsigned char)(ch & 0x03F);
5531 else if(ch < 0x10000)
5533 dest[d++] = (unsigned char)0xE0 | (unsigned char)((ch & 0xF000) >> 12);
5534 dest[d++] = (unsigned char)0x80 | (unsigned char)((ch & 0xFC0) >> 6);
5535 dest[d++] = (unsigned char)0x80 | (unsigned char)(ch & 0x03F);
5539 dest[d++] = (unsigned char)0xF0 | (unsigned char)((ch & 0x1C0000) >> 18);
5540 dest[d++] = (unsigned char)0x80 | (unsigned char)((ch & 0x3F000) >> 12);
5541 dest[d++] = (unsigned char)0x80 | (unsigned char)((ch & 0xFC0) >> 6);
5542 dest[d++] = (unsigned char)0x80 | (unsigned char)(ch & 0x03F);
5546 dest = __ecereNameSpace__ecere__com__eSystem_Renew(dest, sizeof(char) * (d + 1));
5550 int __ecereNameSpace__ecere__sys__UTF16toUTF8Buffer(unsigned short * source, unsigned char * dest, int max)
5556 for(c = 0; (u16 = source[c]); c++)
5560 if(u16 < (unsigned short)0xD800 || u16 > (unsigned short)0xDBFF)
5563 ch = (u16 << 10) + source[c++] + (0x10000 - (0xD800 << 10) - 0xDC00);
5568 dest[d++] = (char)ch;
5574 dest[d++] = (unsigned char)0xC0 | (unsigned char)((ch & 0x7C0) >> 6);
5575 dest[d++] = (unsigned char)0x80 | (unsigned char)(ch & 0x03F);
5577 else if(ch < 0x10000)
5581 dest[d++] = (unsigned char)0xE0 | (unsigned char)((ch & 0xF000) >> 12);
5582 dest[d++] = (unsigned char)0x80 | (unsigned char)((ch & 0xFC0) >> 6);
5583 dest[d++] = (unsigned char)0x80 | (unsigned char)(ch & 0x03F);
5589 dest[d++] = (unsigned char)0xF0 | (unsigned char)((ch & 0x1C0000) >> 18);
5590 dest[d++] = (unsigned char)0x80 | (unsigned char)((ch & 0x3F000) >> 12);
5591 dest[d++] = (unsigned char)0x80 | (unsigned char)((ch & 0xFC0) >> 6);
5592 dest[d++] = (unsigned char)0x80 | (unsigned char)(ch & 0x03F);
5595 dest[d] = (unsigned char)0;
5599 unsigned int __ecereNameSpace__ecere__sys__UTF8GetChar(char * string, int * numBytes)
5602 unsigned char b = ((unsigned char *)string)[0];
5604 unsigned char mask = (unsigned char)0x7F;
5608 if(b & (unsigned char)0x80)
5610 if(b & (unsigned char)0x40)
5614 if(b & (unsigned char)0x20)
5618 if(b & (unsigned char)0x10)
5620 if(b & (unsigned char)0x08)
5632 for(i = 0; i < nb; i++)
5635 ch |= (b = ((unsigned char *)string)[i]) & mask;
5636 mask = (unsigned char)0x3F;
5637 if(i > 1 && (!(b & (unsigned char)0x80) || (b & (unsigned char)0x40)))
5643 if(i < nb || ch > 0x10FFFF || (ch >= 0xD800 && ch <= 0xDFFF) || (ch < 0x80 && nb > 1) || (ch < 0x800 && nb > 2) || (ch < 0x10000 && nb > 3))
5653 int __ecereNameSpace__ecere__sys__UTF8toUTF16Buffer(char * source, unsigned short * dest, int max)
5660 for(c = 0; source[c]; )
5662 unsigned char ch = source[c];
5663 unsigned int codePoint = 0;
5666 unsigned char mask = (unsigned char)0x7F;
5668 if(ch & (unsigned char)0x80 && ch & (unsigned char)0x40)
5672 if(ch & (unsigned char)0x20)
5676 if(ch & (unsigned char)0x10)
5683 for(i = 0; i < numBytes; i++)
5686 codePoint |= source[c++] & mask;
5687 mask = (unsigned char)0x3F;
5689 if(codePoint > 0xFFFF)
5691 unsigned short lead = (unsigned short)((0xD800 - (0x10000 >> 10)) + (codePoint >> 10));
5692 unsigned short trail = (unsigned short)0xDC00 + (unsigned short)(codePoint & 0x3FF);
5703 dest[d++] = (unsigned short)codePoint;
5706 dest[d] = (unsigned short)0;
5712 int __ecereNameSpace__ecere__sys__UTF32toUTF8Len(unsigned int * source, int count, unsigned char * dest, int max)
5718 for(c = 0; c < count && (ch = source[c]); c++)
5724 dest[d++] = (char)ch;
5730 dest[d++] = (unsigned char)0xC0 | (unsigned char)((ch & 0x7C0) >> 6);
5731 dest[d++] = (unsigned char)0x80 | (unsigned char)(ch & 0x03F);
5733 else if(ch < 0x10000)
5737 dest[d++] = (unsigned char)0xE0 | (unsigned char)((ch & 0xF000) >> 12);
5738 dest[d++] = (unsigned char)0x80 | (unsigned char)((ch & 0xFC0) >> 6);
5739 dest[d++] = (unsigned char)0x80 | (unsigned char)(ch & 0x03F);
5745 dest[d++] = (unsigned char)0xF0 | (unsigned char)((ch & 0x1C0000) >> 18);
5746 dest[d++] = (unsigned char)0x80 | (unsigned char)((ch & 0x3F000) >> 12);
5747 dest[d++] = (unsigned char)0x80 | (unsigned char)((ch & 0xFC0) >> 6);
5748 dest[d++] = (unsigned char)0x80 | (unsigned char)(ch & 0x03F);
5751 dest[d] = (unsigned char)0;
5755 unsigned short * __ecereNameSpace__ecere__sys__UTF8toUTF16(char * source, int * wordCount)
5759 int len = strlen(source);
5760 unsigned short * dest = __ecereNameSpace__ecere__com__eSystem_New(sizeof(unsigned short) * (len + 1));
5764 for(c = 0; source[c]; )
5766 unsigned char ch = source[c];
5767 unsigned int codePoint = 0;
5770 unsigned char mask = (unsigned char)0x7F;
5772 if(ch & (unsigned char)0x80 && ch & (unsigned char)0x40)
5776 if(ch & (unsigned char)0x20)
5780 if(ch & (unsigned char)0x10)
5787 for(i = 0; i < numBytes; i++)
5790 codePoint |= source[c++] & mask;
5791 mask = (unsigned char)0x3F;
5793 if(codePoint > 0xFFFF)
5795 unsigned short lead = (unsigned short)((0xD800 - (0x10000 >> 10)) + (codePoint >> 10));
5796 unsigned short trail = (unsigned short)0xDC00 + (unsigned short)(codePoint & 0x3FF);
5803 dest[d++] = (unsigned short)codePoint;
5806 dest[d] = (unsigned short)0;
5811 return (((void *)0));
5814 int __ecereVMethodID___ecereNameSpace__ecere__com__DesignerBase_FindObject;
5816 int __ecereVMethodID___ecereNameSpace__ecere__com__DesignerBase_RenameObject;
5818 int __ecereVMethodID___ecereNameSpace__ecere__com__DesignerBase_SelectObjectFromDesigner;
5820 int __ecereVMethodID___ecereNameSpace__ecere__com__DesignerBase_CodeAddObject;
5822 int __ecereVMethodID___ecereNameSpace__ecere__com__DesignerBase_SheetAddObject;
5824 int __ecereVMethodID___ecereNameSpace__ecere__com__DesignerBase_AddToolBoxClass;
5826 int __ecereVMethodID___ecereNameSpace__ecere__com__DesignerBase_AddDefaultMethod;
5828 int __ecereVMethodID___ecereNameSpace__ecere__com__DesignerBase_DeleteObject;
5830 int __ecereVMethodID___ecereNameSpace__ecere__com__DesignerBase_ObjectContainsCode;
5832 int __ecereVMethodID___ecereNameSpace__ecere__com__DesignerBase_ModifyCode;
5834 int __ecereVMethodID___ecereNameSpace__ecere__com__DesignerBase_UpdateProperties;
5836 int __ecereVMethodID___ecereNameSpace__ecere__com__ClassDesignerBase_Reset;
5838 int __ecereVMethodID___ecereNameSpace__ecere__com__ClassDesignerBase_AddObject;
5840 int __ecereVMethodID___ecereNameSpace__ecere__com__ClassDesignerBase_SelectObject;
5842 int __ecereVMethodID___ecereNameSpace__ecere__com__ClassDesignerBase_ListToolBoxClasses;
5844 int __ecereVMethodID___ecereNameSpace__ecere__com__ClassDesignerBase_PrepareTestObject;
5846 int __ecereVMethodID___ecereNameSpace__ecere__com__ClassDesignerBase_CreateObject;
5848 int __ecereVMethodID___ecereNameSpace__ecere__com__ClassDesignerBase_PostCreateObject;
5850 int __ecereVMethodID___ecereNameSpace__ecere__com__ClassDesignerBase_DroppedObject;
5852 int __ecereVMethodID___ecereNameSpace__ecere__com__ClassDesignerBase_DestroyObject;
5854 int __ecereVMethodID___ecereNameSpace__ecere__com__ClassDesignerBase_FixProperty;
5856 int __ecereVMethodID___ecereNameSpace__ecere__com__ClassDesignerBase_CreateNew;
5858 void __ecereRegisterModule_instance(struct __ecereNameSpace__ecere__com__Instance * module)
5860 struct __ecereNameSpace__ecere__com__Class * class;
5862 __ecereNameSpace__ecere__com__eSystem_RegisterDefine("ecere::com::null", "((void *)0)", module, 4);
5863 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(3, "ecere::com::unichar", "uint", 0, 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__unichar = class;
5866 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "OnGetString", 0, __ecereMethod___ecereNameSpace__ecere__com__unichar_OnGetString, 1);
5867 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "OnGetDataFromString", 0, __ecereMethod___ecereNameSpace__ecere__com__unichar_OnGetDataFromString, 1);
5868 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::Property", 0, sizeof(struct __ecereNameSpace__ecere__com__Property), 0, 0, 0, module, 4, 1);
5869 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
5870 __ecereClass___ecereNameSpace__ecere__com__Property = class;
5871 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "prev", "ecere::com::Property", 4, 4, 1);
5872 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "next", "ecere::com::Property", 4, 4, 1);
5873 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "name", "char *", 4, 4, 1);
5874 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "isProperty", "bool", 4, 4, 1);
5875 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "memberAccess", "ecere::com::AccessMode", 4, 4, 1);
5876 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "id", "int", 4, 4, 1);
5877 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "_class", "ecere::com::Class", 4, 4, 1);
5878 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataTypeString", "char *", 4, 4, 1);
5879 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataTypeClass", "ecere::com::Class", 4, 4, 1);
5880 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataType", "Type", 4, 4, 1);
5881 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "Set", "void( *)()", 4, 4, 1);
5882 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "Get", "int( *)()", 4, 4, 1);
5883 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "IsSet", "bool( *)()", 4, 4, 1);
5884 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "data", "void *", 4, 4, 1);
5885 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "symbol", "void *", 4, 4, 1);
5886 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "vid", "int", 4, 4, 1);
5887 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "conversion", "bool", 4, 4, 1);
5888 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "watcherOffset", "uint", 4, 4, 1);
5889 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "category", "char *", 4, 4, 1);
5890 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "compiled", "bool", 4, 4, 1);
5891 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "selfWatchable", "bool", 4, 4, 1);
5892 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "isWatchable", "bool", 4, 4, 1);
5894 class->fixed = (unsigned int)1;
5896 class->noExpansion = (unsigned int)1;
5897 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::MemoryGuard_PushLoc", "void ecere::com::MemoryGuard_PushLoc(char * loc)", __ecereNameSpace__ecere__com__MemoryGuard_PushLoc, module, 4);
5898 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::MemoryGuard_PopLoc", "void ecere::com::MemoryGuard_PopLoc(void)", __ecereNameSpace__ecere__com__MemoryGuard_PopLoc, module, 4);
5899 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::BTNamedLink", 0, sizeof(struct __ecereNameSpace__ecere__com__BTNamedLink), 0, 0, 0, module, 4, 1);
5900 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
5901 __ecereClass___ecereNameSpace__ecere__com__BTNamedLink = class;
5902 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "name", "char *", 4, 4, 1);
5903 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "parent", "ecere::com::BTNamedLink", 4, 4, 1);
5904 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "left", "ecere::com::BTNamedLink", 4, 4, 1);
5905 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "right", "ecere::com::BTNamedLink", 4, 4, 1);
5906 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "depth", "int", 4, 4, 1);
5907 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "data", "void *", 4, 4, 1);
5909 class->fixed = (unsigned int)1;
5910 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::SelfWatcher", 0, sizeof(struct __ecereNameSpace__ecere__com__SelfWatcher), 0, 0, 0, module, 2, 1);
5911 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
5912 __ecereClass___ecereNameSpace__ecere__com__SelfWatcher = class;
5914 class->fixed = (unsigned int)1;
5915 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(4, "ecere::com::AccessMode", 0, 0, 0, 0, 0, module, 4, 1);
5916 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
5917 __ecereClass___ecereNameSpace__ecere__com__AccessMode = class;
5918 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "defaultAccess", 0);
5919 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "publicAccess", 1);
5920 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "privateAccess", 2);
5921 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "staticAccess", 3);
5922 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "baseSystemAccess", 4);
5923 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::SubModule", 0, sizeof(struct __ecereNameSpace__ecere__com__SubModule), 0, 0, 0, module, 4, 1);
5924 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
5925 __ecereClass___ecereNameSpace__ecere__com__SubModule = class;
5926 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "prev", "ecere::com::SubModule", 4, 4, 1);
5927 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "next", "ecere::com::SubModule", 4, 4, 1);
5928 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "module", "ecere::com::Module", 4, 4, 1);
5929 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "importMode", "ecere::com::AccessMode", 4, 4, 1);
5930 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(4, "ecere::com::DataMemberType", 0, 0, 0, 0, 0, module, 4, 1);
5931 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
5932 __ecereClass___ecereNameSpace__ecere__com__DataMemberType = class;
5933 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "normalMember", 0);
5934 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "unionMember", 1);
5935 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "structMember", 2);
5936 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(4, "ecere::com::ClassType", 0, 0, 0, 0, 0, module, 4, 1);
5937 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
5938 __ecereClass___ecereNameSpace__ecere__com__ClassType = class;
5939 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "normalClass", 0);
5940 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "structClass", 1);
5941 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "bitClass", 2);
5942 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "unitClass", 3);
5943 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "enumClass", 4);
5944 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "noHeadClass", 5);
5945 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "unionClass", 6);
5946 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "systemClass", 1000);
5947 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::Class", 0, sizeof(struct __ecereNameSpace__ecere__com__Class), 0, 0, 0, module, 4, 1);
5948 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
5949 __ecereClass___ecereNameSpace__ecere__com__Class = class;
5950 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "OnFree", 0, __ecereMethod___ecereNameSpace__ecere__com__Class_OnFree, 1);
5951 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "OnGetString", 0, __ecereMethod___ecereNameSpace__ecere__com__Class_OnGetString, 1);
5952 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "OnGetDataFromString", 0, __ecereMethod___ecereNameSpace__ecere__com__Class_OnGetDataFromString, 1);
5953 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "OnSerialize", 0, __ecereMethod___ecereNameSpace__ecere__com__Class_OnSerialize, 1);
5954 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "OnUnserialize", 0, __ecereMethod___ecereNameSpace__ecere__com__Class_OnUnserialize, 1);
5955 __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);
5956 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "prev", "ecere::com::Class", 4, 4, 1);
5957 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "next", "ecere::com::Class", 4, 4, 1);
5958 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "name", "char *", 4, 4, 1);
5959 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "offset", "int", 4, 4, 1);
5960 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "structSize", "int", 4, 4, 1);
5961 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "_vTbl", "int( * *)()", 4, 4, 1);
5962 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "vTblSize", "int", 4, 4, 1);
5963 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "Constructor", "int( *)(ecere::com::Instance)", 4, 4, 1);
5964 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "Destructor", "void( *)(ecere::com::Instance)", 4, 4, 1);
5965 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "offsetClass", "int", 4, 4, 1);
5966 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "sizeClass", "int", 4, 4, 1);
5967 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "base", "ecere::com::Class", 4, 4, 1);
5968 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "methods", "ecere::sys::BinaryTree", 16, 4, 1);
5969 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "members", "ecere::sys::BinaryTree", 16, 4, 1);
5970 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "prop", "ecere::sys::BinaryTree", 16, 4, 1);
5971 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "membersAndProperties", "ecere::sys::OldList", 20, 4, 1);
5972 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "classProperties", "ecere::sys::BinaryTree", 16, 4, 1);
5973 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "derivatives", "ecere::sys::OldList", 20, 4, 1);
5974 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "memberID", "int", 4, 4, 1);
5975 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "startMemberID", "int", 4, 4, 1);
5976 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "type", "ecere::com::ClassType", 4, 4, 1);
5977 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "module", "ecere::com::Module", 4, 4, 1);
5978 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "nameSpace", "ecere::com::NameSpace *", 4, 4, 1);
5979 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataTypeString", "char *", 4, 4, 1);
5980 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataType", "Type", 4, 4, 1);
5981 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "typeSize", "int", 4, 4, 1);
5982 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "defaultAlignment", "int", 4, 4, 1);
5983 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "Initialize", "void( *)()", 4, 4, 1);
5984 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "memberOffset", "int", 4, 4, 1);
5985 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "selfWatchers", "ecere::sys::OldList", 20, 4, 1);
5986 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "designerClass", "char *", 4, 4, 1);
5987 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "noExpansion", "bool", 4, 4, 1);
5988 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "defaultProperty", "char *", 4, 4, 1);
5989 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "comRedefinition", "bool", 4, 4, 1);
5990 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "count", "int", 4, 4, 1);
5991 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "isRemote", "bool", 4, 4, 1);
5992 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "internalDecl", "bool", 4, 4, 1);
5993 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "data", "void *", 4, 4, 1);
5994 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "computeSize", "bool", 4, 4, 1);
5995 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "structAlignment", "int", 4, 4, 1);
5996 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "destructionWatchOffset", "int", 4, 4, 1);
5997 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "fixed", "bool", 4, 4, 1);
5998 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "delayedCPValues", "ecere::sys::OldList", 20, 4, 1);
5999 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "inheritanceAccess", "ecere::com::AccessMode", 4, 4, 1);
6000 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "fullName", "char *", 4, 4, 1);
6001 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "symbol", "void *", 4, 4, 1);
6002 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "conversions", "ecere::sys::OldList", 20, 4, 1);
6003 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "templateParams", "ecere::sys::OldList", 20, 4, 1);
6004 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "templateArgs", "ecere::com::ClassTemplateArgument *", 4, 4, 1);
6005 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "templateClass", "ecere::com::Class", 4, 4, 1);
6006 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "templatized", "ecere::sys::OldList", 20, 4, 1);
6007 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "numParams", "int", 4, 4, 1);
6009 class->fixed = (unsigned int)1;
6011 class->noExpansion = (unsigned int)1;
6012 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(4, "ecere::com::TemplateParameterType", 0, 0, 0, 0, 0, module, 4, 1);
6013 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6014 __ecereClass___ecereNameSpace__ecere__com__TemplateParameterType = class;
6015 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "type", 0);
6016 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "identifier", 1);
6017 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "expression", 2);
6018 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(4, "ecere::com::TemplateMemberType", 0, 0, 0, 0, 0, module, 4, 1);
6019 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6020 __ecereClass___ecereNameSpace__ecere__com__TemplateMemberType = class;
6021 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "dataMember", 0);
6022 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "method", 1);
6023 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "prop", 2);
6024 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(1, "ecere::com::ClassTemplateArgument", 0, sizeof(struct __ecereNameSpace__ecere__com__ClassTemplateArgument), 0, 0, 0, module, 4, 1);
6025 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6026 __ecereClass___ecereNameSpace__ecere__com__ClassTemplateArgument = class;
6028 struct __ecereNameSpace__ecere__com__DataMember * dataMember0 = __ecereNameSpace__ecere__com__eMember_New(1, 1);
6031 struct __ecereNameSpace__ecere__com__DataMember * dataMember1 = __ecereNameSpace__ecere__com__eMember_New(2, 1);
6033 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember1, "dataTypeString", "char *", 4, 4, 1);
6034 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember1, "dataTypeClass", "ecere::com::Class", 4, 4, 1);
6035 __ecereNameSpace__ecere__com__eMember_AddMember(dataMember0, dataMember1);
6037 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember0, "expression", "ecere::com::DataValue", 8, 8, 1);
6039 struct __ecereNameSpace__ecere__com__DataMember * dataMember1 = __ecereNameSpace__ecere__com__eMember_New(2, 1);
6041 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember1, "memberString", "char *", 4, 4, 1);
6043 struct __ecereNameSpace__ecere__com__DataMember * dataMember2 = __ecereNameSpace__ecere__com__eMember_New(1, 1);
6045 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember2, "member", "ecere::com::DataMember", 4, 4, 1);
6046 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember2, "prop", "ecere::com::Property", 4, 4, 1);
6047 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember2, "method", "ecere::com::Method", 4, 4, 1);
6048 __ecereNameSpace__ecere__com__eMember_AddMember(dataMember1, dataMember2);
6050 __ecereNameSpace__ecere__com__eMember_AddMember(dataMember0, dataMember1);
6052 __ecereNameSpace__ecere__com__eClass_AddMember(class, dataMember0);
6054 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::ClassTemplateParameter", 0, sizeof(struct __ecereNameSpace__ecere__com__ClassTemplateParameter), 0, 0, 0, module, 4, 1);
6055 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6056 __ecereClass___ecereNameSpace__ecere__com__ClassTemplateParameter = class;
6057 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "prev", "ecere::com::ClassTemplateParameter", 4, 4, 1);
6058 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "next", "ecere::com::ClassTemplateParameter", 4, 4, 1);
6059 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "name", "char *", 4, 4, 1);
6060 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "type", "ecere::com::TemplateParameterType", 4, 4, 1);
6062 struct __ecereNameSpace__ecere__com__DataMember * dataMember0 = __ecereNameSpace__ecere__com__eMember_New(1, 1);
6064 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember0, "dataTypeString", "char *", 4, 4, 1);
6065 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember0, "memberType", "ecere::com::TemplateMemberType", 4, 4, 1);
6066 __ecereNameSpace__ecere__com__eClass_AddMember(class, dataMember0);
6068 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "defaultArg", "ecere::com::ClassTemplateArgument", 8, 8, 1);
6069 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "param", "void *", 4, 4, 1);
6071 class->fixed = (unsigned int)1;
6072 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(4, "ecere::com::MethodType", 0, 0, 0, 0, 0, module, 4, 1);
6073 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6074 __ecereClass___ecereNameSpace__ecere__com__MethodType = class;
6075 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "normalMethod", 0);
6076 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "virtualMethod", 1);
6077 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::Method", 0, sizeof(struct __ecereNameSpace__ecere__com__Method), 0, 0, 0, module, 4, 1);
6078 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6079 __ecereClass___ecereNameSpace__ecere__com__Method = class;
6080 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "name", "char *", 4, 4, 1);
6081 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "parent", "ecere::com::Method", 4, 4, 1);
6082 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "left", "ecere::com::Method", 4, 4, 1);
6083 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "right", "ecere::com::Method", 4, 4, 1);
6084 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "depth", "int", 4, 4, 1);
6085 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "function", "int( *)()", 4, 4, 1);
6086 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "vid", "int", 4, 4, 1);
6087 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "type", "ecere::com::MethodType", 4, 4, 1);
6088 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "_class", "ecere::com::Class", 4, 4, 1);
6089 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "symbol", "void *", 4, 4, 1);
6090 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataTypeString", "char *", 4, 4, 1);
6091 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataType", "Type", 4, 4, 1);
6092 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "memberAccess", "ecere::com::AccessMode", 4, 4, 1);
6094 class->fixed = (unsigned int)1;
6095 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(4, "ecere::com::ImportType", 0, 0, 0, 0, 0, module, 4, 1);
6096 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6097 __ecereClass___ecereNameSpace__ecere__com__ImportType = class;
6098 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "normalImport", 0);
6099 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "staticImport", 1);
6100 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "remoteImport", 2);
6101 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "preDeclImport", 3);
6102 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "comCheckImport", 4);
6103 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(1, "ecere::com::NameSpace", 0, sizeof(struct __ecereNameSpace__ecere__com__NameSpace), 0, 0, 0, module, 4, 1);
6104 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6105 __ecereClass___ecereNameSpace__ecere__com__NameSpace = class;
6106 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "name", "char *", 4, 4, 1);
6107 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "btParent", "ecere::com::NameSpace *", 4, 4, 1);
6108 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "left", "ecere::com::NameSpace *", 4, 4, 1);
6109 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "right", "ecere::com::NameSpace *", 4, 4, 1);
6110 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "depth", "int", 4, 4, 1);
6111 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "parent", "ecere::com::NameSpace *", 4, 4, 1);
6112 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "nameSpaces", "ecere::sys::BinaryTree", 16, 4, 1);
6113 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "classes", "ecere::sys::BinaryTree", 16, 4, 1);
6114 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "defines", "ecere::sys::BinaryTree", 16, 4, 1);
6115 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "functions", "ecere::sys::BinaryTree", 16, 4, 1);
6116 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(1, "ecere::com::DataValue", 0, sizeof(struct __ecereNameSpace__ecere__com__DataValue), 0, 0, 0, module, 4, 1);
6117 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6118 __ecereClass___ecereNameSpace__ecere__com__DataValue = class;
6120 struct __ecereNameSpace__ecere__com__DataMember * dataMember0 = __ecereNameSpace__ecere__com__eMember_New(1, 1);
6122 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember0, "c", "char", 1, 1, 1);
6123 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember0, "uc", "byte", 1, 1, 1);
6124 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember0, "s", "short", 2, 2, 1);
6125 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember0, "us", "uint16", 2, 2, 1);
6126 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember0, "i", "int", 4, 4, 1);
6127 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember0, "ui", "uint", 4, 4, 1);
6128 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember0, "p", "void *", 4, 4, 1);
6129 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember0, "f", "float", 4, 4, 1);
6130 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember0, "d", "double", 8, 8, 1);
6131 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember0, "i64", "int64", 8, 8, 1);
6132 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember0, "ui64", "uint64", 8, 8, 1);
6133 __ecereNameSpace__ecere__com__eClass_AddMember(class, dataMember0);
6135 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::DataMember", 0, sizeof(struct __ecereNameSpace__ecere__com__DataMember), 0, 0, 0, module, 4, 1);
6136 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6137 __ecereClass___ecereNameSpace__ecere__com__DataMember = class;
6138 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "prev", "ecere::com::DataMember", 4, 4, 1);
6139 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "next", "ecere::com::DataMember", 4, 4, 1);
6140 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "name", "char *", 4, 4, 1);
6141 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "isProperty", "bool", 4, 4, 1);
6142 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "memberAccess", "ecere::com::AccessMode", 4, 4, 1);
6143 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "id", "int", 4, 4, 1);
6144 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "_class", "ecere::com::Class", 4, 4, 1);
6145 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataTypeString", "char *", 4, 4, 1);
6146 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataTypeClass", "ecere::com::Class", 4, 4, 1);
6147 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataType", "Type", 4, 4, 1);
6148 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "type", "ecere::com::DataMemberType", 4, 4, 1);
6149 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "offset", "int", 4, 4, 1);
6150 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "memberID", "int", 4, 4, 1);
6151 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "members", "ecere::sys::OldList", 20, 4, 1);
6152 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "membersAlpha", "ecere::sys::BinaryTree", 16, 4, 1);
6153 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "memberOffset", "int", 4, 4, 1);
6154 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "structAlignment", "int", 4, 4, 1);
6156 class->fixed = (unsigned int)1;
6157 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::BitMember", 0, sizeof(struct __ecereNameSpace__ecere__com__BitMember), 0, 0, 0, module, 4, 1);
6158 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6159 __ecereClass___ecereNameSpace__ecere__com__BitMember = class;
6160 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "prev", "ecere::com::BitMember", 4, 4, 1);
6161 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "next", "ecere::com::BitMember", 4, 4, 1);
6162 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "name", "char *", 4, 4, 1);
6163 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "isProperty", "bool", 4, 4, 1);
6164 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "memberAccess", "ecere::com::AccessMode", 4, 4, 1);
6165 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "id", "int", 4, 4, 1);
6166 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "_class", "ecere::com::Class", 4, 4, 1);
6167 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataTypeString", "char *", 4, 4, 1);
6168 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataTypeClass", "ecere::com::Class", 4, 4, 1);
6169 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataType", "Type", 4, 4, 1);
6170 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "type", "ecere::com::DataMemberType", 4, 4, 1);
6171 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "size", "int", 4, 4, 1);
6172 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "pos", "int", 4, 4, 1);
6173 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "mask", "uint64", 8, 8, 1);
6175 class->fixed = (unsigned int)1;
6176 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::ClassProperty", 0, sizeof(struct __ecereNameSpace__ecere__com__ClassProperty), 0, 0, 0, module, 4, 1);
6177 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6178 __ecereClass___ecereNameSpace__ecere__com__ClassProperty = class;
6179 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "name", "char *", 4, 4, 1);
6180 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "parent", "ecere::com::ClassProperty", 4, 4, 1);
6181 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "left", "ecere::com::ClassProperty", 4, 4, 1);
6182 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "right", "ecere::com::ClassProperty", 4, 4, 1);
6183 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "depth", "int", 4, 4, 1);
6184 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "Set", "void( *)(ecere::com::Class, int)", 4, 4, 1);
6185 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "Get", "int( *)(ecere::com::Class)", 4, 4, 1);
6186 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataTypeString", "char *", 4, 4, 1);
6187 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataType", "Type", 4, 4, 1);
6188 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "constant", "bool", 4, 4, 1);
6190 class->fixed = (unsigned int)1;
6191 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::DefinedExpression", 0, sizeof(struct __ecereNameSpace__ecere__com__DefinedExpression), 0, 0, 0, module, 4, 1);
6192 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6193 __ecereClass___ecereNameSpace__ecere__com__DefinedExpression = class;
6194 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "prev", "ecere::com::DefinedExpression", 4, 4, 1);
6195 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "next", "ecere::com::DefinedExpression", 4, 4, 1);
6196 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "name", "char *", 4, 4, 1);
6197 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "value", "char *", 4, 4, 1);
6198 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "nameSpace", "ecere::com::NameSpace *", 4, 4, 1);
6200 class->fixed = (unsigned int)1;
6201 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::GlobalFunction", 0, sizeof(struct __ecereNameSpace__ecere__com__GlobalFunction), 0, 0, 0, module, 4, 1);
6202 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6203 __ecereClass___ecereNameSpace__ecere__com__GlobalFunction = class;
6204 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "prev", "ecere::com::GlobalFunction", 4, 4, 1);
6205 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "next", "ecere::com::GlobalFunction", 4, 4, 1);
6206 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "name", "char *", 4, 4, 1);
6207 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "function", "int( *)()", 4, 4, 1);
6208 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "module", "ecere::com::Module", 4, 4, 1);
6209 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "nameSpace", "ecere::com::NameSpace *", 4, 4, 1);
6210 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataTypeString", "char *", 4, 4, 1);
6211 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataType", "Type", 4, 4, 1);
6212 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "symbol", "void *", 4, 4, 1);
6214 class->fixed = (unsigned int)1;
6215 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::EnumClassData", 0, sizeof(struct __ecereNameSpace__ecere__com__EnumClassData), 0, 0, 0, module, 4, 1);
6216 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6217 __ecereClass___ecereNameSpace__ecere__com__EnumClassData = class;
6218 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "values", "ecere::sys::OldList", 20, 4, 1);
6219 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "largest", "int", 4, 4, 1);
6221 class->fixed = (unsigned int)1;
6222 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::Watcher", 0, sizeof(struct __ecereNameSpace__ecere__com__Watcher), 0, 0, 0, module, 2, 1);
6223 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6224 __ecereClass___ecereNameSpace__ecere__com__Watcher = class;
6226 class->fixed = (unsigned int)1;
6227 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::MemBlock", 0, sizeof(struct __ecereNameSpace__ecere__com__MemBlock), 0, 0, 0, module, 2, 1);
6228 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6229 __ecereClass___ecereNameSpace__ecere__com__MemBlock = class;
6230 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::MemPart", 0, sizeof(struct __ecereNameSpace__ecere__com__MemPart), 0, 0, 0, module, 2, 1);
6231 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6232 __ecereClass___ecereNameSpace__ecere__com__MemPart = class;
6233 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(1, "ecere::com::BlockPool", 0, sizeof(struct __ecereNameSpace__ecere__com__BlockPool), 0, 0, 0, module, 2, 1);
6234 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6235 __ecereClass___ecereNameSpace__ecere__com__BlockPool = class;
6236 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "Add", "ecere::com::MemBlock Add()", __ecereMethod___ecereNameSpace__ecere__com__BlockPool_Add, 1);
6237 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "Expand", "bool Expand(unsigned int numBlocks)", __ecereMethod___ecereNameSpace__ecere__com__BlockPool_Expand, 1);
6238 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "Remove", "void Remove(ecere::com::MemBlock block)", __ecereMethod___ecereNameSpace__ecere__com__BlockPool_Remove, 1);
6239 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "first", "ecere::com::MemBlock", 4, 4, 1);
6240 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "last", "ecere::com::MemBlock", 4, 4, 1);
6241 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "free", "ecere::com::MemBlock", 4, 4, 1);
6242 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "blockSize", "uint", 4, 4, 1);
6243 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "blockSpace", "uint", 4, 4, 1);
6244 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "numParts", "int", 4, 4, 1);
6245 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "numBlocks", "int", 4, 4, 1);
6246 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "totalSize", "uint", 4, 4, 1);
6247 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "usedSpace", "uint", 4, 4, 1);
6248 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::log2i", "uint ecere::com::log2i(uint number)", __ecereNameSpace__ecere__com__log2i, module, 4);
6249 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::pow2i", "uint ecere::com::pow2i(uint number)", __ecereNameSpace__ecere__com__pow2i, module, 4);
6250 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::memswap", "void ecere::com::memswap(byte * a, byte * b, uint size)", __ecereNameSpace__ecere__com__memswap, module, 4);
6251 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::CheckMemory", "void ecere::com::CheckMemory(void)", __ecereNameSpace__ecere__com__CheckMemory, module, 4);
6252 __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);
6253 __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);
6254 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::_strtoi64", "int64 ecere::com::_strtoi64(char * string, char * * endString, int base)", __ecereNameSpace__ecere__com___strtoi64, module, 4);
6255 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::_strtoui64", "uint64 ecere::com::_strtoui64(char * string, char * * endString, int base)", __ecereNameSpace__ecere__com___strtoui64, module, 4);
6256 __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);
6257 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::DefaultFunction", "bool ecere::com::DefaultFunction(void)", __ecereNameSpace__ecere__com__DefaultFunction, module, 2);
6258 __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);
6259 __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);
6260 __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);
6261 __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);
6262 __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);
6263 __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);
6264 __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);
6265 __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);
6266 __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);
6267 __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);
6268 __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);
6269 __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);
6270 __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);
6271 __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);
6272 __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);
6273 __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);
6274 __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);
6275 __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);
6276 __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);
6277 __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);
6278 __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);
6279 __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);
6280 __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);
6281 __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);
6282 __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);
6283 __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);
6284 __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);
6285 __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);
6286 __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);
6287 __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);
6288 __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);
6289 __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);
6290 __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);
6291 __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);
6292 __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);
6293 __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);
6294 __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);
6295 __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);
6296 __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);
6297 __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);
6298 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eSystem_New", "void * ecere::com::eSystem_New(uint size)", __ecereNameSpace__ecere__com__eSystem_New, module, 4);
6299 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eSystem_New0", "void * ecere::com::eSystem_New0(uint size)", __ecereNameSpace__ecere__com__eSystem_New0, module, 4);
6300 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eSystem_Delete", "void ecere::com::eSystem_Delete(void * memory)", __ecereNameSpace__ecere__com__eSystem_Delete, module, 4);
6301 __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);
6302 __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);
6303 __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);
6304 __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);
6305 __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);
6306 __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);
6307 __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);
6308 __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);
6309 __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);
6310 __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);
6311 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::LocateModule", "bool ecere::com::LocateModule(char * name, char * fileName)", __ecereNameSpace__ecere__com__LocateModule, module, 4);
6312 __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);
6313 __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);
6314 __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);
6315 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(4, "ecere::com::Platform", 0, 0, 0, 0, 0, module, 4, 1);
6316 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6317 __ecereClass___ecereNameSpace__ecere__com__Platform = class;
6318 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "OnGetString", 0, __ecereMethod___ecereNameSpace__ecere__com__Platform_OnGetString, 1);
6319 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "OnGetDataFromString", 0, __ecereMethod___ecereNameSpace__ecere__com__Platform_OnGetDataFromString, 1);
6320 __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);
6321 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "unknown", 0);
6322 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "win32", 1);
6323 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "tux", 2);
6324 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "apple", 3);
6325 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::GetRuntimePlatform", "ecere::com::Platform ecere::com::GetRuntimePlatform(void)", __ecereNameSpace__ecere__com__GetRuntimePlatform, module, 4);
6326 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::ObjectInfo", 0, sizeof(struct __ecereNameSpace__ecere__com__ObjectInfo), 0, 0, 0, module, 4, 1);
6327 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6328 __ecereClass___ecereNameSpace__ecere__com__ObjectInfo = class;
6329 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "prev", "ecere::com::ObjectInfo", 4, 4, 1);
6330 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "next", "ecere::com::ObjectInfo", 4, 4, 1);
6331 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "instance", "ecere::com::Instance", 4, 4, 1);
6332 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "name", "char *", 4, 4, 1);
6333 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "instCode", "Instantiation", 4, 4, 1);
6334 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "deleted", "bool", 4, 4, 1);
6335 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "oClass", "ecere::com::ObjectInfo", 4, 4, 1);
6336 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "instances", "ecere::sys::OldList", 20, 4, 1);
6337 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "classDefinition", "ClassDefinition", 4, 4, 1);
6338 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "modified", "bool", 4, 4, 1);
6339 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);
6340 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6341 __ecereClass___ecereNameSpace__ecere__com__DesignerBase = class;
6342 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "FindObject", "bool FindObject(ecere::com::Instance * instance, char * string)", 0, 1);
6343 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "RenameObject", "void RenameObject(ecere::com::ObjectInfo object, char * name)", 0, 1);
6344 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "SelectObjectFromDesigner", "void SelectObjectFromDesigner(ecere::com::ObjectInfo object)", 0, 1);
6345 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "CodeAddObject", "void CodeAddObject(ecere::com::Instance instance, ecere::com::ObjectInfo * object)", 0, 1);
6346 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "SheetAddObject", "void SheetAddObject(ecere::com::ObjectInfo object)", 0, 1);
6347 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "AddToolBoxClass", "void AddToolBoxClass(ecere::com::Class _class)", 0, 1);
6348 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "AddDefaultMethod", "void AddDefaultMethod(ecere::com::Instance instance, ecere::com::Instance classInstance)", 0, 1);
6349 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "DeleteObject", "void DeleteObject(ecere::com::ObjectInfo object)", 0, 1);
6350 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "ObjectContainsCode", "bool ObjectContainsCode(ecere::com::ObjectInfo object)", 0, 1);
6351 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "ModifyCode", "void ModifyCode(void)", 0, 1);
6352 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "UpdateProperties", "void UpdateProperties(void)", 0, 1);
6353 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "classDesigner", "ecere::com::ClassDesignerBase", 4, 4, 1);
6354 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "objectClass", "char *", 4, 4, 1);
6355 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "isDragging", "bool", 4, 4, 1);
6356 __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);
6357 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application)
6358 __ecereProp___ecereNameSpace__ecere__com__DesignerBase_classDesigner = __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_classDesigner, __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_classDesigner = (void *)0;
6359 __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);
6360 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application)
6361 __ecereProp___ecereNameSpace__ecere__com__DesignerBase_objectClass = __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_objectClass, __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_objectClass = (void *)0;
6362 __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);
6363 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application)
6364 __ecereProp___ecereNameSpace__ecere__com__DesignerBase_isDragging = __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_isDragging, __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_isDragging = (void *)0;
6365 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(0, "ecere::com::ClassDesignerBase", "ecere::gui::Window", 0, 0, 0, 0, module, 4, 1);
6366 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6367 __ecereClass___ecereNameSpace__ecere__com__ClassDesignerBase = class;
6368 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "Reset", "void Reset(void)", 0, 1);
6369 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "AddObject", "void AddObject(void)", 0, 1);
6370 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "SelectObject", "void SelectObject(ecere::com::ObjectInfo object, ecere::com::Instance control)", 0, 1);
6371 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "ListToolBoxClasses", "void ListToolBoxClasses(ecere::com::DesignerBase designer)", 0, 1);
6372 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "PrepareTestObject", "void ::PrepareTestObject(ecere::com::DesignerBase designer, ecere::com::Instance test)", 0, 1);
6373 __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);
6374 __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);
6375 __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);
6376 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "DestroyObject", "void ::DestroyObject(ecere::com::Instance object)", 0, 1);
6377 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "FixProperty", "void ::FixProperty(ecere::com::Property prop, ecere::com::Instance object)", 0, 1);
6378 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "CreateNew", "void ::CreateNew(EditBox editBox, Size clientSize, char * name, char * inherit)", 0, 1);
6379 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::SetActiveDesigner", "void ecere::com::SetActiveDesigner(ecere::com::DesignerBase designer)", __ecereNameSpace__ecere__com__SetActiveDesigner, module, 4);
6380 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::GetActiveDesigner", "ecere::com::DesignerBase ecere::com::GetActiveDesigner(void)", __ecereNameSpace__ecere__com__GetActiveDesigner, module, 4);
6381 __ecereNameSpace__ecere__com__eSystem_RegisterDefine("ecere::sys::LEAD_OFFSET", "0xD800 - (0x10000 >> 10)", module, 2);
6382 __ecereNameSpace__ecere__com__eSystem_RegisterDefine("ecere::sys::SURROGATE_OFFSET", "0x10000 - (0xD800 << 10) - 0xDC00", module, 2);
6383 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::UTF8Validate", "bool ecere::sys::UTF8Validate(char * source)", __ecereNameSpace__ecere__sys__UTF8Validate, module, 4);
6384 __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);
6385 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::UTF16toUTF8", "char * ecere::sys::UTF16toUTF8(uint16 * source)", __ecereNameSpace__ecere__sys__UTF16toUTF8, module, 4);
6386 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::UTF16toUTF8Buffer", "int ecere::sys::UTF16toUTF8Buffer(uint16 * source, byte * dest, int max)", __ecereNameSpace__ecere__sys__UTF16toUTF8Buffer, module, 4);
6387 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::UTF8GetChar", "ecere::com::unichar ecere::sys::UTF8GetChar(char * string, int * numBytes)", __ecereNameSpace__ecere__sys__UTF8GetChar, module, 4);
6388 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::UTF8toUTF16Buffer", "int ecere::sys::UTF8toUTF16Buffer(char * source, uint16 * dest, int max)", __ecereNameSpace__ecere__sys__UTF8toUTF16Buffer, module, 4);
6389 __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);
6390 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::UTF8toUTF16", "uint16 * ecere::sys::UTF8toUTF16(char * source, int * wordCount)", __ecereNameSpace__ecere__sys__UTF8toUTF16, module, 4);
6393 void __ecereUnregisterModule_instance(struct __ecereNameSpace__ecere__com__Instance * module)
6396 __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_classDesigner = (void *)0;
6397 __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_objectClass = (void *)0;
6398 __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_isDragging = (void *)0;