Changes in src/SynTree/Declaration.h [f326f99:03e5d14]
- File:
-
- 1 edited
-
src/SynTree/Declaration.h (modified) (7 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/SynTree/Declaration.h
rf326f99 r03e5d14 10 10 // Created On : Mon May 18 07:44:20 2015 11 11 // Last Modified By : Rob Schluntz 12 // Last Modified On : Mon Apr 11 16:55:12 201613 // Update Count : 3 612 // Last Modified On : Fri May 06 15:39:02 2016 13 // Update Count : 33 14 14 // 15 15 … … 22 22 #include "Parser/LinkageSpec.h" 23 23 #include "Parser/ParseNode.h" 24 #include <string>25 24 26 25 class Declaration { … … 68 67 void set_mangleName( std::string newValue ) { mangleName = newValue; } 69 68 70 std::string get_scopedMangleName() const { return mangleName + "_" + std::to_string(scopeLevel); }71 72 int get_scopeLevel() const { return scopeLevel; }73 void set_scopeLevel( int newValue ) { scopeLevel = newValue; }74 75 69 virtual DeclarationWithType *clone() const = 0; 76 70 virtual DeclarationWithType *acceptMutator( Mutator &m ) = 0; … … 81 75 // this represents the type with all types and typedefs expanded it is generated by SymTab::Validate::Pass2 82 76 std::string mangleName; 83 // need to remember the scope level at which the variable was declared, so that84 // shadowed identifiers can be accessed85 int scopeLevel = 0;86 77 }; 87 78 … … 115 106 typedef DeclarationWithType Parent; 116 107 public: 117 FunctionDecl( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Type linkage, FunctionType *type, CompoundStmt *statements, bool isInline, bool isNoreturn ); 108 // temporary - merge this into general GCC attributes 109 struct Attribute { 110 enum Type { 111 NoAttribute, Constructor, Destructor, 112 } type; 113 enum Priority { 114 // priorities 0-100 are reserved by gcc, so it's okay to use 100 an exceptional case 115 Default = 100, High, 116 } priority; 117 Attribute(Type t = NoAttribute, Priority p = Default) : type(t), priority(p) {}; 118 }; 119 120 FunctionDecl( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Type linkage, FunctionType *type, CompoundStmt *statements, bool isInline, bool isNoreturn, Attribute attribute = Attribute() ); 118 121 FunctionDecl( const FunctionDecl &other ); 119 122 virtual ~FunctionDecl(); … … 128 131 std::list< std::string >& get_oldIdents() { return oldIdents; } 129 132 std::list< Declaration* >& get_oldDecls() { return oldDecls; } 133 Attribute get_attribute() const { return attribute; } 134 void set_attribute( Attribute newValue ) { attribute = newValue; } 130 135 131 136 virtual FunctionDecl *clone() const { return new FunctionDecl( *this ); } … … 139 144 std::list< std::string > oldIdents; 140 145 std::list< Declaration* > oldDecls; 146 Attribute attribute; 141 147 }; 142 148
Note:
See TracChangeset
for help on using the changeset viewer.