class ElaboratedType

Declaration

class ElaboratedType : public TypeWithKeyword,
                       public Node,
                       private TrailingObjects { /* full declaration omitted */ };

Description

Represents a type that was referred to using an elaborated type keyword, e.g., struct S, or via a qualified name, e.g., N::M::type, or both. This type is used to keep track of a type name as written in the source code, including tag keywords and any nested-name-specifiers. The type itself is always "sugar", used to express what was written in the source code but containing no additional semantic information.

Declared at: clang/include/clang/AST/Type.h:5538

Inherits from: TypeWithKeyword, FoldingSetBase::Node, TrailingObjects

Member Variables

private clang::NestedNameSpecifier* NNS
The nested name specifier containing the qualifier.
private clang::QualType NamedType
The type that this qualified name refers to.

Inherited from Type:

protected

Method Overview

  • private ElaboratedType(clang::ElaboratedTypeKeyword Keyword, clang::NestedNameSpecifier * NNS, clang::QualType NamedType, clang::QualType CanonType, clang::TagDecl * OwnedTagDecl)
  • public void Profile(llvm::FoldingSetNodeID & ID)
  • public static void Profile(llvm::FoldingSetNodeID & ID, clang::ElaboratedTypeKeyword Keyword, clang::NestedNameSpecifier * NNS, clang::QualType NamedType, clang::TagDecl * OwnedTagDecl)
  • public static bool classof(const clang::Type * T)
  • public clang::QualType desugar() const
  • public clang::QualType getNamedType() const
  • public clang::TagDecl * getOwnedTagDecl() const
  • public clang::NestedNameSpecifier * getQualifier() const
  • public bool isSugared() const

Inherited from FoldingSetBase::Node:

Inherited from TypeWithKeyword:

Inherited from Type:

Inherited from ExtQualsTypeCommonBase:

    Methods

    ElaboratedType(
        clang::ElaboratedTypeKeyword Keyword,
        clang::NestedNameSpecifier* NNS,
        clang::QualType NamedType,
        clang::QualType CanonType,
        clang::TagDecl* OwnedTagDecl)

    Description

    The (re)declaration of this tag type owned by this occurrence is stored as a trailing object if there is one. Use getOwnedTagDecl to obtain it, or obtain a null pointer if there is none.

    Declared at: clang/include/clang/AST/Type.h:5555

    Parameters

    clang::ElaboratedTypeKeyword Keyword
    clang::NestedNameSpecifier* NNS
    clang::QualType NamedType
    clang::QualType CanonType
    clang::TagDecl* OwnedTagDecl

    void Profile(llvm::FoldingSetNodeID& ID)

    Declared at: clang/include/clang/AST/Type.h:5597

    Parameters

    llvm::FoldingSetNodeID& ID

    static void Profile(
        llvm::FoldingSetNodeID& ID,
        clang::ElaboratedTypeKeyword Keyword,
        clang::NestedNameSpecifier* NNS,
        clang::QualType NamedType,
        clang::TagDecl* OwnedTagDecl)

    Declared at: clang/include/clang/AST/Type.h:5601

    Parameters

    llvm::FoldingSetNodeID& ID
    clang::ElaboratedTypeKeyword Keyword
    clang::NestedNameSpecifier* NNS
    clang::QualType NamedType
    clang::TagDecl* OwnedTagDecl

    static bool classof(const clang::Type* T)

    Declared at: clang/include/clang/AST/Type.h:5610

    Parameters

    const clang::Type* T

    clang::QualType desugar() const

    Description

    Remove a single level of sugar.

    Declared at: clang/include/clang/AST/Type.h:5585

    clang::QualType getNamedType() const

    Description

    Retrieve the type named by the qualified-id.

    Declared at: clang/include/clang/AST/Type.h:5582

    clang::TagDecl* getOwnedTagDecl() const

    Description

    Return the (re)declaration of this type owned by this occurrence of this type, or nullptr if there is none.

    Declared at: clang/include/clang/AST/Type.h:5592

    clang::NestedNameSpecifier* getQualifier() const

    Description

    Retrieve the qualification on this type.

    Declared at: clang/include/clang/AST/Type.h:5579

    bool isSugared() const

    Description

    Returns whether this type directly provides sugar.

    Declared at: clang/include/clang/AST/Type.h:5588