The Psyche Project
Public Member Functions | Protected Member Functions | List of all members
psy::C::TypeSymbol Class Reference

The TypeSymbol class. More...

#include <Symbol_Type.h>

Inheritance diagram for psy::C::TypeSymbol:
psy::C::Symbol psy::C::ArrayTypeSymbol psy::C::FunctionTypeSymbol psy::C::NamedTypeSymbol psy::C::PointerTypeSymbol

Public Member Functions

TypeKind typeKind () const
 
bool isConstQualified () const
 
bool isVolatileQualified () const
 
bool isRestrictQualified () const
 
virtual TypeSymbolasType () override
 
virtual const TypeSymbolasType () const override
 
virtual ArrayTypeSymbolasArrayType ()
 
virtual const ArrayTypeSymbolasArrayType () const
 
virtual FunctionTypeSymbolasFunctionType ()
 
virtual const FunctionTypeSymbolasFunctionType () const
 
virtual NamedTypeSymbolasNamedType ()
 
virtual const NamedTypeSymbolasNamedType () const
 
virtual PointerTypeSymbolasPointerType ()
 
virtual const PointerTypeSymbolasPointerType () const
 
- Public Member Functions inherited from psy::C::Symbol
SymbolKind kind () const
 
virtual LibrarySymbolasLibrary ()
 
virtual const LibrarySymbolasLibrary () const
 
virtual FunctionSymbolasFunction ()
 
virtual const FunctionSymbolasFunction () const
 
virtual ValueSymbolasValue ()
 
virtual const ValueSymbolasValue () const
 
const AssemblyowningAssembly () const
 
const SymbolcontainingSymbol () const
 
const Scopescope () const
 
const NameSpacenameSpace () const
 
Location location () const
 
Accessibility declaredAccessibility () const
 
std::vector< SyntaxReferencedeclaringSyntaxReferences () const
 

Protected Member Functions

TypeSymbolImpl * CAST () const
 
 TypeSymbol (TypeSymbolImpl *p)
 
- Protected Member Functions inherited from psy::C::Symbol
 Symbol (SymbolImpl *p)
 
 Symbol (const Symbol &)=delete
 
Symboloperator= (const Symbol &)=delete
 

Additional Inherited Members

- Protected Attributes inherited from psy::C::Symbol
std::unique_ptr< SymbolImpl > impl_
 

Detailed Description

The TypeSymbol class.

Note
This API is inspired by that of Microsoft.CodeAnalysis.ITypeSymbol from Roslyn, the .NET Compiler Platform.
Influence by the API of Clang/LLVM is present as well; specifically: clang::Type and clang::QualType.

Member Function Documentation

◆ asArrayType() [1/2]

virtual ArrayTypeSymbol* psy::C::TypeSymbol::asArrayType ( )
inlinevirtual

Cast this TypeSymbol.

Reimplemented in psy::C::ArrayTypeSymbol.

◆ asArrayType() [2/2]

virtual const ArrayTypeSymbol* psy::C::TypeSymbol::asArrayType ( ) const
inlinevirtual

Cast this TypeSymbol.

Reimplemented in psy::C::ArrayTypeSymbol.

◆ asFunctionType() [1/2]

virtual FunctionTypeSymbol* psy::C::TypeSymbol::asFunctionType ( )
inlinevirtual

Cast this TypeSymbol.

Reimplemented in psy::C::FunctionTypeSymbol.

◆ asFunctionType() [2/2]

virtual const FunctionTypeSymbol* psy::C::TypeSymbol::asFunctionType ( ) const
inlinevirtual

Cast this TypeSymbol.

Reimplemented in psy::C::FunctionTypeSymbol.

◆ asNamedType() [1/2]

virtual NamedTypeSymbol* psy::C::TypeSymbol::asNamedType ( )
inlinevirtual

Cast this TypeSymbol.

Reimplemented in psy::C::NamedTypeSymbol.

◆ asNamedType() [2/2]

virtual const NamedTypeSymbol* psy::C::TypeSymbol::asNamedType ( ) const
inlinevirtual

Cast this TypeSymbol.

Reimplemented in psy::C::NamedTypeSymbol.

◆ asPointerType() [1/2]

virtual PointerTypeSymbol* psy::C::TypeSymbol::asPointerType ( )
inlinevirtual

Cast this TypeSymbol.

Reimplemented in psy::C::PointerTypeSymbol.

◆ asPointerType() [2/2]

virtual const PointerTypeSymbol* psy::C::TypeSymbol::asPointerType ( ) const
inlinevirtual

Cast this TypeSymbol.

Reimplemented in psy::C::PointerTypeSymbol.

◆ asType() [1/2]

virtual const TypeSymbol* psy::C::TypeSymbol::asType ( ) const
inlineoverridevirtual

Cast this Symbol as a TypeSymbol.

Reimplemented from psy::C::Symbol.

◆ asType() [2/2]

virtual TypeSymbol* psy::C::TypeSymbol::asType ( )
inlineoverridevirtual

Cast this Symbol as a TypeSymbol.

Reimplemented from psy::C::Symbol.

◆ isConstQualified()

bool TypeSymbol::isConstQualified ( ) const

Whether the type is const qualified.

◆ isRestrictQualified()

bool TypeSymbol::isRestrictQualified ( ) const

Whether the type is restrict qualified.

◆ isVolatileQualified()

bool TypeSymbol::isVolatileQualified ( ) const

Whether the type is volatile qualified.

◆ typeKind()

TypeKind TypeSymbol::typeKind ( ) const

The TypeKind of this type.


The documentation for this class was generated from the following files: