7#ifndef BACKENDS_P4TOOLS_COMMON_CORE_ABSTRACT_EXECUTION_STATE_H_
8#define BACKENDS_P4TOOLS_COMMON_CORE_ABSTRACT_EXECUTION_STATE_H_
10#include "backends/p4tools/common/core/target.h"
11#include "backends/p4tools/common/lib/namespace_context.h"
12#include "backends/p4tools/common/lib/symbolic_env.h"
56 [[nodiscard]]
virtual const IR::Expression *
get(
const IR::StateVariable &var)
const = 0;
60 virtual void set(
const IR::StateVariable &var,
const IR::Expression *value) = 0;
63 [[nodiscard]]
bool exists(
const IR::StateVariable &var)
const;
79 [[nodiscard]]
const IR::Type *
resolveType(
const IR::Type *type)
const;
107 const IR::Expression *inputExpression, std::vector<const IR::Expression *> &flatValids);
116 const IR::StateVariable &parent,
117 std::vector<IR::StateVariable> *validVector =
nullptr)
const;
126 void assignStructLike(
const IR::StateVariable &left,
const IR::Expression *right);
129 void setStructLike(
const IR::StateVariable &targetVar,
const IR::StateVariable &sourceVar);
137 void copyIn(
const Target &target,
const IR::Parameter *internalParam,
142 void copyOut(
const IR::Parameter *internalParam,
cstring externalParamName);
147 const std::vector<cstring> *blockParams);
151 const IR::P4Table *
findTable(
const IR::Member *member)
const;
156 [[nodiscard]]
const IR::P4Action *
getP4Action(
const IR::MethodCallExpression *actionExpr)
const;
The Declaration interface, representing objects with names.
Definition declaration.h:17
Represents a stack of namespaces.
Definition namespace_context.h:20