The Psyche Project
Public Member Functions | Protected Member Functions | List of all members
psy::C::Declaration Class Referenceabstract
Inheritance diagram for psy::C::Declaration:
psy::C::Symbol psy::C::Function psy::C::ObjectDeclaration psy::C::TypeDeclaration psy::C::Enumerator psy::C::Field psy::C::Parameter psy::C::Variable psy::C::TagTypeDeclaration psy::C::Typedef psy::C::Enum psy::C::Struct psy::C::Union

Public Member Functions

DeclarationKind kind () const
 
virtual const Identifieridentifier () const =0
 
const ScopeenclosingScope () const
 
const NameSpace nameSpace () const
 
std::vector< SyntaxReferencedeclaringSyntaxReferences () const
 
Location location () const
 
virtual DeclarationasDeclaration () override
 
virtual const DeclarationasDeclaration () const override
 
virtual FunctionasFunction ()
 
virtual const FunctionasFunction () const
 
virtual ObjectDeclarationasObjectDeclaration ()
 
virtual const ObjectDeclarationasObjectDeclaration () const
 
virtual TypeDeclarationasTypeDeclaration ()
 
virtual const TypeDeclarationasTypeDeclaration () const
 
- Public Member Functions inherited from psy::C::Symbol
SymbolKind kind () const
 
virtual ProgramasProgram ()
 
virtual const ProgramasProgram () const
 
virtual TranslationUnitasTranslationUnit ()
 
virtual const TranslationUnitasTranslationUnit () const
 
const SymbolcontainingSymbol () const
 
virtual std::string toDisplayString () const =0
 

Protected Member Functions

 Declaration (SymbolImpl *p, DeclarationKind declK)
 
 Declaration (const Declaration &)=delete
 
Declarationoperator= (const Declaration &)=delete
 
- 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_
 

Member Function Documentation

◆ asDeclaration() [1/2]

virtual const Declaration* psy::C::Declaration::asDeclaration ( ) const
inlineoverridevirtual

Cast this Symbol as a Declaration.

Reimplemented from psy::C::Symbol.

◆ asDeclaration() [2/2]

virtual Declaration* psy::C::Declaration::asDeclaration ( )
inlineoverridevirtual

Cast this Symbol as a Declaration.

Reimplemented from psy::C::Symbol.

◆ asFunction() [1/2]

virtual Function* psy::C::Declaration::asFunction ( )
inlinevirtual

Cast this Declaration.

Reimplemented in psy::C::Function.

◆ asFunction() [2/2]

virtual const Function* psy::C::Declaration::asFunction ( ) const
inlinevirtual

Cast this Declaration.

Reimplemented in psy::C::Function.

◆ asObjectDeclaration() [1/2]

virtual ObjectDeclaration* psy::C::Declaration::asObjectDeclaration ( )
inlinevirtual

Cast this Declaration.

Reimplemented in psy::C::ObjectDeclaration.

◆ asObjectDeclaration() [2/2]

virtual const ObjectDeclaration* psy::C::Declaration::asObjectDeclaration ( ) const
inlinevirtual

Cast this Declaration.

Reimplemented in psy::C::ObjectDeclaration.

◆ asTypeDeclaration() [1/2]

virtual TypeDeclaration* psy::C::Declaration::asTypeDeclaration ( )
inlinevirtual

Cast this Declaration.

Reimplemented in psy::C::TypeDeclaration.

◆ asTypeDeclaration() [2/2]

virtual const TypeDeclaration* psy::C::Declaration::asTypeDeclaration ( ) const
inlinevirtual

Cast this Declaration.

Reimplemented in psy::C::TypeDeclaration.

◆ declaringSyntaxReferences()

std::vector< SyntaxReference > Declaration::declaringSyntaxReferences ( ) const

References to the SyntaxNodes that declare this Declaration.

◆ enclosingScope()

const Scope * Declaration::enclosingScope ( ) const

The Scope that encloses this Declaration.

Remarks
6.2.1-4

◆ identifier()

virtual const Identifier* psy::C::Declaration::identifier ( ) const
pure virtual

◆ kind()

DeclarationKind Declaration::kind ( ) const

The DeclarationKind of this Symbol.

◆ location()

Location Declaration::location ( ) const

The Location of this Declaration.

◆ nameSpace()

const NameSpace Declaration::nameSpace ( ) const

The NameSpace of this Declaration.

Remarks
6.2.3

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