Changes in src/SymTab/Indexer.h [4670c79:0ac366b]
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/SymTab/Indexer.h
r4670c79 r0ac366b 19 19 #include <list> // for list 20 20 #include <string> // for string 21 #include <functional> // for function 21 22 22 23 #include "SynTree/Visitor.h" // for Visitor … … 40 41 41 42 struct IdData { 42 DeclarationWithType * id; 43 Expression * baseExpr; // WithExpr 43 DeclarationWithType * id = nullptr; 44 Expression * baseExpr = nullptr; // WithExpr 45 46 /// non-null if this declaration is deleted 47 BaseSyntaxNode * deleteStmt = nullptr; 44 48 45 49 Expression * combine() const; … … 62 66 63 67 /// looks up a specific mangled ID at the given scope 64 DeclarationWithType *lookupIdAtScope( const std::string &id, const std::string &mangleName, unsigned long scope ) const; 68 IdData * lookupIdAtScope( const std::string &id, const std::string &mangleName, unsigned long scope ); 69 const IdData * lookupIdAtScope( const std::string &id, const std::string &mangleName, unsigned long scope ) const; 65 70 /// returns true if there exists a declaration with C linkage and the given name with a different mangled name 66 71 bool hasIncompatibleCDecl( const std::string &id, const std::string &mangleName, unsigned long scope ) const; … … 74 79 TraitDecl *lookupTraitAtScope( const std::string &id, unsigned long scope ) const; 75 80 76 void addId( DeclarationWithType *decl, Expression * baseExpr = nullptr ); 81 typedef std::function<bool(IdData &, const std::string &)> ConflictFunction; 82 83 void addId( DeclarationWithType * decl, Expression * baseExpr = nullptr ); 84 void addDeletedId( DeclarationWithType * decl, BaseSyntaxNode * deleteStmt ); 85 77 86 void addType( NamedTypeDecl *decl ); 78 87 void addStruct( const std::string &id ); … … 84 93 85 94 /// adds all of the IDs from WithStmt exprs 86 void addWith( std::list< Expression * > & withExprs );95 void addWith( std::list< Expression * > & withExprs, BaseSyntaxNode * withStmt ); 87 96 88 97 /// adds all of the members of the Aggregate (addWith helper) 89 void addMembers( AggregateDecl * aggr, Expression * expr );98 void addMembers( AggregateDecl * aggr, Expression * expr, ConflictFunction ); 90 99 91 100 /// convenience function for adding a list of Ids to the indexer … … 117 126 /// Ensures that tables variable is writable (i.e. allocated, uniquely owned by this Indexer, and at the current scope) 118 127 void makeWritable(); 128 129 /// common code for addId, addDeletedId, etc. 130 void addId( DeclarationWithType * decl, ConflictFunction, Expression * baseExpr = nullptr, BaseSyntaxNode * deleteStmt = nullptr ); 119 131 }; 120 132 } // namespace SymTab
Note:
See TracChangeset
for help on using the changeset viewer.