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