P4C
The P4 Compiler
 
Loading...
Searching...
No Matches
P4::Evaluator Class Referencefinal
Inheritance diagram for P4::Evaluator:

Public Member Functions

 Evaluator (const ReferenceMap *refMap, const TypeMap *typeMap)
 
IR::Block * currentBlock () const
 
std::vector< const IR::CompileTimeValue * > * evaluateArguments (const IR::ParameterList *parameters, const IR::Vector< IR::Argument > *arguments, IR::Block *context)
 
IR::ToplevelBlock * getToplevelBlock () const override
 
const IR::CompileTimeValue * getValue (const IR::Node *node) const
 
bool hasValue (const IR::Node *node) const
 
profile_t init_apply (const IR::Node *node) override
 
bool preorder (const IR::BoolLiteral *expression) override
 
bool preorder (const IR::Constant *expression) override
 
bool preorder (const IR::ConstructorCallExpression *inst) override
 
bool preorder (const IR::Declaration_Constant *decl) override
 
bool preorder (const IR::Declaration_ID *expression) override
 
bool preorder (const IR::Declaration_Instance *inst) override
 
bool preorder (const IR::ListCompileTimeValue *expression) override
 
bool preorder (const IR::ListExpression *expression) override
 
bool preorder (const IR::Member *expression) override
 
bool preorder (const IR::MethodCallExpression *expr) override
 
bool preorder (const IR::P4ListExpression *expression) override
 
bool preorder (const IR::P4Program *program) override
 
bool preorder (const IR::P4Table *table) override
 
bool preorder (const IR::PathExpression *expression) override
 
bool preorder (const IR::Property *prop) override
 
bool preorder (const IR::StringLiteral *expression) override
 
bool preorder (const IR::StructCompileTimeValue *expression) override
 
bool preorder (const IR::StructExpression *expression) override
 
const IR::Block * processConstructor (const IR::Node *node, const IR::Type *type, const IR::Type *instanceType, const IR::Vector< IR::Argument > *arguments)
 
void setValue (const IR::Node *node, const IR::CompileTimeValue *constant)
 

Protected Member Functions

void popBlock (IR::Block *block)
 
void pushBlock (IR::Block *block)
 

Member Function Documentation

◆ evaluateArguments()

std::vector< const IR::CompileTimeValue * > * P4::Evaluator::evaluateArguments ( const IR::ParameterList * parameters,
const IR::Vector< IR::Argument > * arguments,
IR::Block * context )

Evaluates the arguments and returns a vector of parameter values ordered in the parameter order.

◆ getToplevelBlock()

IR::ToplevelBlock * P4::Evaluator::getToplevelBlock ( ) const
inlineoverridevirtual

Implements P4::IHasBlock.

◆ hasValue()

bool P4::Evaluator::hasValue ( const IR::Node * node) const

True if the node is mapped to a value, even if the value is nullptr.

◆ setValue()

void P4::Evaluator::setValue ( const IR::Node * node,
const IR::CompileTimeValue * constant )

Map a node to value. The value can be nullptr, e.g., for an optional parameter.