21 #ifndef BM_BM_SIM_CORE_PRIMITIVES_H_
22 #define BM_BM_SIM_CORE_PRIMITIVES_H_
33 struct assign :
public ActionPrimitive<Data &, const Data &> {
34 void operator ()(Data &dst,
const Data &src) {
39 struct assign_VL :
public ActionPrimitive<Field &, const Field &> {
40 void operator ()(Field &dst,
const Field &src) {
45 struct 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);
54 struct assign_header_stack
55 :
public ActionPrimitive<HeaderStack &, const HeaderStack &> {
56 void operator ()(HeaderStack &dst,
const HeaderStack &src);
59 struct assign_union_stack
60 :
public ActionPrimitive<HeaderUnionStack &, const HeaderUnionStack &> {
61 void operator ()(HeaderUnionStack &dst,
const HeaderUnionStack &src);
64 struct push :
public ActionPrimitive<StackIface &, const Data &> {
65 void operator ()(StackIface &stack,
const Data &num);
68 struct pop :
public ActionPrimitive<StackIface &, const Data &> {
69 void operator ()(StackIface &stack,
const Data &num);
72 struct assert_ :
public ActionPrimitive<const Data &> {
73 void operator ()(
const Data &src);
76 struct assume_ :
public ActionPrimitive<const Data &> {
77 void operator ()(
const Data &src);
80 class exit_ :
public ActionPrimitive<> {
84 struct 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);
94 #endif // BM_BM_SIM_CORE_PRIMITIVES_H_