source: translator/Tuples/FunctionFixer.h@ 643a2e1

ADT aaron-thesis arm-eh ast-experimental cleanup-dtors ctor deferred_resn demangler enum forall-pointer-decay gc_noraii jacob/cs343-translation jenkins-sandbox memory new-ast new-ast-unique-expr new-env no_list persistent-indexer pthread-emulation qualifiedEnum resolv-new string with_gc
Last change on this file since 643a2e1 was 51b73452, checked in by Peter A. Buhr <pabuhr@…>, 11 years ago

initial commit

  • Property mode set to 100644
File size: 1.8 KB
Line 
1#ifndef _FUNFIX_H_
2#define _FUNFIX_H_
3
4#include "SynTree/Mutator.h"
5
6#include "SynTree/Declaration.h"
7#include "SynTree/Expression.h"
8#include "SynTree/Statement.h"
9#include "SynTree/Type.h"
10
11#include "SymTab/Indexer.h"
12#include "ResolvExpr/Resolver.h"
13#include "ResolvExpr/AlternativeFinder.h"
14
15namespace Tuples {
16 class FunctionFixer : public Mutator
17 {
18 typedef Mutator Parent;
19
20 public:
21 FunctionFixer() {}
22 virtual ~FunctionFixer() {}
23 virtual Type *mutate( FunctionType *functionType );
24 virtual Statement *mutate( ReturnStmt *retStmt );
25 virtual DeclarationWithType *mutate( FunctionDecl *functionDecl );
26 virtual Expression *mutate( VariableExpr *variableExpr);
27
28 // indexer runs
29 virtual ObjectDecl *mutate( ObjectDecl *objectDecl )
30 { index.visit( objectDecl ); return objectDecl; }
31 virtual TypeDecl *mutate( TypeDecl *typeDecl )
32 { index.visit( typeDecl ); return typeDecl; }
33 virtual TypedefDecl *mutate( TypedefDecl *typeDecl )
34 { index.visit( typeDecl ); return typeDecl; }
35 virtual StructDecl *mutate( StructDecl *aggregateDecl )
36 { index.visit( aggregateDecl ); return aggregateDecl; }
37 virtual UnionDecl *mutate( UnionDecl *aggregateDecl )
38 { index.visit( aggregateDecl ); return aggregateDecl; }
39 virtual EnumDecl *mutate( EnumDecl *aggregateDecl )
40 { index.visit( aggregateDecl ); return aggregateDecl; }
41
42 virtual Type *mutate( StructInstType *aggrInst )
43 { index.visit( aggrInst ); return aggrInst; }
44 virtual Type *mutate( UnionInstType *aggrInst )
45 { index.visit( aggrInst ); return aggrInst; }
46
47
48
49 private:
50 std::list< DeclarationWithType * > rets;
51 SymTab::Indexer index;
52 };
53
54} // namespace Tuples
55
56
57#endif // #ifndef _FUNFIX_H_
58
59/*
60 Local Variables:
61 mode: c++
62 End:
63*/
Note: See TracBrowser for help on using the repository browser.