compiler/i18n: Added i18n strings to libec/ecc/ecp/ecs
[sdk] / compiler / bootstrap / ecere / bootstrap / instance.c
1 #if defined(__GNUC__)
2 typedef long long int64;
3 typedef unsigned long long uint64;
4 #ifdef _WIN32
5 #define stdcall __attribute__((__stdcall__))
6 #else
7 #define stdcall
8 #endif
9 #elif defined(__TINYC__)
10 #include <stdarg.h>
11 #define __builtin_va_list va_list
12 #define __builtin_va_start va_start
13 #define __builtin_va_end va_end
14 #ifdef _WIN32
15 #define strcasecmp stricmp
16 #define strncasecmp strnicmp
17 #define __declspec(x) __attribute__((x))
18 #define stdcall __attribute__((__stdcall__))
19 #else
20 #define stdcall
21 #endif
22 typedef long long int64;
23 typedef unsigned long long uint64;
24 #else
25 typedef __int64 int64;
26 typedef unsigned __int64 uint64;
27 #endif
28 #ifdef __BIG_ENDIAN__
29 #define __ENDIAN_PAD(x) (8 - (x))
30 #else
31 #define __ENDIAN_PAD(x) 0
32 #endif
33 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__BTNode;
34
35 struct __ecereNameSpace__ecere__sys__BTNode;
36
37 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__BinaryTree;
38
39 struct __ecereNameSpace__ecere__sys__BinaryTree
40 {
41 struct __ecereNameSpace__ecere__sys__BTNode * root;
42 int count;
43 int (*  CompareKey)(struct __ecereNameSpace__ecere__sys__BinaryTree * tree, unsigned int a, unsigned int b);
44 void (*  FreeKey)(void *  key);
45 };
46
47 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__OldList;
48
49 struct __ecereNameSpace__ecere__sys__OldList
50 {
51 void *  first;
52 void *  last;
53 int count;
54 unsigned int offset;
55 unsigned int circ;
56 };
57
58 struct __ecereNameSpace__ecere__com__Class
59 {
60 struct __ecereNameSpace__ecere__com__Class * prev, * next;
61 char * name;
62 int offset, structSize;
63 int (** _vTbl)();
64 int vTblSize;
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;
76 int type;
77 struct __ecereNameSpace__ecere__com__Instance * module;
78 struct __ecereNameSpace__ecere__com__NameSpace * nameSpace;
79 char * dataTypeString;
80 struct __ecereNameSpace__ecere__com__Instance * dataType;
81 int typeSize;
82 int defaultAlignment;
83 void (* Initialize)();
84 int memberOffset;
85 struct __ecereNameSpace__ecere__sys__OldList selfWatchers;
86 char * designerClass;
87 unsigned int noExpansion;
88 char * defaultProperty;
89 unsigned int comRedefinition;
90 int count;
91 unsigned int isRemote;
92 unsigned int internalDecl;
93 void * data;
94 unsigned int computeSize;
95 int structAlignment;
96 int destructionWatchOffset;
97 unsigned int fixed;
98 struct __ecereNameSpace__ecere__sys__OldList delayedCPValues;
99 int inheritanceAccess;
100 char * fullName;
101 void * symbol;
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;
107 int numParams;
108 };
109
110 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Class;
111
112 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Instance;
113
114 struct __ecereNameSpace__ecere__com__Instance
115 {
116 int (* *  _vTbl)();
117 struct __ecereNameSpace__ecere__com__Class * _class;
118 int _refCount;
119 };
120
121 struct __ecereNameSpace__ecere__com__Property
122 {
123 struct __ecereNameSpace__ecere__com__Property * prev, * next;
124 char * name;
125 unsigned int isProperty;
126 int memberAccess;
127 int id;
128 struct __ecereNameSpace__ecere__com__Class * _class;
129 char * dataTypeString;
130 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
131 struct __ecereNameSpace__ecere__com__Instance * dataType;
132 void (* Set)();
133 int (* Get)();
134 unsigned int (* IsSet)();
135 void * data;
136 void * symbol;
137 int vid;
138 unsigned int conversion;
139 unsigned int watcherOffset;
140 char * category;
141 unsigned int compiled;
142 unsigned int selfWatchable, isWatchable;
143 };
144
145 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Property;
146
147 struct __ecereNameSpace__ecere__com__DataMember
148 {
149 struct __ecereNameSpace__ecere__com__DataMember * prev, * next;
150 char * name;
151 unsigned int isProperty;
152 int memberAccess;
153 int id;
154 struct __ecereNameSpace__ecere__com__Class * _class;
155 char * dataTypeString;
156 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
157 struct __ecereNameSpace__ecere__com__Instance * dataType;
158 int type;
159 int offset;
160 int memberID;
161 struct __ecereNameSpace__ecere__sys__OldList members;
162 struct __ecereNameSpace__ecere__sys__BinaryTree membersAlpha;
163 int memberOffset;
164 int structAlignment;
165 };
166
167 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__DataMember;
168
169 struct __ecereNameSpace__ecere__com__Method
170 {
171 char * name;
172 struct __ecereNameSpace__ecere__com__Method * parent, * left, * right;
173 int depth;
174 int (* function)();
175 int vid;
176 int type;
177 struct __ecereNameSpace__ecere__com__Class * _class;
178 void * symbol;
179 char * dataTypeString;
180 struct __ecereNameSpace__ecere__com__Instance * dataType;
181 int memberAccess;
182 };
183
184 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Method;
185
186 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__SerialBuffer;
187
188 struct __ecereNameSpace__ecere__com__SerialBuffer
189 {
190 unsigned char *  _buffer;
191 unsigned int count;
192 unsigned int _size;
193 unsigned int pos;
194 };
195
196 struct __ecereNameSpace__ecere__com__DataValue
197 {
198 union
199 {
200 char c;
201 unsigned char uc;
202 short s;
203 unsigned short us;
204 int i;
205 unsigned int ui;
206 void * p;
207 float f;
208 double d;
209 long long i64;
210 uint64 ui64;
211 };
212 };
213
214 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__DataValue;
215
216 struct __ecereNameSpace__ecere__com__ClassTemplateArgument
217 {
218 union
219 {
220 struct
221 {
222 char * dataTypeString;
223 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
224 };
225 struct __ecereNameSpace__ecere__com__DataValue expression;
226 struct
227 {
228 char * memberString;
229 union
230 {
231 struct __ecereNameSpace__ecere__com__DataMember * member;
232 struct __ecereNameSpace__ecere__com__Property * prop;
233 struct __ecereNameSpace__ecere__com__Method * method;
234 };
235 };
236 };
237 };
238
239 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__ClassTemplateArgument;
240
241 typedef unsigned int size_t;
242
243 void exit(int status);
244
245 void * calloc(size_t nmemb, size_t size);
246
247 void free(void * ptr);
248
249 void * malloc(size_t size);
250
251 void * realloc(void * ptr, size_t size);
252
253 long int strtol(const char * nptr, char ** endptr, int base);
254
255 long long int strtoll(const char * nptr, char ** endptr, int base);
256
257 unsigned long long int strtoull(const char * nptr, char ** endptr, int base);
258
259 typedef __builtin_va_list __gnuc_va_list;
260
261 typedef __gnuc_va_list va_list;
262
263 typedef void FILE;
264
265 FILE * bsl_stdin(void);
266
267 FILE * bsl_stdout(void);
268
269 FILE * bsl_stderr(void);
270
271 char * fgets(char * s, int size, FILE * stream);
272
273 FILE * fopen(const char * path, const char * mode);
274
275 int fclose(FILE * fp);
276
277 int fflush(FILE * stream);
278
279 int fgetc(FILE * stream);
280
281 int fprintf(FILE * stream, const char * format, ...);
282
283 int fputc(int c, FILE * stream);
284
285 size_t fread(void * ptr, size_t size, size_t nmemb, FILE * stream);
286
287 size_t fwrite(const void * ptr, size_t size, size_t nmemb, FILE * stream);
288
289 int fseek(FILE * stream, long offset, int whence);
290
291 long ftell(FILE * stream);
292
293 int feof(FILE * stream);
294
295 int ferror(FILE * stream);
296
297 int fileno(FILE * stream);
298
299
300 struct __ecereNameSpace__ecere__com__Class * __ecereNameSpace__ecere__com__eSystem_FindClass(struct __ecereNameSpace__ecere__com__Instance * module, char * name);
301
302 void * __ecereNameSpace__ecere__com__eSystem_Renew(void * memory, unsigned int size);
303
304 void * __ecereNameSpace__ecere__com__eSystem_Renew0(void * memory, unsigned int size);
305
306 void * __ecereNameSpace__ecere__com__eSystem_New(unsigned int size);
307
308 void * __ecereNameSpace__ecere__com__eSystem_New0(unsigned int size);
309
310 void __ecereNameSpace__ecere__com__eSystem_Delete(void * memory);
311
312 void * __ecereNameSpace__ecere__com__eInstance_New(struct __ecereNameSpace__ecere__com__Class * _class);
313
314 extern int __ecereVMethodID_class_OnGetDataFromString;
315
316 unsigned int Instance_LocateModule(char * name, char * fileName);
317
318 void Instance_COM_Initialize(int argc, char ** argv, char ** parsedCommand, int * argcPtr, char *** argvPtr);
319
320 void * Instance_Module_Load(char * name, void ** Load, void ** Unload);
321
322 void Instance_Module_Free(void * library);
323
324 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__unichar;
325
326 int __ecereNameSpace__ecere__sys__UTF32toUTF8Len(unsigned int *  source, int count, unsigned char *  dest, int max);
327
328 char * __ecereMethod___ecereNameSpace__ecere__com__unichar_OnGetString(struct __ecereNameSpace__ecere__com__Class * class, unsigned int * this, char * tempString, void * fieldData, unsigned int * needClass)
329 {
330 __ecereNameSpace__ecere__sys__UTF32toUTF8Len(&(*(this)), 1, tempString, 5);
331 return tempString;
332 }
333
334 unsigned int __ecereNameSpace__ecere__sys__UTF8GetChar(char *  string, int *  numBytes);
335
336 unsigned int __ecereMethod___ecereNameSpace__ecere__com__unichar_OnGetDataFromString(struct __ecereNameSpace__ecere__com__Class * class, unsigned int * this, char * string)
337 {
338 int nb;
339
340 (*(this)) = __ecereNameSpace__ecere__sys__UTF8GetChar(string, &nb);
341 return 0x1;
342 }
343
344 void __ecereNameSpace__ecere__com__eInstance_FireWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property);
345
346 void __ecereNameSpace__ecere__com__MemoryGuard_PushLoc(char * loc)
347 {
348 }
349
350 void __ecereNameSpace__ecere__com__MemoryGuard_PopLoc()
351 {
352 }
353
354 extern unsigned int stdcall __ecereDll_Load_ecere(struct __ecereNameSpace__ecere__com__Instance * module);
355
356 extern void stdcall __ecereDll_Unload_ecere(struct __ecereNameSpace__ecere__com__Instance * module);
357
358 struct __ecereNameSpace__ecere__com__BTNamedLink
359 {
360 char * name;
361 struct __ecereNameSpace__ecere__com__BTNamedLink * parent, * left, * right;
362 int depth;
363 void * data;
364 };
365
366 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__BTNamedLink;
367
368 struct __ecereNameSpace__ecere__com__SelfWatcher
369 {
370 struct __ecereNameSpace__ecere__com__SelfWatcher * prev, * next;
371 void (* callback)(struct __ecereNameSpace__ecere__com__Instance *);
372 struct __ecereNameSpace__ecere__com__Property * _property;
373 };
374
375 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__SelfWatcher;
376
377 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__AccessMode;
378
379 struct __ecereNameSpace__ecere__com__SubModule
380 {
381 struct __ecereNameSpace__ecere__com__SubModule * prev, * next;
382 struct __ecereNameSpace__ecere__com__Instance * module;
383 int importMode;
384 };
385
386 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__SubModule;
387
388 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__DataMemberType;
389
390 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__ClassType;
391
392 static struct __ecereNameSpace__ecere__com__Property * __ecereProp___ecereNameSpace__ecere__com__Class_char__PTR_, * __ecerePropM___ecereNameSpace__ecere__com__Class_char__PTR_;
393
394 char *  __ecereProp___ecereNameSpace__ecere__com__Class_Get_char__PTR_(struct __ecereNameSpace__ecere__com__Class * this)
395 {
396 return this->name;
397 }
398
399 extern struct __ecereNameSpace__ecere__com__Instance * __thisModule;
400
401 struct __ecereNameSpace__ecere__com__Class * __ecereProp___ecereNameSpace__ecere__com__Class_Set_char__PTR_(char *  value)
402 {
403 struct __ecereNameSpace__ecere__com__Class * theClass = __ecereNameSpace__ecere__com__eSystem_FindClass(__thisModule, value);
404
405 return theClass;
406 }
407
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)
409 {
410 return this->name;
411 }
412
413 struct __ecereNameSpace__ecere__com__NameSpace
414 {
415 char * name;
416 struct __ecereNameSpace__ecere__com__NameSpace * btParent, * left, * right;
417 int depth;
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;
423 };
424
425 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__NameSpace;
426
427 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Module;
428
429 struct __ecereNameSpace__ecere__com__Module
430 {
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;
438 char *  name;
439 void *  library;
440 void *  Unload;
441 int importType;
442 struct __ecereNameSpace__ecere__com__NameSpace privateNameSpace;
443 struct __ecereNameSpace__ecere__com__NameSpace publicNameSpace;
444 };
445
446 unsigned int __ecereMethod___ecereNameSpace__ecere__com__Class_OnGetDataFromString(struct __ecereNameSpace__ecere__com__Class * class, struct __ecereNameSpace__ecere__com__Class ** this, char * string)
447 {
448 struct __ecereNameSpace__ecere__com__Class * theClass;
449
450 theClass = __ecereNameSpace__ecere__com__eSystem_FindClass(__thisModule, string);
451 if(!theClass)
452 theClass = __ecereNameSpace__ecere__com__eSystem_FindClass(((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application, string);
453 (*(this)) = (void *)theClass;
454 return theClass != (((void *)0));
455 }
456
457 void __ecereMethod___ecereNameSpace__ecere__com__IOChannel_Serialize(struct __ecereNameSpace__ecere__com__Instance * this, struct __ecereNameSpace__ecere__com__Class * class, void * data);
458
459 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_char__PTR_;
460
461 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)
462 {
463 __ecereMethod___ecereNameSpace__ecere__com__IOChannel_Serialize(channel, __ecereClass_char__PTR_, this->fullName);
464 }
465
466 void __ecereMethod___ecereNameSpace__ecere__com__Class_OnFree(struct __ecereNameSpace__ecere__com__Class * class, struct __ecereNameSpace__ecere__com__Class * this)
467 {
468 }
469
470 void __ecereMethod___ecereNameSpace__ecere__com__IOChannel_Unserialize(struct __ecereNameSpace__ecere__com__Instance * this, struct __ecereNameSpace__ecere__com__Class * class, void * *  data);
471
472 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_String;
473
474 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)
475 {
476 struct __ecereNameSpace__ecere__com__Class * theClass;
477 char * string;
478
479 __ecereMethod___ecereNameSpace__ecere__com__IOChannel_Unserialize(channel, __ecereClass_String, &string);
480 theClass = __ecereNameSpace__ecere__com__eSystem_FindClass(__thisModule, string);
481 if(!theClass)
482 theClass = __ecereNameSpace__ecere__com__eSystem_FindClass(((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application, string);
483 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
484 (*(this)) = (void *)theClass;
485 }
486
487 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__TemplateParameterType;
488
489 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__TemplateMemberType;
490
491 struct __ecereNameSpace__ecere__com__ClassTemplateParameter
492 {
493 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * prev, * next;
494 char * name;
495 int type;
496 union
497 {
498 char * dataTypeString;
499 int memberType;
500 };
501 struct __ecereNameSpace__ecere__com__ClassTemplateArgument defaultArg;
502 void * param;
503 };
504
505 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__ClassTemplateParameter;
506
507 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__MethodType;
508
509 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__ImportType;
510
511 struct __ecereNameSpace__ecere__com__BitMember
512 {
513 struct __ecereNameSpace__ecere__com__BitMember * prev, * next;
514 char * name;
515 unsigned int isProperty;
516 int memberAccess;
517 int id;
518 struct __ecereNameSpace__ecere__com__Class * _class;
519 char * dataTypeString;
520 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
521 struct __ecereNameSpace__ecere__com__Instance * dataType;
522 int type;
523 int size;
524 int pos;
525 uint64 mask;
526 };
527
528 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__BitMember;
529
530 struct __ecereNameSpace__ecere__com__ClassProperty
531 {
532 char * name;
533 struct __ecereNameSpace__ecere__com__ClassProperty * parent, * left, * right;
534 int depth;
535 void (* Set)(struct __ecereNameSpace__ecere__com__Class *, int);
536 int (* Get)(struct __ecereNameSpace__ecere__com__Class *);
537 char * dataTypeString;
538 struct __ecereNameSpace__ecere__com__Instance * dataType;
539 unsigned int constant;
540 };
541
542 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__ClassProperty;
543
544 struct __ecereNameSpace__ecere__com__DefinedExpression
545 {
546 struct __ecereNameSpace__ecere__com__DefinedExpression * prev, * next;
547 char * name;
548 char * value;
549 struct __ecereNameSpace__ecere__com__NameSpace * nameSpace;
550 };
551
552 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__DefinedExpression;
553
554 struct __ecereNameSpace__ecere__com__GlobalFunction
555 {
556 struct __ecereNameSpace__ecere__com__GlobalFunction * prev, * next;
557 char * name;
558 int (* function)();
559 struct __ecereNameSpace__ecere__com__Instance * module;
560 struct __ecereNameSpace__ecere__com__NameSpace * nameSpace;
561 char * dataTypeString;
562 struct __ecereNameSpace__ecere__com__Instance * dataType;
563 void * symbol;
564 };
565
566 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__GlobalFunction;
567
568 struct __ecereNameSpace__ecere__com__EnumClassData
569 {
570 struct __ecereNameSpace__ecere__sys__OldList values;
571 int largest;
572 };
573
574 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__EnumClassData;
575
576 struct __ecereNameSpace__ecere__com__Watcher
577 {
578 struct __ecereNameSpace__ecere__com__Watcher * prev, * next;
579 void (* callback)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__Instance *);
580 struct __ecereNameSpace__ecere__com__Instance * object;
581 };
582
583 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Watcher;
584
585 static unsigned int __ecereNameSpace__ecere__com__TOTAL_MEM = 0;
586
587 static unsigned int __ecereNameSpace__ecere__com__OUTSIDE_MEM = 0;
588
589 struct __ecereNameSpace__ecere__com__MemBlock
590 {
591 struct __ecereNameSpace__ecere__com__MemBlock * prev, * next;
592 struct __ecereNameSpace__ecere__com__MemPart * part;
593 unsigned int size;
594 };
595
596 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__MemBlock;
597
598 struct __ecereNameSpace__ecere__com__MemPart
599 {
600 void * memory;
601 int blocksUsed;
602 int size;
603 struct __ecereNameSpace__ecere__com__BlockPool * pool;
604 };
605
606 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__MemPart;
607
608 static int __ecereNameSpace__ecere__com__power15[] = 
609 {
610 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
611 };
612
613 struct __ecereNameSpace__ecere__com__BlockPool
614 {
615 struct __ecereNameSpace__ecere__com__MemBlock * first, * last;
616 struct __ecereNameSpace__ecere__com__MemBlock * free;
617 unsigned int blockSize;
618 unsigned int blockSpace;
619 int numParts;
620 int numBlocks;
621 unsigned int totalSize;
622 unsigned int usedSpace;
623 };
624
625 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__BlockPool;
626
627 unsigned int __ecereMethod___ecereNameSpace__ecere__com__BlockPool_Expand(struct __ecereNameSpace__ecere__com__BlockPool * this, unsigned int numBlocks)
628 {
629 unsigned char * memory = malloc(numBlocks * this->blockSpace);
630
631 __ecereNameSpace__ecere__com__TOTAL_MEM += numBlocks * this->blockSpace;
632 if(memory)
633 {
634 int c;
635 struct __ecereNameSpace__ecere__com__MemBlock * block = (struct __ecereNameSpace__ecere__com__MemBlock *)memory;
636 struct __ecereNameSpace__ecere__com__MemPart * part = calloc(1, sizeof(struct __ecereNameSpace__ecere__com__MemPart));
637
638 __ecereNameSpace__ecere__com__TOTAL_MEM += sizeof(struct __ecereNameSpace__ecere__com__MemPart);
639 this->free = block;
640 for(c = 0; c < numBlocks - 1; c++)
641 {
642 block->part = part;
643 block->prev = (((void *)0));
644 block->next = (struct __ecereNameSpace__ecere__com__MemBlock *)((unsigned char *)block + this->blockSpace);
645 block = block->next;
646 }
647 part->blocksUsed = 0;
648 part->pool = this;
649 part->memory = memory;
650 part->size = numBlocks;
651 block->part = part;
652 block->prev = (((void *)0));
653 block->next = (((void *)0));
654 this->totalSize += numBlocks;
655 this->numParts++;
656 return 0x1;
657 }
658 return 0x0;
659 }
660
661 struct __ecereNameSpace__ecere__com__MemBlock * __ecereMethod___ecereNameSpace__ecere__com__BlockPool_Add(struct __ecereNameSpace__ecere__com__BlockPool * this)
662 {
663 int __simpleStruct0;
664 struct __ecereNameSpace__ecere__com__MemBlock * block = (((void *)0));
665
666 if(!this->free)
667 __ecereMethod___ecereNameSpace__ecere__com__BlockPool_Expand(this, (__simpleStruct0 = this->numBlocks / 2, (1 > __simpleStruct0) ? 1 : __simpleStruct0));
668 if(this->free)
669 {
670 block = this->free;
671 block->prev = this->last;
672 if(block->prev)
673 block->prev->next = block;
674 if(!this->first)
675 this->first = block;
676 this->last = block;
677 this->free = block->next;
678 block->next = (((void *)0));
679 block->part->blocksUsed++;
680 this->numBlocks++;
681 }
682 return block;
683 }
684
685 void __ecereMethod___ecereNameSpace__ecere__com__BlockPool_Remove(struct __ecereNameSpace__ecere__com__BlockPool * this, struct __ecereNameSpace__ecere__com__MemBlock * block)
686 {
687 if(block->prev)
688 block->prev->next = block->next;
689 if(block->next)
690 block->next->prev = block->prev;
691 if(this->first == block)
692 this->first = block->next;
693 if(this->last == block)
694 this->last = block->prev;
695 block->next = this->free;
696 this->free = block;
697 block->part->blocksUsed--;
698 this->numBlocks--;
699 (*block->part->pool).usedSpace -= block->size;
700 if(!block->part->blocksUsed && this->numBlocks && this->totalSize > this->numBlocks + this->numBlocks / 2)
701 {
702 struct __ecereNameSpace__ecere__com__MemBlock * next = this->free, * prev = (((void *)0));
703 struct __ecereNameSpace__ecere__com__MemPart * part = block->part;
704
705 this->free = (((void *)0));
706 this->totalSize -= part->size;
707 while(next)
708 {
709 if(next->part != part)
710 {
711 if(prev)
712 prev->next = next;
713 else
714 this->free = next;
715 prev = next;
716 }
717 next = next->next;
718 }
719 ;
720 if(prev)
721 prev->next = (((void *)0));
722 __ecereNameSpace__ecere__com__TOTAL_MEM -= part->size * this->blockSpace;
723 __ecereNameSpace__ecere__com__TOTAL_MEM -= sizeof(struct __ecereNameSpace__ecere__com__MemPart);
724 this->numParts--;
725 free(part->memory);
726 free(part);
727 }
728 }
729
730 static struct __ecereNameSpace__ecere__com__BlockPool * __ecereNameSpace__ecere__com__pools;
731
732 static unsigned int __ecereNameSpace__ecere__com__PosFibonacci(unsigned int number)
733 {
734 unsigned int pos;
735 unsigned int last = 1, prev = 0;
736 unsigned int current = 1;
737
738 for(pos = 0; ; pos++)
739 {
740 current += prev;
741 prev = last;
742 last = current;
743 if(current >= number)
744 break;
745 }
746 return pos;
747 }
748
749 static unsigned int __ecereNameSpace__ecere__com__NthFibonacci(unsigned int number)
750 {
751 unsigned int pos;
752 unsigned int last = 1, prev = 0;
753 unsigned int current = 1;
754
755 for(pos = 0; pos <= number; pos++)
756 {
757 current += prev;
758 prev = last;
759 last = current;
760 }
761 return current;
762 }
763
764 static unsigned int __ecereNameSpace__ecere__com__NextFibonacci(unsigned int number)
765 {
766 unsigned int pos;
767 unsigned int last = 1, prev = 0;
768 unsigned int current = 1;
769
770 for(pos = 0; ; pos++)
771 {
772 current += prev;
773 prev = last;
774 last = current;
775 if(current >= number)
776 return current;
777 }
778 }
779
780 static unsigned int __ecereNameSpace__ecere__com__log1_5i(unsigned int number)
781 {
782 unsigned int pos;
783 uint64 current = 4;
784
785 for(pos = 0; pos < 31; pos++)
786 {
787 if(current >= number)
788 break;
789 current = current * 3 / 2;
790 if(current == 1)
791 current = 2;
792 }
793 return pos;
794 }
795
796 static unsigned int __ecereNameSpace__ecere__com__pow1_5(unsigned int number)
797 {
798 unsigned int pos;
799 uint64 current = 4;
800
801 for(pos = 0; pos < number; pos++)
802 {
803 current = current * 3 / 2;
804 if(current == 1)
805 current = 2;
806 }
807 return (unsigned int)current;
808 }
809
810 static unsigned int __ecereNameSpace__ecere__com__pow1_5i(unsigned int number)
811 {
812 unsigned int pos;
813 uint64 current = 4;
814
815 for(pos = 0; pos < 31; pos++)
816 {
817 if(current >= number)
818 return (unsigned int)current;
819 current = current * 3 / 2;
820 if(current == 1)
821 current = 2;
822 }
823 return (unsigned int)current;
824 }
825
826 unsigned int __ecereNameSpace__ecere__com__log2i(unsigned int number)
827 {
828 unsigned int power;
829
830 for(power = 0; power < 32; power++)
831 if((1L << power) >= number)
832 break;
833 return power;
834 }
835
836 unsigned int __ecereNameSpace__ecere__com__pow2i(unsigned int number)
837 {
838 return 1 << __ecereNameSpace__ecere__com__log2i(number);
839 }
840
841 static unsigned int __ecereNameSpace__ecere__com__memoryInitialized = 0x0;
842
843 static void __ecereNameSpace__ecere__com__InitMemory()
844 {
845 int c;
846
847 __ecereNameSpace__ecere__com__memoryInitialized = 0x1;
848 __ecereNameSpace__ecere__com__pools = calloc(1, sizeof(struct __ecereNameSpace__ecere__com__BlockPool) * 31);
849 for(c = 0; c < 31; c++)
850 {
851 int expansion;
852
853 __ecereNameSpace__ecere__com__pools[c].blockSize = __ecereNameSpace__ecere__com__pow1_5(c);
854 if(__ecereNameSpace__ecere__com__pools[c].blockSize % 4)
855 __ecereNameSpace__ecere__com__pools[c].blockSize += 4 - (__ecereNameSpace__ecere__com__pools[c].blockSize % 4);
856 __ecereNameSpace__ecere__com__pools[c].blockSpace = __ecereNameSpace__ecere__com__pools[c].blockSize;
857 __ecereNameSpace__ecere__com__pools[c].blockSpace += sizeof(struct __ecereNameSpace__ecere__com__MemBlock);
858 expansion = (__ecereNameSpace__ecere__com__pools[c].blockSize < 128) ? 1024 : (131072 / __ecereNameSpace__ecere__com__pools[c].blockSize);
859 if(c < 12)
860 __ecereMethod___ecereNameSpace__ecere__com__BlockPool_Expand(&__ecereNameSpace__ecere__com__pools[c], ((1 > expansion) ? 1 : expansion));
861 }
862 }
863
864 static void * __ecereNameSpace__ecere__com___mymalloc(unsigned int size)
865 {
866 struct __ecereNameSpace__ecere__com__MemBlock * block = (((void *)0));
867
868 if(size)
869 {
870 unsigned int p = __ecereNameSpace__ecere__com__log1_5i(size);
871
872 if(!__ecereNameSpace__ecere__com__memoryInitialized)
873 __ecereNameSpace__ecere__com__InitMemory();
874 if(p < 31)
875 {
876 block = __ecereMethod___ecereNameSpace__ecere__com__BlockPool_Add(&__ecereNameSpace__ecere__com__pools[p]);
877 if(block)
878 {
879 block->size = size;
880 __ecereNameSpace__ecere__com__pools[p].usedSpace += size;
881 }
882 }
883 else
884 {
885 block = malloc(sizeof(struct __ecereNameSpace__ecere__com__MemBlock) + size);
886 if(block)
887 {
888 __ecereNameSpace__ecere__com__TOTAL_MEM += sizeof(struct __ecereNameSpace__ecere__com__MemBlock) + size;
889 __ecereNameSpace__ecere__com__OUTSIDE_MEM += sizeof(struct __ecereNameSpace__ecere__com__MemBlock) + size;
890 block->part = (((void *)0));
891 }
892 }
893 }
894 return block ? ((struct __ecereNameSpace__ecere__com__MemBlock *)block + 1) : (((void *)0));
895 }
896
897 extern void memset(void *  area, unsigned char value, unsigned int count);
898
899 static void * __ecereNameSpace__ecere__com___mycalloc(int n, unsigned int size)
900 {
901 void * pointer = __ecereNameSpace__ecere__com___mymalloc(size);
902
903 if(pointer)
904 memset(pointer, (unsigned char)0, size);
905 return pointer;
906 }
907
908 static void __ecereNameSpace__ecere__com___myfree(void * pointer)
909 {
910 if(pointer)
911 {
912 struct __ecereNameSpace__ecere__com__MemBlock * block = (struct __ecereNameSpace__ecere__com__MemBlock *)((unsigned char *)pointer - sizeof(struct __ecereNameSpace__ecere__com__MemBlock));
913 struct __ecereNameSpace__ecere__com__MemPart * part = block->part;
914 struct __ecereNameSpace__ecere__com__BlockPool * pool = part ? part->pool : (((void *)0));
915
916 if(pool)
917 __ecereMethod___ecereNameSpace__ecere__com__BlockPool_Remove((&*pool), block);
918 else
919 {
920 __ecereNameSpace__ecere__com__TOTAL_MEM -= sizeof(struct __ecereNameSpace__ecere__com__MemBlock) + block->size;
921 __ecereNameSpace__ecere__com__OUTSIDE_MEM -= sizeof(struct __ecereNameSpace__ecere__com__MemBlock) + block->size;
922 free(block);
923 }
924 }
925 }
926
927 extern void *  memcpy(void * , const void * , unsigned int size);
928
929 static void * __ecereNameSpace__ecere__com___myrealloc(void * pointer, unsigned int size)
930 {
931 struct __ecereNameSpace__ecere__com__MemBlock * block = pointer ? ((struct __ecereNameSpace__ecere__com__MemBlock *)((unsigned char *)pointer - sizeof(struct __ecereNameSpace__ecere__com__MemBlock))) : (((void *)0));
932 void * newPointer = (((void *)0));
933 struct __ecereNameSpace__ecere__com__MemPart * part = block ? block->part : (((void *)0));
934 struct __ecereNameSpace__ecere__com__BlockPool * pool = part ? part->pool : (((void *)0));
935
936 if(block)
937 {
938 if(pool)
939 {
940 unsigned int ns = __ecereNameSpace__ecere__com__pow1_5i(size);
941 unsigned int mod = ns % 4;
942
943 if(mod)
944 ns += 4 - mod;
945 if(ns == (*pool).blockSize)
946 {
947 newPointer = pointer;
948 (*pool).usedSpace += size - block->size;
949 block->size = size;
950 }
951 }
952 else if(size)
953 {
954 struct __ecereNameSpace__ecere__com__MemBlock * newBlock = realloc(block, sizeof(struct __ecereNameSpace__ecere__com__MemBlock) + size);
955
956 if(newBlock)
957 {
958 __ecereNameSpace__ecere__com__TOTAL_MEM += size - newBlock->size;
959 __ecereNameSpace__ecere__com__OUTSIDE_MEM += size - newBlock->size;
960 newPointer = ((struct __ecereNameSpace__ecere__com__MemBlock *)newBlock + 1);
961 }
962 }
963 }
964 if(!newPointer)
965 {
966 newPointer = __ecereNameSpace__ecere__com___mymalloc(size);
967 if(pointer && newPointer)
968 {
969 unsigned int __simpleStruct0;
970
971 memcpy(newPointer, pointer, (__simpleStruct0 = block->size, (size < __simpleStruct0) ? size : __simpleStruct0));
972 __ecereNameSpace__ecere__com___myfree(pointer);
973 }
974 }
975 return newPointer;
976 }
977
978 static void * __ecereNameSpace__ecere__com___mycrealloc(void * pointer, unsigned int size)
979 {
980 struct __ecereNameSpace__ecere__com__MemBlock * block = pointer ? ((struct __ecereNameSpace__ecere__com__MemBlock *)((unsigned char *)pointer - sizeof(struct __ecereNameSpace__ecere__com__MemBlock))) : (((void *)0));
981 void * newPointer = (((void *)0));
982 struct __ecereNameSpace__ecere__com__MemPart * part = block ? block->part : (((void *)0));
983 struct __ecereNameSpace__ecere__com__BlockPool * pool = part ? part->pool : (((void *)0));
984
985 if(block)
986 {
987 if(pool)
988 {
989 unsigned int ns = __ecereNameSpace__ecere__com__pow1_5i(size);
990 unsigned int mod = ns % 4;
991
992 if(mod)
993 ns += 4 - mod;
994 if(ns == (*pool).blockSize)
995 {
996 int extra = size - block->size;
997
998 newPointer = pointer;
999 (*pool).usedSpace += extra;
1000 if(extra > 0)
1001 memset((unsigned char *)pointer + block->size, (unsigned char)0, extra);
1002 block->size = size;
1003 }
1004 }
1005 else if(size)
1006 {
1007 struct __ecereNameSpace__ecere__com__MemBlock * newBlock = realloc(block, sizeof(struct __ecereNameSpace__ecere__com__MemBlock) + size);
1008
1009 if(newBlock)
1010 {
1011 int extra = size - newBlock->size;
1012
1013 __ecereNameSpace__ecere__com__TOTAL_MEM += extra;
1014 __ecereNameSpace__ecere__com__OUTSIDE_MEM += extra;
1015 newPointer = ((struct __ecereNameSpace__ecere__com__MemBlock *)newBlock + 1);
1016 if(extra > 0)
1017 memset((unsigned char *)newPointer + newBlock->size, (unsigned char)0, extra);
1018 newBlock->size = size;
1019 }
1020 }
1021 }
1022 if(!newPointer)
1023 {
1024 newPointer = __ecereNameSpace__ecere__com___mymalloc(size);
1025 if(newPointer)
1026 {
1027 if(pointer)
1028 {
1029 unsigned int __simpleStruct0;
1030
1031 memcpy(newPointer, pointer, (__simpleStruct0 = block->size, (size < __simpleStruct0) ? size : __simpleStruct0));
1032 if(size > block->size)
1033 memset((unsigned char *)newPointer + block->size, (unsigned char)0, size - block->size);
1034 __ecereNameSpace__ecere__com___myfree(pointer);
1035 }
1036 else
1037 memset((unsigned char *)newPointer, (unsigned char)0, size);
1038 }
1039 }
1040 return newPointer;
1041 }
1042
1043 static void * __ecereNameSpace__ecere__com___malloc(unsigned int size)
1044 {
1045 void * pointer;
1046
1047 pointer = __ecereNameSpace__ecere__com___mymalloc(size + 2 * 0);
1048 return (unsigned char *)pointer + 0;
1049 }
1050
1051 static void * __ecereNameSpace__ecere__com___calloc(int n, unsigned int size)
1052 {
1053 void * pointer;
1054
1055 pointer = __ecereNameSpace__ecere__com___mycalloc(n, size + 2 * 0);
1056 return (unsigned char *)pointer + 0;
1057 }
1058
1059 static void __ecereNameSpace__ecere__com___free(void *  pointer);
1060
1061 static void * __ecereNameSpace__ecere__com___realloc(void * pointer, unsigned int size)
1062 {
1063 if(!size)
1064 {
1065 __ecereNameSpace__ecere__com___free(pointer);
1066 return (((void *)0));
1067 }
1068 pointer = __ecereNameSpace__ecere__com___myrealloc(pointer, size);
1069 return (unsigned char *)pointer + 0;
1070 }
1071
1072 static void * __ecereNameSpace__ecere__com___crealloc(void * pointer, unsigned int size)
1073 {
1074 if(!size)
1075 return (((void *)0));
1076 pointer = __ecereNameSpace__ecere__com___mycrealloc(pointer, size);
1077 return (unsigned char *)pointer + 0;
1078 }
1079
1080 static void __ecereNameSpace__ecere__com___free(void * pointer)
1081 {
1082 if(pointer)
1083 {
1084 __ecereNameSpace__ecere__com___myfree(pointer);
1085 }
1086 }
1087
1088 void __ecereNameSpace__ecere__com__memswap(unsigned char * a, unsigned char * b, unsigned int size)
1089 {
1090 unsigned int c;
1091 unsigned char buffer[1024];
1092
1093 for(c = 0; c < size; )
1094 {
1095 int s = sizeof buffer;
1096
1097 if(c + s > size)
1098 s = size - c;
1099 memcpy(buffer, a + c, s);
1100 memcpy(a + c, b + c, s);
1101 memcpy(b + c, buffer, s);
1102 c += s;
1103 }
1104 }
1105
1106 void __ecereNameSpace__ecere__com__CheckMemory()
1107 {
1108 }
1109
1110 static void __ecereNameSpace__ecere__com__ComputeClassParameters(struct __ecereNameSpace__ecere__com__Class * templatedClass, char *  templateParams, struct __ecereNameSpace__ecere__com__Instance * findModule);
1111
1112 extern char *  strchr(char * , int);
1113
1114 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__OldLink;
1115
1116 struct __ecereNameSpace__ecere__sys__OldLink
1117 {
1118 struct __ecereNameSpace__ecere__sys__OldLink * prev;
1119 struct __ecereNameSpace__ecere__sys__OldLink * next;
1120 void *  data;
1121 };
1122
1123 extern char *  __ecereNameSpace__ecere__sys__CopyString(char *  string);
1124
1125 extern void *  memmove(void * , const void * , unsigned int size);
1126
1127 static void __ecereNameSpace__ecere__com__SetDelayedCPValues(struct __ecereNameSpace__ecere__com__Class * _class, struct __ecereNameSpace__ecere__com__ClassProperty * _property);
1128
1129 struct __ecereNameSpace__ecere__sys__BTNode * __ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(struct __ecereNameSpace__ecere__sys__BinaryTree * this);
1130
1131 extern struct __ecereNameSpace__ecere__com__Property ** __ecereProp___ecereNameSpace__ecere__sys__BinaryTree_first;
1132
1133 struct __ecereNameSpace__ecere__sys__BTNode * __ecereProp___ecereNameSpace__ecere__sys__BTNode_Get_next(struct __ecereNameSpace__ecere__sys__BTNode * this);
1134
1135 extern struct __ecereNameSpace__ecere__com__Property ** __ecereProp___ecereNameSpace__ecere__sys__BTNode_next;
1136
1137 struct __ecereNameSpace__ecere__sys__BTNode * __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(struct __ecereNameSpace__ecere__sys__BinaryTree * this, char *  key);
1138
1139 void __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(struct __ecereNameSpace__ecere__sys__BinaryTree * this, struct __ecereNameSpace__ecere__sys__BTNode * node);
1140
1141 void __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(struct __ecereNameSpace__ecere__sys__OldList * this, void *  item);
1142
1143 static void __ecereNameSpace__ecere__com__FixDerivativesBase(struct __ecereNameSpace__ecere__com__Class * base, struct __ecereNameSpace__ecere__com__Class * mod)
1144 {
1145 struct __ecereNameSpace__ecere__sys__OldLink * derivative;
1146 struct __ecereNameSpace__ecere__sys__OldLink * templateLink;
1147
1148 __ecereNameSpace__ecere__com__ComputeClassParameters(base, strchr(base->name, '<'), (((void *)0)));
1149 for(derivative = base->derivatives.first; derivative; derivative = derivative->next)
1150 {
1151 struct __ecereNameSpace__ecere__com__Class * _class = derivative->data;
1152 int type = _class->type;
1153 int size = _class->structSize - _class->offset;
1154 int oldSizeClass = _class->sizeClass;
1155 int sizeClass = _class->sizeClass - _class->offsetClass;
1156 struct __ecereNameSpace__ecere__com__Class * enumBase = (((void *)0));
1157 char * dataTypeString = (((void *)0));
1158 struct __ecereNameSpace__ecere__com__Class * baseClass;
1159 unsigned int offsetBefore = _class->offset;
1160 int offsetClass, totalSizeClass;
1161
1162 for(baseClass = base; baseClass->base; baseClass = baseClass->base)
1163 ;
1164 if(base && !base->internalDecl && (base->type == 5 || base->type == 1 || base->type == 0))
1165 type = base->type;
1166 if(type == 4)
1167 {
1168 if(base->type != 4)
1169 {
1170 enumBase = base;
1171 base = __ecereNameSpace__ecere__com__eSystem_FindClass(_class->module, "enum");
1172 }
1173 }
1174 dataTypeString = enumBase ? enumBase->dataTypeString : base->dataTypeString;
1175 offsetClass = base ? (base->templateClass ? base->templateClass->sizeClass : base->sizeClass) : (type == 5 ? 0 : 0);
1176 totalSizeClass = offsetClass + sizeClass;
1177 if(type == 0 || type == 5)
1178 _class->offset = (base && (base->templateClass ? base->templateClass->structSize : base->structSize) && base->type != 1000) ? (base->templateClass ? base->templateClass->structSize : base->structSize) : ((type == 5) ? 0 : 12);
1179 if(type == 1)
1180 {
1181 _class->memberOffset = (base && (base->templateClass ? base->templateClass->structSize : base->structSize) && base->type != 1000) ? (base->templateClass ? base->templateClass->structSize : base->structSize) : 0;
1182 _class->typeSize = _class->structSize = _class->memberOffset + size;
1183 }
1184 else if(type == 2 || type == 4 || type == 3)
1185 {
1186 struct __ecereNameSpace__ecere__com__Class * dataTypeClass = __ecereNameSpace__ecere__com__eSystem_FindClass(_class->module, dataTypeString);
1187
1188 if(dataTypeClass)
1189 _class->typeSize = dataTypeClass->typeSize;
1190 _class->structSize = 0;
1191 }
1192 else if(type == 0 || type == 5)
1193 {
1194 _class->structSize = _class->offset + size;
1195 _class->typeSize = sizeof(void *);
1196 }
1197 if(_class->type != 1000)
1198 _class->type = type;
1199 (__ecereNameSpace__ecere__com__eSystem_Delete(_class->dataTypeString), _class->dataTypeString = 0);
1200 _class->dataTypeString = __ecereNameSpace__ecere__sys__CopyString(dataTypeString);
1201 if(totalSizeClass != oldSizeClass)
1202 {
1203 _class->data = __ecereNameSpace__ecere__com__eSystem_Renew(_class->data, sizeof(unsigned char) * (totalSizeClass));
1204 memmove((unsigned char *)_class->data + mod->offsetClass, (unsigned char *)_class->data, totalSizeClass - mod->sizeClass);
1205 if(base->type != 1000 && base->type != 4)
1206 memcpy((unsigned char *)_class->data, (unsigned char *)base->data, totalSizeClass - _class->sizeClass);
1207 else
1208 memset((unsigned char *)_class->data, (unsigned char)0, totalSizeClass - _class->sizeClass);
1209 }
1210 _class->offsetClass = offsetClass;
1211 _class->sizeClass = totalSizeClass;
1212 if(mod->base && mod->base->base && mod->base->vTblSize > baseClass->vTblSize && (mod != (base->templateClass ? base->templateClass : base) || _class->vTblSize != mod->vTblSize))
1213 {
1214 struct __ecereNameSpace__ecere__com__Method * method, * next;
1215 struct __ecereNameSpace__ecere__com__Class * b;
1216
1217 _class->vTblSize += mod->base->vTblSize - baseClass->vTblSize;
1218 _class->_vTbl = __ecereNameSpace__ecere__com__eSystem_Renew(_class->_vTbl, sizeof(void *) * (_class->vTblSize));
1219 memmove(_class->_vTbl + mod->base->vTblSize, _class->_vTbl + baseClass->vTblSize, (_class->vTblSize - mod->vTblSize) * sizeof(void *));
1220 for(method = (struct __ecereNameSpace__ecere__com__Method *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&_class->methods); method; method = next)
1221 {
1222 next = (struct __ecereNameSpace__ecere__com__Method *)__ecereProp___ecereNameSpace__ecere__sys__BTNode_Get_next(((struct __ecereNameSpace__ecere__sys__BTNode *)method));
1223 if(method->type == 1)
1224 method->vid += mod->base->vTblSize - baseClass->vTblSize;
1225 }
1226 for(b = mod->base; b && b != (((void *)0)); b = b->base)
1227 {
1228 struct __ecereNameSpace__ecere__com__Method * vMethod;
1229
1230 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)))
1231 {
1232 if(vMethod->type == 1)
1233 {
1234 method = (struct __ecereNameSpace__ecere__com__Method *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&_class->methods, vMethod->name);
1235 if(method)
1236 {
1237 if(method->function)
1238 _class->_vTbl[vMethod->vid] = method->function;
1239 if(!method->symbol)
1240 {
1241 (__ecereNameSpace__ecere__com__eSystem_Delete(method->name), method->name = 0);
1242 (__ecereNameSpace__ecere__com__eSystem_Delete(method->dataTypeString), method->dataTypeString = 0);
1243 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&_class->methods, (struct __ecereNameSpace__ecere__sys__BTNode *)method);
1244 }
1245 else
1246 {
1247 (__ecereNameSpace__ecere__com__eSystem_Delete(method->dataTypeString), method->dataTypeString = 0);
1248 method->type = vMethod->type;
1249 method->dataTypeString = __ecereNameSpace__ecere__sys__CopyString(vMethod->dataTypeString);
1250 method->_class = vMethod->_class;
1251 }
1252 }
1253 else
1254 _class->_vTbl[vMethod->vid] = _class->base->_vTbl[vMethod->vid];
1255 }
1256 }
1257 }
1258 }
1259 if(type == 0 || type == 5 || type == 1)
1260 {
1261 struct __ecereNameSpace__ecere__com__Property * prop;
1262 struct __ecereNameSpace__ecere__com__DataMember * member;
1263 struct __ecereNameSpace__ecere__com__Class * c;
1264
1265 for(c = mod->base; c; c = c->base)
1266 {
1267 struct __ecereNameSpace__ecere__com__Property * _property;
1268
1269 for(_property = c->membersAndProperties.first; _property; _property = _property->next)
1270 {
1271 if(_property->isProperty)
1272 {
1273 struct __ecereNameSpace__ecere__com__BTNamedLink * link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&_class->prop, _property->name);
1274
1275 if(link)
1276 {
1277 prop = link->data;
1278 if(!prop->Set && !prop->Get && prop->memberAccess == 4)
1279 {
1280 struct __ecereNameSpace__ecere__com__SelfWatcher * watcher;
1281
1282 for(watcher = _class->selfWatchers.first; watcher; watcher = watcher->next)
1283 {
1284 if(watcher->_property == prop)
1285 watcher->_property = _property;
1286 }
1287 _property->selfWatchable = 0x1;
1288 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&_class->prop, (struct __ecereNameSpace__ecere__sys__BTNode *)link);
1289 (__ecereNameSpace__ecere__com__eSystem_Delete(prop->name), prop->name = 0);
1290 (__ecereNameSpace__ecere__com__eSystem_Delete(prop->dataTypeString), prop->dataTypeString = 0);
1291 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&_class->membersAndProperties, prop);
1292 }
1293 }
1294 }
1295 }
1296 }
1297 {
1298 for(member = _class->membersAndProperties.first; member; member = member->next)
1299 {
1300 int offsetDiff = _class->offset - offsetBefore;
1301
1302 if(!member->isProperty && offsetDiff > 0)
1303 {
1304 member->offset += offsetDiff;
1305 member->memberOffset += offsetDiff;
1306 }
1307 member->id += mod->base->memberID;
1308 }
1309 _class->memberID += mod->base->memberID;
1310 _class->startMemberID += mod->base->memberID;
1311 }
1312 }
1313 __ecereNameSpace__ecere__com__FixDerivativesBase(_class, mod);
1314 {
1315 struct __ecereNameSpace__ecere__com__Class * c;
1316
1317 for(c = mod->base; c; c = c->base)
1318 {
1319 struct __ecereNameSpace__ecere__com__ClassProperty * _property;
1320
1321 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)))
1322 {
1323 __ecereNameSpace__ecere__com__SetDelayedCPValues(_class, _property);
1324 }
1325 }
1326 }
1327 }
1328 {
1329 struct __ecereNameSpace__ecere__sys__OldLink * templateLink;
1330
1331 for(templateLink = base->templatized.first; templateLink; templateLink = templateLink->next)
1332 {
1333 struct __ecereNameSpace__ecere__com__Class * template = templateLink->data;
1334 char * templateParams = strchr(template->name, '<');
1335
1336 template->base = base->base;
1337 template->_vTbl = base->_vTbl;
1338 template->data = base->data;
1339 template->offset = base->offset;
1340 template->offsetClass = base->offsetClass;
1341 template->sizeClass = base->sizeClass;
1342 template->structSize = base->structSize;
1343 template->vTblSize = base->vTblSize;
1344 __ecereNameSpace__ecere__com__FixDerivativesBase(template, mod);
1345 }
1346 }
1347 }
1348
1349 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Application;
1350
1351 struct __ecereNameSpace__ecere__com__Application
1352 {
1353 int argc;
1354 char * *  argv;
1355 int exitCode;
1356 unsigned int isGUIApp;
1357 struct __ecereNameSpace__ecere__sys__OldList allModules;
1358 char *  parsedCommand;
1359 struct __ecereNameSpace__ecere__com__NameSpace systemNameSpace;
1360 };
1361
1362 extern char *  strncpy(char * , const char * , int n);
1363
1364 extern int strcmp(const char * , const char * );
1365
1366 static void __ecereNameSpace__ecere__com__FreeTemplatesDerivatives(struct __ecereNameSpace__ecere__com__Class * base);
1367
1368 extern int printf(char * , ...);
1369
1370 extern char *  __ecereNameSpace__ecere__GetTranslatedString(struct __ecereNameSpace__ecere__com__Instance * module, char *  string, char *  stringAndContext);
1371
1372 static void __ecereNameSpace__ecere__com__NameSpace_Free(struct __ecereNameSpace__ecere__com__NameSpace * parentNameSpace);
1373
1374 static struct __ecereNameSpace__ecere__com__BTNamedLink * __ecereNameSpace__ecere__com__SearchNameSpace(struct __ecereNameSpace__ecere__com__NameSpace * nameSpace, char *  name, void *  listOffset);
1375
1376 extern char *  strcpy(char * , const char * );
1377
1378 static void __ecereNameSpace__ecere__com__FreeTemplateArgs(struct __ecereNameSpace__ecere__com__Class * template);
1379
1380 static void __ecereNameSpace__ecere__com__CopyTemplateArg(struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param, struct __ecereNameSpace__ecere__com__ClassTemplateArgument * arg);
1381
1382 int __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString(struct __ecereNameSpace__ecere__sys__BinaryTree * this, char *  a, char *  b);
1383
1384 unsigned int __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(struct __ecereNameSpace__ecere__sys__BinaryTree * this, struct __ecereNameSpace__ecere__sys__BTNode * node);
1385
1386 void __ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove(struct __ecereNameSpace__ecere__sys__OldList * this, void *  item);
1387
1388 struct __ecereNameSpace__ecere__sys__OldLink * __ecereMethod___ecereNameSpace__ecere__sys__OldList_FindLink(struct __ecereNameSpace__ecere__sys__OldList * this, void *  data);
1389
1390 void __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(struct __ecereNameSpace__ecere__sys__OldList * this, void *  item);
1391
1392 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)
1393 {
1394 void * __ecereTemp1;
1395 int start = 0, c;
1396 struct __ecereNameSpace__ecere__com__NameSpace * nameSpace = (((void *)0));
1397
1398 {
1399 nameSpace = (declMode == 1) ? &((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->publicNameSpace : &((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->privateNameSpace;
1400 if(declMode == 4)
1401 nameSpace = &((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application + 296)))->systemNameSpace;
1402 {
1403 for(c = 0; name[c]; c++)
1404 {
1405 if(name[c] == '.' || (name[c] == ':' && name[c + 1] == ':'))
1406 {
1407 struct __ecereNameSpace__ecere__com__NameSpace * newSpace;
1408 char * spaceName = __ecereNameSpace__ecere__com___malloc(c - start + 1);
1409
1410 strncpy(spaceName, name + start, c - start);
1411 spaceName[c - start] = '\0';
1412 newSpace = (struct __ecereNameSpace__ecere__com__NameSpace *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&(*nameSpace).nameSpaces, spaceName);
1413 if(!newSpace)
1414 {
1415 newSpace = __ecereNameSpace__ecere__com__eSystem_New0(sizeof(struct __ecereNameSpace__ecere__com__NameSpace) * (1));
1416 (*newSpace).classes.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
1417 (*newSpace).defines.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
1418 (*newSpace).functions.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
1419 (*newSpace).nameSpaces.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
1420 (*newSpace).name = spaceName;
1421 (*newSpace).parent = nameSpace;
1422 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&(*nameSpace).nameSpaces, (struct __ecereNameSpace__ecere__sys__BTNode *)newSpace);
1423 }
1424 else
1425 (__ecereNameSpace__ecere__com__eSystem_Delete(spaceName), spaceName = 0);
1426 nameSpace = newSpace;
1427 if(name[c] == ':')
1428 c++;
1429 start = c + 1;
1430 }
1431 }
1432 }
1433 }
1434 if(c - start)
1435 {
1436 int offsetClass;
1437 int totalSizeClass;
1438 struct __ecereNameSpace__ecere__com__BTNamedLink * classLink = (((void *)0));
1439 struct __ecereNameSpace__ecere__com__Class * _class = (((void *)0));
1440 char * dataTypeString = (((void *)0));
1441 struct __ecereNameSpace__ecere__com__Class * enumBase = (((void *)0));
1442 struct __ecereNameSpace__ecere__com__Class * base = (baseName && baseName[0]) ? __ecereNameSpace__ecere__com__eSystem_FindClass(module, baseName) : (((void *)0));
1443 unsigned int refine = 0x0;
1444
1445 if(base && !base->internalDecl && (base->type == 5 || base->type == 1 || base->type == 0))
1446 {
1447 if(base->type == 1 && type == 0)
1448 type = 5;
1449 else
1450 type = base->type;
1451 }
1452 if(base && (type == 0 || type == 5 || type == 1) && (base->type == 3 || base->type == 2 || base->type == 4))
1453 {
1454 type = base->type;
1455 }
1456 if(!base || base->type == 1000)
1457 {
1458 if(type == 4)
1459 {
1460 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"))
1461 {
1462 base = __ecereNameSpace__ecere__com__eSystem_FindClass(module, "enum");
1463 dataTypeString = (baseName && baseName[0]) ? baseName : "int";
1464 }
1465 else
1466 {
1467 base = __ecereNameSpace__ecere__com__eSystem_RegisterClass((int)0, baseName, (((void *)0)), 0, 0, (((void *)0)), (((void *)0)), module, declMode, 1);
1468 base->internalDecl = 0x1;
1469 enumBase = base;
1470 base = __ecereNameSpace__ecere__com__eSystem_FindClass(module, "enum");
1471 }
1472 }
1473 else if(type == 1 && (!baseName || !baseName[0]))
1474 {
1475 base = __ecereNameSpace__ecere__com__eSystem_FindClass(module, "struct");
1476 dataTypeString = name + start;
1477 }
1478 else
1479 {
1480 if(type == 0)
1481 dataTypeString = "struct __ecereNameSpace__ecere__com__Instance";
1482 else if(type == 5)
1483 dataTypeString = "void *";
1484 else if(type == 2)
1485 dataTypeString = (baseName && baseName[0]) ? baseName : "unsigned int";
1486 else if(type == 3)
1487 dataTypeString = (baseName && baseName[0]) ? baseName : "int";
1488 else if(type == 1)
1489 dataTypeString = name + start;
1490 if(base || (!baseName || !baseName[0]) || type == 2 || type == 3)
1491 {
1492 if(base || !baseName || !baseName[0] || !strcmp(baseName, "unsigned int") || !strcmp(baseName, "uint") || !strcmp(baseName, "unsigned int64") || !strcmp(baseName, "uint64") || !strcmp(baseName, "int64") || !strcmp(baseName, "unsigned short") || !strcmp(baseName, "short") || !strcmp(baseName, "unsigned char") || !strcmp(baseName, "byte") || !strcmp(baseName, "char") || !strcmp(baseName, "uint32") || !strcmp(baseName, "uint16"))
1493 {
1494 if(type == 0 && strcmp(name, "ecere::com::Instance") && strcmp(name, "enum") && strcmp(name, "struct"))
1495 base = __ecereNameSpace__ecere__com__eSystem_FindClass(module, "ecere::com::Instance");
1496 else
1497 base = __ecereNameSpace__ecere__com__eSystem_FindClass(module, "class");
1498 }
1499 }
1500 else
1501 {
1502 }
1503 }
1504 }
1505 else
1506 {
1507 if(type == 4)
1508 {
1509 if(base->type != 4)
1510 {
1511 enumBase = base;
1512 base = __ecereNameSpace__ecere__com__eSystem_FindClass(module, "enum");
1513 }
1514 }
1515 dataTypeString = enumBase ? enumBase->dataTypeString : base->dataTypeString;
1516 }
1517 offsetClass = base ? base->sizeClass : (type == 5 ? 0 : 0);
1518 totalSizeClass = offsetClass + sizeClass;
1519 if((_class = __ecereNameSpace__ecere__com__eSystem_FindClass(module, name)))
1520 {
1521 __ecereNameSpace__ecere__com__FreeTemplatesDerivatives(_class);
1522 if(!_class->internalDecl)
1523 {
1524 if(declMode != 4)
1525 printf(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "error: Redefinition of class %s\n", (((void *)0))), name);
1526 else
1527 {
1528 _class->comRedefinition = 0x1;
1529 return _class;
1530 }
1531 return (((void *)0));
1532 }
1533 classLink = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&(*_class->nameSpace).classes, name + start);
1534 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&(*_class->nameSpace).classes, (struct __ecereNameSpace__ecere__sys__BTNode *)classLink);
1535 {
1536 struct __ecereNameSpace__ecere__sys__OldLink * t;
1537
1538 for(t = _class->templatized.first; t; t = t->next)
1539 {
1540 struct __ecereNameSpace__ecere__com__Class * template = t->data;
1541
1542 classLink = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&(*_class->nameSpace).classes, template->name);
1543 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&(*_class->nameSpace).classes, (struct __ecereNameSpace__ecere__sys__BTNode *)classLink);
1544 }
1545 }
1546 {
1547 struct __ecereNameSpace__ecere__com__NameSpace * ns = _class->nameSpace;
1548
1549 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))
1550 {
1551 struct __ecereNameSpace__ecere__com__NameSpace * parent = (*ns).parent;
1552
1553 __ecereNameSpace__ecere__com__NameSpace_Free(ns);
1554 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&(*parent).nameSpaces, (struct __ecereNameSpace__ecere__sys__BTNode *)ns);
1555 ns = parent;
1556 }
1557 }
1558 refine = 0x1;
1559 }
1560 else
1561 {
1562 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);
1563 if(!classLink)
1564 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);
1565 if(!classLink)
1566 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);
1567 if(!classLink)
1568 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);
1569 if(classLink)
1570 _class = classLink->data;
1571 if(_class && _class->internalDecl)
1572 {
1573 __ecereNameSpace__ecere__com__FreeTemplatesDerivatives(_class);
1574 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&(*_class->nameSpace).classes, (struct __ecereNameSpace__ecere__sys__BTNode *)classLink);
1575 {
1576 struct __ecereNameSpace__ecere__sys__OldLink * t;
1577
1578 for(t = _class->templatized.first; t; t = t->next)
1579 {
1580 struct __ecereNameSpace__ecere__com__Class * template = t->data;
1581
1582 classLink = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&(*_class->nameSpace).classes, template->name);
1583 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&(*_class->nameSpace).classes, (struct __ecereNameSpace__ecere__sys__BTNode *)classLink);
1584 }
1585 }
1586 refine = 0x1;
1587 (__ecereNameSpace__ecere__com__eSystem_Delete(_class->fullName), _class->fullName = 0);
1588 _class->fullName = __ecereNameSpace__ecere__sys__CopyString(name);
1589 }
1590 else
1591 {
1592 _class = __ecereNameSpace__ecere__com___calloc(1, sizeof(struct __ecereNameSpace__ecere__com__Class));
1593 _class->methods.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
1594 _class->members.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
1595 _class->prop.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
1596 _class->classProperties.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
1597 _class->name = __ecereNameSpace__ecere__sys__CopyString(name + start);
1598 _class->fullName = __ecereNameSpace__ecere__sys__CopyString(name);
1599 }
1600 }
1601 if(nameSpace)
1602 {
1603 __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)));
1604 {
1605 struct __ecereNameSpace__ecere__sys__OldLink * t;
1606
1607 for(t = _class->templatized.first; t; t = t->next)
1608 {
1609 struct __ecereNameSpace__ecere__com__Class * template = t->data;
1610
1611 __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)));
1612 }
1613 }
1614 }
1615 if(_class)
1616 {
1617 if(!base && baseName && strcmp(baseName, name))
1618 {
1619 if(strchr(baseName, '<'))
1620 {
1621 char templateClassName[1024];
1622 struct __ecereNameSpace__ecere__com__Class * templateBase;
1623
1624 strcpy(templateClassName, baseName);
1625 *strchr(templateClassName, '<') = '\0';
1626 templateBase = __ecereNameSpace__ecere__com__eSystem_FindClass(module, templateClassName);
1627 if(!templateBase)
1628 {
1629 templateBase = __ecereNameSpace__ecere__com__eSystem_RegisterClass((int)0, templateClassName, (((void *)0)), 0, 0, (((void *)0)), (((void *)0)), module, declMode, 1);
1630 templateBase->internalDecl = 0x1;
1631 }
1632 base = __ecereNameSpace__ecere__com__eSystem_FindClass(module, baseName);
1633 }
1634 else
1635 {
1636 base = __ecereNameSpace__ecere__com__eSystem_RegisterClass((int)0, baseName, (((void *)0)), 0, 0, (((void *)0)), (((void *)0)), module, declMode, 1);
1637 base->internalDecl = 0x1;
1638 }
1639 }
1640 else
1641 _class->internalDecl = 0x0;
1642 if(totalSizeClass)
1643 {
1644 _class->data = __ecereNameSpace__ecere__com__eSystem_Renew(_class->data, sizeof(unsigned char) * (totalSizeClass));
1645 if(base && base->type != 1000 && base->type != 4)
1646 memcpy(_class->data, base->data, offsetClass);
1647 else
1648 memset(_class->data, (unsigned char)0, offsetClass);
1649 memset((unsigned char *)_class->data + offsetClass, (unsigned char)0, sizeClass);
1650 }
1651 (__ecereNameSpace__ecere__com__eSystem_Delete(_class->dataTypeString), _class->dataTypeString = 0);
1652 _class->dataTypeString = __ecereNameSpace__ecere__sys__CopyString(dataTypeString);
1653 _class->defaultAlignment = base ? base->defaultAlignment : 0;
1654 if(_class->module)
1655 {
1656 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)_class->module + 12)))->classes, _class);
1657 }
1658 if(_class->base)
1659 {
1660 struct __ecereNameSpace__ecere__com__Class * base = _class->base;
1661 struct __ecereNameSpace__ecere__sys__OldLink * deriv = __ecereMethod___ecereNameSpace__ecere__sys__OldList_FindLink(&base->derivatives, _class);
1662
1663 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&base->derivatives, deriv);
1664 }
1665 if(module)
1666 {
1667 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->classes, _class);
1668 }
1669 _class->nameSpace = nameSpace;
1670 {
1671 struct __ecereNameSpace__ecere__sys__OldLink * t;
1672
1673 for(t = _class->templatized.first; t; t = t->next)
1674 {
1675 struct __ecereNameSpace__ecere__com__Class * template = t->data;
1676
1677 template->nameSpace = nameSpace;
1678 }
1679 }
1680 _class->module = module;
1681 _class->base = base;
1682 if(base)
1683 {
1684 int numParams = 0;
1685 struct __ecereNameSpace__ecere__com__Class * sClass;
1686
1687 for(sClass = base; sClass; sClass = sClass->base)
1688 {
1689 if(sClass->templateClass)
1690 sClass = sClass->templateClass;
1691 numParams += sClass->templateParams.count;
1692 }
1693 if(numParams)
1694 {
1695 if(_class->templateArgs)
1696 {
1697 __ecereNameSpace__ecere__com__FreeTemplateArgs(_class);
1698 }
1699 (__ecereNameSpace__ecere__com__eSystem_Delete(_class->templateArgs), _class->templateArgs = 0);
1700 _class->templateArgs = __ecereNameSpace__ecere__com__eSystem_New0(sizeof(struct __ecereNameSpace__ecere__com__ClassTemplateArgument) * (numParams));
1701 _class->numParams = numParams;
1702 for(sClass = _class; sClass; sClass = sClass->base)
1703 {
1704 struct __ecereNameSpace__ecere__com__Class * prevClass;
1705 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param;
1706 int id = 0;
1707
1708 if(sClass->templateClass)
1709 sClass = sClass->templateClass;
1710 for(prevClass = sClass->base; prevClass; prevClass = prevClass->base)
1711 {
1712 if(prevClass->templateClass)
1713 prevClass = prevClass->templateClass;
1714 id += prevClass->templateParams.count;
1715 }
1716 if(base->templateArgs)
1717 {
1718 for(param = sClass->templateParams.first; param; param = param->next)
1719 {
1720 _class->templateArgs[id] = base->templateArgs[id];
1721 __ecereNameSpace__ecere__com__CopyTemplateArg(param, &_class->templateArgs[id]);
1722 id++;
1723 }
1724 }
1725 }
1726 }
1727 }
1728 _class->memberID = _class->startMemberID = (base && (type == 0 || type == 5 || type == 1)) ? base->memberID : 0;
1729 if(type == 0 || type == 5)
1730 _class->offset = (base && base->structSize && base->type != 1000) ? base->structSize : ((type == 5) ? 0 : 12);
1731 if(type == 1)
1732 {
1733 _class->memberOffset = (base && base->structSize && base->type != 1000) ? base->structSize : 0;
1734 _class->typeSize = _class->structSize = _class->memberOffset + size;
1735 }
1736 else if(type == 2 || type == 4 || type == 3)
1737 {
1738 struct __ecereNameSpace__ecere__com__Class * dataTypeClass = __ecereNameSpace__ecere__com__eSystem_FindClass(_class->module, dataTypeString);
1739
1740 if(dataTypeClass)
1741 _class->typeSize = dataTypeClass->typeSize;
1742 _class->structSize = 0;
1743 }
1744 else if(type == 0 || type == 5)
1745 {
1746 _class->structSize = _class->offset + size;
1747 _class->typeSize = sizeof(void *);
1748 }
1749 _class->offsetClass = offsetClass;
1750 _class->sizeClass = totalSizeClass;
1751 _class->Constructor = (void *)Constructor;
1752 _class->Destructor = Destructor;
1753 if(_class->type != 1000)
1754 _class->type = type;
1755 if(!size)
1756 _class->computeSize = 0x1;
1757 else
1758 _class->computeSize = 0x0;
1759 _class->inheritanceAccess = inheritanceAccess;
1760 if(type == 4)
1761 {
1762 if(enumBase)
1763 _class->base = base = enumBase;
1764 {
1765 struct __ecereNameSpace__ecere__com__EnumClassData * data = (struct __ecereNameSpace__ecere__com__EnumClassData *)_class->data;
1766
1767 if(base && base->type != 4)
1768 data->largest = -1;
1769 else
1770 data->largest = ((struct __ecereNameSpace__ecere__com__EnumClassData *)base->data)->largest;
1771 }
1772 }
1773 if(base && base->vTblSize)
1774 {
1775 _class->vTblSize = base->vTblSize;
1776 (__ecereNameSpace__ecere__com__eSystem_Delete(_class->_vTbl), _class->_vTbl = 0);
1777 _class->_vTbl = __ecereNameSpace__ecere__com___malloc(sizeof(int (*)()) * _class->vTblSize);
1778 memcpy(_class->_vTbl, base->_vTbl, sizeof(int (*)()) * _class->vTblSize);
1779 }
1780 if(_class->base)
1781 {
1782 struct __ecereNameSpace__ecere__sys__OldLink * link = (link = __ecereNameSpace__ecere__com__eSystem_New0(12), link->data = _class, link);
1783
1784 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&_class->base->derivatives, link);
1785 }
1786 __ecereNameSpace__ecere__com__FixDerivativesBase(_class, _class);
1787 return _class;
1788 }
1789 }
1790 return (((void *)0));
1791 }
1792
1793 static void __ecereNameSpace__ecere__com__DataMember_Free(struct __ecereNameSpace__ecere__com__DataMember * parentMember)
1794 {
1795 struct __ecereNameSpace__ecere__com__DataMember * member;
1796 struct __ecereNameSpace__ecere__com__BTNamedLink * namedLink;
1797
1798 (__ecereNameSpace__ecere__com__eSystem_Delete(parentMember->name), parentMember->name = 0);
1799 (__ecereNameSpace__ecere__com__eSystem_Delete(parentMember->dataTypeString), parentMember->dataTypeString = 0);
1800 while((member = parentMember->members.first))
1801 {
1802 __ecereNameSpace__ecere__com__DataMember_Free(member);
1803 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&parentMember->members, member);
1804 }
1805 while((namedLink = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&parentMember->membersAlpha)))
1806 {
1807 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&parentMember->membersAlpha, (struct __ecereNameSpace__ecere__sys__BTNode *)namedLink);
1808 }
1809 }
1810
1811 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__NamedLink;
1812
1813 struct __ecereNameSpace__ecere__sys__NamedLink
1814 {
1815 struct __ecereNameSpace__ecere__sys__NamedLink * prev;
1816 struct __ecereNameSpace__ecere__sys__NamedLink * next;
1817 char *  name;
1818 void *  data;
1819 };
1820
1821 static void __ecereNameSpace__ecere__com__FreeEnumValue(struct __ecereNameSpace__ecere__sys__NamedLink * value)
1822 {
1823 (__ecereNameSpace__ecere__com__eSystem_Delete(value->name), value->name = 0);
1824 }
1825
1826 static void __ecereNameSpace__ecere__com__FreeTemplateArg(struct __ecereNameSpace__ecere__com__Class * template, struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param, int id)
1827 {
1828 switch(param->type)
1829 {
1830 case 0:
1831 (__ecereNameSpace__ecere__com__eSystem_Delete(template->templateArgs[id].dataTypeString), template->templateArgs[id].dataTypeString = 0);
1832 break;
1833 case 1:
1834 (__ecereNameSpace__ecere__com__eSystem_Delete(template->templateArgs[id].memberString), template->templateArgs[id].memberString = 0);
1835 break;
1836 case 2:
1837 break;
1838 }
1839 }
1840
1841 static void __ecereNameSpace__ecere__com__FreeTemplateArgs(struct __ecereNameSpace__ecere__com__Class * template)
1842 {
1843 if(template->templateArgs)
1844 {
1845 struct __ecereNameSpace__ecere__com__Class * _class;
1846
1847 for(_class = template; _class; _class = _class->base)
1848 {
1849 struct __ecereNameSpace__ecere__com__Class * prevClass;
1850 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param;
1851 int id = 0;
1852
1853 if(_class->templateClass)
1854 _class = _class->templateClass;
1855 for(prevClass = _class->base; prevClass; prevClass = prevClass->base)
1856 {
1857 if(prevClass->templateClass)
1858 prevClass = prevClass->templateClass;
1859 id += prevClass->templateParams.count;
1860 }
1861 if(id < template->numParams)
1862 {
1863 for(param = _class->templateParams.first; param; param = param->next)
1864 {
1865 switch(param->type)
1866 {
1867 case 0:
1868 (__ecereNameSpace__ecere__com__eSystem_Delete(template->templateArgs[id].dataTypeString), template->templateArgs[id].dataTypeString = 0);
1869 break;
1870 case 1:
1871 (__ecereNameSpace__ecere__com__eSystem_Delete(template->templateArgs[id].memberString), template->templateArgs[id].memberString = 0);
1872 break;
1873 case 2:
1874 break;
1875 }
1876 id++;
1877 }
1878 }
1879 }
1880 }
1881 }
1882
1883 static void __ecereNameSpace__ecere__com__FreeTemplate(struct __ecereNameSpace__ecere__com__Class * template)
1884 {
1885 struct __ecereNameSpace__ecere__sys__OldLink * deriv;
1886
1887 if(template->nameSpace)
1888 {
1889 struct __ecereNameSpace__ecere__com__BTNamedLink * link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&(*template->nameSpace).classes, template->name);
1890
1891 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&(*template->nameSpace).classes, (struct __ecereNameSpace__ecere__sys__BTNode *)link);
1892 }
1893 __ecereNameSpace__ecere__com__FreeTemplateArgs(template);
1894 (__ecereNameSpace__ecere__com__eSystem_Delete(template->fullName), template->fullName = 0);
1895 (__ecereNameSpace__ecere__com__eSystem_Delete(template->name), template->name = 0);
1896 (__ecereNameSpace__ecere__com__eSystem_Delete(template->templateArgs), template->templateArgs = 0);
1897 while((deriv = template->derivatives.first))
1898 {
1899 ((struct __ecereNameSpace__ecere__com__Class *)deriv->data)->base = (((void *)0));
1900 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&template->derivatives, deriv);
1901 }
1902 __ecereNameSpace__ecere__com___free(template);
1903 }
1904
1905 static void __ecereNameSpace__ecere__com__FreeTemplates(struct __ecereNameSpace__ecere__com__Class * _class)
1906 {
1907 struct __ecereNameSpace__ecere__sys__OldLink * deriv, * template;
1908
1909 for(deriv = _class->derivatives.first; deriv; deriv = deriv->next)
1910 {
1911 __ecereNameSpace__ecere__com__FreeTemplates(deriv->data);
1912 }
1913 __ecereNameSpace__ecere__com__FreeTemplateArgs(_class);
1914 (__ecereNameSpace__ecere__com__eSystem_Delete(_class->templateArgs), _class->templateArgs = 0);
1915 while((template = _class->templatized.first))
1916 {
1917 __ecereNameSpace__ecere__com__FreeTemplates(template->data);
1918 __ecereNameSpace__ecere__com__FreeTemplate(template->data);
1919 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&_class->templatized, template);
1920 }
1921 }
1922
1923 void __ecereMethod___ecereNameSpace__ecere__sys__OldList_Free(struct __ecereNameSpace__ecere__sys__OldList * this, void (*  freeFn)(void * ));
1924
1925 void __ecereNameSpace__ecere__com__eClass_Unregister(struct __ecereNameSpace__ecere__com__Class * _class)
1926 {
1927 struct __ecereNameSpace__ecere__com__BTNamedLink * namedLink;
1928 struct __ecereNameSpace__ecere__com__DataMember * member;
1929 struct __ecereNameSpace__ecere__com__Method * method;
1930 struct __ecereNameSpace__ecere__sys__OldLink * deriv, * template;
1931 struct __ecereNameSpace__ecere__com__ClassProperty * classProp;
1932 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param;
1933
1934 (__ecereNameSpace__ecere__com__eSystem_Delete(_class->_vTbl), _class->_vTbl = 0);
1935 __ecereNameSpace__ecere__com__FreeTemplates(_class);
1936 __ecereNameSpace__ecere__com__FreeTemplateArgs(_class);
1937 (__ecereNameSpace__ecere__com__eSystem_Delete(_class->templateArgs), _class->templateArgs = 0);
1938 while((template = _class->templatized.first))
1939 {
1940 __ecereNameSpace__ecere__com__FreeTemplate(template->data);
1941 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&_class->templatized, template);
1942 }
1943 while((member = _class->membersAndProperties.first))
1944 {
1945 if(!member->isProperty && (member->type == 1 || member->type == 2))
1946 __ecereNameSpace__ecere__com__DataMember_Free(member);
1947 (__ecereNameSpace__ecere__com__eSystem_Delete(member->name), member->name = 0);
1948 (__ecereNameSpace__ecere__com__eSystem_Delete(member->dataTypeString), member->dataTypeString = 0);
1949 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&_class->membersAndProperties, member);
1950 }
1951 while((member = _class->conversions.first))
1952 {
1953 (__ecereNameSpace__ecere__com__eSystem_Delete(member->name), member->name = 0);
1954 (__ecereNameSpace__ecere__com__eSystem_Delete(member->dataTypeString), member->dataTypeString = 0);
1955 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&_class->conversions, member);
1956 }
1957 while((namedLink = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&_class->prop)))
1958 {
1959 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&_class->prop, (struct __ecereNameSpace__ecere__sys__BTNode *)namedLink);
1960 }
1961 while((namedLink = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&_class->members)))
1962 {
1963 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&_class->members, (struct __ecereNameSpace__ecere__sys__BTNode *)namedLink);
1964 }
1965 while((classProp = (struct __ecereNameSpace__ecere__com__ClassProperty *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&_class->classProperties)))
1966 {
1967 (__ecereNameSpace__ecere__com__eSystem_Delete(classProp->name), classProp->name = 0);
1968 (__ecereNameSpace__ecere__com__eSystem_Delete(classProp->dataTypeString), classProp->dataTypeString = 0);
1969 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&_class->classProperties, (struct __ecereNameSpace__ecere__sys__BTNode *)classProp);
1970 }
1971 while((method = (struct __ecereNameSpace__ecere__com__Method *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&_class->methods)))
1972 {
1973 (__ecereNameSpace__ecere__com__eSystem_Delete(method->name), method->name = 0);
1974 (__ecereNameSpace__ecere__com__eSystem_Delete(method->dataTypeString), method->dataTypeString = 0);
1975 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&_class->methods, (struct __ecereNameSpace__ecere__sys__BTNode *)method);
1976 }
1977 if(_class->type == 4)
1978 {
1979 struct __ecereNameSpace__ecere__com__EnumClassData * data = (struct __ecereNameSpace__ecere__com__EnumClassData *)_class->data;
1980
1981 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Free(&data->values, (void *)__ecereNameSpace__ecere__com__FreeEnumValue);
1982 }
1983 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Free(&_class->delayedCPValues, (((void *)0)));
1984 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Free(&_class->selfWatchers, (((void *)0)));
1985 if(_class->base)
1986 {
1987 struct __ecereNameSpace__ecere__com__Class * base = _class->base;
1988
1989 for(deriv = base->derivatives.first; deriv; deriv = deriv->next)
1990 {
1991 if(deriv->data == _class)
1992 break;
1993 }
1994 if(deriv)
1995 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&base->derivatives, deriv);
1996 }
1997 while((deriv = _class->derivatives.first))
1998 {
1999 ((struct __ecereNameSpace__ecere__com__Class *)deriv->data)->base = (((void *)0));
2000 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&_class->derivatives, deriv);
2001 }
2002 if(_class->nameSpace)
2003 {
2004 struct __ecereNameSpace__ecere__com__BTNamedLink * link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&(*_class->nameSpace).classes, _class->name);
2005
2006 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&(*_class->nameSpace).classes, (struct __ecereNameSpace__ecere__sys__BTNode *)link);
2007 }
2008 (__ecereNameSpace__ecere__com__eSystem_Delete(_class->name), _class->name = 0);
2009 (__ecereNameSpace__ecere__com__eSystem_Delete(_class->fullName), _class->fullName = 0);
2010 (__ecereNameSpace__ecere__com__eSystem_Delete(_class->dataTypeString), _class->dataTypeString = 0);
2011 (__ecereNameSpace__ecere__com__eSystem_Delete(_class->data), _class->data = 0);
2012 while((param = _class->templateParams.first))
2013 {
2014 switch(param->type)
2015 {
2016 case 0:
2017 (__ecereNameSpace__ecere__com__eSystem_Delete(param->defaultArg.dataTypeString), param->defaultArg.dataTypeString = 0);
2018 break;
2019 case 1:
2020 (__ecereNameSpace__ecere__com__eSystem_Delete(param->defaultArg.memberString), param->defaultArg.memberString = 0);
2021 break;
2022 case 2:
2023 break;
2024 }
2025 if(param->type != 1)
2026 (__ecereNameSpace__ecere__com__eSystem_Delete(param->dataTypeString), param->dataTypeString = 0);
2027 (__ecereNameSpace__ecere__com__eSystem_Delete(param->name), param->name = 0);
2028 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&_class->templateParams, param);
2029 }
2030 __ecereNameSpace__ecere__com___free(_class);
2031 }
2032
2033 struct __ecereNameSpace__ecere__sys__BTNode * __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Find(struct __ecereNameSpace__ecere__sys__BinaryTree * this, unsigned int key);
2034
2035 static struct __ecereNameSpace__ecere__com__BTNamedLink * __ecereNameSpace__ecere__com__ScanNameSpace(struct __ecereNameSpace__ecere__com__NameSpace * nameSpace, char * name, void * listOffset)
2036 {
2037 struct __ecereNameSpace__ecere__sys__BinaryTree * tree = (struct __ecereNameSpace__ecere__sys__BinaryTree *)((unsigned char *)nameSpace + (unsigned int)listOffset);
2038 struct __ecereNameSpace__ecere__com__BTNamedLink * link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Find((&*tree), (unsigned int)name);
2039 struct __ecereNameSpace__ecere__com__NameSpace * child;
2040
2041 if(!link)
2042 {
2043 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)))
2044 {
2045 link = __ecereNameSpace__ecere__com__ScanNameSpace(child, name, listOffset);
2046 if(link)
2047 break;
2048 }
2049 }
2050 return link;
2051 }
2052
2053 static struct __ecereNameSpace__ecere__com__BTNamedLink * __ecereNameSpace__ecere__com__SearchNameSpace(struct __ecereNameSpace__ecere__com__NameSpace * nameSpace, char * name, void * listOffset)
2054 {
2055 int start = 0, c;
2056 char ch;
2057 int level = 0;
2058
2059 for(c = 0; (ch = name[c]); c++)
2060 {
2061 if(ch == '<')
2062 level++;
2063 if(ch == '>')
2064 level--;
2065 if(level == 0 && (ch == '.' || (ch == ':' && name[c + 1] == ':')))
2066 {
2067 struct __ecereNameSpace__ecere__com__NameSpace * newSpace;
2068 char * spaceName = __ecereNameSpace__ecere__com___malloc(c - start + 1);
2069
2070 memcpy(spaceName, name + start, c - start);
2071 spaceName[c - start] = '\0';
2072 newSpace = (struct __ecereNameSpace__ecere__com__NameSpace *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&nameSpace->nameSpaces, spaceName);
2073 __ecereNameSpace__ecere__com___free(spaceName);
2074 if(!newSpace)
2075 return (((void *)0));
2076 nameSpace = newSpace;
2077 if(level == 0 && ch == ':')
2078 c++;
2079 start = c + 1;
2080 }
2081 }
2082 if(c - start)
2083 {
2084 return __ecereNameSpace__ecere__com__ScanNameSpace(nameSpace, name + start, listOffset);
2085 }
2086 return (((void *)0));
2087 }
2088
2089 static struct __ecereNameSpace__ecere__com__BTNamedLink * __ecereNameSpace__ecere__com__SearchModule(struct __ecereNameSpace__ecere__com__Instance * module, char * name, void * listOffset, unsigned int searchPrivate)
2090 {
2091 struct __ecereNameSpace__ecere__com__SubModule * subModule;
2092 struct __ecereNameSpace__ecere__com__BTNamedLink * link;
2093
2094 if(searchPrivate)
2095 {
2096 link = __ecereNameSpace__ecere__com__SearchNameSpace(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->privateNameSpace, name, listOffset);
2097 if(link)
2098 return link;
2099 }
2100 link = __ecereNameSpace__ecere__com__SearchNameSpace(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->publicNameSpace, name, listOffset);
2101 if(link)
2102 return link;
2103 for(subModule = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->modules.first; subModule; subModule = subModule->next)
2104 {
2105 if(searchPrivate || subModule->importMode == 1)
2106 {
2107 link = __ecereNameSpace__ecere__com__SearchModule(subModule->module, name, listOffset, 0x0);
2108 if(link)
2109 return link;
2110 }
2111 }
2112 return (((void *)0));
2113 }
2114
2115 extern int isspace(int c);
2116
2117 long long __ecereNameSpace__ecere__com___strtoi64(char * string, char ** endString, int base)
2118 {
2119 long long value = 0;
2120 int sign = 1;
2121 int c;
2122 char ch;
2123
2124 for(c = 0; (ch = string[c]) && isspace(ch); c++)
2125 ;
2126 if(ch == '+')
2127 c++;
2128 else if(ch == '-')
2129 {
2130 sign = -1;
2131 c++;
2132 }
2133 ;
2134 if(!base)
2135 {
2136 if(ch == (char)0 && string[c + 1] == 'x')
2137 {
2138 base = 16;
2139 c += 2;
2140 }
2141 else if(ch == '0')
2142 {
2143 base = 8;
2144 c++;
2145 }
2146 else
2147 base = 10;
2148 }
2149 for(; (ch = string[c]); c++)
2150 {
2151 if(ch == '0')
2152 ch = (char)0;
2153 else if(ch >= '1' && ch <= '9')
2154 ch -= '1';
2155 else if(ch >= 'a' && ch <= 'z')
2156 ch -= 'a';
2157 else if(ch >= 'A' && ch <= 'Z')
2158 ch -= 'A';
2159 else
2160 {
2161 *endString = string + c;
2162 break;
2163 }
2164 if(ch < base)
2165 {
2166 value *= base;
2167 value += ch;
2168 }
2169 else
2170 {
2171 *endString = string + c;
2172 break;
2173 }
2174 }
2175 return sign * value;
2176 }
2177
2178 uint64 __ecereNameSpace__ecere__com___strtoui64(char * string, char ** endString, int base)
2179 {
2180 uint64 value = 0;
2181 int sign = 1;
2182 int c;
2183 char ch;
2184
2185 for(c = 0; (ch = string[c]) && isspace(ch); c++)
2186 ;
2187 if(ch == '+')
2188 c++;
2189 else if(ch == '-')
2190 {
2191 sign = -1;
2192 c++;
2193 }
2194 ;
2195 if(!base)
2196 {
2197 if(ch == (char)0 && string[c + 1] == 'x')
2198 {
2199 base = 16;
2200 c += 2;
2201 }
2202 else if(ch == '0')
2203 {
2204 base = 8;
2205 c++;
2206 }
2207 else
2208 base = 10;
2209 }
2210 for(; (ch = string[c]); c++)
2211 {
2212 if(ch == '0')
2213 ch = (char)0;
2214 else if(ch >= '1' && ch <= '9')
2215 ch -= '1';
2216 else if(ch >= 'a' && ch <= 'z')
2217 ch -= 'a';
2218 else if(ch >= 'A' && ch <= 'Z')
2219 ch -= 'A';
2220 else
2221 {
2222 *endString = string + c;
2223 break;
2224 }
2225 if(ch < base)
2226 {
2227 value *= base;
2228 value += ch;
2229 }
2230 else
2231 {
2232 *endString = string + c;
2233 break;
2234 }
2235 }
2236 return sign * value;
2237 }
2238
2239 extern char *  strcat(char * , const char * );
2240
2241 extern int strlen(const char * );
2242
2243 struct __ecereNameSpace__ecere__com__Class * __ecereNameSpace__ecere__com__eSystem_FindClass(struct __ecereNameSpace__ecere__com__Instance * module, char * name)
2244 {
2245 void * __ecereTemp1;
2246
2247 if(name && module)
2248 {
2249 struct __ecereNameSpace__ecere__com__BTNamedLink * link;
2250
2251 link = __ecereNameSpace__ecere__com__SearchNameSpace(&((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application + 296)))->systemNameSpace, name, &(*((struct __ecereNameSpace__ecere__com__NameSpace *)0)).classes);
2252 if(link)
2253 return link->data;
2254 link = __ecereNameSpace__ecere__com__SearchModule(module, name, &(*((struct __ecereNameSpace__ecere__com__NameSpace *)0)).classes, 0x1);
2255 if(link)
2256 return link->data;
2257 {
2258 char noTemplateName[1024];
2259 char * templateParams = strchr(name, '<');
2260
2261 if(templateParams)
2262 {
2263 strncpy(noTemplateName, name, templateParams - name);
2264 noTemplateName[templateParams - name] = '\0';
2265 }
2266 else
2267 strcpy(noTemplateName, name);
2268 link = __ecereNameSpace__ecere__com__SearchNameSpace(&((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application + 296)))->systemNameSpace, noTemplateName, &(*((struct __ecereNameSpace__ecere__com__NameSpace *)0)).classes);
2269 if(!link)
2270 link = __ecereNameSpace__ecere__com__SearchModule(module, noTemplateName, &(*((struct __ecereNameSpace__ecere__com__NameSpace *)0)).classes, 0x1);
2271 if(link)
2272 {
2273 struct __ecereNameSpace__ecere__com__Class * _class = link->data;
2274 struct __ecereNameSpace__ecere__com__Class * templatedClass = (((void *)0));
2275 char className[1024];
2276
2277 strcpy(className, _class->fullName);
2278 strcat(className, templateParams);
2279 link = __ecereNameSpace__ecere__com__SearchNameSpace(&((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application + 296)))->systemNameSpace, className, &(*((struct __ecereNameSpace__ecere__com__NameSpace *)0)).classes);
2280 if(link)
2281 return link->data;
2282 link = __ecereNameSpace__ecere__com__SearchModule(module, className, &(*((struct __ecereNameSpace__ecere__com__NameSpace *)0)).classes, 0x1);
2283 if(link)
2284 return link->data;
2285 if(_class && templateParams)
2286 {
2287 struct __ecereNameSpace__ecere__sys__OldList __simpleStruct1 = 
2288 {
2289 0, 0, 0, 0, 0
2290 };
2291 struct __ecereNameSpace__ecere__sys__OldList __simpleStruct0 = 
2292 {
2293 0, 0, 0, 0, 0
2294 };
2295
2296 templatedClass = __ecereNameSpace__ecere__com__eSystem_New0(368);
2297 *templatedClass = *_class;
2298 templatedClass->templateClass = _class;
2299 templatedClass->fullName = __ecereNameSpace__ecere__sys__CopyString(className);
2300 templatedClass->name = __ecereNameSpace__ecere__sys__CopyString(templatedClass->fullName + strlen(_class->fullName) - strlen(_class->name));
2301 __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)));
2302 templatedClass->templateArgs = (((void *)0));
2303 templatedClass->numParams = 0;
2304 templatedClass->derivatives = __simpleStruct0;
2305 templatedClass->templatized = __simpleStruct1;
2306 __ecereNameSpace__ecere__com__ComputeClassParameters(templatedClass, templateParams, module);
2307 __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)));
2308 }
2309 return templatedClass;
2310 }
2311 }
2312 }
2313 return (((void *)0));
2314 }
2315
2316 static void __ecereNameSpace__ecere__com__CopyTemplateArg(struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param, struct __ecereNameSpace__ecere__com__ClassTemplateArgument * arg)
2317 {
2318 switch(param->type)
2319 {
2320 case 0:
2321 arg->dataTypeString = __ecereNameSpace__ecere__sys__CopyString(arg->dataTypeString);
2322 break;
2323 case 2:
2324 break;
2325 case 1:
2326 arg->memberString = __ecereNameSpace__ecere__sys__CopyString(arg->memberString);
2327 break;
2328 }
2329 }
2330
2331 extern char *  __ecereNameSpace__ecere__sys__TrimRSpaces(char *  string, char *  output);
2332
2333 extern unsigned long strtoul(const char *  nptr, char * *  endptr, int base);
2334
2335 extern double strtod(char * , char * * );
2336
2337 extern int sprintf(char * , char * , ...);
2338
2339 extern char *  strstr(char * , const char * );
2340
2341 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);
2342
2343 struct __ecereNameSpace__ecere__com__Method * __ecereNameSpace__ecere__com__eClass_FindMethod(struct __ecereNameSpace__ecere__com__Class * _class, char *  name, struct __ecereNameSpace__ecere__com__Instance * module);
2344
2345 struct __ecereNameSpace__ecere__com__Property * __ecereNameSpace__ecere__com__eClass_FindProperty(struct __ecereNameSpace__ecere__com__Class * _class, char *  name, struct __ecereNameSpace__ecere__com__Instance * module);
2346
2347 static void __ecereNameSpace__ecere__com__ComputeClassParameters(struct __ecereNameSpace__ecere__com__Class * templatedClass, char * templateParams, struct __ecereNameSpace__ecere__com__Instance * findModule)
2348 {
2349 char ch;
2350 char * nextParamStart = templateParams ? (templateParams + 1) : (((void *)0));
2351 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * curParam = (((void *)0));
2352 struct __ecereNameSpace__ecere__com__Class * lastClass = (((void *)0)), * sClass;
2353 int curParamID = 0;
2354 int numParams = 0;
2355 struct __ecereNameSpace__ecere__com__Class * _class = templatedClass->templateClass ? templatedClass->templateClass : templatedClass;
2356
2357 for(sClass = _class; sClass; sClass = sClass->base)
2358 {
2359 if(sClass->templateClass)
2360 sClass = sClass->templateClass;
2361 numParams += sClass->templateParams.count;
2362 }
2363 if(templatedClass->templateArgs)
2364 __ecereNameSpace__ecere__com__FreeTemplateArgs(templatedClass);
2365 (__ecereNameSpace__ecere__com__eSystem_Delete(templatedClass->templateArgs), templatedClass->templateArgs = 0);
2366 templatedClass->templateArgs = __ecereNameSpace__ecere__com__eSystem_New0(sizeof(struct __ecereNameSpace__ecere__com__ClassTemplateArgument) * (numParams));
2367 templatedClass->numParams = numParams;
2368 if(_class != templatedClass)
2369 {
2370 }
2371 if(templatedClass->base && templatedClass->base->templateArgs && _class == templatedClass)
2372 {
2373 struct __ecereNameSpace__ecere__com__Class * sClass;
2374
2375 memcpy(templatedClass->templateArgs, templatedClass->base->templateArgs, sizeof(struct __ecereNameSpace__ecere__com__ClassTemplateArgument) * (numParams - templatedClass->templateParams.count));
2376 for(sClass = templatedClass->base; sClass; sClass = sClass->base)
2377 {
2378 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param;
2379 struct __ecereNameSpace__ecere__com__Class * prevClass;
2380 int id = 0;
2381
2382 for(prevClass = sClass->base; prevClass; prevClass = prevClass->base)
2383 {
2384 if(prevClass->templateClass)
2385 prevClass = prevClass->templateClass;
2386 id += prevClass->templateParams.count;
2387 }
2388 if(sClass->templateClass)
2389 sClass = sClass->templateClass;
2390 for(param = sClass->templateParams.first; param; param = param->next)
2391 __ecereNameSpace__ecere__com__CopyTemplateArg(param, &templatedClass->templateArgs[id++]);
2392 }
2393 }
2394 while(nextParamStart)
2395 {
2396 char * paramStart = nextParamStart;
2397 char * paramEnd;
2398 int level = 0;
2399
2400 while(*paramStart == ' ')
2401 paramStart++;
2402 paramEnd = paramStart;
2403 while((ch = *paramEnd, ch && (level > 0 || (ch != '>' && ch != ','))))
2404 {
2405 if(ch == '<')
2406 level++;
2407 if(ch == '>')
2408 level--;
2409 paramEnd++;
2410 }
2411 nextParamStart = (ch == ',') ? (paramEnd + 1) : (((void *)0));
2412 while(*paramEnd == ' ')
2413 paramEnd--;
2414 if(paramEnd > paramStart)
2415 {
2416 char * ptr, * equal = (((void *)0));
2417
2418 for(ptr = paramStart; ptr <= paramEnd; ptr++)
2419 {
2420 if(*ptr == '=')
2421 {
2422 equal = ptr;
2423 break;
2424 }
2425 }
2426 if(equal)
2427 {
2428 char * end = equal - 1;
2429 char ident[1024];
2430
2431 while(*end == ' ')
2432 end--;
2433 strncpy(ident, paramStart, end + 1 - paramStart);
2434 ident[end + 1 - paramStart] = (char)0;
2435 for(sClass = _class; sClass; sClass = sClass->base)
2436 {
2437 if(sClass->templateClass)
2438 sClass = sClass->templateClass;
2439 for(curParam = sClass->templateParams.first; curParam; curParam = curParam->next)
2440 {
2441 if(!strcmp(curParam->name, ident))
2442 break;
2443 }
2444 if(curParam)
2445 {
2446 struct __ecereNameSpace__ecere__com__Class * nextClass;
2447 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * prevParam;
2448
2449 curParamID = 0;
2450 for(prevParam = curParam->prev; prevParam; prevParam = prevParam->prev)
2451 curParamID++;
2452 for(nextClass = sClass->base; nextClass; nextClass = nextClass->base)
2453 {
2454 if(nextClass->templateClass)
2455 nextClass = nextClass->templateClass;
2456 curParamID += nextClass->templateParams.count;
2457 }
2458 break;
2459 }
2460 }
2461 lastClass = sClass;
2462 }
2463 else
2464 {
2465 if(curParam)
2466 {
2467 curParam = curParam->next;
2468 curParamID++;
2469 }
2470 if(!curParam)
2471 {
2472 for(sClass = lastClass ? lastClass->base : _class; sClass; sClass = sClass->base)
2473 {
2474 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param;
2475
2476 curParamID = 0;
2477 if(sClass->templateClass)
2478 sClass = sClass->templateClass;
2479 for(param = sClass->templateParams.first; param; param = param->next, curParamID++)
2480 {
2481 curParam = param;
2482 break;
2483 }
2484 if(curParam)
2485 {
2486 struct __ecereNameSpace__ecere__com__Class * nextClass;
2487
2488 for(nextClass = sClass->base; nextClass; nextClass = nextClass->base)
2489 {
2490 if(nextClass->templateClass)
2491 nextClass = nextClass->templateClass;
2492 curParamID += nextClass->templateParams.count;
2493 }
2494 lastClass = sClass;
2495 break;
2496 }
2497 }
2498 }
2499 }
2500 if(curParam)
2501 {
2502 struct __ecereNameSpace__ecere__com__ClassTemplateArgument argument = 
2503 {
2504 0, 0, 0, 0, 0
2505 };
2506 char value[1024];
2507
2508 if(equal)
2509 {
2510 equal++;
2511 while(*equal == ' ')
2512 equal++;
2513 memcpy(value, equal, paramEnd - equal);
2514 value[paramEnd - equal] = (char)0;
2515 }
2516 else
2517 {
2518 memcpy(value, paramStart, paramEnd - paramStart);
2519 value[paramEnd - paramStart] = (char)0;
2520 }
2521 __ecereNameSpace__ecere__sys__TrimRSpaces(value, value);
2522 switch(curParam->type)
2523 {
2524 case 0:
2525 argument.dataTypeString = __ecereNameSpace__ecere__sys__CopyString(value);
2526 argument.dataTypeClass = __ecereNameSpace__ecere__com__eSystem_FindClass(_class->module, value);
2527 if(!argument.dataTypeClass)
2528 argument.dataTypeClass = __ecereNameSpace__ecere__com__eSystem_FindClass(((struct __ecereNameSpace__ecere__com__Module *)(((char *)_class->module + 12)))->application, value);
2529 if(!argument.dataTypeClass)
2530 argument.dataTypeClass = __ecereNameSpace__ecere__com__eSystem_FindClass(findModule, value);
2531 break;
2532 case 2:
2533 {
2534 struct __ecereNameSpace__ecere__com__Class * expClass = __ecereNameSpace__ecere__com__eSystem_FindClass(_class->module, curParam->dataTypeString);
2535
2536 if(!expClass)
2537 expClass = __ecereNameSpace__ecere__com__eSystem_FindClass(((struct __ecereNameSpace__ecere__com__Module *)(((char *)_class->module + 12)))->application, curParam->dataTypeString);
2538 if(expClass)
2539 {
2540 expClass->_vTbl[__ecereVMethodID_class_OnGetDataFromString](expClass, &argument.expression, value);
2541 }
2542 else if(value[0] == '\"')
2543 {
2544 char * endQuote = value + strlen(value) - 1;
2545
2546 if(*endQuote != '\"')
2547 endQuote++;
2548 *endQuote = '\0';
2549 argument.expression.p = __ecereNameSpace__ecere__sys__CopyString(value + 1);
2550 }
2551 else if(value[0] == '\'')
2552 {
2553 int nb;
2554 unsigned int ch = __ecereNameSpace__ecere__sys__UTF8GetChar(value + 1, &nb);
2555
2556 argument.expression.ui = ch;
2557 }
2558 else if(!strcmp(curParam->dataTypeString, "uint"))
2559 {
2560 argument.expression.ui = strtoul(value, (((void *)0)), 0);
2561 }
2562 else if(!strcmp(curParam->dataTypeString, "char"))
2563 {
2564 argument.expression.c = (char)strtol(value, (((void *)0)), 0);
2565 }
2566 else if(!strcmp(curParam->dataTypeString, "byte"))
2567 {
2568 argument.expression.uc = (unsigned char)strtoul(value, (((void *)0)), 0);
2569 }
2570 else if(!strcmp(curParam->dataTypeString, "short"))
2571 {
2572 argument.expression.s = (short)strtol(value, (((void *)0)), 0);
2573 }
2574 else if(!strcmp(curParam->dataTypeString, "uint16"))
2575 {
2576 argument.expression.us = (unsigned short)strtoul(value, (((void *)0)), 0);
2577 }
2578 else if(!strcmp(curParam->dataTypeString, "int64"))
2579 {
2580 argument.expression.i64 = __ecereNameSpace__ecere__com___strtoi64(value, (((void *)0)), 0);
2581 }
2582 else if(!strcmp(curParam->dataTypeString, "uint64"))
2583 {
2584 argument.expression.ui64 = __ecereNameSpace__ecere__com___strtoui64(value, (((void *)0)), 0);
2585 }
2586 else if(!strcmp(curParam->dataTypeString, "float"))
2587 {
2588 argument.expression.f = (float)strtod(value, (((void *)0)));
2589 }
2590 else if(!strcmp(curParam->dataTypeString, "double"))
2591 {
2592 argument.expression.d = strtod(value, (((void *)0)));
2593 }
2594 else
2595 {
2596 argument.expression.i = strtol(value, (((void *)0)), 0);
2597 }
2598 break;
2599 }
2600 case 1:
2601 argument.memberString = __ecereNameSpace__ecere__sys__CopyString(value);
2602 break;
2603 }
2604 __ecereNameSpace__ecere__com__FreeTemplateArg(templatedClass, curParam, curParamID);
2605 templatedClass->templateArgs[curParamID] = argument;
2606 }
2607 }
2608 }
2609 if(templatedClass == _class)
2610 {
2611 struct __ecereNameSpace__ecere__com__Class * sClass = _class;
2612 int curParamID = 0;
2613 struct __ecereNameSpace__ecere__com__Class * nextClass;
2614 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param;
2615
2616 for(nextClass = sClass->base; nextClass; nextClass = nextClass->base)
2617 {
2618 if(nextClass->templateClass)
2619 nextClass = nextClass->templateClass;
2620 curParamID += nextClass->templateParams.count;
2621 }
2622 for(param = sClass->templateParams.first; param; param = param->next)
2623 {
2624 if(!templatedClass->templateArgs[curParamID].dataTypeString)
2625 {
2626 templatedClass->templateArgs[curParamID] = param->defaultArg;
2627 __ecereNameSpace__ecere__com__CopyTemplateArg(param, &templatedClass->templateArgs[curParamID]);
2628 if(param->type == 0 && param->defaultArg.dataTypeString)
2629 {
2630 templatedClass->templateArgs[curParamID].dataTypeClass = __ecereNameSpace__ecere__com__eSystem_FindClass(templatedClass->module, param->defaultArg.dataTypeString);
2631 if(!templatedClass->templateArgs[curParamID].dataTypeClass)
2632 templatedClass->templateArgs[curParamID].dataTypeClass = __ecereNameSpace__ecere__com__eSystem_FindClass(((struct __ecereNameSpace__ecere__com__Module *)(((char *)templatedClass->module + 12)))->application, param->defaultArg.dataTypeString);
2633 if(!templatedClass->templateArgs[curParamID].dataTypeClass)
2634 templatedClass->templateArgs[curParamID].dataTypeClass = __ecereNameSpace__ecere__com__eSystem_FindClass(findModule, param->defaultArg.dataTypeString);
2635 }
2636 }
2637 curParamID++;
2638 }
2639 }
2640 if(templatedClass->base && templatedClass->base->templateArgs && numParams - _class->templateParams.count)
2641 {
2642 int c = numParams - _class->templateParams.count - 1;
2643
2644 for(sClass = _class->base; sClass; sClass = sClass->base)
2645 {
2646 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param;
2647
2648 if(sClass->templateClass)
2649 sClass = sClass->templateClass;
2650 for(param = sClass->templateParams.last; param; param = param->prev)
2651 {
2652 struct __ecereNameSpace__ecere__com__ClassTemplateArgument * arg = &templatedClass->templateArgs[c];
2653 struct __ecereNameSpace__ecere__com__ClassTemplateArgument * baseArg = &templatedClass->base->templateArgs[c];
2654
2655 if(!(*arg).dataTypeString)
2656 {
2657 *arg = templatedClass->base->templateArgs[c];
2658 __ecereNameSpace__ecere__com__CopyTemplateArg(param, arg);
2659 if(param->type == 0)
2660 {
2661 if((*arg).dataTypeClass && strchr((*arg).dataTypeString, '<') && (*arg).dataTypeClass->templateArgs)
2662 {
2663 struct __ecereNameSpace__ecere__com__Class * expClass = (*arg).dataTypeClass;
2664 struct __ecereNameSpace__ecere__com__Class * cClass = (((void *)0));
2665 int paramCount = 0;
2666 int lastParam = -1;
2667 char templateString[1024];
2668
2669 sprintf(templateString, "%s<", expClass->templateClass->fullName);
2670 for(cClass = expClass; cClass; cClass = cClass->base)
2671 {
2672 int p = 0;
2673 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param;
2674
2675 for(param = cClass->templateParams.first; param; param = param->next)
2676 {
2677 int id = p;
2678 struct __ecereNameSpace__ecere__com__Class * sClass;
2679 struct __ecereNameSpace__ecere__com__ClassTemplateArgument arg;
2680
2681 for(sClass = expClass->base; sClass; sClass = sClass->base)
2682 id += sClass->templateParams.count;
2683 arg = expClass->templateArgs[id];
2684 {
2685 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * cParam;
2686 int p = numParams - _class->templateParams.count;
2687
2688 for(cParam = _class->templateParams.first; cParam; cParam = cParam->next, p++)
2689 {
2690 if(cParam->type == 0 && arg.dataTypeString && !strcmp(cParam->name, arg.dataTypeString))
2691 {
2692 arg.dataTypeString = templatedClass->templateArgs[p].dataTypeString;
2693 arg.dataTypeClass = templatedClass->templateArgs[p].dataTypeClass;
2694 break;
2695 }
2696 }
2697 }
2698 {
2699 char argument[256];
2700
2701 argument[0] = '\0';
2702 switch(param->type)
2703 {
2704 case 2:
2705 {
2706 break;
2707 }
2708 case 1:
2709 {
2710 strcat(argument, arg.member->name);
2711 break;
2712 }
2713 case 0:
2714 {
2715 if(arg.dataTypeString)
2716 strcat(argument, arg.dataTypeString);
2717 break;
2718 }
2719 }
2720 if(argument[0])
2721 {
2722 if(paramCount)
2723 strcat(templateString, ", ");
2724 if(lastParam != p - 1)
2725 {
2726 strcat(templateString, param->name);
2727 strcat(templateString, " = ");
2728 }
2729 strcat(templateString, argument);
2730 paramCount++;
2731 lastParam = p;
2732 }
2733 }
2734 p++;
2735 }
2736 }
2737 {
2738 int len = strlen(templateString);
2739
2740 if(templateString[len - 1] == '>')
2741 templateString[len++] = ' ';
2742 templateString[len++] = '>';
2743 templateString[len++] = '\0';
2744 }
2745 __ecereNameSpace__ecere__com__FreeTemplateArg(templatedClass, param, c);
2746 (*arg).dataTypeString = __ecereNameSpace__ecere__sys__CopyString(templateString);
2747 (*arg).dataTypeClass = __ecereNameSpace__ecere__com__eSystem_FindClass(templatedClass->module, templateString);
2748 if(!(*arg).dataTypeClass)
2749 (*arg).dataTypeClass = __ecereNameSpace__ecere__com__eSystem_FindClass(((struct __ecereNameSpace__ecere__com__Module *)(((char *)templatedClass->module + 12)))->application, templateString);
2750 }
2751 else
2752 {
2753 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * cParam;
2754 int p = numParams - _class->templateParams.count;
2755
2756 for(cParam = _class->templateParams.first; cParam; cParam = cParam->next, p++)
2757 {
2758 if(cParam->type == 0 && (*baseArg).dataTypeString && !strcmp(cParam->name, (*baseArg).dataTypeString))
2759 {
2760 __ecereNameSpace__ecere__com__FreeTemplateArg(templatedClass, param, c);
2761 (*arg).dataTypeString = templatedClass->templateArgs[p].dataTypeString;
2762 (*arg).dataTypeClass = templatedClass->templateArgs[p].dataTypeClass;
2763 __ecereNameSpace__ecere__com__CopyTemplateArg(cParam, arg);
2764 break;
2765 }
2766 }
2767 }
2768 }
2769 }
2770 c--;
2771 }
2772 }
2773 }
2774 {
2775 struct __ecereNameSpace__ecere__com__Class * sClass;
2776
2777 for(sClass = _class; sClass; sClass = sClass->base)
2778 {
2779 int curParamID = 0;
2780 struct __ecereNameSpace__ecere__com__Class * nextClass;
2781 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param;
2782
2783 if(sClass->templateClass)
2784 sClass = sClass->templateClass;
2785 for(nextClass = sClass->base; nextClass; nextClass = nextClass->base)
2786 {
2787 if(nextClass->templateClass)
2788 nextClass = nextClass->templateClass;
2789 curParamID += nextClass->templateParams.count;
2790 }
2791 for(param = sClass->templateParams.first; param; param = param->next)
2792 {
2793 if(!templatedClass->templateArgs[curParamID].dataTypeString)
2794 {
2795 templatedClass->templateArgs[curParamID] = param->defaultArg;
2796 __ecereNameSpace__ecere__com__CopyTemplateArg(param, &templatedClass->templateArgs[curParamID]);
2797 if(param->type == 0 && param->defaultArg.dataTypeString)
2798 {
2799 templatedClass->templateArgs[curParamID].dataTypeClass = __ecereNameSpace__ecere__com__eSystem_FindClass(templatedClass->module, param->defaultArg.dataTypeString);
2800 if(!templatedClass->templateArgs[curParamID].dataTypeClass)
2801 templatedClass->templateArgs[curParamID].dataTypeClass = __ecereNameSpace__ecere__com__eSystem_FindClass(((struct __ecereNameSpace__ecere__com__Module *)(((char *)templatedClass->module + 12)))->application, param->defaultArg.dataTypeString);
2802 if(!templatedClass->templateArgs[curParamID].dataTypeClass)
2803 templatedClass->templateArgs[curParamID].dataTypeClass = __ecereNameSpace__ecere__com__eSystem_FindClass(findModule, param->defaultArg.dataTypeString);
2804 }
2805 }
2806 curParamID++;
2807 }
2808 }
2809 }
2810 {
2811 int c = numParams - 1;
2812
2813 for(sClass = _class; sClass; sClass = sClass->base)
2814 {
2815 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param;
2816
2817 if(sClass->templateClass)
2818 sClass = sClass->templateClass;
2819 for(param = sClass->templateParams.last; param; param = param->prev)
2820 {
2821 if(param->type == 0)
2822 {
2823 struct __ecereNameSpace__ecere__com__ClassTemplateArgument * arg = &templatedClass->templateArgs[c];
2824 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * cParam;
2825 struct __ecereNameSpace__ecere__com__Class * dClass;
2826 int p = numParams - 1;
2827
2828 for(dClass = _class; dClass; dClass = dClass->base)
2829 {
2830 if(dClass->templateClass)
2831 dClass = dClass->templateClass;
2832 for(cParam = dClass->templateParams.last; cParam; cParam = cParam->prev, p--)
2833 {
2834 if(cParam->type == 0 && (*arg).dataTypeString && !strcmp(cParam->name, (*arg).dataTypeString))
2835 {
2836 if(templatedClass->templateArgs[p].dataTypeString && c != p)
2837 {
2838 __ecereNameSpace__ecere__com__FreeTemplateArg(templatedClass, param, c);
2839 (*arg).dataTypeString = templatedClass->templateArgs[p].dataTypeString;
2840 (*arg).dataTypeClass = templatedClass->templateArgs[p].dataTypeClass;
2841 __ecereNameSpace__ecere__com__CopyTemplateArg(cParam, arg);
2842 }
2843 }
2844 }
2845 }
2846 }
2847 c--;
2848 }
2849 }
2850 }
2851 {
2852 struct __ecereNameSpace__ecere__com__Class * tClass;
2853 int c = numParams - 1;
2854
2855 for(tClass = _class; tClass; tClass = tClass->base)
2856 {
2857 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param;
2858
2859 if(tClass->templateClass)
2860 tClass = tClass->templateClass;
2861 for(param = tClass->templateParams.last; param; param = param->prev)
2862 {
2863 struct __ecereNameSpace__ecere__com__ClassTemplateArgument * arg = &templatedClass->templateArgs[c];
2864
2865 if(param->type == 1 && (*arg).memberString)
2866 {
2867 struct __ecereNameSpace__ecere__com__Class * memberClass = templatedClass;
2868 char * memberString = (*arg).memberString;
2869 char * colon = strstr(memberString, "::");
2870 char * memberName = memberString;
2871
2872 if(colon)
2873 memberName = colon + 2;
2874 if(!colon)
2875 {
2876 memberString = param->defaultArg.memberString;
2877 colon = memberString ? strstr(memberString, "::") : (((void *)0));
2878 }
2879 if(colon)
2880 {
2881 char className[1024];
2882 struct __ecereNameSpace__ecere__com__Class * sClass;
2883
2884 memcpy(className, memberString, colon - memberString);
2885 className[colon - memberString] = '\0';
2886 for(sClass = _class; sClass; sClass = sClass->base)
2887 {
2888 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * cParam;
2889 struct __ecereNameSpace__ecere__com__Class * nextClass;
2890 int id = 0;
2891
2892 if(sClass->templateClass)
2893 sClass = sClass->templateClass;
2894 for(nextClass = sClass->base; nextClass; nextClass = nextClass->base)
2895 {
2896 if(nextClass->templateClass)
2897 nextClass = nextClass->templateClass;
2898 id += nextClass->templateParams.count;
2899 }
2900 for(cParam = sClass->templateParams.first; cParam; cParam = cParam->next)
2901 {
2902 if(cParam->type == 0 && !strcmp(cParam->name, className) && templatedClass->templateArgs[id].dataTypeString)
2903 {
2904 strcpy(className, templatedClass->templateArgs[id].dataTypeString);
2905 }
2906 id++;
2907 }
2908 }
2909 memberClass = __ecereNameSpace__ecere__com__eSystem_FindClass(templatedClass->module, className);
2910 if(!memberClass)
2911 memberClass = __ecereNameSpace__ecere__com__eSystem_FindClass(findModule, className);
2912 if(!memberClass)
2913 memberClass = __ecereNameSpace__ecere__com__eSystem_FindClass(((struct __ecereNameSpace__ecere__com__Module *)(((char *)templatedClass->module + 12)))->application, className);
2914 }
2915 if(memberClass)
2916 {
2917 switch(param->memberType)
2918 {
2919 case 0:
2920 (*arg).member = __ecereNameSpace__ecere__com__eClass_FindDataMember(memberClass, memberName, memberClass->module, (((void *)0)), (((void *)0)));
2921 break;
2922 case 1:
2923 (*arg).method = __ecereNameSpace__ecere__com__eClass_FindMethod(memberClass, memberName, memberClass->module);
2924 break;
2925 case 2:
2926 (*arg).prop = __ecereNameSpace__ecere__com__eClass_FindProperty(memberClass, memberName, memberClass->module);
2927 break;
2928 }
2929 }
2930 }
2931 c--;
2932 }
2933 }
2934 }
2935 }
2936
2937 unsigned int __ecereNameSpace__ecere__com__DefaultFunction()
2938 {
2939 return 0x1;
2940 }
2941
2942 unsigned int __ecereNameSpace__ecere__com__eClass_IsDerived(struct __ecereNameSpace__ecere__com__Class * _class, struct __ecereNameSpace__ecere__com__Class * from)
2943 {
2944 if(!_class && !from)
2945 return 0x1;
2946 if(_class && from && (_class->templateClass || from->templateClass))
2947 {
2948 if(__ecereNameSpace__ecere__com__eClass_IsDerived(_class->templateClass ? _class->templateClass : _class, from->templateClass ? from->templateClass : from))
2949 {
2950 if(!from->templateClass)
2951 return 0x1;
2952 else if(!_class->templateClass && _class == from->templateClass)
2953 return 0x0;
2954 else
2955 {
2956 struct __ecereNameSpace__ecere__com__Class * sClass;
2957
2958 for(sClass = from; sClass; sClass = sClass->base)
2959 {
2960 if(sClass->templateParams.first)
2961 {
2962 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param;
2963 struct __ecereNameSpace__ecere__com__Class * nextClass;
2964 int p = 0;
2965
2966 for(nextClass = sClass->base; nextClass; nextClass = nextClass->base)
2967 p += nextClass->templateParams.count;
2968 for(param = sClass->templateParams.first; param; param = param->next, p++)
2969 {
2970 struct __ecereNameSpace__ecere__com__ClassTemplateArgument * arg = &_class->templateArgs[p];
2971 struct __ecereNameSpace__ecere__com__ClassTemplateArgument * fArg = &from->templateArgs[p];
2972
2973 if(param->type == 0)
2974 {
2975 if((*arg).dataTypeString != (*fArg).dataTypeString && (*arg).dataTypeString && (*fArg).dataTypeString && strcmp((*arg).dataTypeString, (*fArg).dataTypeString))
2976 break;
2977 }
2978 else if(param->type == 1)
2979 {
2980 if((*arg).member != (*fArg).member)
2981 break;
2982 }
2983 else if(param->type == 2)
2984 {
2985 if((*arg).expression.ui64 != (*fArg).expression.ui64)
2986 break;
2987 }
2988 }
2989 if(param)
2990 return 0x0;
2991 }
2992 }
2993 return 0x1;
2994 }
2995 }
2996 }
2997 else
2998 {
2999 for(; _class && from; _class = _class->base)
3000 {
3001 if(_class == from || _class->templateClass == from || (_class->type == 1000 && from->name && !strcmp(_class->name, from->name)))
3002 return 0x1;
3003 }
3004 }
3005 return 0x0;
3006 }
3007
3008 static void __ecereNameSpace__ecere__com__FixDerivativeVirtualMethod(struct __ecereNameSpace__ecere__com__Class * base, char * name, int vid, void * origFunction, char * type)
3009 {
3010 struct __ecereNameSpace__ecere__sys__OldLink * derivative;
3011
3012 for(derivative = base->derivatives.first; derivative; derivative = derivative->next)
3013 {
3014 struct __ecereNameSpace__ecere__com__Class * _class = derivative->data;
3015 struct __ecereNameSpace__ecere__com__Method * method, * next;
3016 void * function = origFunction;
3017
3018 _class->vTblSize++;
3019 _class->_vTbl = __ecereNameSpace__ecere__com__eSystem_Renew(_class->_vTbl, sizeof(void *) * (_class->vTblSize));
3020 memmove(_class->_vTbl + vid + 1, _class->_vTbl + vid, (_class->vTblSize - vid - 1) * sizeof(void *));
3021 method = (struct __ecereNameSpace__ecere__com__Method *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&_class->methods, name);
3022 if(method)
3023 {
3024 if(method->function)
3025 function = method->function;
3026 if(!method->symbol)
3027 {
3028 (__ecereNameSpace__ecere__com__eSystem_Delete(method->name), method->name = 0);
3029 (__ecereNameSpace__ecere__com__eSystem_Delete(method->dataTypeString), method->dataTypeString = 0);
3030 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&_class->methods, (struct __ecereNameSpace__ecere__sys__BTNode *)method);
3031 }
3032 else
3033 {
3034 (__ecereNameSpace__ecere__com__eSystem_Delete(method->dataTypeString), method->dataTypeString = 0);
3035 method->type = 1;
3036 method->dataTypeString = __ecereNameSpace__ecere__sys__CopyString(type);
3037 method->_class = base;
3038 }
3039 }
3040 for(method = (struct __ecereNameSpace__ecere__com__Method *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&_class->methods); method; method = next)
3041 {
3042 next = (struct __ecereNameSpace__ecere__com__Method *)__ecereProp___ecereNameSpace__ecere__sys__BTNode_Get_next(((struct __ecereNameSpace__ecere__sys__BTNode *)method));
3043 if(method->type == 1)
3044 method->vid++;
3045 }
3046 _class->_vTbl[vid] = function;
3047 {
3048 struct __ecereNameSpace__ecere__sys__OldLink * templateLink;
3049
3050 for(templateLink = _class->templatized.first; templateLink; templateLink = templateLink->next)
3051 {
3052 struct __ecereNameSpace__ecere__com__Class * template = templateLink->data;
3053
3054 template->_vTbl = _class->_vTbl;
3055 }
3056 }
3057 if(_class->derivatives.first || _class->templatized.first)
3058 __ecereNameSpace__ecere__com__FixDerivativeVirtualMethod(_class, name, vid, function, type);
3059 }
3060 {
3061 struct __ecereNameSpace__ecere__sys__OldLink * templateLink;
3062
3063 for(templateLink = base->templatized.first; templateLink; templateLink = templateLink->next)
3064 {
3065 struct __ecereNameSpace__ecere__com__Class * template = templateLink->data;
3066
3067 template->_vTbl = base->_vTbl;
3068 __ecereNameSpace__ecere__com__FixDerivativeVirtualMethod(template, name, vid, origFunction, type);
3069 }
3070 }
3071 }
3072
3073 struct __ecereNameSpace__ecere__com__Method * __ecereNameSpace__ecere__com__eClass_AddMethod(struct __ecereNameSpace__ecere__com__Class * _class, char * name, char * type, void * function, int declMode)
3074 {
3075 if(_class && name)
3076 {
3077 struct __ecereNameSpace__ecere__com__Class * base;
3078
3079 for(base = _class; base; base = base->base)
3080 {
3081 struct __ecereNameSpace__ecere__com__Method * method = (struct __ecereNameSpace__ecere__com__Method *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&base->methods, name);
3082
3083 if(method)
3084 {
3085 if(method->type == 1)
3086 {
3087 struct __ecereNameSpace__ecere__sys__OldLink * deriv;
3088 void * oldFunction = _class->_vTbl[method->vid];
3089
3090 if(method->vid > _class->vTblSize)
3091 printf("error");
3092 else
3093 _class->_vTbl[method->vid] = function ? function : __ecereNameSpace__ecere__com__DefaultFunction;
3094 for(deriv = _class->derivatives.first; deriv; deriv = deriv->next)
3095 {
3096 struct __ecereNameSpace__ecere__com__Class * derivClass = deriv->data;
3097
3098 if(derivClass->_vTbl[method->vid] == oldFunction)
3099 __ecereNameSpace__ecere__com__eClass_AddMethod(derivClass, name, type, function, declMode);
3100 }
3101 {
3102 struct __ecereNameSpace__ecere__sys__OldLink * templateLink;
3103
3104 for(templateLink = _class->templatized.first; templateLink; templateLink = templateLink->next)
3105 {
3106 struct __ecereNameSpace__ecere__com__Class * template = templateLink->data;
3107
3108 for(deriv = template->derivatives.first; deriv; deriv = deriv->next)
3109 {
3110 struct __ecereNameSpace__ecere__com__Class * derivClass = deriv->data;
3111
3112 if(derivClass->_vTbl[method->vid] == oldFunction)
3113 __ecereNameSpace__ecere__com__eClass_AddMethod(derivClass, name, type, function, declMode);
3114 }
3115 }
3116 }
3117 }
3118 else
3119 {
3120 if(base == _class)
3121 {
3122 break;
3123 }
3124 base = (((void *)0));
3125 break;
3126 }
3127 return method;
3128 }
3129 }
3130 if(!base)
3131 {
3132 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);
3133
3134 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&_class->methods, (struct __ecereNameSpace__ecere__sys__BTNode *)method);
3135 return method;
3136 }
3137 }
3138 return (((void *)0));
3139 }
3140
3141 struct __ecereNameSpace__ecere__com__Method * __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(struct __ecereNameSpace__ecere__com__Class * _class, char * name, char * type, void * function, int declMode)
3142 {
3143 if(_class && name)
3144 {
3145 struct __ecereNameSpace__ecere__com__Class * base;
3146
3147 for(base = _class; base; base = base->base)
3148 {
3149 struct __ecereNameSpace__ecere__com__Method * method = (struct __ecereNameSpace__ecere__com__Method *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&base->methods, name);
3150
3151 if(method)
3152 {
3153 if(method->type == 1)
3154 _class->_vTbl[method->vid] = function ? function : __ecereNameSpace__ecere__com__DefaultFunction;
3155 else
3156 base = (((void *)0));
3157 return method;
3158 }
3159 }
3160 if(!base)
3161 {
3162 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);
3163
3164 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&_class->methods, (struct __ecereNameSpace__ecere__sys__BTNode *)method);
3165 _class->_vTbl = __ecereNameSpace__ecere__com__eSystem_Renew(_class->_vTbl, sizeof(void *) * (_class->vTblSize));
3166 _class->_vTbl[method->vid] = function ? function : __ecereNameSpace__ecere__com__DefaultFunction;
3167 if(_class->derivatives.first || _class->templatized.first)
3168 __ecereNameSpace__ecere__com__FixDerivativeVirtualMethod(_class, name, method->vid, function ? function : (void *)__ecereNameSpace__ecere__com__DefaultFunction, type);
3169 return method;
3170 }
3171 }
3172 return (((void *)0));
3173 }
3174
3175 static void __ecereNameSpace__ecere__com__FixDerivativeProperty(struct __ecereNameSpace__ecere__com__Class * base, struct __ecereNameSpace__ecere__com__Property * _property)
3176 {
3177 struct __ecereNameSpace__ecere__sys__OldLink * derivative;
3178
3179 for(derivative = base->derivatives.first; derivative; derivative = derivative->next)
3180 {
3181 struct __ecereNameSpace__ecere__com__Class * _class = derivative->data;
3182 struct __ecereNameSpace__ecere__com__Property * prop;
3183 struct __ecereNameSpace__ecere__com__BTNamedLink * link;
3184
3185 link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&_class->prop, _property->name);
3186 if(link)
3187 {
3188 prop = link->data;
3189 if(!prop->Set && !prop->Get && prop->memberAccess == 4)
3190 {
3191 struct __ecereNameSpace__ecere__com__SelfWatcher * watcher;
3192
3193 for(watcher = _class->selfWatchers.first; watcher; watcher = watcher->next)
3194 {
3195 if(watcher->_property == prop)
3196 watcher->_property = _property;
3197 }
3198 _property->selfWatchable = 0x1;
3199 (__ecereNameSpace__ecere__com__eSystem_Delete(prop->name), prop->name = 0);
3200 (__ecereNameSpace__ecere__com__eSystem_Delete(prop->dataTypeString), prop->dataTypeString = 0);
3201 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&_class->membersAndProperties, prop);
3202 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&_class->prop, (struct __ecereNameSpace__ecere__sys__BTNode *)link);
3203 }
3204 }
3205 for(prop = _class->membersAndProperties.first; prop; prop = prop->next)
3206 prop->id++;
3207 _class->memberID++;
3208 _class->startMemberID++;
3209 __ecereNameSpace__ecere__com__FixDerivativeProperty(_class, _property);
3210 }
3211 }
3212
3213 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)
3214 {
3215 void * __ecereTemp1;
3216 struct __ecereNameSpace__ecere__com__Property * _property = (((void *)0));
3217
3218 if(_class)
3219 {
3220 if(!__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&_class->prop, (name ? name : dataType)))
3221 {
3222 _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));
3223 if(name)
3224 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&_class->membersAndProperties, _property);
3225 else
3226 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&_class->conversions, _property);
3227 __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)));
3228 if(!_property->conversion)
3229 {
3230 __ecereNameSpace__ecere__com__FixDerivativeProperty(_class, _property);
3231 }
3232 }
3233 }
3234 return _property;
3235 }
3236
3237 static void __ecereNameSpace__ecere__com__SetDelayedCPValues(struct __ecereNameSpace__ecere__com__Class * _class, struct __ecereNameSpace__ecere__com__ClassProperty * _property)
3238 {
3239 struct __ecereNameSpace__ecere__sys__OldLink * deriv;
3240 struct __ecereNameSpace__ecere__sys__NamedLink * value, * next;
3241
3242 for(value = _class->delayedCPValues.first; value; value = next)
3243 {
3244 next = value->next;
3245 if(!strcmp(value->name, _property->name))
3246 {
3247 _property->Set(_class, (int)value->data);
3248 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&_class->delayedCPValues, value);
3249 }
3250 }
3251 for(deriv = _class->derivatives.first; deriv; deriv = deriv->next)
3252 {
3253 __ecereNameSpace__ecere__com__SetDelayedCPValues(deriv->data, _property);
3254 }
3255 }
3256
3257 struct __ecereNameSpace__ecere__com__ClassProperty * __ecereNameSpace__ecere__com__eClass_AddClassProperty(struct __ecereNameSpace__ecere__com__Class * _class, char * name, char * dataType, void * setStmt, void * getStmt)
3258 {
3259 if(name && !__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&_class->classProperties, name))
3260 {
3261 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);
3262
3263 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&_class->classProperties, (struct __ecereNameSpace__ecere__sys__BTNode *)_property);
3264 __ecereNameSpace__ecere__com__SetDelayedCPValues(_class, _property);
3265 return _property;
3266 }
3267 return (((void *)0));
3268 }
3269
3270 struct __ecereNameSpace__ecere__com__ClassProperty * __ecereNameSpace__ecere__com__eClass_FindClassProperty(struct __ecereNameSpace__ecere__com__Class * _class, char * name)
3271 {
3272 struct __ecereNameSpace__ecere__com__ClassProperty * _property = (((void *)0));
3273
3274 if(name && _class)
3275 {
3276 struct __ecereNameSpace__ecere__com__Class * origClass = _class;
3277
3278 for(; _class; _class = _class->base)
3279 {
3280 _property = (struct __ecereNameSpace__ecere__com__ClassProperty *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&_class->classProperties, name);
3281 if(_property)
3282 break;
3283 }
3284 if(!_property && origClass->type == 4)
3285 {
3286 struct __ecereNameSpace__ecere__com__Class * enumClass = __ecereNameSpace__ecere__com__eSystem_FindClass(origClass->module, "enum");
3287
3288 _property = __ecereNameSpace__ecere__com__eClass_FindClassProperty(enumClass, name);
3289 }
3290 }
3291 return _property;
3292 }
3293
3294 int __ecereNameSpace__ecere__com__eClass_GetProperty(struct __ecereNameSpace__ecere__com__Class * _class, char * name)
3295 {
3296 struct __ecereNameSpace__ecere__com__ClassProperty * _property = __ecereNameSpace__ecere__com__eClass_FindClassProperty(_class, name);
3297
3298 if(_property && _property->Get && _property->Get != (void *)1)
3299 {
3300 int result = _property->Get(_class);
3301
3302 return result;
3303 }
3304 return 0;
3305 }
3306
3307 void __ecereNameSpace__ecere__com__eClass_SetProperty(struct __ecereNameSpace__ecere__com__Class * _class, char * name, int value)
3308 {
3309 void * __ecereTemp1;
3310 struct __ecereNameSpace__ecere__com__ClassProperty * _property = __ecereNameSpace__ecere__com__eClass_FindClassProperty(_class, name);
3311
3312 if(_property)
3313 {
3314 if(_property->Set)
3315 _property->Set(_class, value);
3316 }
3317 else
3318 {
3319 __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)));
3320 }
3321 }
3322
3323 struct __ecereNameSpace__ecere__com__Method * __ecereNameSpace__ecere__com__eClass_FindMethod(struct __ecereNameSpace__ecere__com__Class * _class, char * name, struct __ecereNameSpace__ecere__com__Instance * module)
3324 {
3325 if(_class && name)
3326 {
3327 for(; _class; _class = _class->base)
3328 {
3329 struct __ecereNameSpace__ecere__com__Method * method;
3330
3331 if(_class->templateClass)
3332 _class = _class->templateClass;
3333 method = (struct __ecereNameSpace__ecere__com__Method *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&_class->methods, name);
3334 if(method && (method->memberAccess == 1 || _class->module == module || !method->dataTypeString))
3335 {
3336 if(!method->dataTypeString)
3337 {
3338 if(_class->module != module)
3339 {
3340 if(method->memberAccess == 1)
3341 module = _class->module;
3342 else
3343 {
3344 return (((void *)0));
3345 }
3346 }
3347 }
3348 else
3349 {
3350 return method;
3351 }
3352 }
3353 if(_class->inheritanceAccess == 2 && _class->module != module)
3354 break;
3355 }
3356 }
3357 return (((void *)0));
3358 }
3359
3360 static unsigned int __ecereNameSpace__ecere__com__ConstructInstance(void * instance, struct __ecereNameSpace__ecere__com__Class * _class)
3361 {
3362 if(_class->templateClass)
3363 _class = _class->templateClass;
3364 if(_class->base)
3365 {
3366 if(!__ecereNameSpace__ecere__com__ConstructInstance(instance, _class->base))
3367 return 0x0;
3368 }
3369 if(_class->Initialize)
3370 {
3371 void (* Initialize)(struct __ecereNameSpace__ecere__com__Instance * module) = (void *)_class->Initialize;
3372
3373 _class->Initialize = (((void *)0));
3374 Initialize(_class->module);
3375 }
3376 if(_class->Constructor)
3377 {
3378 if(!_class->Constructor(instance))
3379 {
3380 for(; _class; _class = _class->base)
3381 {
3382 if(_class->templateClass)
3383 _class = _class->templateClass;
3384 if(_class->Destructor)
3385 _class->Destructor(instance);
3386 }
3387 return 0x0;
3388 }
3389 }
3390 (_class->templateClass ? _class->templateClass : _class)->count++;
3391 return 0x1;
3392 }
3393
3394 void * __ecereNameSpace__ecere__com__eInstance_New(struct __ecereNameSpace__ecere__com__Class * _class)
3395 {
3396 struct __ecereNameSpace__ecere__com__Instance * instance = (((void *)0));
3397
3398 if(_class)
3399 {
3400 instance = __ecereNameSpace__ecere__com___calloc(1, _class->structSize);
3401 if(_class->type == 0)
3402 {
3403 ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class = _class;
3404 ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_vTbl = _class->_vTbl;
3405 }
3406 if(!__ecereNameSpace__ecere__com__ConstructInstance(instance, _class))
3407 {
3408 __ecereNameSpace__ecere__com___free(instance);
3409 instance = (((void *)0));
3410 }
3411 }
3412 return instance;
3413 }
3414
3415 void __ecereNameSpace__ecere__com__eInstance_Evolve(struct __ecereNameSpace__ecere__com__Instance ** instancePtr, struct __ecereNameSpace__ecere__com__Class * _class)
3416 {
3417 if(_class && instancePtr && *instancePtr)
3418 {
3419 struct __ecereNameSpace__ecere__com__Instance * instance = (struct __ecereNameSpace__ecere__com__Instance *)__ecereNameSpace__ecere__com__eSystem_Renew(*instancePtr, sizeof(unsigned char) * (_class->structSize));
3420
3421 *instancePtr = instance;
3422 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);
3423 if(!strcmp(((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class->name, "Application"))
3424 {
3425 struct __ecereNameSpace__ecere__com__Instance * module;
3426 struct __ecereNameSpace__ecere__com__Instance * app = (struct __ecereNameSpace__ecere__com__Instance *)instance;
3427 struct __ecereNameSpace__ecere__com__BTNamedLink * link;
3428 struct __ecereNameSpace__ecere__com__Class * _class;
3429 struct __ecereNameSpace__ecere__com__NameSpace * nameSpace;
3430
3431 for(module = ((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 296)))->allModules.first; module; module = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->next)
3432 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application = app;
3433 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)))
3434 {
3435 struct __ecereNameSpace__ecere__sys__OldLink * t;
3436
3437 ((struct __ecereNameSpace__ecere__com__Class *)link->data)->nameSpace = &((struct __ecereNameSpace__ecere__com__Module *)(((char *)app + 12)))->privateNameSpace;
3438 for(t = ((struct __ecereNameSpace__ecere__com__Class *)link->data)->templatized.first; t; t = t->next)
3439 {
3440 struct __ecereNameSpace__ecere__com__Class * template = t->data;
3441
3442 template->nameSpace = ((struct __ecereNameSpace__ecere__com__Class *)link->data)->nameSpace;
3443 }
3444 }
3445 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)))
3446 {
3447 struct __ecereNameSpace__ecere__sys__OldLink * t;
3448
3449 ((struct __ecereNameSpace__ecere__com__Class *)link->data)->nameSpace = &((struct __ecereNameSpace__ecere__com__Module *)(((char *)app + 12)))->publicNameSpace;
3450 for(t = ((struct __ecereNameSpace__ecere__com__Class *)link->data)->templatized.first; t; t = t->next)
3451 {
3452 struct __ecereNameSpace__ecere__com__Class * template = t->data;
3453
3454 template->nameSpace = ((struct __ecereNameSpace__ecere__com__Class *)link->data)->nameSpace;
3455 }
3456 }
3457 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)))
3458 ((struct __ecereNameSpace__ecere__com__DefinedExpression *)link->data)->nameSpace = &((struct __ecereNameSpace__ecere__com__Module *)(((char *)app + 12)))->privateNameSpace;
3459 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)))
3460 ((struct __ecereNameSpace__ecere__com__DefinedExpression *)link->data)->nameSpace = &((struct __ecereNameSpace__ecere__com__Module *)(((char *)app + 12)))->publicNameSpace;
3461 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)))
3462 ((struct __ecereNameSpace__ecere__com__GlobalFunction *)link->data)->nameSpace = &((struct __ecereNameSpace__ecere__com__Module *)(((char *)app + 12)))->privateNameSpace;
3463 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)))
3464 ((struct __ecereNameSpace__ecere__com__GlobalFunction *)link->data)->nameSpace = &((struct __ecereNameSpace__ecere__com__Module *)(((char *)app + 12)))->publicNameSpace;
3465 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)))
3466 (*nameSpace).parent = &((struct __ecereNameSpace__ecere__com__Module *)(((char *)app + 12)))->privateNameSpace;
3467 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)))
3468 (*nameSpace).parent = &((struct __ecereNameSpace__ecere__com__Module *)(((char *)app + 12)))->publicNameSpace;
3469 for(link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 296)))->systemNameSpace.classes); link; link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereProp___ecereNameSpace__ecere__sys__BTNode_Get_next(((struct __ecereNameSpace__ecere__sys__BTNode *)link)))
3470 {
3471 struct __ecereNameSpace__ecere__sys__OldLink * t;
3472
3473 ((struct __ecereNameSpace__ecere__com__Class *)link->data)->nameSpace = &((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 296)))->systemNameSpace;
3474 for(t = ((struct __ecereNameSpace__ecere__com__Class *)link->data)->templatized.first; t; t = t->next)
3475 {
3476 struct __ecereNameSpace__ecere__com__Class * template = t->data;
3477
3478 template->nameSpace = ((struct __ecereNameSpace__ecere__com__Class *)link->data)->nameSpace;
3479 }
3480 }
3481 for(link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 296)))->systemNameSpace.defines); link; link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereProp___ecereNameSpace__ecere__sys__BTNode_Get_next(((struct __ecereNameSpace__ecere__sys__BTNode *)link)))
3482 ((struct __ecereNameSpace__ecere__com__DefinedExpression *)link->data)->nameSpace = &((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 296)))->systemNameSpace;
3483 for(link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 296)))->systemNameSpace.functions); link; link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereProp___ecereNameSpace__ecere__sys__BTNode_Get_next(((struct __ecereNameSpace__ecere__sys__BTNode *)link)))
3484 ((struct __ecereNameSpace__ecere__com__GlobalFunction *)link->data)->nameSpace = &((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 296)))->systemNameSpace;
3485 for(link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 296)))->systemNameSpace.functions); link; link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereProp___ecereNameSpace__ecere__sys__BTNode_Get_next(((struct __ecereNameSpace__ecere__sys__BTNode *)link)))
3486 ((struct __ecereNameSpace__ecere__com__GlobalFunction *)link->data)->nameSpace = &((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 296)))->systemNameSpace;
3487 for(nameSpace = (struct __ecereNameSpace__ecere__com__NameSpace *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 296)))->systemNameSpace.nameSpaces); nameSpace; nameSpace = (struct __ecereNameSpace__ecere__com__NameSpace *)__ecereProp___ecereNameSpace__ecere__sys__BTNode_Get_next(((struct __ecereNameSpace__ecere__sys__BTNode *)nameSpace)))
3488 (*nameSpace).parent = &((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 296)))->systemNameSpace;
3489 for(_class = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)app + 12)))->classes.first; _class; _class = _class->next)
3490 {
3491 struct __ecereNameSpace__ecere__sys__OldLink * templateLink;
3492
3493 _class->module = (struct __ecereNameSpace__ecere__com__Instance *)app;
3494 for(templateLink = _class->templatized.first; templateLink; templateLink = templateLink->next)
3495 {
3496 struct __ecereNameSpace__ecere__com__Class * template = templateLink->data;
3497
3498 template->module = _class->module;
3499 }
3500 }
3501 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)app + 12)))->application = app;
3502 }
3503 {
3504 struct __ecereNameSpace__ecere__com__Class * base;
3505
3506 for(base = ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class; base && base->type == 0 && base->count; base = base->base)
3507 (base->templateClass ? base->templateClass : base)->count--;
3508 }
3509 ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class = _class;
3510 ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_vTbl = _class->_vTbl;
3511 if(!__ecereNameSpace__ecere__com__ConstructInstance(instance, _class))
3512 {
3513 __ecereNameSpace__ecere__com___free(instance);
3514 *instancePtr = (((void *)0));
3515 }
3516 }
3517 }
3518
3519 void __ecereNameSpace__ecere__com__eInstance_Delete(struct __ecereNameSpace__ecere__com__Instance * instance)
3520 {
3521 if(instance)
3522 {
3523 struct __ecereNameSpace__ecere__com__Class * _class, * base;
3524 unsigned int ownVtbl;
3525
3526 ownVtbl = ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_vTbl != ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class->_vTbl;
3527 for(_class = ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class; _class; _class = base)
3528 {
3529 if(_class->templateClass)
3530 _class = _class->templateClass;
3531 if(_class->destructionWatchOffset)
3532 {
3533 struct __ecereNameSpace__ecere__sys__OldList * watchers = (struct __ecereNameSpace__ecere__sys__OldList *)((unsigned char *)instance + _class->destructionWatchOffset);
3534 struct __ecereNameSpace__ecere__com__Watcher * watcher, * next;
3535
3536 for(watcher = (*watchers).first; watcher; watcher = next)
3537 {
3538 next = watcher->next;
3539 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove((&*watchers), watcher);
3540 watcher->callback(watcher->object, instance);
3541 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete((&*watchers), watcher);
3542 }
3543 }
3544 base = _class->base;
3545 if(base && base->type == 1000)
3546 base = (((void *)0));
3547 if(_class->Destructor)
3548 _class->Destructor(instance);
3549 }
3550 for(_class = ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class; _class; _class = base)
3551 {
3552 if(_class->templateClass)
3553 _class = _class->templateClass;
3554 base = _class->base;
3555 (_class->templateClass ? _class->templateClass : _class)->count--;
3556 if(_class->type == 0 && !_class->count && !_class->module)
3557 {
3558 __ecereNameSpace__ecere__com__eClass_Unregister(_class);
3559 }
3560 }
3561 if(ownVtbl)
3562 {
3563 (__ecereNameSpace__ecere__com__eSystem_Delete(((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_vTbl), ((struct __ecereNameSpace__ecere__com__Instance * )(char * )instance)->_vTbl = 0);
3564 }
3565 __ecereNameSpace__ecere__com___free(instance);
3566 }
3567 }
3568
3569 struct __ecereNameSpace__ecere__com__Property * __ecereNameSpace__ecere__com__eClass_FindProperty(struct __ecereNameSpace__ecere__com__Class * _class, char * name, struct __ecereNameSpace__ecere__com__Instance * module)
3570 {
3571 if(_class && name)
3572 {
3573 for(; _class; _class = _class->base)
3574 {
3575 struct __ecereNameSpace__ecere__com__BTNamedLink * link;
3576
3577 if(_class->templateClass)
3578 _class = _class->templateClass;
3579 link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&_class->prop, name);
3580 if(link)
3581 {
3582 struct __ecereNameSpace__ecere__com__Property * _property = (struct __ecereNameSpace__ecere__com__Property *)link->data;
3583
3584 if(_property->memberAccess == 1 || _class->module == module || !_property->dataTypeString)
3585 {
3586 if(!_property->dataTypeString)
3587 {
3588 if(_class->module != module)
3589 {
3590 if(_property->memberAccess == 1)
3591 module = _class->module;
3592 else
3593 {
3594 return (((void *)0));
3595 }
3596 }
3597 }
3598 else
3599 {
3600 return _property;
3601 }
3602 }
3603 }
3604 if(_class->inheritanceAccess == 2 && _class->module != module)
3605 break;
3606 }
3607 }
3608 return (((void *)0));
3609 }
3610
3611 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)
3612 {
3613 struct __ecereNameSpace__ecere__com__BTNamedLink * link;
3614 struct __ecereNameSpace__ecere__com__DataMember * dataMember;
3615
3616 link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(alist, name);
3617 if(link)
3618 {
3619 dataMember = link->data;
3620 if(dataMember->type == 0 && (dataMember->memberAccess == 1 || searchPrivate || !dataMember->dataTypeString))
3621 {
3622 if(offset)
3623 *offset += dataMember->offset;
3624 if(id)
3625 *id = dataMember->id;
3626 return dataMember;
3627 }
3628 return (((void *)0));
3629 }
3630 for(dataMember = list->first; dataMember; dataMember = dataMember->next)
3631 {
3632 if(!dataMember->isProperty && (dataMember->memberAccess == 1 || searchPrivate) && !dataMember->name && (dataMember->type == 1 || dataMember->type == 2))
3633 {
3634 struct __ecereNameSpace__ecere__com__DataMember * childMember;
3635
3636 if(subMemberStackPos)
3637 subMemberStack[(*subMemberStackPos)++] = dataMember;
3638 childMember = __ecereNameSpace__ecere__com__FindDataMember(&dataMember->members, &dataMember->membersAlpha, name, offset, id, searchPrivate, subMemberStack, subMemberStackPos);
3639 if(childMember)
3640 {
3641 if(offset)
3642 *offset += dataMember->offset;
3643 if(id)
3644 *id += dataMember->id;
3645 return childMember;
3646 }
3647 if(subMemberStackPos)
3648 (*subMemberStackPos)--;
3649 }
3650 }
3651 return (((void *)0));
3652 }
3653
3654 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)
3655 {
3656 struct __ecereNameSpace__ecere__com__DataMember * dataMember = (((void *)0));
3657
3658 if(subMemberStackPos)
3659 *subMemberStackPos = 0;
3660 if(_class && name)
3661 {
3662 for(; _class; _class = _class->base)
3663 {
3664 if(_class->templateClass)
3665 _class = _class->templateClass;
3666 dataMember = __ecereNameSpace__ecere__com__FindDataMember(&_class->membersAndProperties, &_class->members, name, (((void *)0)), (((void *)0)), _class->module == module, subMemberStack, subMemberStackPos);
3667 if(dataMember)
3668 {
3669 if(!dataMember->dataTypeString)
3670 {
3671 if(_class->module != module)
3672 {
3673 if(dataMember->memberAccess == 1)
3674 module = _class->module;
3675 else
3676 {
3677 return (((void *)0));
3678 }
3679 }
3680 dataMember = (((void *)0));
3681 }
3682 else
3683 {
3684 dataMember->_class = _class->templateClass ? _class->templateClass : _class;
3685 return dataMember;
3686 }
3687 }
3688 if(_class->inheritanceAccess == 2 && _class->module != module)
3689 break;
3690 }
3691 }
3692 return dataMember;
3693 }
3694
3695 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)
3696 {
3697 struct __ecereNameSpace__ecere__com__DataMember * dataMember = (((void *)0));
3698
3699 if(subMemberStackPos)
3700 *subMemberStackPos = 0;
3701 if(offset)
3702 *offset = 0;
3703 if(_class)
3704 {
3705 for(; _class; _class = _class->base)
3706 {
3707 if(_class->templateClass)
3708 _class = _class->templateClass;
3709 dataMember = __ecereNameSpace__ecere__com__FindDataMember(&_class->membersAndProperties, &_class->members, name, offset, (((void *)0)), _class->module == module, subMemberStack, subMemberStackPos);
3710 if(dataMember)
3711 {
3712 if(!dataMember->dataTypeString)
3713 {
3714 if(_class->module != module)
3715 {
3716 if(dataMember->memberAccess == 1)
3717 module = _class->module;
3718 else
3719 {
3720 return (((void *)0));
3721 }
3722 }
3723 dataMember = (((void *)0));
3724 }
3725 else
3726 {
3727 dataMember->_class = _class;
3728 return dataMember;
3729 }
3730 }
3731 if(_class->inheritanceAccess == 2 && _class->module != module)
3732 break;
3733 }
3734 }
3735 return dataMember;
3736 }
3737
3738 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)
3739 {
3740 struct __ecereNameSpace__ecere__com__DataMember * dataMember = (((void *)0));
3741
3742 if(subMemberStackPos)
3743 *subMemberStackPos = 0;
3744 if(_class)
3745 {
3746 for(; _class; _class = _class->base)
3747 {
3748 if(_class->templateClass)
3749 _class = _class->templateClass;
3750 dataMember = __ecereNameSpace__ecere__com__FindDataMember(&_class->membersAndProperties, &_class->members, name, (((void *)0)), id, _class->module == module, subMemberStack, subMemberStackPos);
3751 if(dataMember)
3752 {
3753 if(!dataMember->dataTypeString)
3754 {
3755 if(_class->module != module)
3756 {
3757 if(dataMember->memberAccess == 1)
3758 module = _class->module;
3759 else
3760 {
3761 return (((void *)0));
3762 }
3763 }
3764 dataMember = (((void *)0));
3765 }
3766 else
3767 {
3768 dataMember->_class = _class;
3769 return dataMember;
3770 }
3771 }
3772 if(_class->inheritanceAccess == 2 && _class->module != module)
3773 break;
3774 }
3775 }
3776 return dataMember;
3777 }
3778
3779 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)
3780 {
3781 if(*curMember)
3782 {
3783 *curMember = (*curMember)->next;
3784 if(subMemberStackPos && *subMemberStackPos > 0 && subMemberStack[*subMemberStackPos - 1]->type == 1)
3785 {
3786 *curMember = subMemberStack[--(*subMemberStackPos)];
3787 *curMember = (*curMember)->next;
3788 }
3789 if(subMemberStackPos && *subMemberStackPos > 0)
3790 {
3791 while(*curMember && ((*curMember)->memberAccess == 2))
3792 *curMember = (*curMember)->next;
3793 }
3794 else
3795 while(*curMember && (*curMember)->name)
3796 {
3797 struct __ecereNameSpace__ecere__com__DataMember * dataMember = __ecereNameSpace__ecere__com__eClass_FindDataMember(_class, (*curMember)->name, (((void *)0)), (((void *)0)), (((void *)0)));
3798
3799 if(!dataMember)
3800 dataMember = (struct __ecereNameSpace__ecere__com__DataMember *)__ecereNameSpace__ecere__com__eClass_FindProperty(_class, (*curMember)->name, (((void *)0)));
3801 if(dataMember && dataMember->memberAccess != 2)
3802 {
3803 *curMember = dataMember;
3804 break;
3805 }
3806 else
3807 *curMember = (*curMember)->next;
3808 }
3809 if(subMemberStackPos)
3810 {
3811 while((*curMember) && !(*curMember)->isProperty && !(*curMember)->name && ((*curMember)->type == 2 || (*curMember)->type == 1))
3812 {
3813 subMemberStack[(*subMemberStackPos)++] = *curMember;
3814 *curMember = (*curMember)->members.first;
3815 while(*curMember && ((*curMember)->memberAccess == 2))
3816 *curMember = (*curMember)->next;
3817 }
3818 }
3819 }
3820 while(!*curMember)
3821 {
3822 if(!*curMember)
3823 {
3824 if(subMemberStackPos && *subMemberStackPos)
3825 {
3826 *curMember = subMemberStack[--(*subMemberStackPos)];
3827 *curMember = (*curMember)->next;
3828 }
3829 else
3830 {
3831 struct __ecereNameSpace__ecere__com__Class * lastCurClass = *curClass;
3832
3833 if(*curClass == _class)
3834 break;
3835 for(*curClass = _class; (*curClass)->base != lastCurClass && (*curClass)->base->type != 1000 && (*curClass)->inheritanceAccess != 2; *curClass = (*curClass)->base)
3836 ;
3837 *curMember = (*curClass)->membersAndProperties.first;
3838 }
3839 if(subMemberStackPos && *subMemberStackPos > 0)
3840 {
3841 while(*curMember && ((*curMember)->memberAccess == 2))
3842 *curMember = (*curMember)->next;
3843 }
3844 else
3845 while(*curMember && (*curMember)->name)
3846 {
3847 struct __ecereNameSpace__ecere__com__DataMember * dataMember = __ecereNameSpace__ecere__com__eClass_FindDataMember(_class, (*curMember)->name, (((void *)0)), (((void *)0)), (((void *)0)));
3848
3849 if(!dataMember)
3850 dataMember = (struct __ecereNameSpace__ecere__com__DataMember *)__ecereNameSpace__ecere__com__eClass_FindProperty(_class, (*curMember)->name, (((void *)0)));
3851 if(dataMember && dataMember->memberAccess != 2)
3852 {
3853 *curMember = dataMember;
3854 break;
3855 }
3856 else
3857 *curMember = (*curMember)->next;
3858 }
3859 if(subMemberStackPos)
3860 {
3861 while((*curMember) && !(*curMember)->isProperty && !(*curMember)->name && ((*curMember)->type == 2 || (*curMember)->type == 1))
3862 {
3863 subMemberStack[(*subMemberStackPos)++] = *curMember;
3864 *curMember = (*curMember)->members.first;
3865 while(*curMember && (*curMember)->memberAccess == 2)
3866 *curMember = (*curMember)->next;
3867 }
3868 }
3869 }
3870 }
3871 }
3872
3873 void __ecereNameSpace__ecere__com__eInstance_SetMethod(struct __ecereNameSpace__ecere__com__Instance * instance, char * name, void * function)
3874 {
3875 if(instance && name)
3876 {
3877 struct __ecereNameSpace__ecere__com__Class * _class;
3878
3879 for(_class = ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class; _class; _class = _class->base)
3880 {
3881 struct __ecereNameSpace__ecere__com__Method * method = (struct __ecereNameSpace__ecere__com__Method *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&_class->methods, name);
3882
3883 if(method && method->type == 1)
3884 {
3885 if(((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_vTbl == ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class->_vTbl)
3886 {
3887 ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_vTbl = __ecereNameSpace__ecere__com___malloc(sizeof(void *) * ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class->vTblSize);
3888 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);
3889 }
3890 ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_vTbl[method->vid] = function ? function : __ecereNameSpace__ecere__com__DefaultFunction;
3891 }
3892 }
3893 }
3894 }
3895
3896 unsigned int __ecereNameSpace__ecere__com__eInstance_IsDerived(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Class * from)
3897 {
3898 if(instance)
3899 {
3900 struct __ecereNameSpace__ecere__com__Class * _class = ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class;
3901
3902 for(; _class; _class = _class->base)
3903 {
3904 if(_class == from)
3905 return 0x1;
3906 }
3907 }
3908 return 0x0;
3909 }
3910
3911 void __ecereNameSpace__ecere__com__eInstance_IncRef(struct __ecereNameSpace__ecere__com__Instance * instance)
3912 {
3913 if(instance)
3914 ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_refCount++;
3915 }
3916
3917 void __ecereNameSpace__ecere__com__eInstance_DecRef(struct __ecereNameSpace__ecere__com__Instance * instance)
3918 {
3919 if(instance)
3920 {
3921 ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_refCount--;
3922 if(((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_refCount <= 0)
3923 {
3924 __ecereNameSpace__ecere__com__eInstance_Delete(instance);
3925 }
3926 }
3927 }
3928
3929 static void __ecereNameSpace__ecere__com__FixOffsets(struct __ecereNameSpace__ecere__com__Class * _class)
3930 {
3931 struct __ecereNameSpace__ecere__sys__OldLink * deriv;
3932
3933 _class->structSize += _class->base->structSize - _class->offset;
3934 _class->offset = _class->base->structSize;
3935 for(deriv = _class->derivatives.first; deriv; deriv = deriv->next)
3936 __ecereNameSpace__ecere__com__FixOffsets(deriv->data);
3937 }
3938
3939 void __ecereNameSpace__ecere__com__eClass_Resize(struct __ecereNameSpace__ecere__com__Class * _class, int newSize)
3940 {
3941 struct __ecereNameSpace__ecere__sys__OldLink * deriv;
3942
3943 _class->structSize = newSize;
3944 for(deriv = _class->derivatives.first; deriv; deriv = deriv->next)
3945 __ecereNameSpace__ecere__com__FixOffsets(deriv->data);
3946 }
3947
3948 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)
3949 {
3950 void * __ecereTemp1;
3951
3952 if(_class && name)
3953 {
3954 if(!__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&_class->members, name))
3955 {
3956 struct __ecereNameSpace__ecere__com__DataMember * dataMember;
3957
3958 if(alignment)
3959 {
3960 int __simpleStruct0;
3961
3962 _class->structAlignment = (__simpleStruct0 = _class->structAlignment, (__simpleStruct0 > alignment) ? __simpleStruct0 : alignment);
3963 if(_class->memberOffset % alignment)
3964 _class->memberOffset += alignment - (_class->memberOffset % alignment);
3965 }
3966 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));
3967 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&_class->membersAndProperties, dataMember);
3968 _class->memberOffset += size;
3969 __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)));
3970 return dataMember;
3971 }
3972 }
3973 return (((void *)0));
3974 }
3975
3976 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)
3977 {
3978 void * __ecereTemp1;
3979
3980 if(name && !__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&member->membersAlpha, name))
3981 {
3982 struct __ecereNameSpace__ecere__com__DataMember * dataMember;
3983
3984 if(alignment)
3985 {
3986 int __simpleStruct0;
3987
3988 member->structAlignment = (__simpleStruct0 = member->structAlignment, (__simpleStruct0 > alignment) ? __simpleStruct0 : alignment);
3989 if(member->memberOffset % alignment)
3990 member->memberOffset += alignment - (member->memberOffset % alignment);
3991 }
3992 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));
3993 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&member->members, dataMember);
3994 if(member->type == 1)
3995 {
3996 if(size > member->memberOffset)
3997 member->memberOffset = size;
3998 }
3999 else
4000 member->memberOffset += size;
4001 __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)));
4002 return dataMember;
4003 }
4004 return (((void *)0));
4005 }
4006
4007 struct __ecereNameSpace__ecere__com__DataMember * __ecereNameSpace__ecere__com__eMember_New(int type, int declMode)
4008 {
4009 void * __ecereTemp1;
4010
4011 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));
4012 }
4013
4014 static void __ecereNameSpace__ecere__com__SetMemberClass(struct __ecereNameSpace__ecere__com__DataMember * member, struct __ecereNameSpace__ecere__com__Class * _class)
4015 {
4016 struct __ecereNameSpace__ecere__com__DataMember * dataMember;
4017
4018 member->_class = _class;
4019 for(dataMember = member->members.first; dataMember; dataMember = dataMember->next)
4020 __ecereNameSpace__ecere__com__SetMemberClass(dataMember, _class);
4021 }
4022
4023 unsigned int __ecereNameSpace__ecere__com__eMember_AddMember(struct __ecereNameSpace__ecere__com__DataMember * addTo, struct __ecereNameSpace__ecere__com__DataMember * dataMember)
4024 {
4025 void * __ecereTemp1;
4026 int __simpleStruct0, __simpleStruct1;
4027
4028 if(dataMember->name && __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&addTo->membersAlpha, dataMember->name))
4029 return 0x0;
4030 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&addTo->members, dataMember);
4031 if(dataMember->name)
4032 __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)));
4033 dataMember->_class = addTo->_class;
4034 dataMember->id = addTo->memberID;
4035 if(dataMember->type == 1)
4036 addTo->memberID += 1;
4037 else
4038 addTo->memberID += dataMember->memberID;
4039 addTo->structAlignment = (__simpleStruct0 = addTo->structAlignment, __simpleStruct1 = dataMember->structAlignment, (__simpleStruct0 > __simpleStruct1) ? __simpleStruct0 : __simpleStruct1);
4040 dataMember->offset = (addTo->type == 1) ? 0 : addTo->memberOffset;
4041 if(addTo->type == 1)
4042 {
4043 if(dataMember->memberOffset > addTo->memberOffset)
4044 addTo->memberOffset = dataMember->memberOffset;
4045 }
4046 else
4047 addTo->memberOffset += dataMember->memberOffset;
4048 return 0x1;
4049 }
4050
4051 unsigned int __ecereNameSpace__ecere__com__eClass_AddMember(struct __ecereNameSpace__ecere__com__Class * _class, struct __ecereNameSpace__ecere__com__DataMember * dataMember)
4052 {
4053 void * __ecereTemp1;
4054 int __simpleStruct0, __simpleStruct1;
4055
4056 if(!_class || _class->comRedefinition || (dataMember->name && __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&_class->members, dataMember->name)))
4057 return 0x0;
4058 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&_class->membersAndProperties, dataMember);
4059 if(dataMember->name)
4060 __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)));
4061 __ecereNameSpace__ecere__com__SetMemberClass(dataMember, _class);
4062 dataMember->id = _class->memberID;
4063 _class->structAlignment = (__simpleStruct0 = _class->structAlignment, __simpleStruct1 = dataMember->structAlignment, (__simpleStruct0 > __simpleStruct1) ? __simpleStruct0 : __simpleStruct1);
4064 if(dataMember->type == 1)
4065 _class->memberID += 1;
4066 else
4067 _class->memberID += dataMember->memberID;
4068 dataMember->offset = _class->memberOffset;
4069 _class->memberOffset += dataMember->memberOffset;
4070 return 0x1;
4071 }
4072
4073 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)
4074 {
4075 void * __ecereTemp1;
4076
4077 if(_class && name && !__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&_class->members, name))
4078 {
4079 uint64 mask = 0;
4080 int c;
4081 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);
4082
4083 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&_class->membersAndProperties, bitMember);
4084 if(bitSize)
4085 {
4086 bitMember->pos = (bitPos == -1) ? _class->memberOffset : bitPos;
4087 bitMember->size = bitSize;
4088 _class->memberOffset = bitMember->pos + bitMember->size;
4089 for(c = 0; c < bitSize; c++)
4090 {
4091 if(c)
4092 mask <<= 1;
4093 mask |= 1;
4094 }
4095 bitMember->mask = mask << bitMember->pos;
4096 }
4097 __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)));
4098 return bitMember;
4099 }
4100 return (((void *)0));
4101 }
4102
4103 static struct __ecereNameSpace__ecere__com__Instance * __ecereNameSpace__ecere__com__Module_Load(struct __ecereNameSpace__ecere__com__Instance * fromModule, char * name, int importAccess, unsigned int ensureCOM)
4104 {
4105 void * __ecereTemp1;
4106 unsigned int (stdcall * Load)(struct __ecereNameSpace__ecere__com__Instance * module) = (((void *)0));
4107 void (stdcall * Unload)(struct __ecereNameSpace__ecere__com__Instance * module) = (((void *)0));
4108 struct __ecereNameSpace__ecere__com__Instance * module;
4109
4110 for(module = ((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)fromModule + 12)))->application + 296)))->allModules.first; module; module = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->next)
4111 {
4112 if(!strcmp(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->name, name))
4113 break;
4114 }
4115 if(ensureCOM && (!strcmp(name, "ecereCOM") || !strcmp(name, "ecere")))
4116 {
4117 for(module = ((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)fromModule + 12)))->application + 296)))->allModules.first; module; module = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->next)
4118 {
4119 if(!strcmp(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->name, "ecere") || !strcmp(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->name, "ecereCOM"))
4120 break;
4121 }
4122 }
4123 if(!module)
4124 {
4125 void * library = (((void *)0));
4126
4127 if(ensureCOM && !strcmp(name, "ecereCOM"))
4128 {
4129 Load = __ecereDll_Load_ecere;
4130 Unload = __ecereDll_Unload_ecere;
4131 }
4132 else
4133 {
4134 library = Instance_Module_Load(name, &Load, &Unload);
4135 }
4136 if(Load)
4137 {
4138 module = (struct __ecereNameSpace__ecere__com__Instance *)__ecereNameSpace__ecere__com__eInstance_New(__ecereNameSpace__ecere__com__eSystem_FindClass(fromModule, "Module"));
4139 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)fromModule + 12)))->application;
4140 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->library = library;
4141 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->name = __ecereNameSpace__ecere__sys__CopyString(name);
4142 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->Unload = Unload;
4143 if(!Load(module))
4144 {
4145 __ecereNameSpace__ecere__com__eInstance_Delete((struct __ecereNameSpace__ecere__com__Instance *)module);
4146 module = (((void *)0));
4147 }
4148 }
4149 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)fromModule + 12)))->application + 296)))->allModules, module);
4150 }
4151 if(ensureCOM && !strcmp(name, "ecere") && module)
4152 {
4153 name = !strcmp(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->name, "ecereCOM") ? "ecere" : "ecereCOM";
4154 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))
4155 {
4156 struct __ecereNameSpace__ecere__com__Instance * module;
4157
4158 for(module = ((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)fromModule + 12)))->application + 296)))->allModules.first; module; module = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->next)
4159 {
4160 if(!strcmp(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->name, name))
4161 break;
4162 }
4163 if(!module)
4164 {
4165 Load = __ecereDll_Load_ecere;
4166 Unload = __ecereDll_Unload_ecere;
4167 module = (struct __ecereNameSpace__ecere__com__Instance *)__ecereNameSpace__ecere__com__eInstance_New(__ecereNameSpace__ecere__com__eSystem_FindClass(fromModule, "Module"));
4168 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)fromModule + 12)))->application;
4169 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->library = (((void *)0));
4170 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->name = __ecereNameSpace__ecere__sys__CopyString(name);
4171 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->Unload = Unload;
4172 if(!Load(module))
4173 {
4174 __ecereNameSpace__ecere__com__eInstance_Delete((struct __ecereNameSpace__ecere__com__Instance *)module);
4175 module = (((void *)0));
4176 }
4177 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)fromModule + 12)))->application + 296)))->allModules, module);
4178 }
4179 if(module)
4180 {
4181 if(fromModule)
4182 {
4183 __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)));
4184 }
4185 module->_refCount++;
4186 }
4187 }
4188 }
4189 if(module)
4190 {
4191 if(fromModule)
4192 {
4193 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)fromModule + 12)))->modules, (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass___ecereNameSpace__ecere__com__SubModule), ((struct __ecereNameSpace__ecere__com__SubModule *)__ecereTemp1)->module = module, ((struct __ecereNameSpace__ecere__com__SubModule *)__ecereTemp1)->importMode = importAccess, ((struct __ecereNameSpace__ecere__com__SubModule *)__ecereTemp1)));
4194 }
4195 module->_refCount++;
4196 }
4197 return module;
4198 }
4199
4200 struct __ecereNameSpace__ecere__com__Instance * __ecereNameSpace__ecere__com__eModule_Load(struct __ecereNameSpace__ecere__com__Instance * fromModule, char * name, int importAccess)
4201 {
4202 return __ecereNameSpace__ecere__com__Module_Load(fromModule, name, importAccess, 0x1);
4203 }
4204
4205 struct __ecereNameSpace__ecere__com__Instance * __ecereNameSpace__ecere__com__eModule_LoadStrict(struct __ecereNameSpace__ecere__com__Instance * fromModule, char * name, int importAccess)
4206 {
4207 return __ecereNameSpace__ecere__com__Module_Load(fromModule, name, importAccess, 0x0);
4208 }
4209
4210 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))
4211 {
4212 void * __ecereTemp1;
4213 struct __ecereNameSpace__ecere__com__Instance * module;
4214
4215 for(module = ((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)fromModule + 12)))->application + 296)))->allModules.first; module; module = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->next)
4216 {
4217 if(!strcmp(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->name, name))
4218 break;
4219 }
4220 if(!module)
4221 {
4222 if(Load)
4223 {
4224 module = (struct __ecereNameSpace__ecere__com__Instance *)__ecereNameSpace__ecere__com__eInstance_New(__ecereNameSpace__ecere__com__eSystem_FindClass(fromModule, "Module"));
4225 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)fromModule + 12)))->application;
4226 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->name = __ecereNameSpace__ecere__sys__CopyString(name);
4227 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->Unload = (void *)Unload;
4228 if(!Load(module))
4229 {
4230 __ecereNameSpace__ecere__com__eInstance_Delete((struct __ecereNameSpace__ecere__com__Instance *)module);
4231 module = (((void *)0));
4232 }
4233 }
4234 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)fromModule + 12)))->application + 296)))->allModules, module);
4235 }
4236 if(module)
4237 {
4238 if(fromModule)
4239 {
4240 __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)));
4241 }
4242 module->_refCount++;
4243 }
4244 return module;
4245 }
4246
4247 void __ecereNameSpace__ecere__com__eModule_Unload(struct __ecereNameSpace__ecere__com__Instance * fromModule, struct __ecereNameSpace__ecere__com__Instance * module)
4248 {
4249 struct __ecereNameSpace__ecere__sys__OldLink * m;
4250
4251 for(m = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)fromModule + 12)))->modules.first; m; m = m->next)
4252 {
4253 if(m->data == module)
4254 break;
4255 }
4256 if(m)
4257 {
4258 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)fromModule + 12)))->modules, m);
4259 (__ecereNameSpace__ecere__com__eInstance_DecRef(module), module = 0);
4260 }
4261 }
4262
4263 void __ecereNameSpace__ecere__com__eEnum_AddFixedValue(struct __ecereNameSpace__ecere__com__Class * _class, char * string, int value)
4264 {
4265 void * __ecereTemp1;
4266
4267 if(_class && _class->type == 4)
4268 {
4269 struct __ecereNameSpace__ecere__com__EnumClassData * data = (struct __ecereNameSpace__ecere__com__EnumClassData *)_class->data;
4270 struct __ecereNameSpace__ecere__sys__NamedLink * item;
4271
4272 for(item = data->values.first; item; item = item->next)
4273 if(!strcmp(item->name, string))
4274 break;
4275 if(!item)
4276 {
4277 __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)));
4278 if(value > data->largest)
4279 data->largest = value;
4280 }
4281 }
4282 }
4283
4284 int __ecereNameSpace__ecere__com__eEnum_AddValue(struct __ecereNameSpace__ecere__com__Class * _class, char * string)
4285 {
4286 void * __ecereTemp1;
4287
4288 if(_class && _class->type == 4)
4289 {
4290 struct __ecereNameSpace__ecere__com__EnumClassData * data = (struct __ecereNameSpace__ecere__com__EnumClassData *)_class->data;
4291 int value = data->largest + 1;
4292 struct __ecereNameSpace__ecere__sys__NamedLink * item;
4293
4294 for(item = data->values.first; item; item = item->next)
4295 if(!strcmp(item->name, string))
4296 break;
4297 if(!item)
4298 {
4299 __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)));
4300 if(value > data->largest)
4301 data->largest = value;
4302 return value;
4303 }
4304 }
4305 return -1;
4306 }
4307
4308 static void __ecereNameSpace__ecere__com__NameSpace_Free(struct __ecereNameSpace__ecere__com__NameSpace * parentNameSpace)
4309 {
4310 struct __ecereNameSpace__ecere__com__NameSpace * nameSpace;
4311
4312 (__ecereNameSpace__ecere__com__eSystem_Delete(parentNameSpace->name), parentNameSpace->name = 0);
4313 while((nameSpace = (struct __ecereNameSpace__ecere__com__NameSpace *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&parentNameSpace->nameSpaces)))
4314 {
4315 __ecereNameSpace__ecere__com__NameSpace_Free(nameSpace);
4316 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&parentNameSpace->nameSpaces, (struct __ecereNameSpace__ecere__sys__BTNode *)nameSpace);
4317 }
4318 }
4319
4320 static void __ecereNameSpace__ecere__com__Application_Destructor(struct __ecereNameSpace__ecere__com__Instance * app)
4321 {
4322 if(((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 296)))->parsedCommand)
4323 {
4324 (__ecereNameSpace__ecere__com__eSystem_Delete(((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 296)))->argv), ((struct __ecereNameSpace__ecere__com__Application * )(((char * )app + 296)))->argv = 0);
4325 (__ecereNameSpace__ecere__com__eSystem_Delete(((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 296)))->parsedCommand), ((struct __ecereNameSpace__ecere__com__Application * )(((char * )app + 296)))->parsedCommand = 0);
4326 }
4327 }
4328
4329 static unsigned int __ecereNameSpace__ecere__com__Module_Constructor(struct __ecereNameSpace__ecere__com__Instance * module)
4330 {
4331 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->privateNameSpace.classes.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
4332 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->privateNameSpace.defines.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
4333 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->privateNameSpace.functions.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
4334 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->privateNameSpace.nameSpaces.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
4335 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->publicNameSpace.classes.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
4336 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->publicNameSpace.defines.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
4337 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->publicNameSpace.functions.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
4338 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->publicNameSpace.nameSpaces.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
4339 return 0x1;
4340 }
4341
4342 static void __ecereNameSpace__ecere__com__Module_Destructor(struct __ecereNameSpace__ecere__com__Instance * module)
4343 {
4344 struct __ecereNameSpace__ecere__com__Class * _class;
4345 struct __ecereNameSpace__ecere__com__DefinedExpression * def;
4346 struct __ecereNameSpace__ecere__com__GlobalFunction * function;
4347 struct __ecereNameSpace__ecere__com__Instance * m;
4348 struct __ecereNameSpace__ecere__com__SubModule * handle;
4349
4350 for(m = ((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application + 296)))->allModules.first; m; m = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)m + 12)))->next)
4351 {
4352 struct __ecereNameSpace__ecere__com__SubModule * next;
4353
4354 for(handle = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)m + 12)))->modules.first; handle; handle = next)
4355 {
4356 next = handle->next;
4357 if(handle->module == module)
4358 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)m + 12)))->modules, handle);
4359 }
4360 }
4361 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->Unload)
4362 {
4363 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->importType == 1)
4364 {
4365 unsigned int (* Unload)(struct __ecereNameSpace__ecere__com__Instance * module) = (void *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->Unload;
4366
4367 Unload(module);
4368 }
4369 else
4370 {
4371 unsigned int (stdcall * Unload)(struct __ecereNameSpace__ecere__com__Instance * module) = (void *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->Unload;
4372
4373 Unload(module);
4374 }
4375 }
4376 {
4377 struct __ecereNameSpace__ecere__com__Instance * ourWorld = __ecereClass___ecereNameSpace__ecere__com__Class->module;
4378 void * ourHandle = (((void *)0));
4379
4380 while((handle = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->modules.last))
4381 {
4382 struct __ecereNameSpace__ecere__com__Instance * depModule = handle->module;
4383
4384 if(depModule == ourWorld)
4385 {
4386 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->modules, handle);
4387 ourHandle = handle;
4388 }
4389 else
4390 {
4391 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->modules, handle);
4392 (__ecereNameSpace__ecere__com__eInstance_DecRef(depModule), depModule = 0);
4393 }
4394 }
4395 if(ourHandle)
4396 {
4397 (__ecereNameSpace__ecere__com__eSystem_Delete(ourHandle), ourHandle = 0);
4398 (__ecereNameSpace__ecere__com__eInstance_DecRef(ourWorld), ourWorld = 0);
4399 }
4400 }
4401 for(; (_class = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->classes.first); )
4402 {
4403 if(_class->nameSpace)
4404 {
4405 struct __ecereNameSpace__ecere__com__BTNamedLink * classLink = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&(*_class->nameSpace).classes, _class->name);
4406 struct __ecereNameSpace__ecere__sys__OldLink * t;
4407
4408 for(t = _class->templatized.first; t; t = t->next)
4409 {
4410 struct __ecereNameSpace__ecere__com__Class * template = t->data;
4411 struct __ecereNameSpace__ecere__com__BTNamedLink * link;
4412
4413 link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&(*template->nameSpace).classes, template->name);
4414 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&(*template->nameSpace).classes, (struct __ecereNameSpace__ecere__sys__BTNode *)link);
4415 template->nameSpace = (((void *)0));
4416 }
4417 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&(*_class->nameSpace).classes, (struct __ecereNameSpace__ecere__sys__BTNode *)classLink);
4418 _class->nameSpace = (((void *)0));
4419 }
4420 _class->module = (((void *)0));
4421 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->classes, _class);
4422 if(!_class->count || _class->type != 0)
4423 __ecereNameSpace__ecere__com__eClass_Unregister(_class);
4424 else
4425 {
4426 }
4427 }
4428 for(; (def = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->defines.first); )
4429 {
4430 if(def->nameSpace)
4431 {
4432 struct __ecereNameSpace__ecere__com__BTNamedLink * defLink;
4433
4434 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)))
4435 if(defLink->data == def)
4436 {
4437 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&(*def->nameSpace).defines, (struct __ecereNameSpace__ecere__sys__BTNode *)defLink);
4438 break;
4439 }
4440 }
4441 (__ecereNameSpace__ecere__com__eSystem_Delete(def->name), def->name = 0);
4442 (__ecereNameSpace__ecere__com__eSystem_Delete(def->value), def->value = 0);
4443 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->defines, def);
4444 }
4445 for(; (function = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->functions.first); )
4446 {
4447 if(function->nameSpace)
4448 {
4449 struct __ecereNameSpace__ecere__com__BTNamedLink * functionLink;
4450
4451 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)))
4452 if(functionLink->data == function)
4453 {
4454 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&(*function->nameSpace).functions, (struct __ecereNameSpace__ecere__sys__BTNode *)functionLink);
4455 break;
4456 }
4457 }
4458 (__ecereNameSpace__ecere__com__eSystem_Delete(function->name), function->name = 0);
4459 (__ecereNameSpace__ecere__com__eSystem_Delete(function->dataTypeString), function->dataTypeString = 0);
4460 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->functions, function);
4461 }
4462 (__ecereNameSpace__ecere__com__eSystem_Delete(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->name), ((struct __ecereNameSpace__ecere__com__Module * )(((char * )module + 12)))->name = 0);
4463 __ecereNameSpace__ecere__com__NameSpace_Free(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->privateNameSpace);
4464 __ecereNameSpace__ecere__com__NameSpace_Free(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->publicNameSpace);
4465 if(module != ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application)
4466 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove(&((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application + 296)))->allModules, module);
4467 else
4468 __ecereNameSpace__ecere__com__NameSpace_Free(&((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application + 296)))->systemNameSpace);
4469 Instance_Module_Free(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->library);
4470 }
4471
4472 static int __ecereNameSpace__ecere__com__GetEnumSize(struct __ecereNameSpace__ecere__com__Class * _class)
4473 {
4474 struct __ecereNameSpace__ecere__com__EnumClassData * data = (struct __ecereNameSpace__ecere__com__EnumClassData *)_class->data;
4475
4476 return data->largest + 1;
4477 }
4478
4479 char * strlwr(char * string)
4480 {
4481 int c;
4482
4483 for(c = 0; string[c]; c++)
4484 if(string[c] >= 'A' && string[c] <= 'Z')
4485 string[c] += 'a' - 'A';
4486 return string;
4487 }
4488
4489 char * strupr(char * string)
4490 {
4491 int c;
4492
4493 for(c = 0; string[c]; c++)
4494 if(string[c] >= 'a' && string[c] <= 'z')
4495 string[c] -= 'a' - 'A';
4496 return string;
4497 }
4498
4499 struct __ecereNameSpace__ecere__com__DefinedExpression * __ecereNameSpace__ecere__com__eSystem_RegisterDefine(char * name, char * value, struct __ecereNameSpace__ecere__com__Instance * module, int declMode)
4500 {
4501 void * __ecereTemp1;
4502 struct __ecereNameSpace__ecere__com__NameSpace * nameSpace = (((void *)0));
4503 int start = 0, c;
4504
4505 nameSpace = (declMode == 1) ? &((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->publicNameSpace : &((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->privateNameSpace;
4506 if(declMode == 4)
4507 nameSpace = &((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application + 296)))->systemNameSpace;
4508 if(declMode != 3)
4509 {
4510 for(c = 0; name[c]; c++)
4511 {
4512 if(name[c] == '.' || (name[c] == ':' && name[c + 1] == ':'))
4513 {
4514 struct __ecereNameSpace__ecere__com__NameSpace * newSpace;
4515 char * spaceName = __ecereNameSpace__ecere__com___malloc(c - start + 1);
4516
4517 strncpy(spaceName, name + start, c - start);
4518 spaceName[c - start] = '\0';
4519 newSpace = (struct __ecereNameSpace__ecere__com__NameSpace *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&(*nameSpace).nameSpaces, spaceName);
4520 if(!newSpace)
4521 {
4522 newSpace = __ecereNameSpace__ecere__com__eSystem_New0(sizeof(struct __ecereNameSpace__ecere__com__NameSpace) * (1));
4523 (*newSpace).classes.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
4524 (*newSpace).defines.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
4525 (*newSpace).functions.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
4526 (*newSpace).nameSpaces.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
4527 (*newSpace).name = spaceName;
4528 (*newSpace).parent = nameSpace;
4529 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&(*nameSpace).nameSpaces, (struct __ecereNameSpace__ecere__sys__BTNode *)newSpace);
4530 }
4531 else
4532 (__ecereNameSpace__ecere__com__eSystem_Delete(spaceName), spaceName = 0);
4533 nameSpace = newSpace;
4534 if(name[c] == ':')
4535 c++;
4536 start = c + 1;
4537 }
4538 }
4539 }
4540 else
4541 c = strlen(name);
4542 if(c - start && !__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&(*nameSpace).defines, name + start))
4543 {
4544 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);
4545
4546 __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)));
4547 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->defines, def);
4548 return def;
4549 }
4550 return (((void *)0));
4551 }
4552
4553 struct __ecereNameSpace__ecere__com__GlobalFunction * __ecereNameSpace__ecere__com__eSystem_RegisterFunction(char * name, char * type, void * func, struct __ecereNameSpace__ecere__com__Instance * module, int declMode)
4554 {
4555 void * __ecereTemp1;
4556 struct __ecereNameSpace__ecere__com__NameSpace * nameSpace = (((void *)0));
4557 int start = 0, c;
4558
4559 nameSpace = (declMode == 1) ? &((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->publicNameSpace : &((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->privateNameSpace;
4560 if(declMode == 4)
4561 nameSpace = &((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application + 296)))->systemNameSpace;
4562 if(declMode != 3)
4563 {
4564 for(c = 0; name[c]; c++)
4565 {
4566 if(name[c] == '.' || (name[c] == ':' && name[c + 1] == ':'))
4567 {
4568 struct __ecereNameSpace__ecere__com__NameSpace * newSpace;
4569 char * spaceName = __ecereNameSpace__ecere__com___malloc(c - start + 1);
4570
4571 strncpy(spaceName, name + start, c - start);
4572 spaceName[c - start] = '\0';
4573 newSpace = (struct __ecereNameSpace__ecere__com__NameSpace *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&(*nameSpace).nameSpaces, spaceName);
4574 if(!newSpace)
4575 {
4576 newSpace = __ecereNameSpace__ecere__com__eSystem_New0(sizeof(struct __ecereNameSpace__ecere__com__NameSpace) * (1));
4577 (*newSpace).classes.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
4578 (*newSpace).defines.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
4579 (*newSpace).functions.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
4580 (*newSpace).nameSpaces.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
4581 (*newSpace).name = spaceName;
4582 (*newSpace).parent = nameSpace;
4583 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&(*nameSpace).nameSpaces, (struct __ecereNameSpace__ecere__sys__BTNode *)newSpace);
4584 }
4585 else
4586 (__ecereNameSpace__ecere__com__eSystem_Delete(spaceName), spaceName = 0);
4587 nameSpace = newSpace;
4588 if(name[c] == ':')
4589 c++;
4590 start = c + 1;
4591 }
4592 }
4593 }
4594 else
4595 c = strlen(name);
4596 if(c - start && !__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&(*nameSpace).functions, name + start))
4597 {
4598 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);
4599
4600 __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)));
4601 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->functions, function);
4602 return function;
4603 }
4604 return (((void *)0));
4605 }
4606
4607 struct __ecereNameSpace__ecere__com__DefinedExpression * __ecereNameSpace__ecere__com__eSystem_FindDefine(struct __ecereNameSpace__ecere__com__Instance * module, char * name)
4608 {
4609 if(name && module)
4610 {
4611 struct __ecereNameSpace__ecere__com__BTNamedLink * link;
4612
4613 link = __ecereNameSpace__ecere__com__SearchNameSpace(&((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application + 296)))->systemNameSpace, name, &(*((struct __ecereNameSpace__ecere__com__NameSpace *)0)).defines);
4614 if(link)
4615 return link->data;
4616 link = __ecereNameSpace__ecere__com__SearchModule(module, name, &(*((struct __ecereNameSpace__ecere__com__NameSpace *)0)).defines, 0x1);
4617 if(link)
4618 return link->data;
4619 }
4620 return (((void *)0));
4621 }
4622
4623 struct __ecereNameSpace__ecere__com__GlobalFunction * __ecereNameSpace__ecere__com__eSystem_FindFunction(struct __ecereNameSpace__ecere__com__Instance * module, char * name)
4624 {
4625 if(name && module)
4626 {
4627 struct __ecereNameSpace__ecere__com__BTNamedLink * link;
4628
4629 link = __ecereNameSpace__ecere__com__SearchNameSpace(&((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application + 296)))->systemNameSpace, name, &(*((struct __ecereNameSpace__ecere__com__NameSpace *)0)).functions);
4630 if(link)
4631 return link->data;
4632 link = __ecereNameSpace__ecere__com__SearchModule(module, name, &(*((struct __ecereNameSpace__ecere__com__NameSpace *)0)).functions, 0x1);
4633 if(link)
4634 return link->data;
4635 }
4636 return (((void *)0));
4637 }
4638
4639 void * __ecereNameSpace__ecere__com__eSystem_Renew(void * memory, unsigned int size)
4640 {
4641 return __ecereNameSpace__ecere__com___realloc(memory, size);
4642 }
4643
4644 void * __ecereNameSpace__ecere__com__eSystem_Renew0(void * memory, unsigned int size)
4645 {
4646 return __ecereNameSpace__ecere__com___crealloc(memory, size);
4647 }
4648
4649 void * __ecereNameSpace__ecere__com__eSystem_New(unsigned int size)
4650 {
4651 return __ecereNameSpace__ecere__com___malloc(size);
4652 }
4653
4654 void * __ecereNameSpace__ecere__com__eSystem_New0(unsigned int size)
4655 {
4656 return __ecereNameSpace__ecere__com___calloc(1, size);
4657 }
4658
4659 void __ecereNameSpace__ecere__com__eSystem_Delete(void * memory)
4660 {
4661 if(memory)
4662 __ecereNameSpace__ecere__com___free(memory);
4663 }
4664
4665 void __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property)
4666 {
4667 if(instance && _property && _property->selfWatchable)
4668 {
4669 struct __ecereNameSpace__ecere__com__Class * _class;
4670
4671 for(_class = ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class; _class; _class = _class->base)
4672 {
4673 struct __ecereNameSpace__ecere__com__SelfWatcher * selfWatcher, * next;
4674
4675 for(selfWatcher = _class->selfWatchers.first; selfWatcher; selfWatcher = next)
4676 {
4677 next = selfWatcher->next;
4678 if(selfWatcher->_property == _property)
4679 selfWatcher->callback(instance);
4680 }
4681 }
4682 }
4683 }
4684
4685 void __ecereNameSpace__ecere__com__eInstance_FireWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property)
4686 {
4687 if(instance && _property && _property->isWatchable)
4688 {
4689 struct __ecereNameSpace__ecere__sys__OldList * watchers = (struct __ecereNameSpace__ecere__sys__OldList *)((unsigned char *)instance + _property->watcherOffset);
4690 struct __ecereNameSpace__ecere__com__Watcher * watcher, * next;
4691
4692 for(watcher = (*watchers).first; watcher; watcher = next)
4693 {
4694 next = watcher->next;
4695 watcher->callback(watcher->object, instance);
4696 }
4697 }
4698 }
4699
4700 void __ecereNameSpace__ecere__com__eProperty_Watchable(struct __ecereNameSpace__ecere__com__Property * _property)
4701 {
4702 if(!_property->isWatchable)
4703 {
4704 struct __ecereNameSpace__ecere__com__Class * _class = _property->_class;
4705
4706 if(!_class->computeSize)
4707 {
4708 _property->watcherOffset = _class->structSize;
4709 _class->structSize += sizeof(struct __ecereNameSpace__ecere__sys__OldList);
4710 __ecereNameSpace__ecere__com__FixDerivativesBase(_class, _class);
4711 }
4712 _property->isWatchable = 0x1;
4713 }
4714 }
4715
4716 void __ecereNameSpace__ecere__com__eClass_DestructionWatchable(struct __ecereNameSpace__ecere__com__Class * _class)
4717 {
4718 if(!_class->destructionWatchOffset)
4719 {
4720 _class->destructionWatchOffset = _class->structSize;
4721 _class->structSize += sizeof(struct __ecereNameSpace__ecere__sys__OldList);
4722 __ecereNameSpace__ecere__com__FixDerivativesBase(_class, _class);
4723 }
4724 }
4725
4726 void __ecereNameSpace__ecere__com__eProperty_SelfWatch(struct __ecereNameSpace__ecere__com__Class * _class, char * name, void (* callback)(void *))
4727 {
4728 void * __ecereTemp1;
4729
4730 if(_class)
4731 {
4732 struct __ecereNameSpace__ecere__com__Property * _property = __ecereNameSpace__ecere__com__eClass_FindProperty(_class, name, _class->module);
4733
4734 if(!_property)
4735 _property = __ecereNameSpace__ecere__com__eClass_AddProperty(_class, name, (((void *)0)), (((void *)0)), (((void *)0)), 4);
4736 __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)));
4737 _property->selfWatchable = 0x1;
4738 }
4739 }
4740
4741 void __ecereNameSpace__ecere__com__eInstance_Watch(void * instance, struct __ecereNameSpace__ecere__com__Property * _property, void * object, void (* callback)(void *, void *))
4742 {
4743 void * __ecereTemp1;
4744
4745 if(_property->isWatchable)
4746 {
4747 struct __ecereNameSpace__ecere__sys__OldList * watchers = (struct __ecereNameSpace__ecere__sys__OldList *)((unsigned char *)instance + _property->watcherOffset);
4748
4749 __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)));
4750 }
4751 }
4752
4753 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 *))
4754 {
4755 void * __ecereTemp1;
4756 struct __ecereNameSpace__ecere__sys__OldList * watchers = (struct __ecereNameSpace__ecere__sys__OldList *)((unsigned char *)instance + ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class->destructionWatchOffset);
4757
4758 __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)));
4759 }
4760
4761 void __ecereNameSpace__ecere__com__eInstance_StopWatching(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, struct __ecereNameSpace__ecere__com__Instance * object)
4762 {
4763 if(instance && (!_property || _property->isWatchable))
4764 {
4765 if(_property)
4766 {
4767 struct __ecereNameSpace__ecere__sys__OldList * watchers = (struct __ecereNameSpace__ecere__sys__OldList *)((unsigned char *)instance + _property->watcherOffset);
4768 struct __ecereNameSpace__ecere__com__Watcher * watcher;
4769
4770 for(watcher = (*watchers).first; watcher; watcher = watcher->next)
4771 if(watcher->object == object)
4772 {
4773 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete((&*watchers), watcher);
4774 break;
4775 }
4776 }
4777 else
4778 {
4779 struct __ecereNameSpace__ecere__com__Class * _class, * base;
4780
4781 for(_class = ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class; _class; _class = base)
4782 {
4783 if(_class->destructionWatchOffset)
4784 {
4785 struct __ecereNameSpace__ecere__sys__OldList * watchers = (struct __ecereNameSpace__ecere__sys__OldList *)((unsigned char *)instance + _class->destructionWatchOffset);
4786 struct __ecereNameSpace__ecere__com__Watcher * watcher;
4787
4788 for(watcher = (*watchers).first; watcher; watcher = watcher->next)
4789 {
4790 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete((&*watchers), watcher);
4791 break;
4792 }
4793 }
4794 for(_property = (struct __ecereNameSpace__ecere__com__Property *)_class->membersAndProperties.first; _property; _property = _property->next)
4795 {
4796 if(_property->isProperty && _property->isWatchable)
4797 {
4798 struct __ecereNameSpace__ecere__sys__OldList * watchers = (struct __ecereNameSpace__ecere__sys__OldList *)((unsigned char *)instance + _property->watcherOffset);
4799 struct __ecereNameSpace__ecere__com__Watcher * watcher;
4800
4801 for(watcher = (*watchers).first; watcher; watcher = watcher->next)
4802 if(watcher->object == object)
4803 {
4804 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete((&*watchers), watcher);
4805 break;
4806 }
4807 }
4808 }
4809 base = _class->base;
4810 if(base && base->type == 1000)
4811 base = (((void *)0));
4812 }
4813 }
4814 }
4815 }
4816
4817 struct __ecereNameSpace__ecere__com__Class * __ecereNameSpace__ecere__com__eClass_GetDesigner(struct __ecereNameSpace__ecere__com__Class * _class)
4818 {
4819 for(; _class; _class = _class->base)
4820 {
4821 if(_class->designerClass)
4822 return (struct __ecereNameSpace__ecere__com__Class *)__ecereNameSpace__ecere__com__eSystem_FindClass(_class->module, _class->designerClass);
4823 }
4824 return (((void *)0));
4825 }
4826
4827 struct __ecereNameSpace__ecere__com__Class * __ecereNameSpace__ecere__com__eInstance_GetDesigner(struct __ecereNameSpace__ecere__com__Instance * instance)
4828 {
4829 if(instance)
4830 return __ecereNameSpace__ecere__com__eClass_GetDesigner(((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class);
4831 return (((void *)0));
4832 }
4833
4834 unsigned int __ecereNameSpace__ecere__com__LocateModule(char * name, char * fileName)
4835 {
4836 return Instance_LocateModule(name, fileName);
4837 }
4838
4839 extern void __ecereNameSpace__ecere__com__InitializeDataTypes1(struct __ecereNameSpace__ecere__com__Instance * module);
4840
4841 extern void __ecereNameSpace__ecere__com__InitializeDataTypes(struct __ecereNameSpace__ecere__com__Instance * module);
4842
4843 extern double sin(struct __ecereNameSpace__ecere__com__Instance * number);
4844
4845 extern double sinh(struct __ecereNameSpace__ecere__com__Instance * number);
4846
4847 extern double cosh(struct __ecereNameSpace__ecere__com__Instance * number);
4848
4849 extern double tanh(struct __ecereNameSpace__ecere__com__Instance * number);
4850
4851 extern double sqrt(double number);
4852
4853 extern double cos(struct __ecereNameSpace__ecere__com__Instance * number);
4854
4855 extern double tan(struct __ecereNameSpace__ecere__com__Instance * number);
4856
4857 extern struct __ecereNameSpace__ecere__com__Instance * atan2(double y, double x);
4858
4859 extern struct __ecereNameSpace__ecere__com__Instance * asin(double number);
4860
4861 extern struct __ecereNameSpace__ecere__com__Instance * acos(double number);
4862
4863 extern struct __ecereNameSpace__ecere__com__Instance * atan(double number);
4864
4865 extern double pow(double number, double number2);
4866
4867 extern double fmod(double x, double y);
4868
4869 extern double fabs(double number);
4870
4871 extern double log(double number);
4872
4873 extern double log10(double number);
4874
4875 extern double ceil(double number);
4876
4877 extern double floor(double number);
4878
4879 extern double exp(double number);
4880
4881 extern void qsort(void * , unsigned int, unsigned int, int (* )(void * , void * ));
4882
4883 extern int system(const char * );
4884
4885 extern int atoi(const char * );
4886
4887 extern float atof(const char * );
4888
4889 extern int tolower(int);
4890
4891 extern int toupper(int);
4892
4893 extern unsigned int isdigit(int);
4894
4895 extern char *  getenv(const char *  name);
4896
4897 extern int rename(const char *  oldpath, const char *  newpath);
4898
4899 extern char *  strncat(char * , const char * , int n);
4900
4901 extern int strcasecmp(const char * , const char * );
4902
4903 extern int strncasecmp(const char * , const char * , int n);
4904
4905 extern int strncmp(const char * , const char * , int n);
4906
4907 extern int vsprintf(char * , const char * , __builtin_va_list);
4908
4909 extern int puts(char * );
4910
4911 extern int fputs(char * , void *  stream);
4912
4913 extern int isalnum(int c);
4914
4915 extern int isalpha(int c);
4916
4917 extern int islower(int c);
4918
4919 extern int isupper(int c);
4920
4921 extern int isprint(int c);
4922
4923 static void __ecereNameSpace__ecere__com__LoadCOM(struct __ecereNameSpace__ecere__com__Instance * module)
4924 {
4925 struct __ecereNameSpace__ecere__com__Class * applicationClass;
4926 struct __ecereNameSpace__ecere__com__Class * enumClass, * structClass, * boolClass;
4927 struct __ecereNameSpace__ecere__com__Class * moduleClass;
4928 struct __ecereNameSpace__ecere__com__Class * baseClass = __ecereNameSpace__ecere__com__eSystem_RegisterClass(0, "class", (((void *)0)), 0, 0, (((void *)0)), (((void *)0)), module, 4, 1);
4929
4930 baseClass->type = 1000;
4931 baseClass->memberOffset = 0;
4932 baseClass->offset = 0;
4933 baseClass->structSize = 0;
4934 baseClass->typeSize = 0;
4935 {
4936 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);
4937
4938 instanceClass->type = 1000;
4939 instanceClass->fixed = 0x1;
4940 instanceClass->memberOffset = 0;
4941 instanceClass->offset = 0;
4942 instanceClass->memberID = -3;
4943 instanceClass->startMemberID = -3;
4944 __ecereNameSpace__ecere__com__eClass_AddDataMember(instanceClass, "_vTbl", "int (**)()", sizeof(int (**)()), 4, 1);
4945 __ecereNameSpace__ecere__com__eClass_AddDataMember(instanceClass, "_class", "ecere::com::Class", sizeof(struct __ecereNameSpace__ecere__com__Class *), 4, 1);
4946 __ecereNameSpace__ecere__com__eClass_AddDataMember(instanceClass, "_refCount", "int", sizeof(int (**)()), 4, 1);
4947 }
4948 __ecereNameSpace__ecere__com__InitializeDataTypes1(module);
4949 enumClass = __ecereNameSpace__ecere__com__eSystem_RegisterClass(0, "enum", (((void *)0)), 0, sizeof(struct __ecereNameSpace__ecere__com__EnumClassData), (((void *)0)), (((void *)0)), module, 4, 1);
4950 __ecereNameSpace__ecere__com__eClass_AddClassProperty(enumClass, "enumSize", "int", (((void *)0)), __ecereNameSpace__ecere__com__GetEnumSize)->constant = 0x1;
4951 enumClass->type = 1000;
4952 (__ecereNameSpace__ecere__com__eSystem_Delete(enumClass->dataTypeString), enumClass->dataTypeString = 0);
4953 enumClass->dataTypeString = __ecereNameSpace__ecere__sys__CopyString("int");
4954 structClass = __ecereNameSpace__ecere__com__eSystem_RegisterClass(0, "struct", (((void *)0)), 0, 0, (((void *)0)), (((void *)0)), module, 4, 1);
4955 structClass->type = 1000;
4956 structClass->memberOffset = 0;
4957 structClass->offset = 0;
4958 structClass->structSize = 0;
4959 structClass->typeSize = 0;
4960 __ecereNameSpace__ecere__com__InitializeDataTypes(module);
4961 boolClass = __ecereNameSpace__ecere__com__eSystem_RegisterClass(4, "bool", "uint", 0, 0, (((void *)0)), (((void *)0)), module, 4, 1);
4962 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(boolClass, "true", (unsigned int)0x1);
4963 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(boolClass, "false", (unsigned int)0x0);
4964 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);
4965 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(moduleClass, "OnLoad", "bool()", (((void *)0)), 1);
4966 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(moduleClass, "OnUnload", "void()", (((void *)0)), 1);
4967 __ecereNameSpace__ecere__com__eClass_AddMethod(moduleClass, "Load", "Module(char * name, AccessMode importAccess)", __ecereNameSpace__ecere__com__eModule_Load, 1);
4968 __ecereNameSpace__ecere__com__eClass_AddMethod(moduleClass, "Unload", "void(Module module)", __ecereNameSpace__ecere__com__eModule_Unload, 1);
4969 __ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "application", "Application", sizeof(struct __ecereNameSpace__ecere__com__Instance *), 4, 1);
4970 __ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "classes", "OldList", sizeof(struct __ecereNameSpace__ecere__sys__OldList), 4, 1);
4971 __ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "defines", "OldList", sizeof(struct __ecereNameSpace__ecere__sys__OldList), 4, 1);
4972 __ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "functions", "OldList", sizeof(struct __ecereNameSpace__ecere__sys__OldList), 4, 1);
4973 __ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "modules", "OldList", sizeof(struct __ecereNameSpace__ecere__sys__OldList), 4, 1);
4974 __ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "prev", "Module", sizeof(struct __ecereNameSpace__ecere__com__Instance *), 4, 1);
4975 __ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "next", "Module", sizeof(struct __ecereNameSpace__ecere__com__Instance *), 4, 1);
4976 __ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "name", "char *", sizeof(char *), 4, 1);
4977 __ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "library", "void *", sizeof(void *), 4, 1);
4978 __ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "Unload", "void *", sizeof(void *), 4, 1);
4979 __ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "importType", "ImportType", sizeof(int), 4, 1);
4980 __ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "privateNameSpace", "NameSpace", sizeof(struct __ecereNameSpace__ecere__com__NameSpace), 4, 1);
4981 __ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "publicNameSpace", "NameSpace", sizeof(struct __ecereNameSpace__ecere__com__NameSpace), 4, 1);
4982 moduleClass->fixed = 0x1;
4983 moduleClass->count++;
4984 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);
4985 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(applicationClass, "Main", "void()", (((void *)0)), 1);
4986 __ecereNameSpace__ecere__com__eClass_AddDataMember(applicationClass, "argc", "int", sizeof(int), 4, 1);
4987 __ecereNameSpace__ecere__com__eClass_AddDataMember(applicationClass, "argv", "char **", sizeof(char **), 4, 1);
4988 __ecereNameSpace__ecere__com__eClass_AddDataMember(applicationClass, "exitCode", "int", sizeof(int), 4, 1);
4989 __ecereNameSpace__ecere__com__eClass_AddDataMember(applicationClass, "isGUIApp", "bool", sizeof(unsigned int), 4, 1);
4990 __ecereNameSpace__ecere__com__eClass_AddDataMember(applicationClass, "allModules", "OldList", sizeof(struct __ecereNameSpace__ecere__sys__OldList), 4, 1);
4991 __ecereNameSpace__ecere__com__eClass_AddDataMember(applicationClass, "parsedCommand", "char *", sizeof(char *), 4, 1);
4992 __ecereNameSpace__ecere__com__eClass_AddDataMember(applicationClass, "systemNameSpace", "NameSpace", sizeof(struct __ecereNameSpace__ecere__com__NameSpace), 4, 1);
4993 applicationClass->fixed = 0x1;
4994 applicationClass->count++;
4995 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("sin", "double sin(Angle number)", sin, module, 4);
4996 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("sinh", "double sinh(Angle number)", sinh, module, 4);
4997 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("cosh", "double cosh(Angle number)", cosh, module, 4);
4998 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("tanh", "double tanh(Angle number)", tanh, module, 4);
4999 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("sqrt", "double sqrt(double number)", sqrt, module, 4);
5000 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("cos", "double cos(Angle number)", cos, module, 4);
5001 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("tan", "double tan(Angle number)", tan, module, 4);
5002 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("atan2", "Angle atan2(double y, double x)", atan2, module, 4);
5003 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("asin", "Angle asin(double number)", asin, module, 4);
5004 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("acos", "Angle acos(double number)", acos, module, 4);
5005 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("atan", "Angle atan(double number)", atan, module, 4);
5006 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("pow", "double pow(double number, double number2)", pow, module, 4);
5007 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("fmod", "double fmod(double x, double y)", fmod, module, 4);
5008 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("fabs", "double fabs(double number)", fabs, module, 4);
5009 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("log", "double log(double number)", log, module, 4);
5010 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("log10", "double log10(double number)", log10, module, 4);
5011 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ceil", "double ceil(double number)", ceil, module, 4);
5012 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("floor", "double floor(double number)", floor, module, 4);
5013 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("exp", "double exp(double number)", exp, module, 4);
5014 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("qsort", "void qsort(void *, uint, uint, int (*)(void *, void *))", qsort, module, 4);
5015 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strtod", "double strtod(char*, char**)", strtod, module, 4);
5016 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strtol", "int strtol(char*, char**, int base)", strtol, module, 4);
5017 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("system", "int system(const char*)", system, module, 4);
5018 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("atoi", "int atoi(const char*)", atoi, module, 4);
5019 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("atof", "float atof(const char*)", atof, module, 4);
5020 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("tolower", "int tolower(int)", tolower, module, 4);
5021 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("toupper", "int toupper(int)", toupper, module, 4);
5022 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("isdigit", "bool isdigit(int)", isdigit, module, 4);
5023 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("memset", "void memset(void * area, byte value, uint count)", memset, module, 4);
5024 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("getenv", "char * getenv(const char * name)", getenv, module, 4);
5025 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("rename", "int rename(const char *oldpath, const char *newpath)", rename, module, 4);
5026 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strlen", "int strlen(const char *)", strlen, module, 4);
5027 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strcat", "char * strcat(char *, const char *)", strcat, module, 4);
5028 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strncat", "char * strncat(char *, const char *, int n)", strncat, module, 4);
5029 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strchr", "char * strchr(char *, int)", strchr, module, 4);
5030 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strstr", "char * strstr(char *, const char *)", strstr, module, 4);
5031 __ecereNameSpace__ecere__com__eSystem_RegisterDefine("fstrcmp", "(GetRuntimePlatform() == win32) ? strcmpi : strcmp", module, 4);
5032 __ecereNameSpace__ecere__com__eSystem_RegisterDefine("strcmpi", "strcasecmp", module, 4);
5033 __ecereNameSpace__ecere__com__eSystem_RegisterDefine("strnicmp", "strncasecmp", module, 4);
5034 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strcasecmp", "int strcasecmp(const char *, const char *)", strcasecmp, module, 4);
5035 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strncasecmp", "int strncasecmp(const char *, const char *, int n)", strncasecmp, module, 4);
5036 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strcmp", "int strcmp(const char *, const char *)", strcmp, module, 4);
5037 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strncmp", "int strncmp(const char *, const char *, int n)", strncmp, module, 4);
5038 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strlwr", "char * strlwr(char *)", strlwr, module, 4);
5039 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strupr", "char * strupr(char *)", strupr, module, 4);
5040 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strcpy", "char * strcpy(char *, const char *)", strcpy, module, 4);
5041 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strncpy", "char * strncpy(char *, const char *, int n)", strncpy, module, 4);
5042 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("memcpy", "void * memcpy(void *, const void *, uint size)", memcpy, module, 4);
5043 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("memmove", "void * memmove(void *, const void *, uint size)", memmove, module, 4);
5044 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("sprintf", "int sprintf(char *, char *, ...)", sprintf, module, 4);
5045 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("printf", "int printf(char *, ...)", printf, module, 4);
5046 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("vsprintf", "int vsprintf(char*, const char*, __builtin_va_list)", vsprintf, module, 4);
5047 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("puts", "int puts(char *)", puts, module, 4);
5048 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("fputs", "int fputs(char *, void * stream)", fputs, module, 4);
5049 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("isalnum", "int isalnum(int c)", isalnum, module, 4);
5050 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("isspace", "int isspace(int c)", isspace, module, 4);
5051 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("isalpha", "int isalpha(int c)", isalpha, module, 4);
5052 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("islower", "int islower(int c)", islower, module, 4);
5053 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("isupper", "int isupper(int c)", isupper, module, 4);
5054 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("isprint", "int isprint(int c)", isprint, module, 4);
5055 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strtoul", "unsigned long strtoul(const char * nptr, char ** endptr, int base)", strtoul, module, 4);
5056 }
5057
5058 struct __ecereNameSpace__ecere__com__Instance * __ecereNameSpace__ecere__com____ecere_COM_Initialize(unsigned int guiApp, int argc, char * argv[])
5059 {
5060 struct __ecereNameSpace__ecere__com__Instance * app;
5061
5062 app = __ecereNameSpace__ecere__com___calloc(1, 424);
5063 __ecereNameSpace__ecere__com__Module_Constructor(app);
5064 ((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 296)))->systemNameSpace.classes.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
5065 ((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 296)))->systemNameSpace.defines.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
5066 ((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 296)))->systemNameSpace.functions.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
5067 ((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 296)))->systemNameSpace.nameSpaces.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
5068 Instance_COM_Initialize(argc, argv, &((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 296)))->parsedCommand, &((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 296)))->argc, &((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 296)))->argv);
5069 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)app + 12)))->application = app;
5070 ((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 296)))->allModules.offset = 12 + (unsigned int)&(*((struct __ecereNameSpace__ecere__com__Module *)0)).prev;
5071 ((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + 296)))->isGUIApp = guiApp;
5072 __ecereNameSpace__ecere__com__LoadCOM(app);
5073 ((struct __ecereNameSpace__ecere__com__Instance *)(char *)app)->_class = __ecereNameSpace__ecere__com__eSystem_FindClass(app, "Application");
5074 return app;
5075 }
5076
5077 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)
5078 {
5079 void * __ecereTemp1;
5080
5081 if(_class && name)
5082 {
5083 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param;
5084
5085 for(param = _class->templateParams.first; param; param = param->next)
5086 {
5087 if(!strcmp(param->name, name))
5088 return param;
5089 }
5090 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));
5091 if(defaultArg != (((void *)0)))
5092 {
5093 param->defaultArg = *defaultArg;
5094 __ecereNameSpace__ecere__com__CopyTemplateArg(param, &param->defaultArg);
5095 }
5096 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&_class->templateParams, param);
5097 return param;
5098 }
5099 return (((void *)0));
5100 }
5101
5102 void __ecereNameSpace__ecere__com__eClass_DoneAddingTemplateParameters(struct __ecereNameSpace__ecere__com__Class * base)
5103 {
5104 if(base)
5105 {
5106 struct __ecereNameSpace__ecere__sys__OldLink * derivative;
5107 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param;
5108
5109 {
5110 void * first = base->templateParams.first;
5111 int count = base->templateParams.count;
5112
5113 base->templateParams.first = (((void *)0));
5114 base->templateParams.count = 0;
5115 __ecereNameSpace__ecere__com__FreeTemplateArgs(base);
5116 (__ecereNameSpace__ecere__com__eSystem_Delete(base->templateArgs), base->templateArgs = 0);
5117 __ecereNameSpace__ecere__com__FreeTemplatesDerivatives(base);
5118 base->templateParams.first = first;
5119 base->templateParams.count = count;
5120 }
5121 for(param = base->templateParams.first; param; param = param->next)
5122 {
5123 if(param->type == 1 && param->defaultArg.memberString)
5124 {
5125 struct __ecereNameSpace__ecere__com__Class * memberClass = base;
5126 char * colon = strstr(param->defaultArg.memberString, "::");
5127 char * memberName;
5128
5129 if(colon)
5130 {
5131 char className[1024];
5132 struct __ecereNameSpace__ecere__com__Class * sClass;
5133
5134 memcpy(className, param->defaultArg.memberString, colon - param->defaultArg.memberString);
5135 className[colon - param->defaultArg.memberString] = '\0';
5136 memberName = colon + 2;
5137 for(sClass = base; sClass; sClass = sClass->base)
5138 {
5139 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * cParam;
5140 struct __ecereNameSpace__ecere__com__Class * nextClass;
5141 int id = 0;
5142
5143 for(nextClass = sClass->base; nextClass; nextClass = nextClass->base)
5144 id += nextClass->templateParams.count;
5145 if(sClass == base || base->templateArgs)
5146 {
5147 for(cParam = sClass->templateParams.first; cParam; cParam = cParam->next)
5148 {
5149 if(cParam->type == 0 && !strcmp(cParam->name, className))
5150 strcpy(className, (sClass == base) ? cParam->defaultArg.dataTypeString : base->templateArgs[id].dataTypeString);
5151 id++;
5152 }
5153 }
5154 }
5155 memberClass = __ecereNameSpace__ecere__com__eSystem_FindClass(base->module, className);
5156 if(!memberClass)
5157 memberClass = __ecereNameSpace__ecere__com__eSystem_FindClass(((struct __ecereNameSpace__ecere__com__Module *)(((char *)base->module + 12)))->application, className);
5158 }
5159 else
5160 memberName = param->defaultArg.memberString;
5161 if(memberClass)
5162 {
5163 switch(param->memberType)
5164 {
5165 case 0:
5166 param->defaultArg.member = __ecereNameSpace__ecere__com__eClass_FindDataMember(memberClass, memberName, memberClass->module, (((void *)0)), (((void *)0)));
5167 break;
5168 case 1:
5169 param->defaultArg.method = __ecereNameSpace__ecere__com__eClass_FindMethod(memberClass, memberName, memberClass->module);
5170 break;
5171 case 2:
5172 param->defaultArg.prop = __ecereNameSpace__ecere__com__eClass_FindProperty(memberClass, memberName, memberClass->module);
5173 break;
5174 }
5175 }
5176 }
5177 }
5178 __ecereNameSpace__ecere__com__FixDerivativesBase(base, base);
5179 }
5180 }
5181
5182 static void __ecereNameSpace__ecere__com__FreeTemplatesDerivatives(struct __ecereNameSpace__ecere__com__Class * base)
5183 {
5184 struct __ecereNameSpace__ecere__sys__OldLink * derivative, * templateLink;
5185
5186 for(derivative = base->derivatives.first; derivative; derivative = derivative->next)
5187 {
5188 struct __ecereNameSpace__ecere__com__Class * _class = derivative->data;
5189
5190 if(_class->templateArgs)
5191 {
5192 __ecereNameSpace__ecere__com__FreeTemplateArgs(_class);
5193 (__ecereNameSpace__ecere__com__eSystem_Delete(_class->templateArgs), _class->templateArgs = 0);
5194 }
5195 __ecereNameSpace__ecere__com__FreeTemplatesDerivatives(_class);
5196 }
5197 for(templateLink = base->templatized.first; templateLink; templateLink = templateLink->next)
5198 {
5199 struct __ecereNameSpace__ecere__com__Class * _class = templateLink->data;
5200
5201 if(_class->templateArgs)
5202 {
5203 __ecereNameSpace__ecere__com__FreeTemplateArgs(_class);
5204 (__ecereNameSpace__ecere__com__eSystem_Delete(_class->templateArgs), _class->templateArgs = 0);
5205 }
5206 __ecereNameSpace__ecere__com__FreeTemplatesDerivatives(_class);
5207 }
5208 }
5209
5210 static const char * __ecereNameSpace__ecere__com__platformNames[4] = 
5211 {
5212 "", "win32", "linux", "apple"
5213 };
5214
5215 static const int __ecereNameSpace__ecere__com__firstPlatform = 1;
5216
5217 static struct __ecereNameSpace__ecere__com__Property * __ecereProp___ecereNameSpace__ecere__com__Platform_char__PTR_, * __ecerePropM___ecereNameSpace__ecere__com__Platform_char__PTR_;
5218
5219 static const int __ecereNameSpace__ecere__com__lastPlatform = 3;
5220
5221 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Platform;
5222
5223 int __ecereVMethodID_class_OnGetString;
5224
5225 char *  __ecereProp___ecereNameSpace__ecere__com__Platform_Get_char__PTR_(int this)
5226 {
5227 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)));
5228 }
5229
5230 int __ecereProp___ecereNameSpace__ecere__com__Platform_Set_char__PTR_(char *  value)
5231 {
5232 if(value)
5233 {
5234 int c;
5235
5236 for(c = __ecereNameSpace__ecere__com__firstPlatform; c <= __ecereNameSpace__ecere__com__lastPlatform; c++)
5237 if(!strcasecmp(value, __ecereNameSpace__ecere__com__platformNames[c]))
5238 return c;
5239 }
5240 return 0;
5241 }
5242
5243 char * __ecereMethod___ecereNameSpace__ecere__com__Platform_OnGetString(struct __ecereNameSpace__ecere__com__Class * class, int * this, char * tempString, void * fieldData, unsigned int * needClass)
5244 {
5245 if((*(this)) >= __ecereNameSpace__ecere__com__firstPlatform && (*(this)) <= __ecereNameSpace__ecere__com__lastPlatform)
5246 {
5247 if(tempString)
5248 strcpy(tempString, __ecereNameSpace__ecere__com__platformNames[*(int *)this]);
5249 return __ecereNameSpace__ecere__com__platformNames[*(int *)this];
5250 }
5251 if(tempString && tempString[0])
5252 tempString[0] = '\0';
5253 return (((void *)0));
5254 }
5255
5256 unsigned int __ecereMethod___ecereNameSpace__ecere__com__Platform_OnGetDataFromString(struct __ecereNameSpace__ecere__com__Class * class, int * this, char * string)
5257 {
5258 (*(this)) = __ecereProp___ecereNameSpace__ecere__com__Platform_Set_char__PTR_(string);
5259 return (unsigned int)*(int *)this;
5260 }
5261
5262 extern int runtimePlatform;
5263
5264 int __ecereNameSpace__ecere__com__GetRuntimePlatform()
5265 {
5266 return runtimePlatform;
5267 }
5268
5269 struct __ecereNameSpace__ecere__com__ObjectInfo
5270 {
5271 struct __ecereNameSpace__ecere__com__ObjectInfo * prev, * next;
5272 struct __ecereNameSpace__ecere__com__Instance * instance;
5273 char * name;
5274 struct __ecereNameSpace__ecere__com__Instance * instCode;
5275 unsigned int deleted;
5276 struct __ecereNameSpace__ecere__com__ObjectInfo * oClass;
5277 struct __ecereNameSpace__ecere__sys__OldList instances;
5278 struct __ecereNameSpace__ecere__com__Instance * classDefinition;
5279 unsigned int modified;
5280 };
5281
5282 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__ObjectInfo;
5283
5284 static struct __ecereNameSpace__ecere__com__Property * __ecereProp___ecereNameSpace__ecere__com__DesignerBase_classDesigner, * __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_classDesigner;
5285
5286 static struct __ecereNameSpace__ecere__com__Property * __ecereProp___ecereNameSpace__ecere__com__DesignerBase_objectClass, * __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_objectClass;
5287
5288 static struct __ecereNameSpace__ecere__com__Property * __ecereProp___ecereNameSpace__ecere__com__DesignerBase_isDragging, * __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_isDragging;
5289
5290 struct __ecereNameSpace__ecere__com__DesignerBase
5291 {
5292 struct __ecereNameSpace__ecere__com__Instance * classDesigner;
5293 char * objectClass;
5294 unsigned int isDragging;
5295 };
5296
5297 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__DesignerBase;
5298
5299 struct __ecereNameSpace__ecere__com__Instance * __ecereProp___ecereNameSpace__ecere__com__DesignerBase_Get_classDesigner(struct __ecereNameSpace__ecere__com__Instance * this)
5300 {
5301 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);
5302
5303 return __ecerePointer___ecereNameSpace__ecere__com__DesignerBase->classDesigner;
5304 }
5305
5306 void __ecereProp___ecereNameSpace__ecere__com__DesignerBase_Set_classDesigner(struct __ecereNameSpace__ecere__com__Instance * this, struct __ecereNameSpace__ecere__com__Instance * value)
5307 {
5308 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);
5309
5310 __ecerePointer___ecereNameSpace__ecere__com__DesignerBase->classDesigner = value;
5311 __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(this, __ecereProp___ecereNameSpace__ecere__com__DesignerBase_classDesigner), __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(this, __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_classDesigner);
5312 }
5313
5314 char *  __ecereProp___ecereNameSpace__ecere__com__DesignerBase_Get_objectClass(struct __ecereNameSpace__ecere__com__Instance * this)
5315 {
5316 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);
5317
5318 return __ecerePointer___ecereNameSpace__ecere__com__DesignerBase->objectClass;
5319 }
5320
5321 void __ecereProp___ecereNameSpace__ecere__com__DesignerBase_Set_objectClass(struct __ecereNameSpace__ecere__com__Instance * this, char *  value)
5322 {
5323 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);
5324
5325 __ecerePointer___ecereNameSpace__ecere__com__DesignerBase->objectClass = value;
5326 __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(this, __ecereProp___ecereNameSpace__ecere__com__DesignerBase_objectClass), __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(this, __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_objectClass);
5327 }
5328
5329 unsigned int __ecereProp___ecereNameSpace__ecere__com__DesignerBase_Get_isDragging(struct __ecereNameSpace__ecere__com__Instance * this)
5330 {
5331 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);
5332
5333 return __ecerePointer___ecereNameSpace__ecere__com__DesignerBase->isDragging;
5334 }
5335
5336 void __ecereProp___ecereNameSpace__ecere__com__DesignerBase_Set_isDragging(struct __ecereNameSpace__ecere__com__Instance * this, unsigned int value)
5337 {
5338 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);
5339
5340 __ecerePointer___ecereNameSpace__ecere__com__DesignerBase->isDragging = value;
5341 __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(this, __ecereProp___ecereNameSpace__ecere__com__DesignerBase_isDragging), __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(this, __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_isDragging);
5342 }
5343
5344 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__ClassDesignerBase;
5345
5346 struct __ecereNameSpace__ecere__com__Instance * __ecereNameSpace__ecere__com__activeDesigner;
5347
5348 void __ecereNameSpace__ecere__com__SetActiveDesigner(struct __ecereNameSpace__ecere__com__Instance * designer)
5349 {
5350 __ecereNameSpace__ecere__com__activeDesigner = designer;
5351 }
5352
5353 struct __ecereNameSpace__ecere__com__Instance * __ecereNameSpace__ecere__com__GetActiveDesigner()
5354 {
5355 return __ecereNameSpace__ecere__com__activeDesigner;
5356 }
5357
5358
5359
5360 unsigned int __ecereNameSpace__ecere__sys__UTF8Validate(char * source)
5361 {
5362 if(source)
5363 {
5364 int c;
5365
5366 for(c = 0; source[c]; )
5367 {
5368 unsigned char ch = source[c];
5369 unsigned int codePoint = 0;
5370 int numBytes = 1;
5371 int i;
5372 unsigned char mask = (unsigned char)0x7F;
5373
5374 if(ch & (unsigned char)0x80)
5375 {
5376 if(ch & (unsigned char)0x40)
5377 {
5378 mask >>= 2;
5379 numBytes++;
5380 if(ch & (unsigned char)0x20)
5381 {
5382 numBytes++;
5383 mask >>= 1;
5384 if(ch & (unsigned char)0x10)
5385 {
5386 if(ch & (unsigned char)0x08)
5387 return 0x0;
5388 numBytes++;
5389 mask >>= 1;
5390 }
5391 }
5392 }
5393 else
5394 return 0x0;
5395 }
5396 for(i = 0; i < numBytes && (ch = source[c]); i++, c++)
5397 {
5398 codePoint <<= 6;
5399 codePoint |= ch & mask;
5400 mask = (unsigned char)0x3F;
5401 if(i > 1)
5402 {
5403 if(!(ch & (unsigned char)0x80) || (ch & (unsigned char)0x40))
5404 return 0x0;
5405 }
5406 }
5407 if(i < numBytes)
5408 return 0x0;
5409 if(codePoint > 0x10FFFF || (codePoint >= 0xD800 && codePoint <= 0xDFFF) || (codePoint < 0x80 && numBytes > 1) || (codePoint < 0x800 && numBytes > 2) || (codePoint < 0x10000 && numBytes > 3))
5410 return 0x0;
5411 }
5412 }
5413 return 0x1;
5414 }
5415
5416 int __ecereNameSpace__ecere__sys__ISO8859_1toUTF8(char * source, char * dest, int max)
5417 {
5418 int c;
5419 int d = 0;
5420
5421 for(c = 0; source[c]; c++)
5422 {
5423 unsigned int ch = ((unsigned char *)source)[c];
5424
5425 if(ch < 0x80)
5426 {
5427 if(d + 1 >= max)
5428 break;
5429 dest[d++] = (char)ch;
5430 }
5431 else if(ch < 0x800)
5432 {
5433 if(d + 2 >= max)
5434 break;
5435 dest[d++] = (unsigned char)0xC0 | (unsigned char)((ch & 0x7C0) >> 6);
5436 dest[d++] = (unsigned char)0x80 | (unsigned char)(ch & 0x03F);
5437 }
5438 else if(ch < 0x10000)
5439 {
5440 if(d + 3 >= max)
5441 break;
5442 dest[d++] = (unsigned char)0xE0 | (unsigned char)((ch & 0xF000) >> 12);
5443 dest[d++] = (unsigned char)0x80 | (unsigned char)((ch & 0xFC0) >> 6);
5444 dest[d++] = (unsigned char)0x80 | (unsigned char)(ch & 0x03F);
5445 }
5446 else
5447 {
5448 if(d + 4 >= max)
5449 break;
5450 dest[d++] = (unsigned char)0xF0 | (unsigned char)((ch & 0x1C0000) >> 18);
5451 dest[d++] = (unsigned char)0x80 | (unsigned char)((ch & 0x3F000) >> 12);
5452 dest[d++] = (unsigned char)0x80 | (unsigned char)((ch & 0xFC0) >> 6);
5453 dest[d++] = (unsigned char)0x80 | (unsigned char)(ch & 0x03F);
5454 }
5455 }
5456 dest[d] = (char)0;
5457 return d;
5458 }
5459
5460 char * __ecereNameSpace__ecere__sys__UTF16toUTF8(unsigned short * source)
5461 {
5462 int c;
5463 int d = 0;
5464 int len;
5465 char * dest;
5466 unsigned short u16;
5467 unsigned int invert = 0x0;
5468
5469 for(len = 0; source[len]; len++)
5470 ;
5471 dest = __ecereNameSpace__ecere__com__eSystem_New(sizeof(char) * (len * 3 + 1));
5472 for(c = 0; (u16 = source[c]); c++)
5473 {
5474 unsigned int ch;
5475
5476 if(!c && (u16 == (unsigned short)0xFFFE || u16 == (unsigned short)0xFEFF))
5477 {
5478 if(u16 == (unsigned short)0xFFFE)
5479 invert = 0x1;
5480 continue;
5481 }
5482 if(invert)
5483 {
5484 u16 = ((u16 & (unsigned short)0xFF00) >> (unsigned short)8) | ((u16 & (unsigned short)0x00FF) << (unsigned short)8);
5485 }
5486 if(u16 < (unsigned short)0xD800 || u16 > (unsigned short)0xDBFF)
5487 ch = u16;
5488 else
5489 ch = (u16 << 10) + source[c++] + (0x10000 - (0xD800 << 10) - 0xDC00);
5490 if(ch < 0x80)
5491 {
5492 dest[d++] = (char)ch;
5493 }
5494 else if(ch < 0x800)
5495 {
5496 dest[d++] = (unsigned char)0xC0 | (unsigned char)((ch & 0x7C0) >> 6);
5497 dest[d++] = (unsigned char)0x80 | (unsigned char)(ch & 0x03F);
5498 }
5499 else if(ch < 0x10000)
5500 {
5501 dest[d++] = (unsigned char)0xE0 | (unsigned char)((ch & 0xF000) >> 12);
5502 dest[d++] = (unsigned char)0x80 | (unsigned char)((ch & 0xFC0) >> 6);
5503 dest[d++] = (unsigned char)0x80 | (unsigned char)(ch & 0x03F);
5504 }
5505 else
5506 {
5507 dest[d++] = (unsigned char)0xF0 | (unsigned char)((ch & 0x1C0000) >> 18);
5508 dest[d++] = (unsigned char)0x80 | (unsigned char)((ch & 0x3F000) >> 12);
5509 dest[d++] = (unsigned char)0x80 | (unsigned char)((ch & 0xFC0) >> 6);
5510 dest[d++] = (unsigned char)0x80 | (unsigned char)(ch & 0x03F);
5511 }
5512 }
5513 dest[d] = (char)0;
5514 dest = __ecereNameSpace__ecere__com__eSystem_Renew(dest, sizeof(char) * (d + 1));
5515 return dest;
5516 }
5517
5518 int __ecereNameSpace__ecere__sys__UTF16toUTF8Buffer(unsigned short * source, unsigned char * dest, int max)
5519 {
5520 int c;
5521 int d = 0;
5522 unsigned short u16;
5523
5524 for(c = 0; (u16 = source[c]); c++)
5525 {
5526 unsigned int ch;
5527
5528 if(u16 < (unsigned short)0xD800 || u16 > (unsigned short)0xDBFF)
5529 ch = u16;
5530 else
5531 ch = (u16 << 10) + source[c++] + (0x10000 - (0xD800 << 10) - 0xDC00);
5532 if(ch < 0x80)
5533 {
5534 if(d + 1 >= max)
5535 break;
5536 dest[d++] = (char)ch;
5537 }
5538 else if(ch < 0x800)
5539 {
5540 if(d + 2 >= max)
5541 break;
5542 dest[d++] = (unsigned char)0xC0 | (unsigned char)((ch & 0x7C0) >> 6);
5543 dest[d++] = (unsigned char)0x80 | (unsigned char)(ch & 0x03F);
5544 }
5545 else if(ch < 0x10000)
5546 {
5547 if(d + 3 >= max)
5548 break;
5549 dest[d++] = (unsigned char)0xE0 | (unsigned char)((ch & 0xF000) >> 12);
5550 dest[d++] = (unsigned char)0x80 | (unsigned char)((ch & 0xFC0) >> 6);
5551 dest[d++] = (unsigned char)0x80 | (unsigned char)(ch & 0x03F);
5552 }
5553 else
5554 {
5555 if(d + 4 >= max)
5556 break;
5557 dest[d++] = (unsigned char)0xF0 | (unsigned char)((ch & 0x1C0000) >> 18);
5558 dest[d++] = (unsigned char)0x80 | (unsigned char)((ch & 0x3F000) >> 12);
5559 dest[d++] = (unsigned char)0x80 | (unsigned char)((ch & 0xFC0) >> 6);
5560 dest[d++] = (unsigned char)0x80 | (unsigned char)(ch & 0x03F);
5561 }
5562 }
5563 dest[d] = (unsigned char)0;
5564 return d;
5565 }
5566
5567 unsigned int __ecereNameSpace__ecere__sys__UTF8GetChar(char * string, int * numBytes)
5568 {
5569 unsigned int ch;
5570 unsigned char b = ((unsigned char *)string)[0];
5571 int i;
5572 unsigned char mask = (unsigned char)0x7F;
5573 int nb = 1;
5574
5575 ch = 0;
5576 if(b & (unsigned char)0x80)
5577 {
5578 if(b & (unsigned char)0x40)
5579 {
5580 mask >>= 2;
5581 nb++;
5582 if(b & (unsigned char)0x20)
5583 {
5584 nb++;
5585 mask >>= 1;
5586 if(b & (unsigned char)0x10)
5587 {
5588 if(b & (unsigned char)0x08)
5589 {
5590 nb = 0;
5591 }
5592 nb++;
5593 mask >>= 1;
5594 }
5595 }
5596 }
5597 else
5598 nb = 0;
5599 }
5600 for(i = 0; i < nb; i++)
5601 {
5602 ch <<= 6;
5603 ch |= (b = ((unsigned char *)string)[i]) & mask;
5604 mask = (unsigned char)0x3F;
5605 if(i > 1 && (!(b & (unsigned char)0x80) || (b & (unsigned char)0x40)))
5606 {
5607 nb = 0;
5608 ch = 0;
5609 }
5610 }
5611 if(i < nb || ch > 0x10FFFF || (ch >= 0xD800 && ch <= 0xDFFF) || (ch < 0x80 && nb > 1) || (ch < 0x800 && nb > 2) || (ch < 0x10000 && nb > 3))
5612 {
5613 ch = 0;
5614 nb = 0;
5615 }
5616 if(numBytes)
5617 *numBytes = nb;
5618 return ch;
5619 }
5620
5621 int __ecereNameSpace__ecere__sys__UTF8toUTF16Buffer(char * source, unsigned short * dest, int max)
5622 {
5623 if(source)
5624 {
5625 int c;
5626 int d = 0;
5627
5628 for(c = 0; source[c]; )
5629 {
5630 unsigned char ch = source[c];
5631 unsigned int codePoint = 0;
5632 int numBytes = 1;
5633 int i;
5634 unsigned char mask = (unsigned char)0x7F;
5635
5636 if(ch & (unsigned char)0x80 && ch & (unsigned char)0x40)
5637 {
5638 mask >>= 2;
5639 numBytes++;
5640 if(ch & (unsigned char)0x20)
5641 {
5642 numBytes++;
5643 mask >>= 1;
5644 if(ch & (unsigned char)0x10)
5645 {
5646 numBytes++;
5647 mask >>= 1;
5648 }
5649 }
5650 }
5651 for(i = 0; i < numBytes; i++)
5652 {
5653 codePoint <<= 6;
5654 codePoint |= source[c++] & mask;
5655 mask = (unsigned char)0x3F;
5656 }
5657 if(codePoint > 0xFFFF)
5658 {
5659 unsigned short lead = (unsigned short)((0xD800 - (0x10000 >> 10)) + (codePoint >> 10));
5660 unsigned short trail = (unsigned short)0xDC00 + (unsigned short)(codePoint & 0x3FF);
5661
5662 if(d >= max - 1)
5663 break;
5664 dest[d++] = lead;
5665 dest[d++] = trail;
5666 }
5667 else
5668 {
5669 if(d >= max)
5670 break;
5671 dest[d++] = (unsigned short)codePoint;
5672 }
5673 }
5674 dest[d] = (unsigned short)0;
5675 return d;
5676 }
5677 return 0;
5678 }
5679
5680 int __ecereNameSpace__ecere__sys__UTF32toUTF8Len(unsigned int * source, int count, unsigned char * dest, int max)
5681 {
5682 int c;
5683 int d = 0;
5684 unsigned int ch;
5685
5686 for(c = 0; c < count && (ch = source[c]); c++)
5687 {
5688 if(ch < 0x80)
5689 {
5690 if(d + 1 >= max)
5691 break;
5692 dest[d++] = (char)ch;
5693 }
5694 else if(ch < 0x800)
5695 {
5696 if(d + 2 >= max)
5697 break;
5698 dest[d++] = (unsigned char)0xC0 | (unsigned char)((ch & 0x7C0) >> 6);
5699 dest[d++] = (unsigned char)0x80 | (unsigned char)(ch & 0x03F);
5700 }
5701 else if(ch < 0x10000)
5702 {
5703 if(d + 3 >= max)
5704 break;
5705 dest[d++] = (unsigned char)0xE0 | (unsigned char)((ch & 0xF000) >> 12);
5706 dest[d++] = (unsigned char)0x80 | (unsigned char)((ch & 0xFC0) >> 6);
5707 dest[d++] = (unsigned char)0x80 | (unsigned char)(ch & 0x03F);
5708 }
5709 else
5710 {
5711 if(d + 4 >= max)
5712 break;
5713 dest[d++] = (unsigned char)0xF0 | (unsigned char)((ch & 0x1C0000) >> 18);
5714 dest[d++] = (unsigned char)0x80 | (unsigned char)((ch & 0x3F000) >> 12);
5715 dest[d++] = (unsigned char)0x80 | (unsigned char)((ch & 0xFC0) >> 6);
5716 dest[d++] = (unsigned char)0x80 | (unsigned char)(ch & 0x03F);
5717 }
5718 }
5719 dest[d] = (unsigned char)0;
5720 return d;
5721 }
5722
5723 unsigned short * __ecereNameSpace__ecere__sys__UTF8toUTF16(char * source, int * wordCount)
5724 {
5725 if(source)
5726 {
5727 int len = strlen(source);
5728 unsigned short * dest = __ecereNameSpace__ecere__com__eSystem_New(sizeof(unsigned short) * (len + 1));
5729 int c;
5730 int d = 0;
5731
5732 for(c = 0; source[c]; )
5733 {
5734 unsigned char ch = source[c];
5735 unsigned int codePoint = 0;
5736 int numBytes = 1;
5737 int i;
5738 unsigned char mask = (unsigned char)0x7F;
5739
5740 if(ch & (unsigned char)0x80 && ch & (unsigned char)0x40)
5741 {
5742 mask >>= 2;
5743 numBytes++;
5744 if(ch & (unsigned char)0x20)
5745 {
5746 numBytes++;
5747 mask >>= 1;
5748 if(ch & (unsigned char)0x10)
5749 {
5750 numBytes++;
5751 mask >>= 1;
5752 }
5753 }
5754 }
5755 for(i = 0; i < numBytes; i++)
5756 {
5757 codePoint <<= 6;
5758 codePoint |= source[c++] & mask;
5759 mask = (unsigned char)0x3F;
5760 }
5761 if(codePoint > 0xFFFF)
5762 {
5763 unsigned short lead = (unsigned short)((0xD800 - (0x10000 >> 10)) + (codePoint >> 10));
5764 unsigned short trail = (unsigned short)0xDC00 + (unsigned short)(codePoint & 0x3FF);
5765
5766 dest[d++] = lead;
5767 dest[d++] = trail;
5768 }
5769 else
5770 {
5771 dest[d++] = (unsigned short)codePoint;
5772 }
5773 }
5774 dest[d] = (unsigned short)0;
5775 if(wordCount)
5776 *wordCount = d;
5777 return dest;
5778 }
5779 return (((void *)0));
5780 }
5781
5782 int __ecereVMethodID___ecereNameSpace__ecere__com__DesignerBase_FindObject;
5783
5784 int __ecereVMethodID___ecereNameSpace__ecere__com__DesignerBase_RenameObject;
5785
5786 int __ecereVMethodID___ecereNameSpace__ecere__com__DesignerBase_SelectObjectFromDesigner;
5787
5788 int __ecereVMethodID___ecereNameSpace__ecere__com__DesignerBase_CodeAddObject;
5789
5790 int __ecereVMethodID___ecereNameSpace__ecere__com__DesignerBase_SheetAddObject;
5791
5792 int __ecereVMethodID___ecereNameSpace__ecere__com__DesignerBase_AddToolBoxClass;
5793
5794 int __ecereVMethodID___ecereNameSpace__ecere__com__DesignerBase_AddDefaultMethod;
5795
5796 int __ecereVMethodID___ecereNameSpace__ecere__com__DesignerBase_DeleteObject;
5797
5798 int __ecereVMethodID___ecereNameSpace__ecere__com__DesignerBase_ObjectContainsCode;
5799
5800 int __ecereVMethodID___ecereNameSpace__ecere__com__DesignerBase_ModifyCode;
5801
5802 int __ecereVMethodID___ecereNameSpace__ecere__com__DesignerBase_UpdateProperties;
5803
5804 int __ecereVMethodID___ecereNameSpace__ecere__com__ClassDesignerBase_Reset;
5805
5806 int __ecereVMethodID___ecereNameSpace__ecere__com__ClassDesignerBase_AddObject;
5807
5808 int __ecereVMethodID___ecereNameSpace__ecere__com__ClassDesignerBase_SelectObject;
5809
5810 int __ecereVMethodID___ecereNameSpace__ecere__com__ClassDesignerBase_ListToolBoxClasses;
5811
5812 int __ecereVMethodID___ecereNameSpace__ecere__com__ClassDesignerBase_PrepareTestObject;
5813
5814 int __ecereVMethodID___ecereNameSpace__ecere__com__ClassDesignerBase_CreateObject;
5815
5816 int __ecereVMethodID___ecereNameSpace__ecere__com__ClassDesignerBase_PostCreateObject;
5817
5818 int __ecereVMethodID___ecereNameSpace__ecere__com__ClassDesignerBase_DroppedObject;
5819
5820 int __ecereVMethodID___ecereNameSpace__ecere__com__ClassDesignerBase_DestroyObject;
5821
5822 int __ecereVMethodID___ecereNameSpace__ecere__com__ClassDesignerBase_FixProperty;
5823
5824 int __ecereVMethodID___ecereNameSpace__ecere__com__ClassDesignerBase_CreateNew;
5825
5826 void __ecereRegisterModule_instance(struct __ecereNameSpace__ecere__com__Instance * module)
5827 {
5828 struct __ecereNameSpace__ecere__com__Class * class;
5829
5830 __ecereNameSpace__ecere__com__eSystem_RegisterDefine("ecere::com::null", "((void *)0)", module, 4);
5831 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(3, "ecere::com::unichar", "uint", 0, 0, 0, 0, module, 4, 1);
5832 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
5833 __ecereClass___ecereNameSpace__ecere__com__unichar = class;
5834 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "OnGetString", 0, __ecereMethod___ecereNameSpace__ecere__com__unichar_OnGetString, 1);
5835 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "OnGetDataFromString", 0, __ecereMethod___ecereNameSpace__ecere__com__unichar_OnGetDataFromString, 1);
5836 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::Property", 0, sizeof(struct __ecereNameSpace__ecere__com__Property), 0, 0, 0, module, 4, 1);
5837 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
5838 __ecereClass___ecereNameSpace__ecere__com__Property = class;
5839 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "prev", "ecere::com::Property", 4, 4, 1);
5840 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "next", "ecere::com::Property", 4, 4, 1);
5841 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "name", "char *", 4, 4, 1);
5842 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "isProperty", "bool", 4, 4, 1);
5843 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "memberAccess", "ecere::com::AccessMode", 4, 4, 1);
5844 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "id", "int", 4, 4, 1);
5845 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "_class", "ecere::com::Class", 4, 4, 1);
5846 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataTypeString", "char *", 4, 4, 1);
5847 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataTypeClass", "ecere::com::Class", 4, 4, 1);
5848 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataType", "Type", 4, 4, 1);
5849 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "Set", "void( *)()", 4, 4, 1);
5850 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "Get", "int( *)()", 4, 4, 1);
5851 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "IsSet", "bool( *)()", 4, 4, 1);
5852 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "data", "void *", 4, 4, 1);
5853 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "symbol", "void *", 4, 4, 1);
5854 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "vid", "int", 4, 4, 1);
5855 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "conversion", "bool", 4, 4, 1);
5856 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "watcherOffset", "uint", 4, 4, 1);
5857 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "category", "char *", 4, 4, 1);
5858 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "compiled", "bool", 4, 4, 1);
5859 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "selfWatchable", "bool", 4, 4, 1);
5860 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "isWatchable", "bool", 4, 4, 1);
5861 if(class)
5862 class->fixed = (unsigned int)1;
5863 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::MemoryGuard_PushLoc", "void ecere::com::MemoryGuard_PushLoc(char * loc)", __ecereNameSpace__ecere__com__MemoryGuard_PushLoc, module, 4);
5864 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::MemoryGuard_PopLoc", "void ecere::com::MemoryGuard_PopLoc(void)", __ecereNameSpace__ecere__com__MemoryGuard_PopLoc, module, 4);
5865 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::BTNamedLink", 0, sizeof(struct __ecereNameSpace__ecere__com__BTNamedLink), 0, 0, 0, module, 4, 1);
5866 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
5867 __ecereClass___ecereNameSpace__ecere__com__BTNamedLink = class;
5868 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "name", "char *", 4, 4, 1);
5869 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "parent", "ecere::com::BTNamedLink", 4, 4, 1);
5870 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "left", "ecere::com::BTNamedLink", 4, 4, 1);
5871 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "right", "ecere::com::BTNamedLink", 4, 4, 1);
5872 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "depth", "int", 4, 4, 1);
5873 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "data", "void *", 4, 4, 1);
5874 if(class)
5875 class->fixed = (unsigned int)1;
5876 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::SelfWatcher", 0, sizeof(struct __ecereNameSpace__ecere__com__SelfWatcher), 0, 0, 0, module, 2, 1);
5877 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
5878 __ecereClass___ecereNameSpace__ecere__com__SelfWatcher = class;
5879 if(class)
5880 class->fixed = (unsigned int)1;
5881 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(4, "ecere::com::AccessMode", 0, 0, 0, 0, 0, module, 4, 1);
5882 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
5883 __ecereClass___ecereNameSpace__ecere__com__AccessMode = class;
5884 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "defaultAccess", 0);
5885 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "publicAccess", 1);
5886 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "privateAccess", 2);
5887 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "staticAccess", 3);
5888 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "baseSystemAccess", 4);
5889 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::SubModule", 0, sizeof(struct __ecereNameSpace__ecere__com__SubModule), 0, 0, 0, module, 4, 1);
5890 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
5891 __ecereClass___ecereNameSpace__ecere__com__SubModule = class;
5892 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "prev", "ecere::com::SubModule", 4, 4, 1);
5893 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "next", "ecere::com::SubModule", 4, 4, 1);
5894 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "module", "ecere::com::Module", 4, 4, 1);
5895 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "importMode", "ecere::com::AccessMode", 4, 4, 1);
5896 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(4, "ecere::com::DataMemberType", 0, 0, 0, 0, 0, module, 4, 1);
5897 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
5898 __ecereClass___ecereNameSpace__ecere__com__DataMemberType = class;
5899 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "normalMember", 0);
5900 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "unionMember", 1);
5901 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "structMember", 2);
5902 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(4, "ecere::com::ClassType", 0, 0, 0, 0, 0, module, 4, 1);
5903 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
5904 __ecereClass___ecereNameSpace__ecere__com__ClassType = class;
5905 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "normalClass", 0);
5906 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "structClass", 1);
5907 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "bitClass", 2);
5908 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "unitClass", 3);
5909 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "enumClass", 4);
5910 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "noHeadClass", 5);
5911 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "unionClass", 6);
5912 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "systemClass", 1000);
5913 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::Class", 0, sizeof(struct __ecereNameSpace__ecere__com__Class), 0, 0, 0, module, 4, 1);
5914 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
5915 __ecereClass___ecereNameSpace__ecere__com__Class = class;
5916 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "OnFree", 0, __ecereMethod___ecereNameSpace__ecere__com__Class_OnFree, 1);
5917 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "OnGetString", 0, __ecereMethod___ecereNameSpace__ecere__com__Class_OnGetString, 1);
5918 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "OnGetDataFromString", 0, __ecereMethod___ecereNameSpace__ecere__com__Class_OnGetDataFromString, 1);
5919 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "OnSerialize", 0, __ecereMethod___ecereNameSpace__ecere__com__Class_OnSerialize, 1);
5920 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "OnUnserialize", 0, __ecereMethod___ecereNameSpace__ecere__com__Class_OnUnserialize, 1);
5921 __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);
5922 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "prev", "ecere::com::Class", 4, 4, 1);
5923 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "next", "ecere::com::Class", 4, 4, 1);
5924 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "name", "char *", 4, 4, 1);
5925 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "offset", "int", 4, 4, 1);
5926 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "structSize", "int", 4, 4, 1);
5927 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "_vTbl", "int( * *)()", 4, 4, 1);
5928 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "vTblSize", "int", 4, 4, 1);
5929 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "Constructor", "int( *)(ecere::com::Instance)", 4, 4, 1);
5930 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "Destructor", "void( *)(ecere::com::Instance)", 4, 4, 1);
5931 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "offsetClass", "int", 4, 4, 1);
5932 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "sizeClass", "int", 4, 4, 1);
5933 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "base", "ecere::com::Class", 4, 4, 1);
5934 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "methods", "ecere::sys::BinaryTree", 16, 4, 1);
5935 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "members", "ecere::sys::BinaryTree", 16, 4, 1);
5936 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "prop", "ecere::sys::BinaryTree", 16, 4, 1);
5937 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "membersAndProperties", "ecere::sys::OldList", 20, 4, 1);
5938 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "classProperties", "ecere::sys::BinaryTree", 16, 4, 1);
5939 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "derivatives", "ecere::sys::OldList", 20, 4, 1);
5940 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "memberID", "int", 4, 4, 1);
5941 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "startMemberID", "int", 4, 4, 1);
5942 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "type", "ecere::com::ClassType", 4, 4, 1);
5943 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "module", "ecere::com::Module", 4, 4, 1);
5944 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "nameSpace", "ecere::com::NameSpace *", 4, 4, 1);
5945 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataTypeString", "char *", 4, 4, 1);
5946 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataType", "Type", 4, 4, 1);
5947 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "typeSize", "int", 4, 4, 1);
5948 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "defaultAlignment", "int", 4, 4, 1);
5949 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "Initialize", "void( *)()", 4, 4, 1);
5950 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "memberOffset", "int", 4, 4, 1);
5951 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "selfWatchers", "ecere::sys::OldList", 20, 4, 1);
5952 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "designerClass", "char *", 4, 4, 1);
5953 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "noExpansion", "bool", 4, 4, 1);
5954 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "defaultProperty", "char *", 4, 4, 1);
5955 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "comRedefinition", "bool", 4, 4, 1);
5956 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "count", "int", 4, 4, 1);
5957 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "isRemote", "bool", 4, 4, 1);
5958 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "internalDecl", "bool", 4, 4, 1);
5959 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "data", "void *", 4, 4, 1);
5960 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "computeSize", "bool", 4, 4, 1);
5961 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "structAlignment", "int", 4, 4, 1);
5962 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "destructionWatchOffset", "int", 4, 4, 1);
5963 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "fixed", "bool", 4, 4, 1);
5964 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "delayedCPValues", "ecere::sys::OldList", 20, 4, 1);
5965 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "inheritanceAccess", "ecere::com::AccessMode", 4, 4, 1);
5966 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "fullName", "char *", 4, 4, 1);
5967 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "symbol", "void *", 4, 4, 1);
5968 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "conversions", "ecere::sys::OldList", 20, 4, 1);
5969 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "templateParams", "ecere::sys::OldList", 20, 4, 1);
5970 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "templateArgs", "ecere::com::ClassTemplateArgument *", 4, 4, 1);
5971 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "templateClass", "ecere::com::Class", 4, 4, 1);
5972 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "templatized", "ecere::sys::OldList", 20, 4, 1);
5973 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "numParams", "int", 4, 4, 1);
5974 if(class)
5975 class->fixed = (unsigned int)1;
5976 if(class)
5977 class->noExpansion = (unsigned int)1;
5978 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(4, "ecere::com::TemplateParameterType", 0, 0, 0, 0, 0, module, 4, 1);
5979 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
5980 __ecereClass___ecereNameSpace__ecere__com__TemplateParameterType = class;
5981 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "type", 0);
5982 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "identifier", 1);
5983 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "expression", 2);
5984 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(4, "ecere::com::TemplateMemberType", 0, 0, 0, 0, 0, module, 4, 1);
5985 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
5986 __ecereClass___ecereNameSpace__ecere__com__TemplateMemberType = class;
5987 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "dataMember", 0);
5988 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "method", 1);
5989 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "prop", 2);
5990 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(1, "ecere::com::ClassTemplateArgument", 0, sizeof(struct __ecereNameSpace__ecere__com__ClassTemplateArgument), 0, 0, 0, module, 4, 1);
5991 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
5992 __ecereClass___ecereNameSpace__ecere__com__ClassTemplateArgument = class;
5993 {
5994 struct __ecereNameSpace__ecere__com__DataMember * dataMember0 = __ecereNameSpace__ecere__com__eMember_New(1, 1);
5995
5996 {
5997 struct __ecereNameSpace__ecere__com__DataMember * dataMember1 = __ecereNameSpace__ecere__com__eMember_New(2, 1);
5998
5999 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember1, "dataTypeString", "char *", 4, 4, 1);
6000 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember1, "dataTypeClass", "ecere::com::Class", 4, 4, 1);
6001 __ecereNameSpace__ecere__com__eMember_AddMember(dataMember0, dataMember1);
6002 }
6003 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember0, "expression", "ecere::com::DataValue", 8, 8, 1);
6004 {
6005 struct __ecereNameSpace__ecere__com__DataMember * dataMember1 = __ecereNameSpace__ecere__com__eMember_New(2, 1);
6006
6007 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember1, "memberString", "char *", 4, 4, 1);
6008 {
6009 struct __ecereNameSpace__ecere__com__DataMember * dataMember2 = __ecereNameSpace__ecere__com__eMember_New(1, 1);
6010
6011 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember2, "member", "ecere::com::DataMember", 4, 4, 1);
6012 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember2, "prop", "ecere::com::Property", 4, 4, 1);
6013 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember2, "method", "ecere::com::Method", 4, 4, 1);
6014 __ecereNameSpace__ecere__com__eMember_AddMember(dataMember1, dataMember2);
6015 }
6016 __ecereNameSpace__ecere__com__eMember_AddMember(dataMember0, dataMember1);
6017 }
6018 __ecereNameSpace__ecere__com__eClass_AddMember(class, dataMember0);
6019 }
6020 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::ClassTemplateParameter", 0, sizeof(struct __ecereNameSpace__ecere__com__ClassTemplateParameter), 0, 0, 0, module, 4, 1);
6021 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6022 __ecereClass___ecereNameSpace__ecere__com__ClassTemplateParameter = class;
6023 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "prev", "ecere::com::ClassTemplateParameter", 4, 4, 1);
6024 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "next", "ecere::com::ClassTemplateParameter", 4, 4, 1);
6025 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "name", "char *", 4, 4, 1);
6026 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "type", "ecere::com::TemplateParameterType", 4, 4, 1);
6027 {
6028 struct __ecereNameSpace__ecere__com__DataMember * dataMember0 = __ecereNameSpace__ecere__com__eMember_New(1, 1);
6029
6030 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember0, "dataTypeString", "char *", 4, 4, 1);
6031 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember0, "memberType", "ecere::com::TemplateMemberType", 4, 4, 1);
6032 __ecereNameSpace__ecere__com__eClass_AddMember(class, dataMember0);
6033 }
6034 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "defaultArg", "ecere::com::ClassTemplateArgument", 8, 8, 1);
6035 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "param", "void *", 4, 4, 1);
6036 if(class)
6037 class->fixed = (unsigned int)1;
6038 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(4, "ecere::com::MethodType", 0, 0, 0, 0, 0, module, 4, 1);
6039 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6040 __ecereClass___ecereNameSpace__ecere__com__MethodType = class;
6041 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "normalMethod", 0);
6042 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "virtualMethod", 1);
6043 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::Method", 0, sizeof(struct __ecereNameSpace__ecere__com__Method), 0, 0, 0, module, 4, 1);
6044 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6045 __ecereClass___ecereNameSpace__ecere__com__Method = class;
6046 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "name", "char *", 4, 4, 1);
6047 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "parent", "ecere::com::Method", 4, 4, 1);
6048 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "left", "ecere::com::Method", 4, 4, 1);
6049 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "right", "ecere::com::Method", 4, 4, 1);
6050 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "depth", "int", 4, 4, 1);
6051 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "function", "int( *)()", 4, 4, 1);
6052 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "vid", "int", 4, 4, 1);
6053 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "type", "ecere::com::MethodType", 4, 4, 1);
6054 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "_class", "ecere::com::Class", 4, 4, 1);
6055 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "symbol", "void *", 4, 4, 1);
6056 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataTypeString", "char *", 4, 4, 1);
6057 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataType", "Type", 4, 4, 1);
6058 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "memberAccess", "ecere::com::AccessMode", 4, 4, 1);
6059 if(class)
6060 class->fixed = (unsigned int)1;
6061 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(4, "ecere::com::ImportType", 0, 0, 0, 0, 0, module, 4, 1);
6062 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6063 __ecereClass___ecereNameSpace__ecere__com__ImportType = class;
6064 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "normalImport", 0);
6065 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "staticImport", 1);
6066 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "remoteImport", 2);
6067 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "preDeclImport", 3);
6068 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "comCheckImport", 4);
6069 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(1, "ecere::com::NameSpace", 0, sizeof(struct __ecereNameSpace__ecere__com__NameSpace), 0, 0, 0, module, 4, 1);
6070 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6071 __ecereClass___ecereNameSpace__ecere__com__NameSpace = class;
6072 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "name", "char *", 4, 4, 1);
6073 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "btParent", "ecere::com::NameSpace *", 4, 4, 1);
6074 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "left", "ecere::com::NameSpace *", 4, 4, 1);
6075 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "right", "ecere::com::NameSpace *", 4, 4, 1);
6076 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "depth", "int", 4, 4, 1);
6077 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "parent", "ecere::com::NameSpace *", 4, 4, 1);
6078 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "nameSpaces", "ecere::sys::BinaryTree", 16, 4, 1);
6079 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "classes", "ecere::sys::BinaryTree", 16, 4, 1);
6080 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "defines", "ecere::sys::BinaryTree", 16, 4, 1);
6081 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "functions", "ecere::sys::BinaryTree", 16, 4, 1);
6082 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(1, "ecere::com::DataValue", 0, sizeof(struct __ecereNameSpace__ecere__com__DataValue), 0, 0, 0, module, 4, 1);
6083 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6084 __ecereClass___ecereNameSpace__ecere__com__DataValue = class;
6085 {
6086 struct __ecereNameSpace__ecere__com__DataMember * dataMember0 = __ecereNameSpace__ecere__com__eMember_New(1, 1);
6087
6088 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember0, "c", "char", 1, 1, 1);
6089 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember0, "uc", "byte", 1, 1, 1);
6090 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember0, "s", "short", 2, 2, 1);
6091 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember0, "us", "uint16", 2, 2, 1);
6092 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember0, "i", "int", 4, 4, 1);
6093 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember0, "ui", "uint", 4, 4, 1);
6094 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember0, "p", "void *", 4, 4, 1);
6095 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember0, "f", "float", 4, 4, 1);
6096 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember0, "d", "double", 8, 8, 1);
6097 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember0, "i64", "int64", 8, 8, 1);
6098 __ecereNameSpace__ecere__com__eMember_AddDataMember(dataMember0, "ui64", "uint64", 8, 8, 1);
6099 __ecereNameSpace__ecere__com__eClass_AddMember(class, dataMember0);
6100 }
6101 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::DataMember", 0, sizeof(struct __ecereNameSpace__ecere__com__DataMember), 0, 0, 0, module, 4, 1);
6102 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6103 __ecereClass___ecereNameSpace__ecere__com__DataMember = class;
6104 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "prev", "ecere::com::DataMember", 4, 4, 1);
6105 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "next", "ecere::com::DataMember", 4, 4, 1);
6106 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "name", "char *", 4, 4, 1);
6107 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "isProperty", "bool", 4, 4, 1);
6108 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "memberAccess", "ecere::com::AccessMode", 4, 4, 1);
6109 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "id", "int", 4, 4, 1);
6110 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "_class", "ecere::com::Class", 4, 4, 1);
6111 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataTypeString", "char *", 4, 4, 1);
6112 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataTypeClass", "ecere::com::Class", 4, 4, 1);
6113 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataType", "Type", 4, 4, 1);
6114 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "type", "ecere::com::DataMemberType", 4, 4, 1);
6115 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "offset", "int", 4, 4, 1);
6116 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "memberID", "int", 4, 4, 1);
6117 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "members", "ecere::sys::OldList", 20, 4, 1);
6118 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "membersAlpha", "ecere::sys::BinaryTree", 16, 4, 1);
6119 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "memberOffset", "int", 4, 4, 1);
6120 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "structAlignment", "int", 4, 4, 1);
6121 if(class)
6122 class->fixed = (unsigned int)1;
6123 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::BitMember", 0, sizeof(struct __ecereNameSpace__ecere__com__BitMember), 0, 0, 0, module, 4, 1);
6124 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6125 __ecereClass___ecereNameSpace__ecere__com__BitMember = class;
6126 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "prev", "ecere::com::BitMember", 4, 4, 1);
6127 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "next", "ecere::com::BitMember", 4, 4, 1);
6128 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "name", "char *", 4, 4, 1);
6129 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "isProperty", "bool", 4, 4, 1);
6130 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "memberAccess", "ecere::com::AccessMode", 4, 4, 1);
6131 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "id", "int", 4, 4, 1);
6132 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "_class", "ecere::com::Class", 4, 4, 1);
6133 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataTypeString", "char *", 4, 4, 1);
6134 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataTypeClass", "ecere::com::Class", 4, 4, 1);
6135 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataType", "Type", 4, 4, 1);
6136 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "type", "ecere::com::DataMemberType", 4, 4, 1);
6137 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "size", "int", 4, 4, 1);
6138 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "pos", "int", 4, 4, 1);
6139 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "mask", "uint64", 8, 8, 1);
6140 if(class)
6141 class->fixed = (unsigned int)1;
6142 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::ClassProperty", 0, sizeof(struct __ecereNameSpace__ecere__com__ClassProperty), 0, 0, 0, module, 4, 1);
6143 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6144 __ecereClass___ecereNameSpace__ecere__com__ClassProperty = class;
6145 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "name", "char *", 4, 4, 1);
6146 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "parent", "ecere::com::ClassProperty", 4, 4, 1);
6147 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "left", "ecere::com::ClassProperty", 4, 4, 1);
6148 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "right", "ecere::com::ClassProperty", 4, 4, 1);
6149 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "depth", "int", 4, 4, 1);
6150 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "Set", "void( *)(ecere::com::Class, int)", 4, 4, 1);
6151 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "Get", "int( *)(ecere::com::Class)", 4, 4, 1);
6152 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataTypeString", "char *", 4, 4, 1);
6153 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataType", "Type", 4, 4, 1);
6154 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "constant", "bool", 4, 4, 1);
6155 if(class)
6156 class->fixed = (unsigned int)1;
6157 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::DefinedExpression", 0, sizeof(struct __ecereNameSpace__ecere__com__DefinedExpression), 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__DefinedExpression = class;
6160 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "prev", "ecere::com::DefinedExpression", 4, 4, 1);
6161 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "next", "ecere::com::DefinedExpression", 4, 4, 1);
6162 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "name", "char *", 4, 4, 1);
6163 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "value", "char *", 4, 4, 1);
6164 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "nameSpace", "ecere::com::NameSpace *", 4, 4, 1);
6165 if(class)
6166 class->fixed = (unsigned int)1;
6167 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::GlobalFunction", 0, sizeof(struct __ecereNameSpace__ecere__com__GlobalFunction), 0, 0, 0, module, 4, 1);
6168 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6169 __ecereClass___ecereNameSpace__ecere__com__GlobalFunction = class;
6170 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "prev", "ecere::com::GlobalFunction", 4, 4, 1);
6171 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "next", "ecere::com::GlobalFunction", 4, 4, 1);
6172 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "name", "char *", 4, 4, 1);
6173 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "function", "int( *)()", 4, 4, 1);
6174 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "module", "ecere::com::Module", 4, 4, 1);
6175 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "nameSpace", "ecere::com::NameSpace *", 4, 4, 1);
6176 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataTypeString", "char *", 4, 4, 1);
6177 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataType", "Type", 4, 4, 1);
6178 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "symbol", "void *", 4, 4, 1);
6179 if(class)
6180 class->fixed = (unsigned int)1;
6181 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::EnumClassData", 0, sizeof(struct __ecereNameSpace__ecere__com__EnumClassData), 0, 0, 0, module, 4, 1);
6182 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6183 __ecereClass___ecereNameSpace__ecere__com__EnumClassData = class;
6184 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "values", "ecere::sys::OldList", 20, 4, 1);
6185 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "largest", "int", 4, 4, 1);
6186 if(class)
6187 class->fixed = (unsigned int)1;
6188 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::Watcher", 0, sizeof(struct __ecereNameSpace__ecere__com__Watcher), 0, 0, 0, module, 2, 1);
6189 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6190 __ecereClass___ecereNameSpace__ecere__com__Watcher = class;
6191 if(class)
6192 class->fixed = (unsigned int)1;
6193 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::MemBlock", 0, sizeof(struct __ecereNameSpace__ecere__com__MemBlock), 0, 0, 0, module, 2, 1);
6194 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6195 __ecereClass___ecereNameSpace__ecere__com__MemBlock = class;
6196 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::MemPart", 0, sizeof(struct __ecereNameSpace__ecere__com__MemPart), 0, 0, 0, module, 2, 1);
6197 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6198 __ecereClass___ecereNameSpace__ecere__com__MemPart = class;
6199 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(1, "ecere::com::BlockPool", 0, sizeof(struct __ecereNameSpace__ecere__com__BlockPool), 0, 0, 0, module, 2, 1);
6200 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6201 __ecereClass___ecereNameSpace__ecere__com__BlockPool = class;
6202 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "Add", "ecere::com::MemBlock Add()", __ecereMethod___ecereNameSpace__ecere__com__BlockPool_Add, 1);
6203 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "Expand", "bool Expand(unsigned int numBlocks)", __ecereMethod___ecereNameSpace__ecere__com__BlockPool_Expand, 1);
6204 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "Remove", "void Remove(ecere::com::MemBlock block)", __ecereMethod___ecereNameSpace__ecere__com__BlockPool_Remove, 1);
6205 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "first", "ecere::com::MemBlock", 4, 4, 1);
6206 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "last", "ecere::com::MemBlock", 4, 4, 1);
6207 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "free", "ecere::com::MemBlock", 4, 4, 1);
6208 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "blockSize", "uint", 4, 4, 1);
6209 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "blockSpace", "uint", 4, 4, 1);
6210 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "numParts", "int", 4, 4, 1);
6211 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "numBlocks", "int", 4, 4, 1);
6212 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "totalSize", "uint", 4, 4, 1);
6213 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "usedSpace", "uint", 4, 4, 1);
6214 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::log2i", "uint ecere::com::log2i(uint number)", __ecereNameSpace__ecere__com__log2i, module, 4);
6215 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::pow2i", "uint ecere::com::pow2i(uint number)", __ecereNameSpace__ecere__com__pow2i, module, 4);
6216 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::memswap", "void ecere::com::memswap(byte * a, byte * b, uint size)", __ecereNameSpace__ecere__com__memswap, module, 4);
6217 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::CheckMemory", "void ecere::com::CheckMemory(void)", __ecereNameSpace__ecere__com__CheckMemory, module, 4);
6218 __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);
6219 __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);
6220 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::_strtoi64", "int64 ecere::com::_strtoi64(char * string, char * * endString, int base)", __ecereNameSpace__ecere__com___strtoi64, module, 4);
6221 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::_strtoui64", "uint64 ecere::com::_strtoui64(char * string, char * * endString, int base)", __ecereNameSpace__ecere__com___strtoui64, module, 4);
6222 __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);
6223 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::DefaultFunction", "bool ecere::com::DefaultFunction(void)", __ecereNameSpace__ecere__com__DefaultFunction, module, 2);
6224 __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);
6225 __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);
6226 __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);
6227 __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);
6228 __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);
6229 __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);
6230 __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);
6231 __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);
6232 __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);
6233 __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);
6234 __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);
6235 __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);
6236 __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);
6237 __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);
6238 __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);
6239 __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);
6240 __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);
6241 __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);
6242 __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);
6243 __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);
6244 __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);
6245 __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);
6246 __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);
6247 __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);
6248 __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);
6249 __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);
6250 __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);
6251 __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);
6252 __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);
6253 __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);
6254 __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);
6255 __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);
6256 __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);
6257 __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);
6258 __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);
6259 __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);
6260 __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);
6261 __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);
6262 __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);
6263 __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);
6264 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eSystem_New", "void * ecere::com::eSystem_New(uint size)", __ecereNameSpace__ecere__com__eSystem_New, module, 4);
6265 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eSystem_New0", "void * ecere::com::eSystem_New0(uint size)", __ecereNameSpace__ecere__com__eSystem_New0, module, 4);
6266 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eSystem_Delete", "void ecere::com::eSystem_Delete(void * memory)", __ecereNameSpace__ecere__com__eSystem_Delete, module, 4);
6267 __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);
6268 __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);
6269 __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);
6270 __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);
6271 __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);
6272 __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);
6273 __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);
6274 __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);
6275 __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);
6276 __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);
6277 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::LocateModule", "bool ecere::com::LocateModule(char * name, char * fileName)", __ecereNameSpace__ecere__com__LocateModule, module, 4);
6278 __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);
6279 __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);
6280 __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);
6281 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(4, "ecere::com::Platform", 0, 0, 0, 0, 0, module, 4, 1);
6282 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6283 __ecereClass___ecereNameSpace__ecere__com__Platform = class;
6284 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "OnGetString", 0, __ecereMethod___ecereNameSpace__ecere__com__Platform_OnGetString, 1);
6285 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "OnGetDataFromString", 0, __ecereMethod___ecereNameSpace__ecere__com__Platform_OnGetDataFromString, 1);
6286 __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);
6287 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "unknown", 0);
6288 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "win32", 1);
6289 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "tux", 2);
6290 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "apple", 3);
6291 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::GetRuntimePlatform", "ecere::com::Platform ecere::com::GetRuntimePlatform(void)", __ecereNameSpace__ecere__com__GetRuntimePlatform, module, 4);
6292 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::ObjectInfo", 0, sizeof(struct __ecereNameSpace__ecere__com__ObjectInfo), 0, 0, 0, module, 4, 1);
6293 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6294 __ecereClass___ecereNameSpace__ecere__com__ObjectInfo = class;
6295 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "prev", "ecere::com::ObjectInfo", 4, 4, 1);
6296 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "next", "ecere::com::ObjectInfo", 4, 4, 1);
6297 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "instance", "ecere::com::Instance", 4, 4, 1);
6298 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "name", "char *", 4, 4, 1);
6299 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "instCode", "Instantiation", 4, 4, 1);
6300 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "deleted", "bool", 4, 4, 1);
6301 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "oClass", "ecere::com::ObjectInfo", 4, 4, 1);
6302 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "instances", "ecere::sys::OldList", 20, 4, 1);
6303 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "classDefinition", "ClassDefinition", 4, 4, 1);
6304 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "modified", "bool", 4, 4, 1);
6305 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);
6306 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6307 __ecereClass___ecereNameSpace__ecere__com__DesignerBase = class;
6308 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "FindObject", "bool FindObject(ecere::com::Instance * instance, char * string)", 0, 1);
6309 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "RenameObject", "void RenameObject(ecere::com::ObjectInfo object, char * name)", 0, 1);
6310 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "SelectObjectFromDesigner", "void SelectObjectFromDesigner(ecere::com::ObjectInfo object)", 0, 1);
6311 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "CodeAddObject", "void CodeAddObject(ecere::com::Instance instance, ecere::com::ObjectInfo * object)", 0, 1);
6312 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "SheetAddObject", "void SheetAddObject(ecere::com::ObjectInfo object)", 0, 1);
6313 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "AddToolBoxClass", "void AddToolBoxClass(ecere::com::Class _class)", 0, 1);
6314 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "AddDefaultMethod", "void AddDefaultMethod(ecere::com::Instance instance, ecere::com::Instance classInstance)", 0, 1);
6315 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "DeleteObject", "void DeleteObject(ecere::com::ObjectInfo object)", 0, 1);
6316 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "ObjectContainsCode", "bool ObjectContainsCode(ecere::com::ObjectInfo object)", 0, 1);
6317 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "ModifyCode", "void ModifyCode(void)", 0, 1);
6318 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "UpdateProperties", "void UpdateProperties(void)", 0, 1);
6319 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "classDesigner", "ecere::com::ClassDesignerBase", 4, 4, 1);
6320 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "objectClass", "char *", 4, 4, 1);
6321 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "isDragging", "bool", 4, 4, 1);
6322 __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);
6323 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application)
6324 __ecereProp___ecereNameSpace__ecere__com__DesignerBase_classDesigner = __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_classDesigner, __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_classDesigner = (void *)0;
6325 __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);
6326 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application)
6327 __ecereProp___ecereNameSpace__ecere__com__DesignerBase_objectClass = __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_objectClass, __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_objectClass = (void *)0;
6328 __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);
6329 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application)
6330 __ecereProp___ecereNameSpace__ecere__com__DesignerBase_isDragging = __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_isDragging, __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_isDragging = (void *)0;
6331 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(0, "ecere::com::ClassDesignerBase", "ecere::gui::Window", 0, 0, 0, 0, module, 4, 1);
6332 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
6333 __ecereClass___ecereNameSpace__ecere__com__ClassDesignerBase = class;
6334 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "Reset", "void Reset(void)", 0, 1);
6335 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "AddObject", "void AddObject(void)", 0, 1);
6336 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "SelectObject", "void SelectObject(ecere::com::ObjectInfo object, ecere::com::Instance control)", 0, 1);
6337 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "ListToolBoxClasses", "void ListToolBoxClasses(ecere::com::DesignerBase designer)", 0, 1);
6338 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "PrepareTestObject", "void ::PrepareTestObject(ecere::com::DesignerBase designer, ecere::com::Instance test)", 0, 1);
6339 __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);
6340 __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);
6341 __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);
6342 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "DestroyObject", "void ::DestroyObject(ecere::com::Instance object)", 0, 1);
6343 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "FixProperty", "void ::FixProperty(ecere::com::Property prop, ecere::com::Instance object)", 0, 1);
6344 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "CreateNew", "void ::CreateNew(EditBox editBox, Size clientSize, char * name, char * inherit)", 0, 1);
6345 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::SetActiveDesigner", "void ecere::com::SetActiveDesigner(ecere::com::DesignerBase designer)", __ecereNameSpace__ecere__com__SetActiveDesigner, module, 4);
6346 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::GetActiveDesigner", "ecere::com::DesignerBase ecere::com::GetActiveDesigner(void)", __ecereNameSpace__ecere__com__GetActiveDesigner, module, 4);
6347 __ecereNameSpace__ecere__com__eSystem_RegisterDefine("ecere::sys::LEAD_OFFSET", "0xD800 - (0x10000 >> 10)", module, 2);
6348 __ecereNameSpace__ecere__com__eSystem_RegisterDefine("ecere::sys::SURROGATE_OFFSET", "0x10000 - (0xD800 << 10) - 0xDC00", module, 2);
6349 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::UTF8Validate", "bool ecere::sys::UTF8Validate(char * source)", __ecereNameSpace__ecere__sys__UTF8Validate, module, 4);
6350 __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);
6351 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::UTF16toUTF8", "char * ecere::sys::UTF16toUTF8(uint16 * source)", __ecereNameSpace__ecere__sys__UTF16toUTF8, module, 4);
6352 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::UTF16toUTF8Buffer", "int ecere::sys::UTF16toUTF8Buffer(uint16 * source, byte * dest, int max)", __ecereNameSpace__ecere__sys__UTF16toUTF8Buffer, module, 4);
6353 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::UTF8GetChar", "ecere::com::unichar ecere::sys::UTF8GetChar(char * string, int * numBytes)", __ecereNameSpace__ecere__sys__UTF8GetChar, module, 4);
6354 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::UTF8toUTF16Buffer", "int ecere::sys::UTF8toUTF16Buffer(char * source, uint16 * dest, int max)", __ecereNameSpace__ecere__sys__UTF8toUTF16Buffer, module, 4);
6355 __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);
6356 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::UTF8toUTF16", "uint16 * ecere::sys::UTF8toUTF16(char * source, int * wordCount)", __ecereNameSpace__ecere__sys__UTF8toUTF16, module, 4);
6357 }
6358
6359 void __ecereUnregisterModule_instance(struct __ecereNameSpace__ecere__com__Instance * module)
6360 {
6361
6362 __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_classDesigner = (void *)0;
6363 __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_objectClass = (void *)0;
6364 __ecerePropM___ecereNameSpace__ecere__com__DesignerBase_isDragging = (void *)0;
6365 }
6366