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