LLVM  10.0.0svn
Classes | Namespaces | Macros | Typedefs | Enumerations | Functions
ItaniumDemangle.h File Reference
#include "DemangleConfig.h"
#include "StringView.h"
#include "Utility.h"
#include <cassert>
#include <cctype>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <numeric>
#include <utility>
Include dependency graph for ItaniumDemangle.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  Node
 
class  NodeArray
 
struct  NodeArrayNode
 
class  DotSuffix
 
class  VendorExtQualType
 
class  QualType
 
class  ConversionOperatorType
 
class  PostfixQualifiedType
 
class  NameType
 
class  ElaboratedTypeSpefType
 
struct  AbiTagAttr
 
class  EnableIfAttr
 
class  ObjCProtoName
 
class  PointerType
 
class  ReferenceType
 
class  PointerToMemberType
 
class  NodeOrString
 
class  ArrayType
 
class  FunctionType
 
class  NoexceptSpec
 
class  DynamicExceptionSpec
 
class  FunctionEncoding
 
class  LiteralOperator
 
class  SpecialName
 
class  CtorVtableSpecialName
 
struct  NestedName
 
struct  LocalName
 
class  QualifiedName
 
class  VectorType
 
class  PixelVectorType
 
class  SyntheticTemplateParamName
 An invented name for a template parameter for which we don't have a corresponding template argument. More...
 
class  TypeTemplateParamDecl
 A template type parameter declaration, 'typename T'. More...
 
class  NonTypeTemplateParamDecl
 A non-type template parameter declaration, 'int N'. More...
 
class  TemplateTemplateParamDecl
 A template template parameter declaration, 'template<typename T> typename N'. More...
 
class  TemplateParamPackDecl
 A template parameter pack declaration, 'typename ...T'. More...
 
class  ParameterPack
 An unexpanded parameter pack (either in the expression or type context). More...
 
class  TemplateArgumentPack
 A variadic template argument. More...
 
class  ParameterPackExpansion
 A pack expansion. More...
 
class  TemplateArgs
 
struct  ForwardTemplateReference
 A forward-reference to a template argument that was not known at the point where the template parameter name was parsed in a mangling. More...
 
struct  NameWithTemplateArgs
 
class  GlobalQualifiedName
 
struct  StdQualifiedName
 
class  ExpandedSpecialSubstitution
 
class  SpecialSubstitution
 
class  CtorDtorName
 
class  DtorName
 
class  UnnamedTypeName
 
class  ClosureTypeName
 
class  StructuredBindingName
 
class  BinaryExpr
 
class  ArraySubscriptExpr
 
class  PostfixExpr
 
class  ConditionalExpr
 
class  MemberExpr
 
class  EnclosingExpr
 
class  CastExpr
 
class  SizeofParamPackExpr
 
class  CallExpr
 
class  NewExpr
 
class  DeleteExpr
 
class  PrefixExpr
 
class  FunctionParam
 
class  ConversionExpr
 
class  InitListExpr
 
class  BracedExpr
 
class  BracedRangeExpr
 
class  FoldExpr
 
class  ThrowExpr
 
class  UUIDOfExpr
 
class  BoolExpr
 
class  StringLiteral
 
class  LambdaExpr
 
class  IntegerCastExpr
 
class  IntegerLiteral
 
struct  FloatData< Float >
 
class  FloatLiteralImpl< Float >
 
struct  NodeKind< NodeT >
 Determine the kind of a node from its type. More...
 
class  PODSmallVector< T, N >
 
struct  AbstractManglingParser< Derived, Alloc >
 
class  AbstractManglingParser< Derived, Alloc >::ScopedTemplateParamList
 
struct  AbstractManglingParser< Derived, Alloc >::NameState
 Holds some extra information about a <name> that is being parsed. More...
 
struct  FloatData< Float >
 
struct  FloatData< float >
 
struct  FloatData< double >
 
struct  FloatData< long double >
 
struct  ManglingParser< Alloc >
 

Namespaces

 float_literal_impl
 

Macros

#define FOR_EACH_NODE_KIND(X)
 
#define ENUMERATOR(NodeKind)   K ## NodeKind,
 
