33#ifndef OPERATION_PIMPL_HH
34#define OPERATION_PIMPL_HH
104 bool canSwap(
int id1,
int id2)
const;
void loadState(const ObjectState *state)
void createState(OperationContext &context) const
OperationBehavior * behavior_
The behavior of the Operation.
TCEString description() const
bool dependsOn(const Operation &op) const
std::string name_
Name of the Operation.
DAGContainer dags_
Table of DAGs and their source codes of an operation.
std::string description_
Description of the Operation.
std::vector< Operand * > inputOperands_
Input Operands of the Operation.
std::vector< OperationDAGInfo > DAGContainer
void setDagCode(int index, const TCEString &code)
bool hasSideEffects() const
Operand & operand(int id) const
TCEString emulationFunctionName() const
bool canSwap(int id1, int id2) const
bool writesMemory_
Flag indicating if Operation writes to memory.
Operand & output(int index) const
void insertOperand(Operand *operand, std::vector< Operand * > &ops)
bool writesMemory() const
std::set< std::string > affectedBy_
Operations that are affected by this Operation.
int inputs_
The number of inputs of the Operation.
ObjectState * saveState() const
std::set< std::string > affects_
Operations that affects this Operation.
int affectedByCount() const
bool isControlFlowOperation() const
bool controlFlowOperation_
Flag indicating if the Operation can change program flow.
void setBranch(bool setting)
int numberOfOutputs() const
OperationDAG & dag(int index) const
OperationPimpl & operator=(const OperationPimpl &)
Assignment not allowed.
bool hasSideEffects_
Flag indicating if Operation has side effects.
void addInput(Operand *operand)
int numberOfInputs() const
void setReadsMemory(bool setting)
TCEString dagCode(int index) const
void removeDag(int index)
Operand & input(int index) const
Operand & fetchOperand(int id, const std::vector< Operand * > &ops) const
TCEString affectedBy(unsigned int i) const
OperationPimpl(const OperationPimpl &)
Copying not allowed.
int outputs_
The number of outputs of the Operation.
std::vector< Operand * > outputOperands_
Output Operands of the Operation.
TCEString affects(unsigned int i) const
void setCall(bool setting)
bool canBeSimulated() const
void addOutput(Operand *operand)
void setBehavior(OperationBehavior &behavior)
void addDag(const TCEString &code)
void deleteState(OperationContext &context) const
TCEString dagError(int index) const
bool simulateTrigger(SimValue **, OperationContext &context) const
bool isCall_
Flag indicating if Operation is call.
void setWritesMemory(bool setting)
bool readsMemory_
Flag indicating if Operation reads from memory.
OperationBehavior & behavior() const
void setControlFlowOperation(bool setting)
bool canTrap_
Flag indicating if Operation can trap.
bool isClocked_
Flag indicating if Operation is clocked and needs AdvanceClock.
bool isBranch_
Flag indicating if Operation is branch changing control flow.
std::string code
Source code for creating DAG for operation.
OperationDAG * dag
DAG presentation of code. set to NullOperationDAG if could not be created.
std::string error
Error message if creating DAG failed.
bool compilationFailed
If code was already tried to compile and it did not succeed.