67c7b6c4bf651b2bc0fba1c6a42e152e60a512bf
[sdk] / compiler / bootstrap / libec / bootstrap / loadSymbols.c
1 #if defined(__GNUC__)
2 typedef long long int64;
3 typedef unsigned long long uint64;
4 #ifndef _WIN32
5 #define __declspec(x)
6 #endif
7 #elif defined(__TINYC__)
8 #include <stdarg.h>
9 #define __builtin_va_list va_list
10 #define __builtin_va_start va_start
11 #define __builtin_va_end va_end
12 #ifdef _WIN32
13 #define strcasecmp stricmp
14 #define strncasecmp strnicmp
15 #define __declspec(x) __attribute__((x))
16 #else
17 #define __declspec(x)
18 #endif
19 typedef long long int64;
20 typedef unsigned long long uint64;
21 #else
22 typedef __int64 int64;
23 typedef unsigned __int64 uint64;
24 #endif
25 #ifdef __BIG_ENDIAN__
26 #define __ENDIAN_PAD(x) (8 - (x))
27 #else
28 #define __ENDIAN_PAD(x) 0
29 #endif
30 #include <stdint.h>
31 #include <sys/types.h>
32
33 #if /*defined(_W64) || */(defined(__WORDSIZE) && __WORDSIZE == 8) || defined(__x86_64__)
34 #define _64BIT 1
35 #else
36 #define _64BIT 0
37 #endif
38
39 #define arch_PointerSize                  sizeof(void *)
40 #define structSize_Instance               (_64BIT ? 24 : 12)
41
42 extern void *  __ecereNameSpace__ecere__com__eSystem_New(unsigned int size);
43
44 extern void *  __ecereNameSpace__ecere__com__eSystem_New0(unsigned int size);
45
46 extern void *  __ecereNameSpace__ecere__com__eSystem_Renew(void *  memory, unsigned int size);
47
48 extern void *  __ecereNameSpace__ecere__com__eSystem_Renew0(void *  memory, unsigned int size);
49
50 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__BTNode;
51
52 struct __ecereNameSpace__ecere__sys__BTNode;
53
54 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__BinaryTree;
55
56 struct __ecereNameSpace__ecere__sys__BinaryTree
57 {
58 struct __ecereNameSpace__ecere__sys__BTNode * root;
59 int count;
60 int (*  CompareKey)(struct __ecereNameSpace__ecere__sys__BinaryTree * tree, uintptr_t a, uintptr_t b);
61 void (*  FreeKey)(void *  key);
62 } __attribute__ ((gcc_struct));
63
64 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__OldList;
65
66 struct __ecereNameSpace__ecere__sys__OldList
67 {
68 void *  first;
69 void *  last;
70 int count;
71 unsigned int offset;
72 unsigned int circ;
73 } __attribute__ ((gcc_struct));
74
75 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Method;
76
77 struct __ecereNameSpace__ecere__com__Method
78 {
79 char *  name;
80 struct __ecereNameSpace__ecere__com__Method * parent;
81 struct __ecereNameSpace__ecere__com__Method * left;
82 struct __ecereNameSpace__ecere__com__Method * right;
83 int depth;
84 int (*  function)();
85 int vid;
86 int type;
87 struct __ecereNameSpace__ecere__com__Class * _class;
88 void *  symbol;
89 char *  dataTypeString;
90 struct Type * dataType;
91 int memberAccess;
92 } __attribute__ ((gcc_struct));
93
94 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Property;
95
96 struct __ecereNameSpace__ecere__com__Property
97 {
98 struct __ecereNameSpace__ecere__com__Property * prev;
99 struct __ecereNameSpace__ecere__com__Property * next;
100 char *  name;
101 unsigned int isProperty;
102 int memberAccess;
103 int id;
104 struct __ecereNameSpace__ecere__com__Class * _class;
105 char *  dataTypeString;
106 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
107 struct Type * dataType;
108 void (*  Set)(void * , int);
109 int (*  Get)(void * );
110 unsigned int (*  IsSet)(void * );
111 void *  data;
112 void *  symbol;
113 int vid;
114 unsigned int conversion;
115 unsigned int watcherOffset;
116 char *  category;
117 unsigned int compiled;
118 unsigned int selfWatchable;
119 unsigned int isWatchable;
120 } __attribute__ ((gcc_struct));
121
122 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_CodePosition;
123
124 struct CodePosition
125 {
126 int line;
127 int charPos;
128 int pos;
129 unsigned int included;
130 } __attribute__ ((gcc_struct));
131
132 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Location;
133
134 struct Location
135 {
136 struct CodePosition start;
137 struct CodePosition end;
138 } __attribute__ ((gcc_struct));
139
140 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Attrib;
141
142 struct Attrib;
143
144 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ExtDecl;
145
146 struct ExtDecl;
147
148 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ClassDefinition;
149
150 struct ClassDefinition;
151
152 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Context;
153
154 struct Context;
155
156 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Instantiation;
157
158 struct Instantiation;
159
160 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Declaration;
161
162 struct Declaration;
163
164 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Statement;
165
166 struct Statement;
167
168 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_TypeName;
169
170 struct TypeName;
171
172 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Initializer;
173
174 struct Initializer;
175
176 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__DataValue;
177
178 struct __ecereNameSpace__ecere__com__DataValue
179 {
180 union
181 {
182 char c;
183 unsigned char uc;
184 short s;
185 unsigned short us;
186 int i;
187 unsigned int ui;
188 void *  p;
189 float f;
190 double d;
191 long long i64;
192 uint64 ui64;
193 } __attribute__ ((gcc_struct));
194 } __attribute__ ((gcc_struct));
195
196 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Expression;
197
198 struct Expression
199 {
200 struct Expression * prev;
201 struct Expression * next;
202 struct Location loc;
203 int type;
204 union
205 {
206 struct
207 {
208 char *  constant;
209 struct Identifier * identifier;
210 } __attribute__ ((gcc_struct));
211 struct Statement * compound;
212 struct Instantiation * instance;
213 char *  string;
214 struct __ecereNameSpace__ecere__sys__OldList *  list;
215 struct
216 {
217 struct __ecereNameSpace__ecere__sys__OldList * specifiers;
218 struct Declarator * decl;
219 } __attribute__ ((gcc_struct)) _classExp;
220 struct
221 {
222 struct Identifier * id;
223 } __attribute__ ((gcc_struct)) classData;
224 struct
225 {
226 struct Expression * exp;
227 struct __ecereNameSpace__ecere__sys__OldList * arguments;
228 struct Location argLoc;
229 } __attribute__ ((gcc_struct)) call;
230 struct
231 {
232 struct Expression * exp;
233 struct __ecereNameSpace__ecere__sys__OldList * index;
234 } __attribute__ ((gcc_struct)) index;
235 struct
236 {
237 struct Expression * exp;
238 struct Identifier * member;
239 int memberType;
240 unsigned int thisPtr;
241 } __attribute__ ((gcc_struct)) member;
242 struct
243 {
244 int op;
245 struct Expression * exp1;
246 struct Expression * exp2;
247 } __attribute__ ((gcc_struct)) op;
248 struct TypeName * typeName;
249 struct Specifier * _class;
250 struct
251 {
252 struct TypeName * typeName;
253 struct Expression * exp;
254 } __attribute__ ((gcc_struct)) cast;
255 struct
256 {
257 struct Expression * cond;
258 struct __ecereNameSpace__ecere__sys__OldList * exp;
259 struct Expression * elseExp;
260 } __attribute__ ((gcc_struct)) cond;
261 struct
262 {
263 struct TypeName * typeName;
264 struct Expression * size;
265 } __attribute__ ((gcc_struct)) _new;
266 struct
267 {
268 struct TypeName * typeName;
269 struct Expression * size;
270 struct Expression * exp;
271 } __attribute__ ((gcc_struct)) _renew;
272 struct
273 {
274 char * table;
275 struct Identifier * id;
276 } __attribute__ ((gcc_struct)) db;
277 struct
278 {
279 struct Expression * ds;
280 struct Expression * name;
281 } __attribute__ ((gcc_struct)) dbopen;
282 struct
283 {
284 struct TypeName * typeName;
285 struct Initializer * initializer;
286 } __attribute__ ((gcc_struct)) initializer;
287 struct
288 {
289 struct Expression * exp;
290 struct TypeName * typeName;
291 } __attribute__ ((gcc_struct)) vaArg;
292 } __attribute__ ((gcc_struct));
293 unsigned int debugValue;
294 struct __ecereNameSpace__ecere__com__DataValue val;
295 uint64 address;
296 unsigned int hasAddress;
297 struct Type * expType;
298 struct Type * destType;
299 unsigned int usage;
300 int tempCount;
301 unsigned int byReference;
302 unsigned int isConstant;
303 unsigned int addedThis;
304 unsigned int needCast;
305 unsigned int thisPtr;
306 } __attribute__ ((gcc_struct));
307
308 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_TemplateDatatype;
309
310 struct TemplateDatatype;
311
312 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_TemplateArgument;
313
314 struct TemplateArgument;
315
316 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_TemplateParameter;
317
318 struct TemplateParameter;
319
320 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Specifier;
321
322 struct Specifier;
323
324 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Identifier;
325
326 struct Identifier;
327
328 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Pointer;
329
330 struct Pointer;
331
332 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Declarator;
333
334 struct Declarator;
335
336 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_FunctionDefinition;
337
338 struct FunctionDefinition;
339
340 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_DBTableDef;
341
342 struct DBTableDef;
343
344 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_External;
345
346 struct External;
347
348 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ModuleImport;
349
350 struct ModuleImport;
351
352 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ClassImport;
353
354 struct ClassImport;
355
356 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Symbol;
357
358 struct Symbol
359 {
360 char *  string;
361 struct Symbol * parent;
362 struct Symbol * left;
363 struct Symbol * right;
364 int depth;
365 struct Type * type;
366 union
367 {
368 struct __ecereNameSpace__ecere__com__Method * method;
369 struct __ecereNameSpace__ecere__com__Property * _property;
370 struct __ecereNameSpace__ecere__com__Class * registered;
371 } __attribute__ ((gcc_struct));
372 int id;
373 int idCode;
374 union
375 {
376 struct
377 {
378 struct External * pointerExternal;
379 struct External * structExternal;
380 } __attribute__ ((gcc_struct));
381 struct
382 {
383 struct External * externalGet;
384 struct External * externalSet;
385 struct External * externalPtr;
386 struct External * externalIsSet;
387 } __attribute__ ((gcc_struct));
388 struct
389 {
390 struct External * methodExternal;
391 struct External * methodCodeExternal;
392 } __attribute__ ((gcc_struct));
393 } __attribute__ ((gcc_struct));
394 unsigned int imported;
395 unsigned int declaredStructSym;
396 struct __ecereNameSpace__ecere__com__Class * _class;
397 unsigned int declaredStruct;
398 unsigned int needConstructor;
399 unsigned int needDestructor;
400 char *  constructorName;
401 char *  structName;
402 char *  className;
403 char *  destructorName;
404 struct ModuleImport * module;
405 struct ClassImport * _import;
406 struct Location nameLoc;
407 unsigned int isParam;
408 unsigned int isRemote;
409 unsigned int isStruct;
410 unsigned int fireWatchersDone;
411 int declaring;
412 unsigned int classData;
413 unsigned int isStatic;
414 char *  shortName;
415 struct __ecereNameSpace__ecere__sys__OldList *  templateParams;
416 struct __ecereNameSpace__ecere__sys__OldList templatedClasses;
417 struct Context * ctx;
418 int isIterator;
419 struct Expression * propCategory;
420 } __attribute__ ((gcc_struct));
421
422 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Type;
423
424 struct Type;
425
426 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Class;
427
428 struct __ecereNameSpace__ecere__com__Class
429 {
430 struct __ecereNameSpace__ecere__com__Class * prev;
431 struct __ecereNameSpace__ecere__com__Class * next;
432 char *  name;
433 int offset;
434 int structSize;
435 int (* *  _vTbl)();
436 int vTblSize;
437 int (*  Constructor)(struct __ecereNameSpace__ecere__com__Instance *);
438 void (*  Destructor)(struct __ecereNameSpace__ecere__com__Instance *);
439 int offsetClass;
440 int sizeClass;
441 struct __ecereNameSpace__ecere__com__Class * base;
442 struct __ecereNameSpace__ecere__sys__BinaryTree methods;
443 struct __ecereNameSpace__ecere__sys__BinaryTree members;
444 struct __ecereNameSpace__ecere__sys__BinaryTree prop;
445 struct __ecereNameSpace__ecere__sys__OldList membersAndProperties;
446 struct __ecereNameSpace__ecere__sys__BinaryTree classProperties;
447 struct __ecereNameSpace__ecere__sys__OldList derivatives;
448 int memberID;
449 int startMemberID;
450 int type;
451 struct __ecereNameSpace__ecere__com__Instance * module;
452 struct __ecereNameSpace__ecere__com__NameSpace *  nameSpace;
453 char *  dataTypeString;
454 struct Type * dataType;
455 int typeSize;
456 int defaultAlignment;
457 void (*  Initialize)();
458 int memberOffset;
459 struct __ecereNameSpace__ecere__sys__OldList selfWatchers;
460 char *  designerClass;
461 unsigned int noExpansion;
462 char *  defaultProperty;
463 unsigned int comRedefinition;
464 int count;
465 unsigned int isRemote;
466 unsigned int internalDecl;
467 void *  data;
468 unsigned int computeSize;
469 int structAlignment;
470 int destructionWatchOffset;
471 unsigned int fixed;
472 struct __ecereNameSpace__ecere__sys__OldList delayedCPValues;
473 int inheritanceAccess;
474 char *  fullName;
475 void *  symbol;
476 struct __ecereNameSpace__ecere__sys__OldList conversions;
477 struct __ecereNameSpace__ecere__sys__OldList templateParams;
478 struct __ecereNameSpace__ecere__com__ClassTemplateArgument *  templateArgs;
479 struct __ecereNameSpace__ecere__com__Class * templateClass;
480 struct __ecereNameSpace__ecere__sys__OldList templatized;
481 int numParams;
482 } __attribute__ ((gcc_struct));
483
484 extern long long __ecereNameSpace__ecere__com__eClass_GetProperty(struct __ecereNameSpace__ecere__com__Class * _class, char *  name);
485
486 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Instance;
487
488 struct __ecereNameSpace__ecere__com__Instance
489 {
490 int (* *  _vTbl)();
491 struct __ecereNameSpace__ecere__com__Class * _class;
492 int _refCount;
493 } __attribute__ ((gcc_struct));
494
495 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__DataMember;
496
497 struct __ecereNameSpace__ecere__com__DataMember
498 {
499 struct __ecereNameSpace__ecere__com__DataMember * prev;
500 struct __ecereNameSpace__ecere__com__DataMember * next;
501 char *  name;
502 unsigned int isProperty;
503 int memberAccess;
504 int id;
505 struct __ecereNameSpace__ecere__com__Class * _class;
506 char *  dataTypeString;
507 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
508 struct Type * dataType;
509 int type;
510 int offset;
511 int memberID;
512 struct __ecereNameSpace__ecere__sys__OldList members;
513 struct __ecereNameSpace__ecere__sys__BinaryTree membersAlpha;
514 int memberOffset;
515 int structAlignment;
516 } __attribute__ ((gcc_struct));
517
518 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__SerialBuffer;
519
520 struct __ecereNameSpace__ecere__com__SerialBuffer
521 {
522 unsigned char *  _buffer;
523 unsigned int count;
524 unsigned int _size;
525 unsigned int pos;
526 } __attribute__ ((gcc_struct));
527
528 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__ClassTemplateArgument;
529
530 struct __ecereNameSpace__ecere__com__ClassTemplateArgument
531 {
532 union
533 {
534 struct
535 {
536 char *  dataTypeString;
537 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
538 } __attribute__ ((gcc_struct));
539 struct __ecereNameSpace__ecere__com__DataValue expression;
540 struct
541 {
542 char *  memberString;
543 union
544 {
545 struct __ecereNameSpace__ecere__com__DataMember * member;
546 struct __ecereNameSpace__ecere__com__Property * prop;
547 struct __ecereNameSpace__ecere__com__Method * method;
548 } __attribute__ ((gcc_struct));
549 } __attribute__ ((gcc_struct));
550 } __attribute__ ((gcc_struct));
551 } __attribute__ ((gcc_struct));
552
553 extern int yychar;
554
555 struct __ecereNameSpace__ecere__com__NameSpace * globalData;
556
557 void SetGlobalData(struct __ecereNameSpace__ecere__com__NameSpace * nameSpace)
558 {
559 globalData = nameSpace;
560 }
561
562 struct __ecereNameSpace__ecere__sys__OldList dataRedefinitions;
563
564 extern char sourceFileStack[30][797];
565
566 extern int include_stack_ptr;
567
568 static int numIncludes;
569
570 static char ** includes;
571
572 unsigned int inIDE = 0x0;
573
574 void SetInIDE(unsigned int b)
575 {
576 inIDE = b;
577 }
578
579 struct __ecereNameSpace__ecere__com__Instance * sourceDirs;
580
581 void SetSourceDirs(struct __ecereNameSpace__ecere__com__Instance * list)
582 {
583 sourceDirs = list;
584 }
585
586 struct __ecereNameSpace__ecere__sys__OldList * includeDirs, * sysIncludeDirs;
587
588 void SetIncludeDirs(struct __ecereNameSpace__ecere__sys__OldList * list)
589 {
590 includeDirs = list;
591 }
592
593 void SetSysIncludeDirs(struct __ecereNameSpace__ecere__sys__OldList * list)
594 {
595 sysIncludeDirs = list;
596 }
597
598 unsigned int ecereImported;
599
600 void SetEcereImported(unsigned int b)
601 {
602 ecereImported = b;
603 }
604
605 unsigned int GetEcereImported()
606 {
607 return ecereImported;
608 }
609
610 unsigned int inPreCompiler = 0x0;
611
612 void SetInPreCompiler(unsigned int b)
613 {
614 inPreCompiler = b;
615 }
616
617 unsigned int inSymbolGen = 0x0;
618
619 void SetInSymbolGen(unsigned int b)
620 {
621 inSymbolGen = b;
622 }
623
624 struct __ecereNameSpace__ecere__sys__OldList * precompDefines;
625
626 void SetPrecompDefines(struct __ecereNameSpace__ecere__sys__OldList * list)
627 {
628 precompDefines = list;
629 }
630
631 unsigned int DummyMethod()
632 {
633 return 0x1;
634 }
635
636 extern char *  __ecereNameSpace__ecere__sys__TrimLSpaces(char *  string, char *  output);
637
638 extern int strcmp(const char * , const char * );
639
640 extern int strtol(char * , char * * , int base);
641
642 extern 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);
643
644 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__BitMember;
645
646 struct __ecereNameSpace__ecere__com__BitMember
647 {
648 struct __ecereNameSpace__ecere__com__BitMember * prev;
649 struct __ecereNameSpace__ecere__com__BitMember * next;
650 char *  name;
651 unsigned int isProperty;
652 int memberAccess;
653 int id;
654 struct __ecereNameSpace__ecere__com__Class * _class;
655 char *  dataTypeString;
656 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
657 struct Type * dataType;
658 int type;
659 int size;
660 int pos;
661 uint64 mask;
662 } __attribute__ ((gcc_struct));
663
664 extern 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);
665
666 extern 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);
667
668 extern struct __ecereNameSpace__ecere__com__DataMember * __ecereNameSpace__ecere__com__eMember_New(int type, int declMode);
669
670 extern unsigned int __ecereNameSpace__ecere__com__eMember_AddMember(struct __ecereNameSpace__ecere__com__DataMember * addTo, struct __ecereNameSpace__ecere__com__DataMember * dataMember);
671
672 extern unsigned int __ecereNameSpace__ecere__com__eClass_AddMember(struct __ecereNameSpace__ecere__com__Class * _class, struct __ecereNameSpace__ecere__com__DataMember * dataMember);
673
674 extern char *  strcpy(char * , const char * );
675
676 unsigned int __ecereMethod___ecereNameSpace__ecere__sys__File_GetLine(struct __ecereNameSpace__ecere__com__Instance * this, char *  s, int max);
677
678 static void ReadDataMembers(struct __ecereNameSpace__ecere__com__Class * regClass, struct __ecereNameSpace__ecere__com__DataMember * member, struct __ecereNameSpace__ecere__com__Instance * f)
679 {
680 char line[1024];
681 char name[1024];
682 int size = 0, bitPos = -1;
683 int memberAccess = 1;
684
685 for(; ; )
686 {
687 if(!__ecereMethod___ecereNameSpace__ecere__sys__File_GetLine(f, line, sizeof line))
688 break;
689 __ecereNameSpace__ecere__sys__TrimLSpaces(line, line);
690 if(!strcmp(line, "."))
691 break;
692 if(line[0] == '[')
693 {
694 if(!strcmp(line, "[Size]"))
695 {
696 __ecereMethod___ecereNameSpace__ecere__sys__File_GetLine(f, line, sizeof line);
697 __ecereNameSpace__ecere__sys__TrimLSpaces(line, line);
698 size = strtol(line, (((void *)0)), 0);
699 }
700 else if(!strcmp(line, "[Pos]"))
701 {
702 __ecereMethod___ecereNameSpace__ecere__sys__File_GetLine(f, line, sizeof line);
703 __ecereNameSpace__ecere__sys__TrimLSpaces(line, line);
704 bitPos = strtol(line, (((void *)0)), 0);
705 }
706 else if(!strcmp(line, "[Public]"))
707 memberAccess = 1;
708 else if(!strcmp(line, "[Private]"))
709 memberAccess = 2;
710 else if(!strcmp(line, "[Type]"))
711 {
712 __ecereMethod___ecereNameSpace__ecere__sys__File_GetLine(f, line, sizeof line);
713 __ecereNameSpace__ecere__sys__TrimLSpaces(line, line);
714 if(member)
715 {
716 if(!__ecereNameSpace__ecere__com__eMember_AddDataMember(member, name, line[0] ? line : 0, 0, 0, memberAccess))
717 ;
718 }
719 else if(regClass && regClass->type == 2)
720 {
721 struct __ecereNameSpace__ecere__com__BitMember * member = __ecereNameSpace__ecere__com__eClass_AddBitMember(regClass, name, line[0] ? line : 0, 0, 0, memberAccess);
722
723 member->size = size;
724 member->pos = bitPos;
725 }
726 else if(regClass)
727 {
728 if(!__ecereNameSpace__ecere__com__eClass_AddDataMember(regClass, name, line[0] ? line : 0, 0, 0, memberAccess))
729 ;
730 }
731 }
732 else if(!strcmp(line, "[Struct]") || !strcmp(line, "[Union]"))
733 {
734 struct __ecereNameSpace__ecere__com__DataMember * dataMember = (regClass || member) ? __ecereNameSpace__ecere__com__eMember_New((!strcmp(line, "[Union]")) ? 1 : 2, memberAccess) : (((void *)0));
735
736 ReadDataMembers((((void *)0)), dataMember, f);
737 if(member)
738 {
739 if(!__ecereNameSpace__ecere__com__eMember_AddMember(member, dataMember))
740 ;
741 }
742 else if(regClass)
743 {
744 if(!__ecereNameSpace__ecere__com__eClass_AddMember(regClass, dataMember))
745 ;
746 }
747 }
748 }
749 else
750 {
751 size = 0;
752 bitPos = -1;
753 strcpy(name, line);
754 memberAccess = 1;
755 }
756 }
757 }
758
759 extern struct __ecereNameSpace__ecere__com__Instance * __ecereNameSpace__ecere__sys__FileOpenBuffered(char *  fileName, int mode);
760
761 extern char *  __ecereNameSpace__ecere__sys__GetLastDirectory(char *  string, char *  output);
762
763 extern int strcasecmp(const char * , const char * );
764
765 extern struct Symbol * DeclClass(int symbolID, char *  name);
766
767 extern struct __ecereNameSpace__ecere__com__Class * __ecereNameSpace__ecere__com__eSystem_FindClass(struct __ecereNameSpace__ecere__com__Instance * module, char *  name);
768
769 extern struct __ecereNameSpace__ecere__com__Instance * privateModule;
770
771 extern struct Symbol * FindClass(char *  name);
772
773 extern char *  sourceFile;
774
775 extern char *  strstr(const char * , const char * );
776
777 extern struct __ecereNameSpace__ecere__com__Class * __ecereNameSpace__ecere__com__eSystem_RegisterClass(int type, char *  name, char *  baseName, int size, int sizeClass, unsigned int (* )(void * ), void (* )(void * ), struct __ecereNameSpace__ecere__com__Instance * module, int declMode, int inheritanceAccess);
778
779 extern char *  strcat(char * , const char * );
780
781 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__OldLink;
782
783 struct __ecereNameSpace__ecere__sys__OldLink
784 {
785 struct __ecereNameSpace__ecere__sys__OldLink * prev;
786 struct __ecereNameSpace__ecere__sys__OldLink * next;
787 void *  data;
788 } __attribute__ ((gcc_struct));
789
790 extern void __ecereNameSpace__ecere__com__eClass_DestructionWatchable(struct __ecereNameSpace__ecere__com__Class * _class);
791
792 extern struct ModuleImport * FindModule(struct __ecereNameSpace__ecere__com__Instance * moduleToFind);
793
794 extern struct ModuleImport * mainModule;
795
796 extern char *  strchr(const char * , int);
797
798 extern void *  memcpy(void * , const void * , size_t size);
799
800 extern char *  __ecereNameSpace__ecere__sys__TrimRSpaces(char *  string, char *  output);
801
802 extern void __ecereNameSpace__ecere__com__eEnum_AddFixedValue(struct __ecereNameSpace__ecere__com__Class * _class, char *  string, int value);
803
804 extern int atoi(const char * );
805
806 extern int __ecereNameSpace__ecere__com__eEnum_AddValue(struct __ecereNameSpace__ecere__com__Class * _class, char *  string);
807
808 extern struct __ecereNameSpace__ecere__com__Method * __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(struct __ecereNameSpace__ecere__com__Class * _class, char *  name, char *  type, void *  function, int declMode);
809
810 extern struct __ecereNameSpace__ecere__com__Method * __ecereNameSpace__ecere__com__eClass_AddMethod(struct __ecereNameSpace__ecere__com__Class * _class, char *  name, char *  type, void *  function, int declMode);
811
812 extern 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);
813
814 extern void __ecereNameSpace__ecere__com__eProperty_Watchable(struct __ecereNameSpace__ecere__com__Property * _property);
815
816 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__ClassProperty;
817
818 struct __ecereNameSpace__ecere__com__ClassProperty;
819
820 extern struct __ecereNameSpace__ecere__com__ClassProperty * __ecereNameSpace__ecere__com__eClass_AddClassProperty(struct __ecereNameSpace__ecere__com__Class * _class, char *  name, char *  dataType, void *  setStmt, void *  getStmt);
821
822 extern char *  __ecereNameSpace__ecere__sys__CopyString(char *  string);
823
824 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_OpTable;
825
826 struct OpTable
827 {
828 unsigned int (*  Add)(struct Expression *, struct Operand *, struct Operand *);
829 unsigned int (*  Sub)(struct Expression *, struct Operand *, struct Operand *);
830 unsigned int (*  Mul)(struct Expression *, struct Operand *, struct Operand *);
831 unsigned int (*  Div)(struct Expression *, struct Operand *, struct Operand *);
832 unsigned int (*  Mod)(struct Expression *, struct Operand *, struct Operand *);
833 unsigned int (*  Neg)(struct Expression *, struct Operand *);
834 unsigned int (*  Inc)(struct Expression *, struct Operand *);
835 unsigned int (*  Dec)(struct Expression *, struct Operand *);
836 unsigned int (*  Asign)(struct Expression *, struct Operand *, struct Operand *);
837 unsigned int (*  AddAsign)(struct Expression *, struct Operand *, struct Operand *);
838 unsigned int (*  SubAsign)(struct Expression *, struct Operand *, struct Operand *);
839 unsigned int (*  MulAsign)(struct Expression *, struct Operand *, struct Operand *);
840 unsigned int (*  DivAsign)(struct Expression *, struct Operand *, struct Operand *);
841 unsigned int (*  ModAsign)(struct Expression *, struct Operand *, struct Operand *);
842 unsigned int (*  BitAnd)(struct Expression *, struct Operand *, struct Operand *);
843 unsigned int (*  BitOr)(struct Expression *, struct Operand *, struct Operand *);
844 unsigned int (*  BitXor)(struct Expression *, struct Operand *, struct Operand *);
845 unsigned int (*  LShift)(struct Expression *, struct Operand *, struct Operand *);
846 unsigned int (*  RShift)(struct Expression *, struct Operand *, struct Operand *);
847 unsigned int (*  BitNot)(struct Expression *, struct Operand *);
848 unsigned int (*  AndAsign)(struct Expression *, struct Operand *, struct Operand *);
849 unsigned int (*  OrAsign)(struct Expression *, struct Operand *, struct Operand *);
850 unsigned int (*  XorAsign)(struct Expression *, struct Operand *, struct Operand *);
851 unsigned int (*  LShiftAsign)(struct Expression *, struct Operand *, struct Operand *);
852 unsigned int (*  RShiftAsign)(struct Expression *, struct Operand *, struct Operand *);
853 unsigned int (*  Not)(struct Expression *, struct Operand *);
854 unsigned int (*  Equ)(struct Expression *, struct Operand *, struct Operand *);
855 unsigned int (*  Nqu)(struct Expression *, struct Operand *, struct Operand *);
856 unsigned int (*  And)(struct Expression *, struct Operand *, struct Operand *);
857 unsigned int (*  Or)(struct Expression *, struct Operand *, struct Operand *);
858 unsigned int (*  Grt)(struct Expression *, struct Operand *, struct Operand *);
859 unsigned int (*  Sma)(struct Expression *, struct Operand *, struct Operand *);
860 unsigned int (*  GrtEqu)(struct Expression *, struct Operand *, struct Operand *);
861 unsigned int (*  SmaEqu)(struct Expression *, struct Operand *, struct Operand *);
862 unsigned int (*  Cond)(struct Expression *, struct Operand *, struct Operand *, struct Operand *);
863 } __attribute__ ((gcc_struct));
864
865 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Operand;
866
867 struct Operand
868 {
869 int kind;
870 struct Type * type;
871 unsigned int ptrSize;
872 union
873 {
874 char c;
875 unsigned char uc;
876 short s;
877 unsigned short us;
878 int i;
879 unsigned int ui;
880 float f;
881 double d;
882 long long i64;
883 uint64 ui64;
884 } __attribute__ ((gcc_struct));
885 struct OpTable ops;
886 } __attribute__ ((gcc_struct));
887
888 extern struct Location yylloc;
889
890 extern struct __ecereNameSpace__ecere__com__Instance * fileInput;
891
892 extern int declMode;
893
894 extern void resetScanner();
895
896 extern struct Expression * ParseExpressionString(char *  expression);
897
898 extern struct Type * ProcessTypeString(char *  string, unsigned int staticMethod);
899
900 extern void ProcessExpressionType(struct Expression * exp);
901
902 extern void ComputeExpression(struct Expression * exp);
903
904 extern struct Operand GetOperand(struct Expression * exp);
905
906 extern void FreeExpression(struct Expression * exp);
907
908 extern void resetScannerPos(struct CodePosition * pos);
909
910 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__ClassTemplateParameter;
911
912 struct __ecereNameSpace__ecere__com__ClassTemplateParameter;
913
914 extern 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);
915
916 extern void __ecereNameSpace__ecere__com__eClass_DoneAddingTemplateParameters(struct __ecereNameSpace__ecere__com__Class * base);
917
918 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__DefinedExpression;
919
920 struct __ecereNameSpace__ecere__com__DefinedExpression;
921
922 extern struct __ecereNameSpace__ecere__com__DefinedExpression * __ecereNameSpace__ecere__com__eSystem_RegisterDefine(char *  name, char *  value, struct __ecereNameSpace__ecere__com__Instance * module, int declMode);
923
924 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__GlobalFunction;
925
926 struct __ecereNameSpace__ecere__com__GlobalFunction;
927
928 extern struct __ecereNameSpace__ecere__com__GlobalFunction * __ecereNameSpace__ecere__com__eSystem_RegisterFunction(char *  name, char *  type, void *  func, struct __ecereNameSpace__ecere__com__Instance * module, int declMode);
929
930 extern char *  strncpy(char * , const char * , size_t n);
931
932 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__NameSpace;
933
934 struct __ecereNameSpace__ecere__com__NameSpace
935 {
936 char *  name;
937 struct __ecereNameSpace__ecere__com__NameSpace *  btParent;
938 struct __ecereNameSpace__ecere__com__NameSpace *  left;
939 struct __ecereNameSpace__ecere__com__NameSpace *  right;
940 int depth;
941 struct __ecereNameSpace__ecere__com__NameSpace *  parent;
942 struct __ecereNameSpace__ecere__sys__BinaryTree nameSpaces;
943 struct __ecereNameSpace__ecere__sys__BinaryTree classes;
944 struct __ecereNameSpace__ecere__sys__BinaryTree defines;
945 struct __ecereNameSpace__ecere__sys__BinaryTree functions;
946 } __attribute__ ((gcc_struct));
947
948 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_GlobalData;
949
950 struct GlobalData
951 {
952 uintptr_t key;
953 struct __ecereNameSpace__ecere__sys__BTNode * parent;
954 struct __ecereNameSpace__ecere__sys__BTNode * left;
955 struct __ecereNameSpace__ecere__sys__BTNode * right;
956 int depth;
957 struct __ecereNameSpace__ecere__com__Instance * module;
958 char *  dataTypeString;
959 struct Type * dataType;
960 void *  symbol;
961 char *  fullName;
962 } __attribute__ ((gcc_struct));
963
964 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_DataRedefinition;
965
966 struct DataRedefinition
967 {
968 struct DataRedefinition * prev;
969 struct DataRedefinition * next;
970 char name[1024];
971 char type1[1024];
972 char type2[1024];
973 } __attribute__ ((gcc_struct));
974
975 void ImportModule(char *  name, int importType, int importAccess, unsigned int loadDllOnly);
976
977 extern void Compiler_Error(char *  format, ...);
978
979 extern char *  __ecereNameSpace__ecere__GetTranslatedString(struct __ecereNameSpace__ecere__com__Instance * module, char *  string, char *  stringAndContext);
980
981 extern struct __ecereNameSpace__ecere__com__Instance * __thisModule;
982
983 extern void *  __ecereNameSpace__ecere__com__eInstance_New(struct __ecereNameSpace__ecere__com__Class * _class);
984
985 int __ecereVMethodID___ecereNameSpace__ecere__sys__File_Eof;
986
987 int __ecereVMethodID___ecereNameSpace__ecere__sys__File_Seek;
988
989 struct __ecereNameSpace__ecere__sys__BTNode * __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(struct __ecereNameSpace__ecere__sys__BinaryTree * this, char *  key);
990
991 int __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString(struct __ecereNameSpace__ecere__sys__BinaryTree * this, char *  a, char *  b);
992
993 unsigned int __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(struct __ecereNameSpace__ecere__sys__BinaryTree * this, struct __ecereNameSpace__ecere__sys__BTNode * node);
994
995 void __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(struct __ecereNameSpace__ecere__sys__OldList * this, void *  item);
996
997 extern void __ecereNameSpace__ecere__com__eInstance_DecRef(struct __ecereNameSpace__ecere__com__Instance * instance);
998
999 unsigned int LoadSymbols(char * fileName, int importType, unsigned int loadDllOnly)
1000 {
1001 void * __ecereTemp1;
1002 struct __ecereNameSpace__ecere__com__Instance * f = __ecereNameSpace__ecere__sys__FileOpenBuffered(fileName, 1);
1003 unsigned int globalInstance = 0x0;
1004
1005 if(f)
1006 {
1007 unsigned int ecereCOMModule = 0x0;
1008 char moduleName[797];
1009
1010 __ecereNameSpace__ecere__sys__GetLastDirectory(fileName, moduleName);
1011 if(!((strcasecmp)(moduleName, "instance.sym") && (strcasecmp)(moduleName, "BinaryTree.sym") && (strcasecmp)(moduleName, "dataTypes.sym") && (strcasecmp)(moduleName, "OldList.sym") && (strcasecmp)(moduleName, "String.sym") && (strcasecmp)(moduleName, "BTNode.sym") && (strcasecmp)(moduleName, "Array.sym") && (strcasecmp)(moduleName, "AVLTree.sym") && (strcasecmp)(moduleName, "BuiltInContainer.sym") && (strcasecmp)(moduleName, "Container.sym") && (strcasecmp)(moduleName, "CustomAVLTree.sym") && (strcasecmp)(moduleName, "LinkList.sym") && (strcasecmp)(moduleName, "List.sym") && (strcasecmp)(moduleName, "Map.sym") && (strcasecmp)(moduleName, "Mutex.sym")))
1012 ecereCOMModule = 0x1;
1013 for(; ; )
1014 {
1015 char line[1024];
1016
1017 if(!__ecereMethod___ecereNameSpace__ecere__sys__File_GetLine(f, line, sizeof line))
1018 break;
1019 __ecereNameSpace__ecere__sys__TrimLSpaces(line, line);
1020 if(line[0] == '[')
1021 {
1022 if(!strcmp(line, "[Global Instance]"))
1023 globalInstance = 0x1;
1024 else if(!strcmp(line, "[Defined Classes]"))
1025 {
1026 struct __ecereNameSpace__ecere__com__Class * regClass = (((void *)0));
1027 char name[1024];
1028 unsigned int isRemote = 0x0;
1029 unsigned int isStatic = 0x0;
1030 unsigned int isWatchable = 0x0;
1031 int classType = 0;
1032 unsigned int fixed = 0x0;
1033 unsigned int noExpansion = 0x0;
1034 int inheritanceAccess = 1;
1035
1036 for(; ; )
1037 {
1038 if(!__ecereMethod___ecereNameSpace__ecere__sys__File_GetLine(f, line, sizeof line))
1039 break;
1040 __ecereNameSpace__ecere__sys__TrimLSpaces(line, line);
1041 if(!strcmp(line, "."))
1042 break;
1043 if(line[0] == '[')
1044 {
1045 if(!strcmp(line, "[Remote]"))
1046 isRemote = 0x1;
1047 else if(!strcmp(line, "[Static]"))
1048 isStatic = 0x1;
1049 else if(!strcmp(line, "[Fixed]"))
1050 fixed = 0x1;
1051 else if(!strcmp(line, "[No Expansion]"))
1052 noExpansion = 0x1;
1053 else if(!strcmp(line, "[Watchable]"))
1054 isWatchable = 0x1;
1055 else if(!strcmp(line, "[Enum]"))
1056 classType = 4;
1057 else if(!strcmp(line, "[Bit]"))
1058 classType = 2;
1059 else if(!strcmp(line, "[Struct]"))
1060 classType = 1;
1061 else if(!strcmp(line, "[Unit]"))
1062 classType = 3;
1063 else if(!strcmp(line, "[NoHead]"))
1064 classType = 5;
1065 else if(!strcmp(line, "[Base]") || !strcmp(line, "[Private Base]"))
1066 {
1067 if(!strcmp(line, "[Private Base]"))
1068 inheritanceAccess = 2;
1069 __ecereMethod___ecereNameSpace__ecere__sys__File_GetLine(f, line, sizeof line);
1070 __ecereNameSpace__ecere__sys__TrimLSpaces(line, line);
1071 if(importType == 3)
1072 DeclClass(0, name);
1073 if(isStatic || loadDllOnly || importType == 3 || importType == 4)
1074 regClass = (((void *)0));
1075 else if(regClass = __ecereNameSpace__ecere__com__eSystem_FindClass(privateModule, name), !regClass || regClass->internalDecl || regClass->isRemote)
1076 {
1077 struct Symbol * existingClass = FindClass(name);
1078 char * baseName = (classType == 0 && importType == 2 && isRemote) ? "DCOMClientObject" : (!strcmp(line, "[None]") ? (((void *)0)) : line);
1079
1080 if(!isRemote || (importType != 2) || (!sourceFile || !strstr(sourceFile, ".main.ec")))
1081 {
1082 if(!regClass || regClass->internalDecl)
1083 regClass = __ecereNameSpace__ecere__com__eSystem_RegisterClass(classType, name, isRemote ? (((void *)0)) : baseName, 0, 0, (((void *)0)), (((void *)0)), privateModule, ecereCOMModule ? 4 : 1, inheritanceAccess);
1084 if(regClass && isRemote)
1085 regClass->isRemote = (importType == 2) ? (unsigned int)1 : (unsigned int)2;
1086 if(isRemote)
1087 {
1088 if(importType == 2)
1089 {
1090 char className[1024] = "DCOMClient_";
1091
1092 strcat(className, name);
1093 if(!existingClass)
1094 existingClass = DeclClass(0, name);
1095 regClass = __ecereNameSpace__ecere__com__eSystem_RegisterClass(classType, className, baseName, 0, 0, (((void *)0)), (((void *)0)), privateModule, ecereCOMModule ? 4 : 1, inheritanceAccess);
1096 }
1097 if(regClass)
1098 regClass->isRemote = (importType == 2) ? (unsigned int)1 : (unsigned int)3;
1099 }
1100 if(existingClass)
1101 {
1102 struct __ecereNameSpace__ecere__sys__OldLink * link;
1103
1104 for(link = existingClass->templatedClasses.first; link; link = link->next)
1105 {
1106 struct Symbol * symbol = link->data;
1107
1108 symbol->registered = __ecereNameSpace__ecere__com__eSystem_FindClass(privateModule, symbol->string);
1109 }
1110 }
1111 if(fixed)
1112 regClass->fixed = 0x1;
1113 if(noExpansion)
1114 regClass->noExpansion = 0x1;
1115 if(isWatchable)
1116 {
1117 __ecereNameSpace__ecere__com__eClass_DestructionWatchable(regClass);
1118 regClass->structSize = regClass->offset;
1119 }
1120 if(regClass && existingClass)
1121 {
1122 existingClass->registered = regClass;
1123 regClass->symbol = existingClass;
1124 existingClass->id = (((int)0x7fffffff));
1125 existingClass->idCode = (((int)0x7fffffff));
1126 existingClass->imported = 0x1;
1127 if(regClass->module)
1128 existingClass->module = FindModule(regClass->module);
1129 else
1130 existingClass->module = mainModule;
1131 }
1132 }
1133 else
1134 regClass = (((void *)0));
1135 }
1136 else
1137 regClass = (((void *)0));
1138 isRemote = 0x0;
1139 isWatchable = 0x0;
1140 fixed = 0x0;
1141 isStatic = 0x0;
1142 }
1143 else if(!strcmp(line, "[Enum Values]"))
1144 {
1145 for(; ; )
1146 {
1147 char * equal;
1148
1149 if(!__ecereMethod___ecereNameSpace__ecere__sys__File_GetLine(f, line, sizeof line))
1150 break;
1151 __ecereNameSpace__ecere__sys__TrimLSpaces(line, line);
1152 if(!strcmp(line, "."))
1153 break;
1154 if(regClass)
1155 {
1156 equal = strchr(line, '=');
1157 if(equal)
1158 {
1159 char name[1024];
1160
1161 memcpy(name, line, (int)(equal - line));
1162 name[equal - line] = '\0';
1163 __ecereNameSpace__ecere__sys__TrimLSpaces(name, name);
1164 __ecereNameSpace__ecere__sys__TrimRSpaces(name, name);
1165 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(regClass, name, atoi(equal + 1));
1166 }
1167 else
1168 {
1169 __ecereNameSpace__ecere__com__eEnum_AddValue(regClass, line);
1170 }
1171 }
1172 }
1173 }
1174 else if(!strcmp(line, "[Defined Methods]"))
1175 {
1176 char name[1024];
1177 unsigned int isVirtual = 0x0;
1178 int memberAccess = 1;
1179
1180 for(; ; )
1181 {
1182 if(!__ecereMethod___ecereNameSpace__ecere__sys__File_GetLine(f, line, sizeof line))
1183 break;
1184 __ecereNameSpace__ecere__sys__TrimLSpaces(line, line);
1185 if(!strcmp(line, "."))
1186 break;
1187 if(line[0] == '[')
1188 {
1189 if(!strcmp(line, "[Type]"))
1190 {
1191 __ecereMethod___ecereNameSpace__ecere__sys__File_GetLine(f, line, sizeof line);
1192 if(regClass)
1193 {
1194 __ecereNameSpace__ecere__sys__TrimLSpaces(line, line);
1195 if(isVirtual)
1196 __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(regClass, name, line[0] ? line : 0, DummyMethod, memberAccess);
1197 else
1198 __ecereNameSpace__ecere__com__eClass_AddMethod(regClass, name, line[0] ? line : 0, DummyMethod, memberAccess);
1199 }
1200 }
1201 else if(!strcmp(line, "[Virtual]"))
1202 isVirtual = 0x1;
1203 else if(!strcmp(line, "[Public]"))
1204 memberAccess = 1;
1205 else if(!strcmp(line, "[Private]"))
1206 memberAccess = 2;
1207 }
1208 else
1209 {
1210 strcpy(name, line);
1211 isVirtual = 0x0;
1212 memberAccess = 1;
1213 }
1214 }
1215 }
1216 else if(!strcmp(line, "[Defined Properties]"))
1217 {
1218 char name[1024];
1219 unsigned int setStmt = 0x0, getStmt = 0x0, isVirtual = 0x0, conversion = 0x0;
1220 unsigned int isWatchable = 0x0;
1221 int memberAccess = 1;
1222
1223 for(; ; )
1224 {
1225 if(!__ecereMethod___ecereNameSpace__ecere__sys__File_GetLine(f, line, sizeof line))
1226 break;
1227 __ecereNameSpace__ecere__sys__TrimLSpaces(line, line);
1228 if(!strcmp(line, "."))
1229 break;
1230 if(line[0] == '[')
1231 {
1232 if(!strcmp(line, "[Type]"))
1233 {
1234 __ecereMethod___ecereNameSpace__ecere__sys__File_GetLine(f, line, sizeof line);
1235 __ecereNameSpace__ecere__sys__TrimLSpaces(line, line);
1236 if(regClass)
1237 {
1238 struct __ecereNameSpace__ecere__com__Property * prop = __ecereNameSpace__ecere__com__eClass_AddProperty(regClass, conversion ? (((void *)0)) : name, line[0] ? line : 0, (void *)(unsigned int)setStmt, (void *)(unsigned int)getStmt, memberAccess);
1239
1240 if(prop)
1241 {
1242 prop->compiled = 0x0;
1243 if(isWatchable)
1244 {
1245 __ecereNameSpace__ecere__com__eProperty_Watchable(prop);
1246 regClass->structSize = regClass->offset;
1247 }
1248 }
1249 }
1250 }
1251 else if(!strcmp(line, "[Set]"))
1252 setStmt = 0x1;
1253 else if(!strcmp(line, "[Get]"))
1254 getStmt = 0x1;
1255 else if(!strcmp(line, "[Watchable]"))
1256 isWatchable = 0x1;
1257 else if(!strcmp(line, "[Public]"))
1258 memberAccess = 1;
1259 else if(!strcmp(line, "[Private]"))
1260 memberAccess = 2;
1261 else if(!strcmp(line, "[Conversion]"))
1262 {
1263 conversion = 0x1;
1264 setStmt = getStmt = isVirtual = isWatchable = 0x0;
1265 }
1266 }
1267 else
1268 {
1269 strcpy(name, line);
1270 setStmt = getStmt = isVirtual = conversion = isWatchable = 0x0;
1271 memberAccess = 1;
1272 }
1273 }
1274 }
1275 else if(!strcmp(line, "[Defined Class Properties]"))
1276 {
1277 char name[1024];
1278 unsigned int setStmt = 0x0, getStmt = 0x0;
1279
1280 for(; ; )
1281 {
1282 if(!__ecereMethod___ecereNameSpace__ecere__sys__File_GetLine(f, line, sizeof line))
1283 break;
1284 __ecereNameSpace__ecere__sys__TrimLSpaces(line, line);
1285 if(!strcmp(line, "."))
1286 break;
1287 if(line[0] == '[')
1288 {
1289 if(!strcmp(line, "[Type]"))
1290 {
1291 __ecereMethod___ecereNameSpace__ecere__sys__File_GetLine(f, line, sizeof line);
1292 __ecereNameSpace__ecere__sys__TrimLSpaces(line, line);
1293 if(regClass)
1294 {
1295 __ecereNameSpace__ecere__com__eClass_AddClassProperty(regClass, name, line, (void *)(unsigned int)setStmt, (void *)(unsigned int)getStmt);
1296 }
1297 }
1298 else if(!strcmp(line, "[Set]"))
1299 setStmt = 0x1;
1300 else if(!strcmp(line, "[Get]"))
1301 getStmt = 0x1;
1302 }
1303 else
1304 {
1305 strcpy(name, line);
1306 setStmt = getStmt = 0x0;
1307 }
1308 }
1309 }
1310 else if(!strcmp(line, "[Defined Data Members]"))
1311 {
1312 ReadDataMembers(regClass, (((void *)0)), f);
1313 }
1314 else if(!strcmp(line, "[Template Parameters]"))
1315 {
1316 while(!((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *))f->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Eof])(f))
1317 {
1318 char name[1024];
1319 int type = 0;
1320 struct __ecereNameSpace__ecere__com__ClassTemplateArgument defaultArg = 
1321 {
1322 0, 0, 0, 0, 0
1323 };
1324 void * info = (((void *)0));
1325
1326 __ecereMethod___ecereNameSpace__ecere__sys__File_GetLine(f, line, sizeof line);
1327 __ecereNameSpace__ecere__sys__TrimLSpaces(line, line);
1328 if(line[0] == '.')
1329 break;
1330 strcpy(name, line);
1331 __ecereMethod___ecereNameSpace__ecere__sys__File_GetLine(f, line, sizeof line);
1332 __ecereNameSpace__ecere__sys__TrimLSpaces(line, line);
1333 if(!strcmp(line, "[Expression]"))
1334 type = 2;
1335 else if(!strcmp(line, "[Identifier]"))
1336 type = 1;
1337 switch(type)
1338 {
1339 case 0:
1340 __ecereMethod___ecereNameSpace__ecere__sys__File_GetLine(f, line, sizeof line);
1341 __ecereNameSpace__ecere__sys__TrimLSpaces(line, line);
1342 if(regClass && strcmp(line, "[None]"))
1343 {
1344 info = __ecereNameSpace__ecere__sys__CopyString(line);
1345 }
1346 __ecereMethod___ecereNameSpace__ecere__sys__File_GetLine(f, line, sizeof line);
1347 __ecereNameSpace__ecere__sys__TrimLSpaces(line, line);
1348 if(regClass && strcmp(line, "[None]"))
1349 {
1350 defaultArg.dataTypeString = __ecereNameSpace__ecere__sys__CopyString(line);
1351 }
1352 break;
1353 case 2:
1354 __ecereMethod___ecereNameSpace__ecere__sys__File_GetLine(f, line, sizeof line);
1355 __ecereNameSpace__ecere__sys__TrimLSpaces(line, line);
1356 if(regClass && strcmp(line, "[None]"))
1357 {
1358 info = __ecereNameSpace__ecere__sys__CopyString(line);
1359 }
1360 __ecereMethod___ecereNameSpace__ecere__sys__File_GetLine(f, line, sizeof line);
1361 __ecereNameSpace__ecere__sys__TrimLSpaces(line, line);
1362 if(regClass && strcmp(line, "[None]"))
1363 {
1364 struct Operand op;
1365 struct Expression * exp;
1366 struct Location oldLocation = yylloc;
1367 struct __ecereNameSpace__ecere__com__Instance * backFileInput = fileInput;
1368
1369 declMode = (int)0;
1370 resetScanner();
1371 exp = ParseExpressionString(line);
1372 if(info)
1373 exp->destType = ProcessTypeString(info, 0x0);
1374 ProcessExpressionType(exp);
1375 ComputeExpression(exp);
1376 op = GetOperand(exp);
1377 defaultArg.expression.ui64 = op.ui64;
1378 FreeExpression(exp);
1379 resetScanner();
1380 yylloc = oldLocation;
1381 fileInput = backFileInput;
1382 if(fileInput)
1383 {
1384 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode))fileInput->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Seek])(fileInput, yylloc.start.pos, 0);
1385 resetScannerPos(&yylloc.start);
1386 yychar = -2;
1387 }
1388 }
1389 break;
1390 case 1:
1391 __ecereMethod___ecereNameSpace__ecere__sys__File_GetLine(f, line, sizeof line);
1392 __ecereNameSpace__ecere__sys__TrimLSpaces(line, line);
1393 if(!strcmp(line, "[Data member]"))
1394 info = (void *)0;
1395 else if(!strcmp(line, "[Method]"))
1396 info = (void *)1;
1397 else if(!strcmp(line, "[Property]"))
1398 info = (void *)2;
1399 __ecereMethod___ecereNameSpace__ecere__sys__File_GetLine(f, line, sizeof line);
1400 __ecereNameSpace__ecere__sys__TrimLSpaces(line, line);
1401 if(regClass && strcmp(line, "[None]"))
1402 {
1403 defaultArg.memberString = __ecereNameSpace__ecere__sys__CopyString(line);
1404 }
1405 break;
1406 }
1407 if(regClass)
1408 __ecereNameSpace__ecere__com__eClass_AddTemplateParameter(regClass, name, type, info, &defaultArg);
1409 if(type == 0 || type == 2)
1410 (__ecereNameSpace__ecere__com__eSystem_Delete(info), info = 0);
1411 if(type == 0 || type == 1)
1412 (__ecereNameSpace__ecere__com__eSystem_Delete(defaultArg.dataTypeString), defaultArg.dataTypeString = 0);
1413 }
1414 if(regClass)
1415 __ecereNameSpace__ecere__com__eClass_DoneAddingTemplateParameters(regClass);
1416 }
1417 }
1418 else
1419 {
1420 inheritanceAccess = 1;
1421 classType = 0;
1422 isRemote = 0x0;
1423 strcpy(name, line);
1424 regClass = (((void *)0));
1425 }
1426 }
1427 }
1428 else if(!strcmp(line, "[Defined Expressions]"))
1429 {
1430 char name[1024];
1431
1432 for(; ; )
1433 {
1434 if(!__ecereMethod___ecereNameSpace__ecere__sys__File_GetLine(f, line, sizeof line))
1435 break;
1436 __ecereNameSpace__ecere__sys__TrimLSpaces(line, line);
1437 if(!strcmp(line, "."))
1438 break;
1439 if(!strcmp(line, "[Value]"))
1440 {
1441 __ecereMethod___ecereNameSpace__ecere__sys__File_GetLine(f, line, sizeof line);
1442 __ecereNameSpace__ecere__sys__TrimLSpaces(line, line);
1443 if(!loadDllOnly && importType != 3 && importType != 4)
1444 __ecereNameSpace__ecere__com__eSystem_RegisterDefine(name, line, privateModule, ecereCOMModule ? 4 : 1);
1445 }
1446 else if(line[0] != '[')
1447 {
1448 strcpy(name, line);
1449 }
1450 }
1451 }
1452 else if(!strcmp(line, "[Defined Functions]"))
1453 {
1454 char name[1024];
1455
1456 for(; ; )
1457 {
1458 if(!__ecereMethod___ecereNameSpace__ecere__sys__File_GetLine(f, line, sizeof line))
1459 break;
1460 __ecereNameSpace__ecere__sys__TrimLSpaces(line, line);
1461 if(!strcmp(line, "."))
1462 break;
1463 if(!strcmp(line, "[Type]"))
1464 {
1465 __ecereMethod___ecereNameSpace__ecere__sys__File_GetLine(f, line, sizeof line);
1466 __ecereNameSpace__ecere__sys__TrimLSpaces(line, line);
1467 if(!loadDllOnly && importType != 3 && importType != 4)
1468 __ecereNameSpace__ecere__com__eSystem_RegisterFunction(name, line, (((void *)0)), privateModule, ecereCOMModule ? 4 : 1);
1469 }
1470 else if(line[0] != '[')
1471 {
1472 strcpy(name, line);
1473 }
1474 }
1475 }
1476 else if(!strcmp(line, "[Defined Data]"))
1477 {
1478 char name[1024];
1479
1480 for(; ; )
1481 {
1482 if(!__ecereMethod___ecereNameSpace__ecere__sys__File_GetLine(f, line, sizeof line))
1483 break;
1484 __ecereNameSpace__ecere__sys__TrimLSpaces(line, line);
1485 if(!strcmp(line, "."))
1486 break;
1487 if(!strcmp(line, "[Type]"))
1488 {
1489 __ecereMethod___ecereNameSpace__ecere__sys__File_GetLine(f, line, sizeof line);
1490 __ecereNameSpace__ecere__sys__TrimLSpaces(line, line);
1491 if(!loadDllOnly && importType != 3 && importType != 4)
1492 {
1493 int start = 0, c;
1494 struct __ecereNameSpace__ecere__com__NameSpace * nameSpace = globalData;
1495 struct GlobalData * data;
1496
1497 for(c = 0; name[c]; c++)
1498 {
1499 if(name[c] == '.' || (name[c] == ':' && name[c + 1] == ':'))
1500 {
1501 struct __ecereNameSpace__ecere__com__NameSpace * newSpace;
1502 char * spaceName = __ecereNameSpace__ecere__com__eSystem_New(sizeof(char) * (c - start + 1));
1503
1504 strncpy(spaceName, name + start, c - start);
1505 spaceName[c - start] = '\0';
1506 newSpace = (struct __ecereNameSpace__ecere__com__NameSpace *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&(*nameSpace).nameSpaces, spaceName);
1507 if(!newSpace)
1508 {
1509 newSpace = __ecereNameSpace__ecere__com__eSystem_New0(sizeof(struct __ecereNameSpace__ecere__com__NameSpace) * (1));
1510 (*newSpace).classes.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
1511 (*newSpace).defines.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
1512 (*newSpace).functions.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
1513 (*newSpace).nameSpaces.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString;
1514 (*newSpace).name = spaceName;
1515 (*newSpace).parent = nameSpace;
1516 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&(*nameSpace).nameSpaces, (struct __ecereNameSpace__ecere__sys__BTNode *)newSpace);
1517 }
1518 else
1519 (__ecereNameSpace__ecere__com__eSystem_Delete(spaceName), spaceName = 0);
1520 nameSpace = newSpace;
1521 if(name[c] == ':')
1522 c++;
1523 start = c + 1;
1524 }
1525 }
1526 if(c - start)
1527 {
1528 data = (struct GlobalData *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&(*nameSpace).functions, name + start);
1529 if(!data)
1530 {
1531 data = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_GlobalData), ((struct GlobalData *)__ecereTemp1)->fullName = __ecereNameSpace__ecere__sys__CopyString(name), ((struct GlobalData *)__ecereTemp1)->dataTypeString = __ecereNameSpace__ecere__sys__CopyString(line), ((struct GlobalData *)__ecereTemp1)->module = privateModule, ((struct GlobalData *)__ecereTemp1));
1532 data->key = (uintptr_t)(data->fullName + start);
1533 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&(*nameSpace).functions, (struct __ecereNameSpace__ecere__sys__BTNode *)data);
1534 }
1535 else if(strcmp(data->dataTypeString, line))
1536 {
1537 struct DataRedefinition * redefinition = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_DataRedefinition);
1538
1539 strcpy(redefinition->name, name);
1540 strcpy(redefinition->type1, data->dataTypeString);
1541 strcpy(redefinition->type2, line);
1542 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&dataRedefinitions, redefinition);
1543 }
1544 }
1545 }
1546 }
1547 else if(line[0] != '[')
1548 {
1549 strcpy(name, line);
1550 }
1551 }
1552 }
1553 else if(!strcmp(line, "[Imported Modules]"))
1554 {
1555 int moduleImportType = 0;
1556 int importAccess = 1;
1557
1558 for(; ; )
1559 {
1560 if(!__ecereMethod___ecereNameSpace__ecere__sys__File_GetLine(f, line, sizeof line))
1561 break;
1562 __ecereNameSpace__ecere__sys__TrimLSpaces(line, line);
1563 if(!strcmp(line, "."))
1564 break;
1565 if(!strcmp(line, "[Static]"))
1566 moduleImportType = 1;
1567 else if(!strcmp(line, "[Remote]"))
1568 moduleImportType = 2;
1569 else if(!strcmp(line, "[Private]"))
1570 importAccess = 2;
1571 else if(line[0] != '[')
1572 {
1573 if(importType != 3 && importType != 4)
1574 ImportModule(line, moduleImportType, importAccess, loadDllOnly);
1575 else
1576 ImportModule(line, 4, importAccess, loadDllOnly);
1577 if(!strcmp(line, "ecere"))
1578 ecereImported = 0x1;
1579 moduleImportType = 0;
1580 importAccess = 1;
1581 }
1582 }
1583 }
1584 }
1585 }
1586 (__ecereNameSpace__ecere__com__eInstance_DecRef(f), f = 0);
1587 }
1588 else if(importType != 4)
1589 {
1590 Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "Couldn't open %s\n", (((void *)0))), fileName);
1591 }
1592 return globalInstance;
1593 }
1594
1595 struct __ecereNameSpace__ecere__com__Instance * loadedModules;
1596
1597 extern unsigned int __ecereNameSpace__ecere__sys__StripExtension(char *  string);
1598
1599 extern struct __ecereNameSpace__ecere__sys__OldList *  defines;
1600
1601 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ImportedModule;
1602
1603 struct ImportedModule
1604 {
1605 struct ImportedModule * prev;
1606 struct ImportedModule * next;
1607 char *  name;
1608 int type;
1609 int importType;
1610 unsigned int globalInstance;
1611 unsigned int dllOnly;
1612 int importAccess;
1613 } __attribute__ ((gcc_struct));
1614
1615 extern size_t strlen(const char * );
1616
1617 extern char *  __ecereNameSpace__ecere__sys__GetExtension(char *  string, char *  output);
1618
1619 extern char *  symbolsDir;
1620
1621 extern char *  __ecereNameSpace__ecere__sys__PathCat(char *  string, char *  addedPath);
1622
1623 extern char *  __ecereNameSpace__ecere__sys__ChangeExtension(char *  string, char *  ext, char *  output);
1624
1625 extern unsigned int __ecereNameSpace__ecere__sys__FileExists(char *  fileName);
1626
1627 extern unsigned int inCompiler;
1628
1629 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__IteratorPointer;
1630
1631 struct __ecereNameSpace__ecere__com__IteratorPointer;
1632
1633 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__MapIterator;
1634
1635 struct __ecereNameSpace__ecere__com__MapIterator
1636 {
1637 struct __ecereNameSpace__ecere__com__Instance * container;
1638 struct __ecereNameSpace__ecere__com__IteratorPointer * pointer;
1639 } __attribute__ ((gcc_struct));
1640
1641 extern struct __ecereNameSpace__ecere__com__Instance * __ecereNameSpace__ecere__com__eModule_LoadStrict(struct __ecereNameSpace__ecere__com__Instance * fromModule, char *  name, int importAccess);
1642
1643 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Module;
1644
1645 struct __ecereNameSpace__ecere__com__Module
1646 {
1647 struct __ecereNameSpace__ecere__com__Instance * application;
1648 struct __ecereNameSpace__ecere__sys__OldList classes;
1649 struct __ecereNameSpace__ecere__sys__OldList defines;
1650 struct __ecereNameSpace__ecere__sys__OldList functions;
1651 struct __ecereNameSpace__ecere__sys__OldList modules;
1652 struct __ecereNameSpace__ecere__com__Instance * prev;
1653 struct __ecereNameSpace__ecere__com__Instance * next;
1654 char *  name;
1655 void *  library;
1656 void *  Unload;
1657 int importType;
1658 int origImportType;
1659 struct __ecereNameSpace__ecere__com__NameSpace privateNameSpace;
1660 struct __ecereNameSpace__ecere__com__NameSpace publicNameSpace;
1661 } __attribute__ ((gcc_struct));
1662
1663 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Iterator;
1664
1665 struct __ecereNameSpace__ecere__com__Iterator
1666 {
1667 struct __ecereNameSpace__ecere__com__Instance * container;
1668 struct __ecereNameSpace__ecere__com__IteratorPointer * pointer;
1669 } __attribute__ ((gcc_struct));
1670
1671 extern int sprintf(char * , char * , ...);
1672
1673 extern int __ecereNameSpace__ecere__com__GetRuntimePlatform(void);
1674
1675 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__List_TPL_ecere__com__Module_;
1676
1677 unsigned int __ecereMethod___ecereNameSpace__ecere__sys__OldList_AddName(struct __ecereNameSpace__ecere__sys__OldList * this, void *  item);
1678
1679 struct __ecereNameSpace__ecere__com__Instance * __ecereProp___ecereNameSpace__ecere__com__MapIterator_Get_map(struct __ecereNameSpace__ecere__com__MapIterator * this);
1680
1681 void __ecereProp___ecereNameSpace__ecere__com__MapIterator_Set_map(struct __ecereNameSpace__ecere__com__MapIterator * this, struct __ecereNameSpace__ecere__com__Instance * value);
1682
1683 extern struct __ecereNameSpace__ecere__com__Property ** __ecereProp___ecereNameSpace__ecere__com__MapIterator_map;
1684
1685 unsigned int __ecereMethod___ecereNameSpace__ecere__com__Iterator_Index(struct __ecereNameSpace__ecere__com__Iterator * this, uint64 index, unsigned int create);
1686
1687 int __ecereVMethodID___ecereNameSpace__ecere__com__Container_Add;
1688
1689 uint64 __ecereProp___ecereNameSpace__ecere__com__Iterator_Get_data(struct __ecereNameSpace__ecere__com__Iterator * this);
1690
1691 void __ecereProp___ecereNameSpace__ecere__com__Iterator_Set_data(struct __ecereNameSpace__ecere__com__Iterator * this, uint64 value);
1692
1693 extern struct __ecereNameSpace__ecere__com__Property ** __ecereProp___ecereNameSpace__ecere__com__Iterator_data;
1694
1695 unsigned int __ecereMethod___ecereNameSpace__ecere__com__Iterator_Next();
1696
1697 void ImportModule(char * name, int importType, int importAccess, unsigned int loadDllOnly)
1698 {
1699 void * __ecereTemp1;
1700 struct ImportedModule * module = (((void *)0));
1701 char moduleName[274];
1702
1703 strncpy(moduleName, name, (274) - 1);
1704 moduleName[(274) - 1] = (char)0;
1705 __ecereNameSpace__ecere__sys__StripExtension(moduleName);
1706 for(module = (*defines).first; module; module = module->next)
1707 {
1708 if(module->type == 0 && !(strcasecmp)(module->name, moduleName))
1709 break;
1710 }
1711 if((!module || (module->dllOnly && !loadDllOnly)) && strlen(name) < (274))
1712 {
1713 char ext[17];
1714 struct __ecereNameSpace__ecere__com__Instance * loadedModule = (((void *)0));
1715 char symFile[797];
1716
1717 symFile[0] = '\0';
1718 __ecereNameSpace__ecere__sys__GetExtension(name, ext);
1719 strcpy(symFile, symbolsDir ? symbolsDir : "");
1720 __ecereNameSpace__ecere__sys__PathCat(symFile, name);
1721 __ecereNameSpace__ecere__sys__ChangeExtension(symFile, "sym", symFile);
1722 if(!strcmp(ext, "dll") || !strcmp(ext, "dll") || !ext[0])
1723 {
1724 if(importType != 4)
1725 {
1726 if(!module)
1727 {
1728 if(precompDefines)
1729 {
1730 module = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_ImportedModule), ((struct ImportedModule *)__ecereTemp1)->name = __ecereNameSpace__ecere__sys__CopyString(moduleName), ((struct ImportedModule *)__ecereTemp1)->type = 0, ((struct ImportedModule *)__ecereTemp1)->importType = importType, ((struct ImportedModule *)__ecereTemp1)->importAccess = importAccess, ((struct ImportedModule *)__ecereTemp1));
1731 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*precompDefines), module);
1732 }
1733 module = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_ImportedModule), ((struct ImportedModule *)__ecereTemp1)->name = __ecereNameSpace__ecere__sys__CopyString(moduleName), ((struct ImportedModule *)__ecereTemp1)->type = 0, ((struct ImportedModule *)__ecereTemp1)->importType = importType, ((struct ImportedModule *)__ecereTemp1)->importAccess = importAccess, ((struct ImportedModule *)__ecereTemp1));
1734 __ecereMethod___ecereNameSpace__ecere__sys__OldList_AddName((&*defines), module);
1735 }
1736 module->dllOnly = loadDllOnly;
1737 if(ext[0] || !__ecereNameSpace__ecere__sys__FileExists(symFile))
1738 {
1739 unsigned int skipLoad = 0x0;
1740 struct __ecereNameSpace__ecere__com__Instance * list = (((void *)0));
1741 char file[274];
1742
1743 strcpy(file, name);
1744 __ecereNameSpace__ecere__sys__StripExtension(file);
1745 if(!inCompiler && !inPreCompiler && !inSymbolGen)
1746 {
1747 struct __ecereNameSpace__ecere__com__MapIterator it = (it.container = (void *)0, it.pointer = (void *)0, __ecereProp___ecereNameSpace__ecere__com__MapIterator_Set_map(&it, loadedModules), it);
1748
1749 if(!__ecereMethod___ecereNameSpace__ecere__com__Iterator_Index(&it, (uint64)(file), 0x0))
1750 {
1751 struct __ecereNameSpace__ecere__com__Instance * firstModule = __ecereNameSpace__ecere__com__eModule_LoadStrict(__thisModule, file, importAccess);
1752
1753 if(firstModule)
1754 {
1755 list = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass___ecereNameSpace__ecere__com__List_TPL_ecere__com__Module_);
1756 ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *, uint64 value))list->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Add])(list, (uint64)(firstModule));
1757 __extension__ ({
1758 struct __ecereNameSpace__ecere__com__Iterator __internalIterator = 
1759 {
1760 loadedModules, 0
1761 };
1762
1763 __ecereMethod___ecereNameSpace__ecere__com__Iterator_Index(&__internalIterator, (uint64)(((uint64)(file))), 0x1);
1764 __ecereProp___ecereNameSpace__ecere__com__Iterator_Set_data(&__internalIterator, list);
1765 });
1766 }
1767 else
1768 skipLoad = 0x1;
1769 }
1770 else
1771 list = ((struct __ecereNameSpace__ecere__com__Instance *)__ecereProp___ecereNameSpace__ecere__com__Iterator_Get_data(&it));
1772 }
1773 if(!skipLoad)
1774 {
1775 loadedModule = __ecereNameSpace__ecere__com__eModule_LoadStrict(privateModule, file, importAccess);
1776 if(loadedModule)
1777 {
1778 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)loadedModule + structSize_Instance)))->importType = importType;
1779 module->dllOnly = 0x0;
1780 if(list)
1781 ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *, uint64 value))list->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Add])(list, (uint64)(loadedModule));
1782 }
1783 }
1784 }
1785 }
1786 }
1787 if(!loadedModule && (!strcmp(ext, "ec") || !strcmp(ext, "sym") || !ext[0]))
1788 {
1789 {
1790 if(!module)
1791 {
1792 if(precompDefines)
1793 {
1794 module = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_ImportedModule), ((struct ImportedModule *)__ecereTemp1)->name = __ecereNameSpace__ecere__sys__CopyString(moduleName), ((struct ImportedModule *)__ecereTemp1)->type = 0, ((struct ImportedModule *)__ecereTemp1)->importType = importType, ((struct ImportedModule *)__ecereTemp1)->importAccess = importAccess, ((struct ImportedModule *)__ecereTemp1));
1795 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*precompDefines), module);
1796 }
1797 module = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_ImportedModule), ((struct ImportedModule *)__ecereTemp1)->name = __ecereNameSpace__ecere__sys__CopyString(moduleName), ((struct ImportedModule *)__ecereTemp1)->type = 0, ((struct ImportedModule *)__ecereTemp1)->importType = importType, ((struct ImportedModule *)__ecereTemp1)->importAccess = importAccess, ((struct ImportedModule *)__ecereTemp1));
1798 __ecereMethod___ecereNameSpace__ecere__sys__OldList_AddName((&*defines), module);
1799 }
1800 module->dllOnly = loadDllOnly;
1801 if(inPreCompiler)
1802 return ;
1803 if(inIDE && !__ecereNameSpace__ecere__sys__FileExists(symFile) && sourceDirs)
1804 {
1805 {
1806 struct __ecereNameSpace__ecere__com__Iterator dir = 
1807 {
1808 (sourceDirs), 0
1809 };
1810
1811 while(__ecereMethod___ecereNameSpace__ecere__com__Iterator_Next(&dir))
1812 {
1813 char configDir[274];
1814
1815 strcpy(symFile, __ecereProp___ecereNameSpace__ecere__com__Iterator_Get_data(&dir));
1816 __ecereNameSpace__ecere__sys__PathCat(symFile, "obj");
1817 sprintf(configDir, "debug.%s", (__ecereNameSpace__ecere__com__GetRuntimePlatform() == 1) ? "win32" : "linux");
1818 __ecereNameSpace__ecere__sys__PathCat(symFile, configDir);
1819 __ecereNameSpace__ecere__sys__PathCat(symFile, name);
1820 __ecereNameSpace__ecere__sys__ChangeExtension(symFile, "sym", symFile);
1821 if(__ecereNameSpace__ecere__sys__FileExists(symFile))
1822 break;
1823 }
1824 }
1825 }
1826 if(!__ecereNameSpace__ecere__sys__FileExists(symFile))
1827 {
1828 char fileName[274];
1829
1830 __ecereNameSpace__ecere__sys__GetLastDirectory(symFile, fileName);
1831 strcpy(symFile, symbolsDir ? symbolsDir : "");
1832 __ecereNameSpace__ecere__sys__PathCat(symFile, fileName);
1833 }
1834 module->globalInstance = LoadSymbols(symFile, importType, loadDllOnly);
1835 }
1836 }
1837 }
1838 }
1839
1840 int FindIncludeFileID(char * includeFile)
1841 {
1842 int c;
1843
1844 for(c = 0; c < numIncludes; c++)
1845 if(!((__ecereNameSpace__ecere__com__GetRuntimePlatform() == 1) ? (strcasecmp) : strcmp)(includes[c], includeFile))
1846 return c + 1;
1847 return 0;
1848 }
1849
1850 int GetIncludeFileID(char * includeFile)
1851 {
1852 int found = FindIncludeFileID(includeFile);
1853
1854 if(found)
1855 return found;
1856 includes = __ecereNameSpace__ecere__com__eSystem_Renew(includes, sizeof(char *) * (numIncludes + 1));
1857 includes[numIncludes++] = __ecereNameSpace__ecere__sys__CopyString(includeFile);
1858 return numIncludes;
1859 }
1860
1861 char * GetIncludeFileFromID(int id)
1862 {
1863 return includes[id - 1];
1864 }
1865
1866 extern char *  __ecereNameSpace__ecere__sys__StripLastDirectory(char *  string, char *  output);
1867
1868 extern struct __ecereNameSpace__ecere__com__Instance * __ecereNameSpace__ecere__sys__FileOpen(char *  fileName, int mode);
1869
1870 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__NamedItem;
1871
1872 struct __ecereNameSpace__ecere__sys__NamedItem
1873 {
1874 struct __ecereNameSpace__ecere__sys__NamedItem * prev;
1875 struct __ecereNameSpace__ecere__sys__NamedItem * next;
1876 char *  name;
1877 } __attribute__ ((gcc_struct));
1878
1879 struct __ecereNameSpace__ecere__com__Instance * OpenIncludeFile(char * includeFile)
1880 {
1881 struct __ecereNameSpace__ecere__com__Instance * file;
1882 char location[274];
1883
1884 __ecereNameSpace__ecere__sys__StripLastDirectory(sourceFileStack[(include_stack_ptr >= 0) ? include_stack_ptr : 0], location);
1885 __ecereNameSpace__ecere__sys__PathCat(location, includeFile);
1886 file = __ecereNameSpace__ecere__sys__FileOpen(location, 1);
1887 if(file)
1888 {
1889 strcpy(sourceFileStack[include_stack_ptr + 1], location);
1890 }
1891 else if(inIDE)
1892 {
1893 struct __ecereNameSpace__ecere__sys__NamedItem * includeDir;
1894
1895 if(includeDirs)
1896 {
1897 for(includeDir = (*includeDirs).first; includeDir; includeDir = includeDir->next)
1898 {
1899 strcpy(location, includeDir->name);
1900 __ecereNameSpace__ecere__sys__PathCat(location, includeFile);
1901 file = __ecereNameSpace__ecere__sys__FileOpen(location, 1);
1902 if(file)
1903 break;
1904 }
1905 }
1906 if(sysIncludeDirs)
1907 {
1908 for(includeDir = (*sysIncludeDirs).first; includeDir; includeDir = includeDir->next)
1909 {
1910 strcpy(location, includeDir->name);
1911 __ecereNameSpace__ecere__sys__PathCat(location, includeFile);
1912 file = __ecereNameSpace__ecere__sys__FileOpen(location, 1);
1913 if(file)
1914 break;
1915 }
1916 }
1917 }
1918 return file;
1919 }
1920
1921 void FreeIncludeFiles()
1922 {
1923 int c;
1924
1925 for(c = 0; c < numIncludes; c++)
1926 (__ecereNameSpace__ecere__com__eSystem_Delete(includes[c]), includes[c] = 0);
1927 (__ecereNameSpace__ecere__com__eSystem_Delete(includes), includes = 0);
1928 numIncludes = 0;
1929 }
1930
1931 extern void FreeSymbol(struct Symbol * symbol);
1932
1933 extern void FreeType(struct Type * type);
1934
1935 void __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Remove(struct __ecereNameSpace__ecere__sys__BinaryTree * this, struct __ecereNameSpace__ecere__sys__BTNode * node);
1936
1937 void FreeGlobalData(struct __ecereNameSpace__ecere__com__NameSpace * globalDataList)
1938 {
1939 struct __ecereNameSpace__ecere__com__NameSpace * ns;
1940 struct GlobalData * data;
1941
1942 for(; (ns = (struct __ecereNameSpace__ecere__com__NameSpace *)globalDataList->nameSpaces.root); )
1943 {
1944 FreeGlobalData(ns);
1945 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Remove(&globalDataList->nameSpaces, (struct __ecereNameSpace__ecere__sys__BTNode *)ns);
1946 (__ecereNameSpace__ecere__com__eSystem_Delete((*ns).name), (*ns).name = 0);
1947 (__ecereNameSpace__ecere__com__eSystem_Delete(ns), ns = 0);
1948 }
1949 for(; (data = (struct GlobalData *)globalDataList->functions.root); )
1950 {
1951 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Remove(&globalDataList->functions, data);
1952 if(data->symbol)
1953 FreeSymbol(data->symbol);
1954 FreeType(data->dataType);
1955 (__ecereNameSpace__ecere__com__eSystem_Delete(data->fullName), data->fullName = 0);
1956 (__ecereNameSpace__ecere__com__eSystem_Delete(data->dataTypeString), data->dataTypeString = 0);
1957 ((data ? (__ecereClass_GlobalData->Destructor ? __ecereClass_GlobalData->Destructor(data) : 0, __ecereClass___ecereNameSpace__ecere__sys__BTNode->Destructor ? __ecereClass___ecereNameSpace__ecere__sys__BTNode->Destructor(data) : 0, __ecereNameSpace__ecere__com__eSystem_Delete(data)) : 0), data = 0);
1958 }
1959 }
1960
1961 extern void PrintType(struct Type * type, char *  string, unsigned int printName, unsigned int fullName);
1962
1963 extern void Compiler_Warning(char *  format, ...);
1964
1965 void __ecereMethod___ecereNameSpace__ecere__sys__OldList_Free(struct __ecereNameSpace__ecere__sys__OldList * this, void (*  freeFn)(void * ));
1966
1967 void CheckDataRedefinitions()
1968 {
1969 struct DataRedefinition * redefinition;
1970
1971 for(redefinition = dataRedefinitions.first; redefinition; redefinition = redefinition->next)
1972 {
1973 struct Type * type1 = ProcessTypeString(redefinition->type1, 0x0);
1974 struct Type * type2 = ProcessTypeString(redefinition->type2, 0x0);
1975 char type1String[1024] = "";
1976 char type2String[1024] = "";
1977
1978 PrintType(type1, type1String, 0x0, 0x1);
1979 PrintType(type2, type2String, 0x0, 0x1);
1980 if(strcmp(type1String, type2String))
1981 Compiler_Warning(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "Redefinition of %s (defining as %s, already defined as %s)\n", (((void *)0))), redefinition->name, type1String, type2String);
1982 FreeType(type1);
1983 FreeType(type2);
1984 }
1985 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Free(&dataRedefinitions, (((void *)0)));
1986 }
1987
1988 void __ecereRegisterModule_loadSymbols(struct __ecereNameSpace__ecere__com__Instance * module)
1989 {
1990 struct __ecereNameSpace__ecere__com__Class * class;
1991
1992 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("SetGlobalData", "void SetGlobalData(ecere::com::NameSpace * nameSpace)", SetGlobalData, module, 1);
1993 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("SetInIDE", "void SetInIDE(bool b)", SetInIDE, module, 1);
1994 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("SetSourceDirs", "void SetSourceDirs(ecere::com::List<String> list)", SetSourceDirs, module, 1);
1995 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("SetIncludeDirs", "void SetIncludeDirs(ecere::sys::OldList * list)", SetIncludeDirs, module, 1);
1996 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("SetSysIncludeDirs", "void SetSysIncludeDirs(ecere::sys::OldList * list)", SetSysIncludeDirs, module, 1);
1997 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("SetEcereImported", "void SetEcereImported(bool b)", SetEcereImported, module, 1);
1998 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("GetEcereImported", "bool GetEcereImported(void)", GetEcereImported, module, 1);
1999 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("SetInPreCompiler", "void SetInPreCompiler(bool b)", SetInPreCompiler, module, 1);
2000 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("SetInSymbolGen", "void SetInSymbolGen(bool b)", SetInSymbolGen, module, 1);
2001 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("SetPrecompDefines", "void SetPrecompDefines(ecere::sys::OldList * list)", SetPrecompDefines, module, 1);
2002 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("DummyMethod", "bool DummyMethod(void)", DummyMethod, module, 1);
2003 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("LoadSymbols", "bool LoadSymbols(char * fileName, ecere::com::ImportType importType, bool loadDllOnly)", LoadSymbols, module, 1);
2004 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ImportModule", "void ImportModule(char * name, ecere::com::ImportType importType, ecere::com::AccessMode importAccess, bool loadDllOnly)", ImportModule, module, 1);
2005 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("FindIncludeFileID", "int FindIncludeFileID(char * includeFile)", FindIncludeFileID, module, 2);
2006 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("GetIncludeFileID", "int GetIncludeFileID(char * includeFile)", GetIncludeFileID, module, 2);
2007 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("GetIncludeFileFromID", "char * GetIncludeFileFromID(int id)", GetIncludeFileFromID, module, 2);
2008 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("OpenIncludeFile", "ecere::sys::File OpenIncludeFile(char * includeFile)", OpenIncludeFile, module, 2);
2009 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("FreeIncludeFiles", "void FreeIncludeFiles(void)", FreeIncludeFiles, module, 1);
2010 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("FreeGlobalData", "void FreeGlobalData(ecere::com::NameSpace globalDataList)", FreeGlobalData, module, 1);
2011 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("CheckDataRedefinitions", "void CheckDataRedefinitions(void)", CheckDataRedefinitions, module, 1);
2012 }
2013
2014 void __ecereUnregisterModule_loadSymbols(struct __ecereNameSpace__ecere__com__Instance * module)
2015 {
2016
2017 }
2018
2019 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Map_TPL_String__ecere__com__List_TPL_ecere__com__Module___;
2020
2021 void __ecereCreateModuleInstances_loadSymbols()
2022 {
2023 loadedModules = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass___ecereNameSpace__ecere__com__Map_TPL_String__ecere__com__List_TPL_ecere__com__Module___);
2024 __ecereNameSpace__ecere__com__eInstance_IncRef(loadedModules);
2025 }
2026
2027 void __ecereDestroyModuleInstances_loadSymbols()
2028 {
2029 (__ecereNameSpace__ecere__com__eInstance_DecRef(loadedModules), loadedModules = 0);
2030 }
2031