LLVM  13.0.0git
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  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  SubobjectExpr
 
class  EnclosingExpr
 
class  CastExpr
 
class  SizeofParamPackExpr
 
class  CallExpr
 
class  NewExpr
 
class  DeleteExpr
 
class  PrefixExpr
 
class  FunctionParam
 
class  ConversionExpr
 
class  PointerToMemberConversionExpr
 
class  InitListExpr
 
class  BracedExpr
 
class  BracedRangeExpr
 
class  FoldExpr
 
class  ThrowExpr
 
class  BoolExpr
 
class  StringLiteral
 
class  LambdaExpr
 
class  EnumLiteral
 
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 char * parse_discriminator (const char *first, const char *last)
 

Macro Definition Documentation

◆ CASE

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

◆ ENUMERATOR

#define ENUMERATOR (   NodeKind)    K ## NodeKind,

Definition at line 117 of file ItaniumDemangle.h.

◆ FOR_EACH_NODE_KIND

#define FOR_EACH_NODE_KIND (   X)

Definition at line 32 of file ItaniumDemangle.h.

◆ SPECIALIZATION

#define SPECIALIZATION (   X)
Value:
template<> struct NodeKind<X> { \
static constexpr Node::Kind Kind = Node::K##X; \
static constexpr const char *name() { return #X; } \
};

Definition at line 2210 of file ItaniumDemangle.h.

Typedef Documentation

◆ DoubleLiteral

Definition at line 2193 of file ItaniumDemangle.h.

◆ FloatLiteral

Definition at line 2192 of file ItaniumDemangle.h.

◆ LongDoubleLiteral

Definition at line 2194 of file ItaniumDemangle.h.

Enumeration Type Documentation

◆ FunctionRefQual

enum FunctionRefQual : unsigned char
Enumerator
FrefQualNone 
FrefQualLValue 
FrefQualRValue 

Definition at line 300 of file ItaniumDemangle.h.

◆ Qualifiers

enum Qualifiers
Enumerator
QualNone 
QualConst 
QualVolatile 
QualRestrict 

Definition at line 306 of file ItaniumDemangle.h.

◆ ReferenceKind

enum ReferenceKind
strong
Enumerator
LValue 
RValue 

Definition at line 519 of file ItaniumDemangle.h.

◆ SpecialSubKind

enum SpecialSubKind
strong
Enumerator
allocator 
basic_string 
string 
istream 
ostream 
iostream 

Definition at line 1344 of file ItaniumDemangle.h.

◆ TemplateParamKind

enum TemplateParamKind
strong
Enumerator
Type 
NonType 
Template 

Definition at line 938 of file ItaniumDemangle.h.

Function Documentation

◆ operator|=()

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

Definition at line 313 of file ItaniumDemangle.h.

◆ parse_discriminator()

const char* parse_discriminator ( const char *  first,
const char *  last 
)
llvm::EngineKind::Kind
Kind
Definition: ExecutionEngine.h:524
Node::Kind
Kind
Definition: ItaniumDemangle.h:116
X
static GCMetadataPrinterRegistry::Add< ErlangGCPrinter > X("erlang", "erlang-compatible garbage collector")
NodeKind
Determine the kind of a node from its type.
Definition: ItaniumDemangle.h:2209
name
static const char * name
Definition: SVEIntrinsicOpts.cpp:93