21#ifndef BM_BM_SIM_CORE_PRIMITIVES_H_
22#define BM_BM_SIM_CORE_PRIMITIVES_H_
33struct assign :
public ActionPrimitive<Data &, const Data &> {
34 void operator ()(Data &dst,
const Data &src) {
39struct assign_VL :
public ActionPrimitive<Field &, const Field &> {
40 void operator ()(Field &dst,
const Field &src) {
45struct assign_header :
public ActionPrimitive<Header &, const Header &> {
46 void operator ()(Header &dst,
const Header &src);
50 :
public ActionPrimitive<HeaderUnion &, const HeaderUnion &> {
51 void operator ()(HeaderUnion &dst,
const HeaderUnion &src);
54struct assign_header_stack
55 :
public ActionPrimitive<HeaderStack &, const HeaderStack &> {
56 void operator ()(HeaderStack &dst,
const HeaderStack &src);
59struct assign_union_stack
60 :
public ActionPrimitive<HeaderUnionStack &, const HeaderUnionStack &> {
61 void operator ()(HeaderUnionStack &dst,
const HeaderUnionStack &src);
64struct push :
public ActionPrimitive<StackIface &, const Data &> {
65 void operator ()(StackIface &stack,
const Data &num);
68struct pop :
public ActionPrimitive<StackIface &, const Data &> {
69 void operator ()(StackIface &stack,
const Data &num);
72struct assert_ :
public ActionPrimitive<const Data &> {
73 void operator ()(
const Data &src);
76struct assume_ :
public ActionPrimitive<const Data &> {
77 void operator ()(
const Data &src);
80class exit_ :
public ActionPrimitive<> {
84struct log_msg :
public ActionPrimitive<const std::string &,
85 const std::vector<Data> > {
86 void operator ()(
const std::string &format,
87 const std::vector<Data> data_vector);