Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/SymTab/Mangler.h

    rd7d9a60 r90cac45  
    2424#include "SynTree/Visitor.h"  // for Visitor, maybeAccept
    2525
     26// https://itanium-cxx-abi.github.io/cxx-abi/abi.html#mangling
     27// The CFA name mangling scheme is based closely on the itanium C++ name mangling scheme, with the following key differences:
     28// * Variable names are also mangled to include type information, not just functions
     29// * CFA does not have template expansion, so the rules for function specialization do not apply.
     30// * CFA instead has to handle type parameters and assertion parameters.
     31// * Currently name compression is not implemented.
     32
    2633namespace SymTab {
    2734        namespace Mangler {
     
    3340                /// Mangle ignoring generic type parameters
    3441                std::string mangleConcrete( Type* ty );
     42
     43                namespace Encoding {
     44                        extern const std::string manglePrefix;
     45                        extern const std::string basicTypes[];
     46                        extern const std::map<int, std::string> qualifiers;
     47
     48                        extern const std::string void_t;
     49                        extern const std::string zero;
     50                        extern const std::string one;
     51
     52                        extern const std::string function;
     53                        extern const std::string tuple;
     54                        extern const std::string pointer;
     55                        extern const std::string array;
     56                        extern const std::string qualifiedTypeStart;
     57                        extern const std::string qualifiedTypeEnd;
     58
     59                        extern const std::string struct_t;
     60                        extern const std::string union_t;
     61                        extern const std::string enum_t;
     62                        extern const std::string type;
     63
     64                        extern const std::string autogen;
     65                        extern const std::string intrinsic;
     66                };
    3567        } // Mangler
    3668} // SymTab
     69
     70extern "C" {
     71        char * cforall_demangle(const char *, int);
     72}
    3773
    3874// Local Variables: //
Note: See TracChangeset for help on using the changeset viewer.