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