#define CASE(X)   case K ## X: return F(static_cast<const X*>(this));
 
#define SPECIALIZATION(X)
 

Typedefs

using FloatLiteral = FloatLiteralImpl< float >
 
using DoubleLiteral = FloatLiteralImpl< double >
 
using LongDoubleLiteral = FloatLiteralImpl< long double >
 

Enumerations

enum  FunctionRefQual : unsigned char { FrefQualNone, FrefQualLValue, FrefQualRValue }
 
enum  Qualifiers { QualNone = 0, QualConst = 0x1, QualVolatile = 0x2, QualRestrict = 0x4 }
 
enum  ReferenceKind { ReferenceKind::LValue, ReferenceKind::RValue }
 
enum  TemplateParamKind { TemplateParamKind::Type, TemplateParamKind::NonType, TemplateParamKind::Template }
 
enum  SpecialSubKind {
  SpecialSubKind::allocator, SpecialSubKind::basic_string, SpecialSubKind::string, SpecialSubKind::istream,
  SpecialSubKind::ostream, SpecialSubKind::iostream
}
 

Functions

Qualifiers operator|= (Qualifiers &Q1, Qualifiers Q2)
 
constexpr Node::Kind float_literal_impl::getFloatLiteralKind (float *)
 
constexpr Node::Kind float_literal_impl::getFloatLiteralKind (double *)
 
constexpr Node::Kind float_literal_impl::getFloatLiteralKind (long double *)
 
const charparse_discriminator (const char *first, const char *last)
 

Macro Definition Documentation

◆ CASE

#define CASE (   X)    case K ## X: return F(static_cast<const X*>(this));

Referenced by Node::visit().

◆ ENUMERATOR

#define ENUMERATOR (   NodeKind)    K ## NodeKind,

Definition at line 116 of file ItaniumDemangle.h.

Referenced by GetCodeName().

◆ FOR_EACH_NODE_KIND

#define FOR_EACH_NODE_KIND (   X)

Definition at line 32 of file ItaniumDemangle.h.

Referenced by Node::visit().

◆ SPECIALIZATION

#define SPECIALIZATION (   X)
Value:
template<> struct NodeKind<X> { \
static constexpr Node::Kind Kind = Node::K##X; \
static constexpr const char *name() { return #X; } \
};
static GCMetadataPrinterRegistry::Add< ErlangGCPrinter > X("erlang", "erlang-compatible garbage collector")
Determine the kind of a node from its type.
static const char * name

Definition at line 2201 of file ItaniumDemangle.h.

Typedef Documentation

◆ DoubleLiteral

Definition at line 2184 of file ItaniumDemangle.h.

◆ FloatLiteral

Definition at line 2183 of file ItaniumDemangle.h.

◆ LongDoubleLiteral

using LongDoubleLiteral = FloatLiteralImpl<long double>

Definition at line 2185 of file ItaniumDemangle.h.

Enumeration Type Documentation

◆ FunctionRefQual

Enumerator
FrefQualNone 
FrefQualLValue 
FrefQualRValue 

Definition at line 296 of file ItaniumDemangle.h.

◆ Qualifiers

enum Qualifiers
Enumerator
QualNone 
QualConst 
QualVolatile 
QualRestrict 

Definition at line 302 of file ItaniumDemangle.h.

◆ ReferenceKind

enum ReferenceKind
strong
Enumerator
LValue 
RValue 

Definition at line 515 of file ItaniumDemangle.h.

◆ SpecialSubKind

enum SpecialSubKind
strong
Enumerator
allocator 
basic_string 
string 
istream 
ostream 
iostream 

Definition at line 1380 of file ItaniumDemangle.h.

◆ TemplateParamKind

enum TemplateParamKind
strong
Enumerator
Type 
NonType 
Template 

Definition at line 974 of file ItaniumDemangle.h.

Function Documentation

◆ operator|=()

Qualifiers operator|= ( Qualifiers Q1,
Qualifiers  Q2 
)
inline

Definition at line 309 of file ItaniumDemangle.h.

◆ parse_discriminator()

const char* parse_discriminator ( const char first,
const char last 
)