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