1#ifndef BACKENDS_P4TOOLS_COMMON_CORE_ABSTRACT_EXECUTION_STATE_H_
2#define BACKENDS_P4TOOLS_COMMON_CORE_ABSTRACT_EXECUTION_STATE_H_
4#include "backends/p4tools/common/core/target.h"
5#include "backends/p4tools/common/lib/namespace_context.h"
6#include "backends/p4tools/common/lib/symbolic_env.h"
50 [[nodiscard]]
virtual const IR::Expression *
get(
const IR::StateVariable &var)
const = 0;
54 virtual void set(
const IR::StateVariable &var,
const IR::Expression *value) = 0;
57 [[nodiscard]]
bool exists(
const IR::StateVariable &var)
const;
73 [[nodiscard]]
const IR::Type *
resolveType(
const IR::Type *type)
const;
101 const IR::Expression *inputExpression, std::vector<const IR::Expression *> &flatValids);
110 const IR::StateVariable &parent,
111 std::vector<IR::StateVariable> *validVector =
nullptr)
const;
120 void assignStructLike(
const IR::StateVariable &left,
const IR::Expression *right);
123 void setStructLike(
const IR::StateVariable &targetVar,
const IR::StateVariable &sourceVar);
131 void copyIn(
const Target &target,
const IR::Parameter *internalParam,
136 void copyOut(
const IR::Parameter *internalParam,
cstring externalParamName);
141 const std::vector<cstring> *blockParams);
145 const IR::P4Table *
findTable(
const IR::Member *member)
const;
150 [[nodiscard]]
const IR::P4Action *
getP4Action(
const IR::MethodCallExpression *actionExpr)
const;
The Declaration interface, representing objects with names.
Definition declaration.h:26
Represents a stack of namespaces.
Definition namespace_context.h:14