| 
| 
  | ExecutionState (ExecutionState &&)=delete | 
|   | No move semantics because of constant members. We always need to clone a state. 
  | 
|   | 
| 
void  | add (const TraceEvent &event) | 
|   | Add a new trace event to the state. 
  | 
|   | 
| void  | addTestObject (cstring category, cstring objectLabel, const TestObject *object) | 
|   | 
| 
void  | appendToEmitBuffer (const IR::Expression *expr) | 
|   | Append data to the emit buffer. 
  | 
|   | 
| 
void  | appendToInputPacket (const IR::Expression *expr) | 
|   | Append data to the input packet. 
  | 
|   | 
| 
void  | appendToPacketBuffer (const IR::Expression *expr) | 
|   | Append data to the packet buffer. 
  | 
|   | 
| ExecutionState &  | clone () const override | 
|   | 
| 
void  | deleteTestObject (cstring category, cstring objectLabel) | 
|   | Remove a test object from a category. 
  | 
|   | 
| 
void  | deleteTestObjectCategory (cstring category) | 
|   | Remove a test category entirely. 
  | 
|   | 
| const IR::Expression *  | get (const IR::StateVariable &var) const override | 
|   | 
| const Continuation::Body &  | getBody () const | 
|   | 
| const IR::StateVariable &  | getCurrentParserErrorLabel () const | 
|   | 
| const IR::Expression *  | getEmitBuffer () const | 
|   | 
| const IR::Expression *  | getInputPacket () const | 
|   | 
| int  | getInputPacketCursor () const | 
|   | 
| int  | getInputPacketSize () const | 
|   | 
| std::optional< const Continuation::Command >  | getNextCmd () const | 
|   | 
| const IR::Expression *  | getPacketBuffer () const | 
|   | 
| int  | getPacketBufferSize () const | 
|   | 
| const std::vector< const IR::Expression * > &  | getPathConstraint () const | 
|   | 
| template<class T >  | 
| T  | getProperty (cstring propertyName) const | 
|   | 
| 
ReachabilityEngineState *  | getReachabilityEngineState () const | 
|   | Get the current state of the reachability engine. 
  | 
|   | 
| const std::vector< uint64_t > &  | getSelectedBranches () const | 
|   | 
| const std::stack< std::reference_wrapper< const StackFrame > > &  | getStack () const | 
|   | 
| template<class T >  | 
| const T *  | getTestObject (cstring category, cstring objectLabel) const | 
|   | 
| const TestObject *  | getTestObject (cstring category, cstring objectLabel, bool checked) const | 
|   | 
| TestObjectMap  | getTestObjectCategory (cstring category) const | 
|   | 
| const std::vector< std::reference_wrapper< const TraceEvent > > &  | getTrace () const | 
|   | 
| const P4::Coverage::CoverageSet &  | getVisited () const | 
|   | 
| 
void  | handleException (Continuation::Exception e) | 
|   | Invokes first handler for e found on the stack. 
  | 
|   | 
| bool  | hasProperty (cstring propertyName) const | 
|   | 
| 
bool  | isTerminal () const | 
|   | Determines whether this state represents the end of an execution. 
  | 
|   | 
| 
void  | markVisited (const IR::Node *node) | 
|   | Checks whether the node has been visited in this state. 
  | 
|   | 
| 
ExecutionState &  | operator= (ExecutionState &&)=delete | 
|   | 
| const IR::Expression *  | peekPacketBuffer (int amount) | 
|   | 
| 
void  | popBody () | 
|   | Pops the top element of @body. 
  | 
|   | 
| void  | popContinuation (std::optional< const IR::Node * > argument_opt=std::nullopt) | 
|   | 
| 
void  | prependToInputPacket (const IR::Expression *expr) | 
|   | Prepend data to the input packet. 
  | 
|   | 
| 
void  | prependToPacketBuffer (const IR::Expression *expr) | 
|   | Prepend data to the packet buffer. 
  | 
|   | 
| void  | pushBranchDecision (uint64_t) | 
|   | 
| 
void  | pushContinuation (const StackFrame &frame) | 
|   | Pushes a new frame onto the continuation stack. 
  | 
|   | 
| void  | pushCurrentContinuation (StackFrame::ExceptionHandlers handlers) | 
|   | 
| void  | pushCurrentContinuation (std::optional< const IR::Type * > parameterType_opt=std::nullopt, StackFrame::ExceptionHandlers={}) | 
|   | 
| 
void  | pushPathConstraint (const IR::Expression *e) | 
|   | Adds path constraint. 
  | 
