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