Joos1W Compiler Framework
All Classes Functions Typedefs Pages
Mangling.h
1 #pragma once
2 
3 #include <sstream>
4 #include <string>
5 
6 #include "ast/Type.h"
7 #include "semantic/NameResolver.h"
8 
9 namespace codegen {
10 
11 class Mangler {
12 public:
13  Mangler(semantic::NameResolver const& nr) : NR{nr} {}
14  void MangleFunctionName(ast::MethodDecl const* decl);
15  void MangleType(ast::Type const* ty);
16  std::string getMangledName() { return ss.str(); }
17 
18 private:
19  void MangleCanonicalName(std::string_view name);
20 
21 private:
22  semantic::NameResolver const& NR;
23  std::ostringstream ss;
24 };
25 
26 } // namespace codegen