Changeset 78dd0da for src/SymTab/Mangler.h
- Timestamp:
- Dec 15, 2015, 2:56:43 PM (7 years ago)
- Branches:
- aaron-thesis, arm-eh, cleanup-dtors, ctor, deferred_resn, demangler, enum, forall-pointer-decay, gc_noraii, jacob/cs343-translation, jenkins-sandbox, master, memory, new-ast, new-ast-unique-expr, new-env, no_list, persistent-indexer, pthread-emulation, qualifiedEnum, resolv-new, string, with_gc
- Children:
- 4389966, ffad73a
- Parents:
- 5e92fee
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/SymTab/Mangler.h
r5e92fee r78dd0da 22 22 23 23 namespace SymTab { 24 /// Mangles names to a unique C identifier 24 25 class Mangler : public Visitor { 25 26 public: 26 27 template< typename SynTreeClass > 27 static std::string mangle( SynTreeClass *decl, bool mangleOverridable = true ); // interface to clients28 static std::string mangle( SynTreeClass *decl, bool mangleOverridable = true, bool includeQualifiers = true ); // interface to clients 28 29 29 /// using Visitor::visit;30 30 virtual void visit( ObjectDecl *declaration ); 31 31 virtual void visit( FunctionDecl *declaration ); … … 45 45 std::string get_mangleName() { return mangleName.str(); } 46 46 private: 47 std::ostringstream mangleName; 47 std::ostringstream mangleName; ///< Mangled name being constructed 48 48 typedef std::map< std::string, std::pair< int, int > > VarMapType; 49 VarMapType varNums; 50 int nextVarNum; 51 bool isTopLevel; 52 bool mangleOverridable; 49 VarMapType varNums; ///< Map of type variables to indices 50 int nextVarNum; ///< Next type variable index 51 bool isTopLevel; ///< Is the Mangler at the top level 52 bool mangleOverridable; ///< Specially mangle overridable built-in methods 53 bool includeQualifiers; ///< Include type qualifiers in mangled name 53 54 54 Mangler( bool mangleOverridable );55 Mangler( bool mangleOverridable, bool includeQualifiers ); 55 56 Mangler( const Mangler & ); 56 57 … … 62 63 63 64 template< typename SynTreeClass > 64 std::string Mangler::mangle( SynTreeClass *decl, bool mangleOverridable ) {65 Mangler mangler( mangleOverridable );65 std::string Mangler::mangle( SynTreeClass *decl, bool mangleOverridable, bool includeQualifiers ) { 66 Mangler mangler( mangleOverridable, includeQualifiers ); 66 67 maybeAccept( decl, mangler ); 67 68 return mangler.get_mangleName();
Note: See TracChangeset
for help on using the changeset viewer.