compiler/libec Improvements to conversion from AST->Type class, and to outputting...
[sdk] / compiler / bootstrap / libec / bootstrap / shortcuts.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 extern void *  __ecereNameSpace__ecere__com__eSystem_New(unsigned int size);
33
34 extern void *  __ecereNameSpace__ecere__com__eSystem_New0(unsigned int size);
35
36 extern void *  __ecereNameSpace__ecere__com__eSystem_Renew(void *  memory, unsigned int size);
37
38 extern void *  __ecereNameSpace__ecere__com__eSystem_Renew0(void *  memory, unsigned int size);
39
40 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__BTNode;
41
42 struct __ecereNameSpace__ecere__sys__BTNode;
43
44 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__BinaryTree;
45
46 struct __ecereNameSpace__ecere__sys__BinaryTree
47 {
48 struct __ecereNameSpace__ecere__sys__BTNode * root;
49 int count;
50 int (*  CompareKey)(struct __ecereNameSpace__ecere__sys__BinaryTree * tree, uintptr_t a, uintptr_t b);
51 void (*  FreeKey)(void *  key);
52 } __attribute__ ((gcc_struct));
53
54 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__OldList;
55
56 struct __ecereNameSpace__ecere__sys__OldList
57 {
58 void *  first;
59 void *  last;
60 int count;
61 unsigned int offset;
62 unsigned int circ;
63 } __attribute__ ((gcc_struct));
64
65 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Method;
66
67 struct __ecereNameSpace__ecere__com__Method
68 {
69 char *  name;
70 struct __ecereNameSpace__ecere__com__Method * parent;
71 struct __ecereNameSpace__ecere__com__Method * left;
72 struct __ecereNameSpace__ecere__com__Method * right;
73 int depth;
74 int (*  function)();
75 int vid;
76 int type;
77 struct __ecereNameSpace__ecere__com__Class * _class;
78 void *  symbol;
79 char *  dataTypeString;
80 struct Type * dataType;
81 int memberAccess;
82 } __attribute__ ((gcc_struct));
83
84 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Property;
85
86 struct __ecereNameSpace__ecere__com__Property
87 {
88 struct __ecereNameSpace__ecere__com__Property * prev;
89 struct __ecereNameSpace__ecere__com__Property * next;
90 char *  name;
91 unsigned int isProperty;
92 int memberAccess;
93 int id;
94 struct __ecereNameSpace__ecere__com__Class * _class;
95 char *  dataTypeString;
96 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
97 struct Type * dataType;
98 void (*  Set)(void * , int);
99 int (*  Get)(void * );
100 unsigned int (*  IsSet)(void * );
101 void *  data;
102 void *  symbol;
103 int vid;
104 unsigned int conversion;
105 unsigned int watcherOffset;
106 char *  category;
107 unsigned int compiled;
108 unsigned int selfWatchable;
109 unsigned int isWatchable;
110 } __attribute__ ((gcc_struct));
111
112 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_CodePosition;
113
114 struct CodePosition
115 {
116 int line;
117 int charPos;
118 int pos;
119 unsigned int included;
120 } __attribute__ ((gcc_struct));
121
122 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Location;
123
124 struct Location
125 {
126 struct CodePosition start;
127 struct CodePosition end;
128 } __attribute__ ((gcc_struct));
129
130 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Attrib;
131
132 struct Attrib;
133
134 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ExtDecl;
135
136 struct ExtDecl;
137
138 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ClassDefinition;
139
140 struct ClassDefinition;
141
142 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Context;
143
144 struct Context;
145
146 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Instantiation;
147
148 struct Instantiation;
149
150 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Declaration;
151
152 struct Declaration;
153
154 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Statement;
155
156 struct Statement;
157
158 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_TypeName;
159
160 struct TypeName
161 {
162 struct TypeName * prev;
163 struct TypeName * next;
164 struct Location loc;
165 struct __ecereNameSpace__ecere__sys__OldList *  qualifiers;
166 struct Declarator * declarator;
167 int classObjectType;
168 struct Expression * bitCount;
169 } __attribute__ ((gcc_struct));
170
171 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Initializer;
172
173 struct Initializer;
174
175 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__DataValue;
176
177 struct __ecereNameSpace__ecere__com__DataValue
178 {
179 union
180 {
181 char c;
182 unsigned char uc;
183 short s;
184 unsigned short us;
185 int i;
186 unsigned int ui;
187 void *  p;
188 float f;
189 double d;
190 long long i64;
191 uint64 ui64;
192 } __attribute__ ((gcc_struct));
193 } __attribute__ ((gcc_struct));
194
195 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Expression;
196
197 struct Expression;
198
199 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_TemplateDatatype;
200
201 struct TemplateDatatype;
202
203 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_TemplateArgument;
204
205 struct TemplateArgument;
206
207 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_TemplateParameter;
208
209 struct TemplateParameter;
210
211 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Specifier;
212
213 struct Specifier;
214
215 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Identifier;
216
217 struct Identifier;
218
219 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Pointer;
220
221 struct Pointer;
222
223 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Declarator;
224
225 struct Declarator
226 {
227 struct Declarator * prev;
228 struct Declarator * next;
229 struct Location loc;
230 int type;
231 struct Symbol * symbol;
232 struct Declarator * declarator;
233 union
234 {
235 struct Identifier * identifier;
236 struct
237 {
238 struct Expression * exp;
239 struct Expression * posExp;
240 struct Attrib * attrib;
241 } __attribute__ ((gcc_struct)) structDecl;
242 struct
243 {
244 struct Expression * exp;
245 struct Specifier * enumClass;
246 } __attribute__ ((gcc_struct)) array;
247 struct
248 {
249 struct __ecereNameSpace__ecere__sys__OldList * parameters;
250 } __attribute__ ((gcc_struct)) function;
251 struct
252 {
253 struct Pointer * pointer;
254 } __attribute__ ((gcc_struct)) pointer;
255 struct
256 {
257 struct ExtDecl * extended;
258 } __attribute__ ((gcc_struct)) extended;
259 } __attribute__ ((gcc_struct));
260 } __attribute__ ((gcc_struct));
261
262 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_FunctionDefinition;
263
264 struct FunctionDefinition;
265
266 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_DBTableDef;
267
268 struct DBTableDef;
269
270 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_External;
271
272 struct External;
273
274 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ModuleImport;
275
276 struct ModuleImport;
277
278 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ClassImport;
279
280 struct ClassImport;
281
282 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Symbol;
283
284 struct Symbol;
285
286 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Type;
287
288 struct Type;
289
290 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Class;
291
292 struct __ecereNameSpace__ecere__com__Class
293 {
294 struct __ecereNameSpace__ecere__com__Class * prev;
295 struct __ecereNameSpace__ecere__com__Class * next;
296 char *  name;
297 int offset;
298 int structSize;
299 int (* *  _vTbl)();
300 int vTblSize;
301 int (*  Constructor)(struct __ecereNameSpace__ecere__com__Instance *);
302 void (*  Destructor)(struct __ecereNameSpace__ecere__com__Instance *);
303 int offsetClass;
304 int sizeClass;
305 struct __ecereNameSpace__ecere__com__Class * base;
306 struct __ecereNameSpace__ecere__sys__BinaryTree methods;
307 struct __ecereNameSpace__ecere__sys__BinaryTree members;
308 struct __ecereNameSpace__ecere__sys__BinaryTree prop;
309 struct __ecereNameSpace__ecere__sys__OldList membersAndProperties;
310 struct __ecereNameSpace__ecere__sys__BinaryTree classProperties;
311 struct __ecereNameSpace__ecere__sys__OldList derivatives;
312 int memberID;
313 int startMemberID;
314 int type;
315 struct __ecereNameSpace__ecere__com__Instance * module;
316 struct __ecereNameSpace__ecere__com__NameSpace *  nameSpace;
317 char *  dataTypeString;
318 struct Type * dataType;
319 int typeSize;
320 int defaultAlignment;
321 void (*  Initialize)();
322 int memberOffset;
323 struct __ecereNameSpace__ecere__sys__OldList selfWatchers;
324 char *  designerClass;
325 unsigned int noExpansion;
326 char *  defaultProperty;
327 unsigned int comRedefinition;
328 int count;
329 unsigned int isRemote;
330 unsigned int internalDecl;
331 void *  data;
332 unsigned int computeSize;
333 int structAlignment;
334 int destructionWatchOffset;
335 unsigned int fixed;
336 struct __ecereNameSpace__ecere__sys__OldList delayedCPValues;
337 int inheritanceAccess;
338 char *  fullName;
339 void *  symbol;
340 struct __ecereNameSpace__ecere__sys__OldList conversions;
341 struct __ecereNameSpace__ecere__sys__OldList templateParams;
342 struct __ecereNameSpace__ecere__com__ClassTemplateArgument *  templateArgs;
343 struct __ecereNameSpace__ecere__com__Class * templateClass;
344 struct __ecereNameSpace__ecere__sys__OldList templatized;
345 int numParams;
346 } __attribute__ ((gcc_struct));
347
348 extern long long __ecereNameSpace__ecere__com__eClass_GetProperty(struct __ecereNameSpace__ecere__com__Class * _class, char *  name);
349
350 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Instance;
351
352 struct __ecereNameSpace__ecere__com__Instance
353 {
354 int (* *  _vTbl)();
355 struct __ecereNameSpace__ecere__com__Class * _class;
356 int _refCount;
357 } __attribute__ ((gcc_struct));
358
359 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__DataMember;
360
361 struct __ecereNameSpace__ecere__com__DataMember
362 {
363 struct __ecereNameSpace__ecere__com__DataMember * prev;
364 struct __ecereNameSpace__ecere__com__DataMember * next;
365 char *  name;
366 unsigned int isProperty;
367 int memberAccess;
368 int id;
369 struct __ecereNameSpace__ecere__com__Class * _class;
370 char *  dataTypeString;
371 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
372 struct Type * dataType;
373 int type;
374 int offset;
375 int memberID;
376 struct __ecereNameSpace__ecere__sys__OldList members;
377 struct __ecereNameSpace__ecere__sys__BinaryTree membersAlpha;
378 int memberOffset;
379 int structAlignment;
380 } __attribute__ ((gcc_struct));
381
382 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__SerialBuffer;
383
384 struct __ecereNameSpace__ecere__com__SerialBuffer
385 {
386 unsigned char *  _buffer;
387 unsigned int count;
388 unsigned int _size;
389 unsigned int pos;
390 } __attribute__ ((gcc_struct));
391
392 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__ClassTemplateArgument;
393
394 struct __ecereNameSpace__ecere__com__ClassTemplateArgument
395 {
396 union
397 {
398 struct
399 {
400 char *  dataTypeString;
401 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
402 } __attribute__ ((gcc_struct));
403 struct __ecereNameSpace__ecere__com__DataValue expression;
404 struct
405 {
406 char *  memberString;
407 union
408 {
409 struct __ecereNameSpace__ecere__com__DataMember * member;
410 struct __ecereNameSpace__ecere__com__Property * prop;
411 struct __ecereNameSpace__ecere__com__Method * method;
412 } __attribute__ ((gcc_struct));
413 } __attribute__ ((gcc_struct));
414 } __attribute__ ((gcc_struct));
415 } __attribute__ ((gcc_struct));
416
417 unsigned int parsingType;
418
419 void SetParsingType(unsigned int b)
420 {
421 parsingType = b;
422 }
423
424 extern struct TypeName * parsedType;
425
426 extern unsigned int echoOn;
427
428 extern unsigned int type_yydebug;
429
430 extern struct Location yylloc;
431
432 int type_yyparse();
433
434 void resetScannerPos(struct CodePosition * pos);
435
436 extern struct Declarator * CopyDeclarator(struct Declarator * declarator);
437
438 extern int printf(char * , ...);
439
440 extern void FreeDeclarator(struct Declarator * decl);
441
442 struct Declarator * PlugDeclarator(struct Declarator * decl, struct Declarator * baseDecl)
443 {
444 if(decl && decl->type != 1)
445 {
446 struct Declarator * base;
447
448 decl = CopyDeclarator(decl);
449 base = decl;
450 if(base->type != 1)
451 {
452 for(; base->declarator && base->declarator->type != 1; base = base->declarator)
453 {
454 printf("");
455 }
456 }
457 if(baseDecl)
458 {
459 if(base->declarator)
460 FreeDeclarator(base->declarator);
461 base->declarator = baseDecl;
462 }
463 else if(base->type == 1)
464 {
465 FreeDeclarator(decl);
466 decl = (((void *)0));
467 }
468 return decl;
469 }
470 else
471 return baseDecl;
472 }
473
474 extern struct Declarator * MkDeclaratorIdentifier(struct Identifier * id);
475
476 extern struct Identifier * MkIdentifier(char *  string);
477
478 extern struct Declarator * MkDeclaratorPointer(struct Pointer * pointer, struct Declarator * declarator);
479
480 extern struct Pointer * MkPointer(struct __ecereNameSpace__ecere__sys__OldList * qualifiers, struct Pointer * pointer);
481
482 struct Declarator * QMkPtrDecl(char * id)
483 {
484 struct Declarator * declarator = id ? MkDeclaratorIdentifier(MkIdentifier(id)) : (((void *)0));
485
486 return MkDeclaratorPointer(MkPointer((((void *)0)), (((void *)0))), declarator);
487 }
488
489 extern struct __ecereNameSpace__ecere__sys__OldList *  MkList(void);
490
491 extern void ListAdd(struct __ecereNameSpace__ecere__sys__OldList * list, void *  item);
492
493 extern struct Specifier * MkSpecifierName(char *  name);
494
495 extern struct TypeName * MkTypeName(struct __ecereNameSpace__ecere__sys__OldList * qualifiers, struct Declarator * declarator);
496
497 struct TypeName * QMkType(char * spec, struct Declarator * decl)
498 {
499 struct __ecereNameSpace__ecere__sys__OldList * specs = MkList();
500
501 ListAdd(specs, MkSpecifierName(spec));
502 return MkTypeName(specs, decl);
503 }
504
505 struct TypeName * QMkClass(char * spec, struct Declarator * decl)
506 {
507 struct __ecereNameSpace__ecere__sys__OldList * specs = MkList();
508
509 ListAdd(specs, MkSpecifierName(spec));
510 return MkTypeName(specs, decl);
511 }
512
513 extern struct Expression * MkExpBrackets(struct __ecereNameSpace__ecere__sys__OldList * expressions);
514
515 struct Expression * QBrackets(struct Expression * exp)
516 {
517 struct __ecereNameSpace__ecere__sys__OldList * expList = MkList();
518
519 ListAdd(expList, exp);
520 return MkExpBrackets(expList);
521 }
522
523 extern struct Expression * MkExpIdentifier(struct Identifier * id);
524
525 struct Expression * QMkExpId(char * id)
526 {
527 return MkExpIdentifier(MkIdentifier(id));
528 }
529
530 extern struct Expression * MkExpCondition(struct Expression * cond, struct __ecereNameSpace__ecere__sys__OldList * expressions, struct Expression * elseExp);
531
532 struct Expression * QMkExpCond(struct Expression * cond, struct Expression * exp, struct Expression * elseExp)
533 {
534 struct __ecereNameSpace__ecere__sys__OldList * expList = MkList();
535
536 ListAdd(expList, exp);
537 return MkExpCondition(cond, expList, elseExp);
538 }
539
540 extern struct Declaration * MkDeclaration(struct __ecereNameSpace__ecere__sys__OldList * specifiers, struct __ecereNameSpace__ecere__sys__OldList * initDeclarators);
541
542 struct Declaration * QMkDeclaration(char * name, struct InitDeclarator * initDecl)
543 {
544 struct __ecereNameSpace__ecere__sys__OldList * specs = MkList(), * initDecls = (((void *)0));
545
546 ListAdd(specs, MkSpecifierName(name));
547 if(initDecl)
548 {
549 initDecls = MkList();
550 ListAdd(initDecls, initDecl);
551 }
552 return MkDeclaration(specs, initDecls);
553 }
554
555 extern struct Specifier * MkSpecifier(int specifier);
556
557 struct Declaration * QMkDeclarationBase(int base, struct InitDeclarator * initDecl)
558 {
559 struct __ecereNameSpace__ecere__sys__OldList * specs = MkList(), * initDecls = (((void *)0));
560
561 ListAdd(specs, MkSpecifier(base));
562 if(initDecl)
563 {
564 initDecls = MkList();
565 ListAdd(initDecls, initDecl);
566 }
567 return MkDeclaration(specs, initDecls);
568 }
569
570 extern char *  __ecereNameSpace__ecere__sys__CopyString(char *  string);
571
572 char * QMkString(char * source)
573 {
574 char * string;
575
576 if(source)
577 {
578 int len = 0;
579 int i, j = 0;
580 char ch;
581
582 for(i = 0; (ch = source[i]); i++)
583 {
584 len++;
585 if(ch == '\"' || ch == '\\')
586 len++;
587 }
588 string = __ecereNameSpace__ecere__com__eSystem_New(sizeof(char) * (len + 3));
589 string[j++] = '\"';
590 for(i = 0; (ch = source[i]); i++)
591 {
592 if(ch == '\"' || ch == '\\')
593 string[j++] = '\\';
594 string[j++] = ch;
595 }
596 string[j++] = '\"';
597 string[j] = '\0';
598 }
599 else
600 string = __ecereNameSpace__ecere__sys__CopyString("0");
601 return string;
602 }
603
604 struct Declarator * GetFuncDecl(struct Declarator * decl)
605 {
606 struct Declarator * funcDecl = (((void *)0));
607
608 while(decl && decl->type != 1)
609 {
610 if(decl->type == 4)
611 funcDecl = decl;
612 decl = decl->declarator;
613 }
614 return funcDecl;
615 }
616
617 unsigned int parseTypeError;
618
619 extern struct __ecereNameSpace__ecere__com__Instance * fileInput;
620
621 extern size_t strlen(const char * );
622
623 extern int declMode;
624
625 extern void resetScanner();
626
627 extern struct Declarator * MkStructDeclarator(struct Declarator * declarator, struct Expression * exp);
628
629 extern void FreeTypeName(struct TypeName * typeName);
630
631 extern void Compiler_Warning(char *  format, ...);
632
633 extern char *  __ecereNameSpace__ecere__GetTranslatedString(struct __ecereNameSpace__ecere__com__Instance * module, char *  string, char *  stringAndContext);
634
635 extern struct __ecereNameSpace__ecere__com__Instance * __thisModule;
636
637 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__TempFile;
638
639 extern void *  __ecereNameSpace__ecere__com__eInstance_New(struct __ecereNameSpace__ecere__com__Class * _class);
640
641 int __ecereVMethodID___ecereNameSpace__ecere__sys__File_Write;
642
643 int __ecereVMethodID___ecereNameSpace__ecere__sys__File_Seek;
644
645 extern void __ecereNameSpace__ecere__com__eInstance_DecRef(struct __ecereNameSpace__ecere__com__Instance * instance);
646
647 void __ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove(struct __ecereNameSpace__ecere__sys__OldList * this, void *  item);
648
649 void __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(struct __ecereNameSpace__ecere__sys__OldList * this, void *  item);
650
651 struct Declarator * SpecDeclFromString(char * string, struct __ecereNameSpace__ecere__sys__OldList * specs, struct Declarator * baseDecl)
652 {
653 struct Location oldLocation = yylloc;
654 struct Declarator * decl = (((void *)0));
655 struct __ecereNameSpace__ecere__com__Instance * backFileInput = fileInput;
656
657 if(!string)
658 string = "void()";
659 fileInput = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass___ecereNameSpace__ecere__sys__TempFile);
660 ((int (*)(struct __ecereNameSpace__ecere__com__Instance *, void *  buffer, unsigned int size, unsigned int count))fileInput->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Write])(fileInput, string, 1, strlen(string));
661 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode))fileInput->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Seek])(fileInput, 0, 0);
662 echoOn = 0x0;
663 parseTypeError = 0x0;
664 parsedType = (((void *)0));
665 declMode = (int)0;
666 resetScanner();
667 {
668 unsigned int oldParsingType = parsingType;
669
670 parsingType = 0x1;
671 type_yyparse();
672 parsingType = oldParsingType;
673 }
674 declMode = 2;
675 type_yydebug = 0x0;
676 (__ecereNameSpace__ecere__com__eInstance_DecRef(fileInput), fileInput = 0);
677 if(parsedType)
678 {
679 if(parsedType->qualifiers)
680 {
681 struct Specifier * spec;
682
683 for(; (spec = (*parsedType->qualifiers).first); )
684 {
685 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove((&*parsedType->qualifiers), spec);
686 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*specs), spec);
687 }
688 }
689 if(parsedType->bitCount)
690 {
691 parsedType->declarator = MkStructDeclarator(parsedType->declarator, parsedType->bitCount);
692 parsedType->bitCount = (((void *)0));
693 }
694 decl = PlugDeclarator(parsedType->declarator, baseDecl);
695 FreeTypeName(parsedType);
696 parsedType = (((void *)0));
697 if(parseTypeError)
698 {
699 Compiler_Warning(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "parsing type %s\n", (((void *)0))), string);
700 }
701 }
702 else
703 {
704 Compiler_Warning(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "parsing type %s\n", (((void *)0))), string);
705 decl = baseDecl;
706 }
707 yylloc = oldLocation;
708 fileInput = backFileInput;
709 return decl;
710 }
711
712 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__GlobalFunction;
713
714 struct __ecereNameSpace__ecere__com__GlobalFunction;
715
716 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);
717
718 void __ecereRegisterModule_shortcuts(struct __ecereNameSpace__ecere__com__Instance * module)
719 {
720 struct __ecereNameSpace__ecere__com__Class * class;
721
722 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("SetParsingType", "void SetParsingType(bool b)", SetParsingType, module, 1);
723 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("PlugDeclarator", "Declarator PlugDeclarator(Declarator decl, Declarator baseDecl)", PlugDeclarator, module, 2);
724 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("QMkPtrDecl", "Declarator QMkPtrDecl(char * id)", QMkPtrDecl, module, 2);
725 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("QMkType", "TypeName QMkType(char * spec, Declarator decl)", QMkType, module, 2);
726 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("QMkClass", "TypeName QMkClass(char * spec, Declarator decl)", QMkClass, module, 2);
727 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("QBrackets", "Expression QBrackets(Expression exp)", QBrackets, module, 2);
728 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("QMkExpId", "Expression QMkExpId(char * id)", QMkExpId, module, 2);
729 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("QMkExpCond", "Expression QMkExpCond(Expression cond, Expression exp, Expression elseExp)", QMkExpCond, module, 2);
730 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("QMkDeclaration", "Declaration QMkDeclaration(char * name, InitDeclarator initDecl)", QMkDeclaration, module, 2);
731 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("QMkDeclarationBase", "Declaration QMkDeclarationBase(int base, InitDeclarator initDecl)", QMkDeclarationBase, module, 2);
732 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("QMkString", "char * QMkString(char * source)", QMkString, module, 2);
733 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("GetFuncDecl", "Declarator GetFuncDecl(Declarator decl)", GetFuncDecl, module, 1);
734 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("SpecDeclFromString", "Declarator SpecDeclFromString(char * string, ecere::sys::OldList * specs, Declarator baseDecl)", SpecDeclFromString, module, 1);
735 }
736
737 void __ecereUnregisterModule_shortcuts(struct __ecereNameSpace__ecere__com__Instance * module)
738 {
739
740 }
741