struct Specifier * CopySpecifier(struct Specifier * spec) { if(spec) switch(spec->type) { case 0: return MkSpecifier(spec->specifier); case 2: { struct Identifier * id = CopyIdentifier(spec->id); struct __ecereNameSpace__ecere__sys__OldList * list = MkList(); struct Enumerator * enumerator; if(spec->list) { for(enumerator = (*spec->list).first; enumerator; enumerator = enumerator->next) ListAdd(list, CopyEnumerator(enumerator)); } return MkEnum(id, list); } case 3: case 4: { struct Identifier * id = CopyIdentifier(spec->id); struct __ecereNameSpace__ecere__sys__OldList * list = (((void *)0)); struct ClassDef * def; struct Specifier * s; if(spec->definitions) { list = MkList(); if(spec->list) { for(def = (*spec->list).first; def; def = def->next) ListAdd(list, CopyClassDef(def)); } } s = MkStructOrUnion(spec->type, id, list); s->extDeclStruct = CopyExtDecl(spec->extDeclStruct); return s; } case 1: { struct Specifier * copy = (copy = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Specifier), copy->type = 1, copy->name = __ecereNameSpace__ecere__sys__CopyString(spec->name), copy->symbol = spec->symbol, copy->templateArgs = (((void *)0)), copy); return copy; } case 7: return MkSpecifierSubClass(CopySpecifier(spec->_class)); case 8: return __extension__ ({ struct Specifier * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Specifier); __ecereInstance1->loc = spec->loc, __ecereInstance1->type = 8, __ecereInstance1->templateParameter = spec->templateParameter, __ecereInstance1; }); case 5: return MkSpecifierExtended(CopyExtDecl(spec->extDecl)); }
struct Declarator * SpecDeclFromString(char * string, struct __ecereNameSpace__ecere__sys__OldList * specs, struct Declarator * baseDecl) { struct Location oldLocation = yylloc; struct Declarator * decl = (((void *)0)); struct __ecereNameSpace__ecere__com__Instance * backFileInput = fileInput; if(!string) string = "void()"; fileInput = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass___ecereNameSpace__ecere__sys__TempFile); ((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)); ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode))fileInput->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Seek])(fileInput, 0, 0); echoOn = 0x0; parseTypeError = 0x0; parsedType = (((void *)0)); declMode = (int)0; resetScanner(); { unsigned int oldParsingType = parsingType; parsingType = 0x1; type_yyparse(); parsingType = oldParsingType; } declMode = 2; type_yydebug = 0x0; (__ecereNameSpace__ecere__com__eInstance_DecRef(fileInput), fileInput = 0); if(parsedType) { if(parsedType->qualifiers) { struct Specifier * spec; for(; (spec = (*parsedType->qualifiers).first); ) { __ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove((&*parsedType->qualifiers), spec); __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*specs), spec); } } if(parsedType->bitCount) { parsedType->declarator = MkStructDeclarator(parsedType->declarator, parsedType->bitCount); parsedType->bitCount = (((void *)0)); } decl = PlugDeclarator(parsedType->declarator, baseDecl); FreeTypeName(parsedType); parsedType = (((void *)0)); if(parseTypeError) { Compiler_Warning(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "parsing type %s\n", (((void *)0))), string); } } else { Compiler_Warning(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "parsing type %s\n", (((void *)0))), string); decl = baseDecl; } yylloc = oldLocation; fileInput = backFileInput; return decl; }
static struct Statement * CopyStatement(struct Statement * stmt) { struct Statement * result = (((void *)0)); if(stmt) { switch(stmt->type) { case 2: result = MkCompoundStmt(CopyList(stmt->compound.declarations, CopyDeclaration), CopyList(stmt->compound.statements, CopyStatement)); result->compound.context = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context); break; case 3: result = MkExpressionStmt(CopyList(stmt->expressions, CopyExpression)); break; case 14: result = MkBadDeclStmt(CopyDeclaration(stmt->decl)); break; } } if(result) { result->loc = stmt->loc; } return result; }