Declaration object for functions and tasks. More...
#include <cfunction.h>
Public Member Functions | |
CFunction (CSymbol *symbol, Coord_t *aLoc, int automatic) | |
Create function/task declaration object. | |
virtual void | Dump (FILE *f) |
Dump function info to file descriptor. | |
virtual vector< CPortDir * > * | GetPortDirList () |
Get array of port declarations. | |
void | SetTrailingLabel (CSymbol *label) |
Set trailing function label. | |
CSymbol * | GetTrailingLabel () |
Get trailing function label. | |
void | SetPorts (CNode *n) |
Set function port list. | |
CNode * | GetPorts () |
Get function port list. | |
int | InlinePortDecls () |
Get inline declaration attribute. | |
void | InlinePortDecls (int v) |
Set inline declaration attribute. | |
void | SetOutput (CDecl *output) |
Set output declaration for function. | |
CDecl * | GetOutput () |
Get output declaration. | |
int | GetAutomatic () |
Get automatic attribute. | |
Static Public Member Functions | |
static int | Width (CSymbol *symbol, CNode *args, CBlock *block) |
Get width of function. | |
static CNode * | WidthExp (CSymbol *symbol, CNode *args, CBlock *block) |
Get width of function as an expression. | |
static int | WidthConstant (CSymbol *symbol, CNode *args, CBlock *block) |
Determine if width of function is constant. | |
static int | WidthVolatile (CSymbol *symbol, CNode *args, CBlock *block) |
Determine if width of function is volatile. | |
static int | WidthEvaluateable (CSymbol *symbol, CNode *args, CBlock *block) |
Determine if width of function is evaluateable. | |
static NodeType_t | Type (CSymbol *symbol, CNode *args, CBlock *block) |
Determine if type of result of function. | |
static int | Evaluateable (CSymbol *symbol, CNode *args, CBlock *block) |
Determine if function can be evaluated. | |
static void | EvalVector (CVector &v, CSymbol *symbol, CNode *args, CBlock *block) |
Evaluate function as a vector and return result. | |
static double | EvalReal (CSymbol *symbol, CNode *args, CBlock *block) |
Evaluate function as a real and return result. |
Declaration object for functions and tasks.
Create function/task declaration object.
symbol | name of function/task. | |
aLoc | file coordinates of declaration. | |
automatic | non-zero if function is automatic. |
virtual void CFunction::Dump | ( | FILE * | f | ) | [virtual] |
Evaluate function as a real and return result.
symbol | name of function. | |
args | function argument list | |
block | scope of function instantation |
Determine if function can be evaluated.
symbol | name of function. | |
args | function argument list | |
block | scope of function instantation |
static void CFunction::EvalVector | ( | CVector & | v, | |
CSymbol * | symbol, | |||
CNode * | args, | |||
CBlock * | block | |||
) | [static] |
Evaluate function as a vector and return result.
v | container for result | |
symbol | name of function. | |
args | function argument list | |
block | scope of function instantation |
int CFunction::GetAutomatic | ( | ) | [inline, virtual] |
Get automatic attribute.
Reimplemented from CDecl.
CDecl* CFunction::GetOutput | ( | ) | [inline] |
Get output declaration.
virtual vector<CPortDir*>* CFunction::GetPortDirList | ( | ) | [virtual] |
CNode* CFunction::GetPorts | ( | ) | [inline] |
Get function port list.
CSymbol* CFunction::GetTrailingLabel | ( | ) | [inline] |
Get trailing function label.
void CFunction::InlinePortDecls | ( | int | v | ) | [inline] |
Set inline declaration attribute.
v | non-zero if port declarations are inline. |
int CFunction::InlinePortDecls | ( | ) | [inline] |
Get inline declaration attribute.
void CFunction::SetOutput | ( | CDecl * | output | ) | [inline] |
Set output declaration for function.
output | output declaration. |
void CFunction::SetPorts | ( | CNode * | n | ) | [inline] |
Set function port list.
n | port list. |
void CFunction::SetTrailingLabel | ( | CSymbol * | label | ) | [inline] |
Set trailing function label.
label | trailing function label |
static NodeType_t CFunction::Type | ( | CSymbol * | symbol, | |
CNode * | args, | |||
CBlock * | block | |||
) | [static] |
Determine if type of result of function.
symbol | name of function. | |
args | function argument list | |
block | scope of function instantation |
Get width of function.
symbol | name of function. | |
args | function argument list | |
block | scope of function instantation |
Determine if width of function is constant.
ie dependent upon constants and parameters only.
symbol | name of function. | |
args | function argument list | |
block | scope of function instantation |
Determine if width of function is evaluateable.
symbol | name of function. | |
args | function argument list | |
block | scope of function instantation |
Get width of function as an expression.
symbol | name of function. | |
args | function argument list | |
block | scope of function instantation |
Determine if width of function is volatile.
ie dependent upon variables and parameters.
symbol | name of function. | |
args | function argument list | |
block | scope of function instantation |