tipc
A TIP to LLVM compiler
Public Member Functions | Protected Member Functions | List of all members
ASTFunction Class Reference

Class for defining the signature, local declarations, and a body of a function. More...

#include <ASTFunction.h>

Inheritance diagram for ASTFunction:
Inheritance graph
[legend]
Collaboration diagram for ASTFunction:
Collaboration graph
[legend]

Public Member Functions

std::vector< std::shared_ptr< ASTNode > > getChildren () override
 Return all of the children for the node. More...
 
 ASTFunction (std::shared_ptr< ASTDeclNode > DECL, std::vector< std::shared_ptr< ASTDeclNode >> FORMALS, const std::vector< std::shared_ptr< ASTDeclStmt >> &DECLS, std::vector< std::shared_ptr< ASTStmt >> BODY, bool ISPOLY)
 
 ~ASTFunction ()=default
 
ASTDeclNodegetDecl () const
 
std::string getName () const
 
bool isPoly () const
 
std::vector< ASTDeclNode * > getFormals () const
 
std::vector< ASTDeclStmt * > getDeclarations () const
 
std::vector< ASTStmt * > getStmts () const
 
void accept (ASTVisitor *visitor) override
 Visit the children of this node and apply the visitor. More...
 
llvm::Value * codegen () override
 Perform code generation and return an LLVM value the code. More...
 
- Public Member Functions inherited from ASTNode
virtual ~ASTNode ()=default
 
void setLocation (int l, int c)
 
int getLine ()
 
int getColumn ()
 

Protected Member Functions

std::ostream & print (std::ostream &out) const override
 Print an abbreviated shared string for the function. More...
 

Detailed Description

Class for defining the signature, local declarations, and a body of a function.

Constructor & Destructor Documentation

◆ ASTFunction()

ASTFunction::ASTFunction ( std::shared_ptr< ASTDeclNode DECL,
std::vector< std::shared_ptr< ASTDeclNode >>  FORMALS,
const std::vector< std::shared_ptr< ASTDeclStmt >> &  DECLS,
std::vector< std::shared_ptr< ASTStmt >>  BODY,
bool  ISPOLY 
)
inline

◆ ~ASTFunction()

ASTFunction::~ASTFunction ( )
default

Member Function Documentation

◆ accept()

void ASTFunction::accept ( ASTVisitor visitor)
overridevirtual

Visit the children of this node and apply the visitor.

This virtual function is overridden by each ASTNode subtype in order to visit each of its child nodes, by calling their accept methods. The visitor parameter defines the operations that are applied to each node that is visited; a subtype of ASTVisitor defines those operations.

Parameters
visitorThe subtype of ASTVisitor that carries out per-ASTNode work.

Implements ASTNode.

◆ codegen()

llvm::Value * ASTFunction::codegen ( )
overridevirtual

Perform code generation and return an LLVM value the code.

This virtual function is overridden by each ASTNode subtype in order to generate the executable code. This function does not use the visitor due to the fact that a high-degree of control on the ordering of the nodes is required.

Returns
LLVM value holding an representation of the generated code.

Implements ASTNode.

◆ getChildren()

std::vector< std::shared_ptr< ASTNode > > ASTFunction::getChildren ( )
overridevirtual

Return all of the children for the node.

This is not a pure virtual function so subclasses can selectively override it.

Returns
a collection of the nodes children.

Reimplemented from ASTNode.

◆ getDecl()

ASTDeclNode* ASTFunction::getDecl ( ) const
inline

◆ getDeclarations()

std::vector< ASTDeclStmt * > ASTFunction::getDeclarations ( ) const

◆ getFormals()

std::vector< ASTDeclNode * > ASTFunction::getFormals ( ) const

◆ getName()

std::string ASTFunction::getName ( ) const
inline

◆ getStmts()

std::vector< ASTStmt * > ASTFunction::getStmts ( ) const

◆ isPoly()

bool ASTFunction::isPoly ( ) const
inline

◆ print()

std::ostream & ASTFunction::print ( std::ostream &  out) const
overrideprotectedvirtual

Print an abbreviated shared string for the function.

Implements ASTNode.


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