|   | 
| 
void  | replaceBody (const Continuation::Body &body) | 
|   | Replaces @body with the given argument. 
  | 
|   | 
| 
void  | replaceTopBody (const Continuation::Command &cmd) | 
|   | Replaces the top element of @body with @cmd. 
  | 
|   | 
| template<class N >  | 
| void  | replaceTopBody (const std::vector< const N * > *nodes) | 
|   | 
| void  | replaceTopBody (const std::vector< Continuation::Command > *cmds) | 
|   | 
| void  | replaceTopBody (std::initializer_list< Continuation::Command > cmds) | 
|   | 
| 
void  | resetEmitBuffer () | 
|   | Reset the emit buffer to zero. 
  | 
|   | 
| 
void  | resetPacketBuffer () | 
|   | Reset the packet buffer to zero. 
  | 
|   | 
| void  | set (const IR::StateVariable &var, const IR::Expression *value) override | 
|   | 
| void  | setParserErrorLabel (const IR::StateVariable &parserError) | 
|   | Set the parser error label to the.  
  | 
|   | 
| void  | setProperty (cstring propertyName, Continuation::PropertyValue property) | 
|   | Set the property with.  
  | 
|   | 
| 
void  | setReachabilityEngineState (ReachabilityEngineState *newEngineState) | 
|   | Update the reachability engine state. 
  | 
|   | 
| const IR::Expression *  | slicePacketBuffer (int amount) | 
|   | 
| 
  | AbstractExecutionState (AbstractExecutionState &&)=default | 
|   | 
| 
  | AbstractExecutionState (const IR::P4Program *program) | 
|   | Creates an initial execution state for the given program. 
  | 
|   | 
| void  | assignStructLike (const IR::StateVariable &left, const IR::Expression *right) | 
|   | 
| void  | copyIn (const Target &target, const IR::Parameter *internalParam, cstring externalParamName) | 
|   | 
| void  | copyOut (const IR::Parameter *internalParam, cstring externalParamName) | 
|   | 
| void  | declareVariable (const Target &target, const IR::Declaration_Variable &declVar) | 
|   | 
| 
bool  | exists (const IR::StateVariable &var) const | 
|   | Checks whether the given variable exists in the symbolic environment of this state. 
  | 
|   | 
| 
const IR::IDeclaration *  | findDecl (const IR::Path *path) const | 
|   | Looks up a declaration from a path. A BUG occurs if no declaration is found. 
  | 
|   | 
| 
const IR::IDeclaration *  | findDecl (const IR::PathExpression *pathExpr) const | 
|   | Looks up a declaration from a path expression. A BUG occurs if no declaration is found. 
  | 
|   | 
| const IR::P4Table *  | findTable (const IR::Member *member) const | 
|   | 
| std::vector< IR::StateVariable >  | getFlatFields (const IR::StateVariable &parent, std::vector< IR::StateVariable > *validVector=nullptr) const | 
|   | 
| const NamespaceContext *  | getNamespaceContext () const | 
|   | 
| const IR::P4Action *  | getP4Action (const IR::MethodCallExpression *actionExpr) const | 
|   | 
| const SymbolicEnv &  | getSymbolicEnv () const | 
|   | 
| void  | initializeBlockParams (const Target &target, const IR::Type_Declaration *typeDecl, const std::vector< cstring > *blockParams) | 
|   | 
| void  | initializeStructLike (const Target &target, const IR::StateVariable &targetVar, bool forceTaint) | 
|   | 
| 
AbstractExecutionState &  | operator= (AbstractExecutionState &&)=delete | 
|   | 
| 
void  | popNamespace () | 
|   | Exists a namespace of declarations. 
  | 
|   | 
| 
void  | printSymbolicEnv (std::ostream &out=std::cout) const | 
|   | Produce a formatted output of the current symbolic environment. 
  | 
|   | 
| 
void  | pushNamespace (const IR::INamespace *ns) | 
|   | Enters a namespace of declarations. 
  | 
|   | 
| 
const IR::Type *  | resolveType (const IR::Type *type) const | 
|   | Resolves a Type in the current environment. 
  | 
|   | 
| 
void  | setNamespaceContext (const NamespaceContext *namespaces) | 
|   | Replaces the namespace context in the current state with the given context. 
  | 
|   | 
| 
void  | setStructLike (const IR::StateVariable &targetVar, const IR::StateVariable &sourceVar) | 
|   | Set the members of struct-like @target with the values of struct-like @source. 
  | 
|   | 
Represents state of execution after having reached a program point.