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 Identifier * identifier () const =0
 
const Scope * enclosingScope () const
 
const NameSpace nameSpace () const
 
std::vector< SyntaxReference > declaringSyntaxReferences () const
 
Location location () const
 
virtual Declaration * asDeclaration () override
 
virtual const Declaration * asDeclaration () const override
 
virtual Function * asFunction ()
 
virtual const Function * asFunction () const
 
virtual ObjectDeclaration * asObjectDeclaration ()
 
virtual const ObjectDeclaration * asObjectDeclaration () const
 
virtual TypeDeclaration * asTypeDeclaration ()
 
virtual const TypeDeclaration * asTypeDeclaration () const
 
- Public Member Functions inherited from psy::C::Symbol
SymbolKind kind () const
 
virtual Program * asProgram ()
 
virtual const Program * asProgram () const
 
virtual TranslationUnit * asTranslationUnit ()
 
virtual const TranslationUnit * asTranslationUnit () const
 
const Symbol * containingSymbol () const
 
virtual std::string toDisplayString () const =0
 

Protected Member Functions

 Declaration (SymbolImpl *p, DeclarationKind declK)
 
 Declaration (const Declaration &)=delete
 
Declaration & operator= (const Declaration &)=delete
 
- Protected Member Functions inherited from psy::C::Symbol
 Symbol (SymbolImpl *p)
 
 Symbol (const Symbol &)=delete
 
Symbol & operator= (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: