MCPcopy Create free account
hub / github.com/GaijinEntertainment/daScript / set

Function set

include/daScript/simulate/simulate_fusion_op2_impl.h:97–139  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

95 return nullptr; \
96 } \
97 virtual void set(SimNode_Op2Fusion * result, SimNode * node) override { \
98 result->set(#OPNAME,Type(ToBasicType<CTYPE>::type),node->debugInfo); \
99 IMPLEMENT_OP2_SETUP_NODE(result,node); \
100 } \
101 virtual SimNode * fuse(const SimNodeInfoLookup & info, SimNode * node, Context * context) override { \
102 return fuseOp2(info, node, FUSION_OP2_SUBEXPR_LEFT(CTYPE,node), FUSION_OP2_SUBEXPR_RIGHT(CTYPE,node), context); \
103 } \
104 };
105
106#else
107
108// A opname B
109#define IMPLEMENT_ANY_OP2(INLINE,OPNAME,TYPE,CTYPE) \
110 struct FusionPoint_##OPNAME##_##CTYPE : FusionPointOp2 { \
111 IMPLEMENT_OP2_NODE_ANYR(INLINE,OPNAME,TYPE,CTYPE,Argument); \
112 IMPLEMENT_OP2_NODE_ANYL(INLINE,OPNAME,TYPE,CTYPE,Argument); \
113 IMPLEMENT_OP2_NODE_ANYR(INLINE,OPNAME,TYPE,CTYPE,ArgumentRefOff); \
114 IMPLEMENT_OP2_NODE_ANYL(INLINE,OPNAME,TYPE,CTYPE,ArgumentRefOff); \
115 IMPLEMENT_OP2_NODE_ANYR(INLINE,OPNAME,TYPE,CTYPE,ThisBlockArgument); \
116 IMPLEMENT_OP2_NODE_ANYL(INLINE,OPNAME,TYPE,CTYPE,ThisBlockArgument); \
117 IMPLEMENT_OP2_NODE_ANYR(INLINE,OPNAME,TYPE,CTYPE,Const); \
118 IMPLEMENT_OP2_NODE_ANYL(INLINE,OPNAME,TYPE,CTYPE,Const); \
119 IMPLEMENT_OP2_NODE_ANYR(INLINE,OPNAME,TYPE,CTYPE,Local); \
120 IMPLEMENT_OP2_NODE_ANYL(INLINE,OPNAME,TYPE,CTYPE,Local); \
121 IMPLEMENT_OP2_NODE_ANYR(INLINE,OPNAME,TYPE,CTYPE,LocalRefOff); \
122 IMPLEMENT_OP2_NODE_ANYL(INLINE,OPNAME,TYPE,CTYPE,LocalRefOff); \
123 virtual SimNode * match(const SimNodeInfoLookup & info, SimNode *, SimNode * node_l, SimNode * node_r, Context * context) override { \
124 auto & ccode = *(context->code); \
125 /* match op2 */ if ( !node_l || !node_r ) { return nullptr; } \
126 MATCH_OP2_ANYR(OPNAME,"GetArgument",Argument) \
127 MATCH_OP2_ANYL(OPNAME,"GetArgument",Argument) \
128 MATCH_OP2_ANYR(OPNAME,"GetArgumentRefOffR2V",ArgumentRefOff) \
129 MATCH_OP2_ANYL(OPNAME,"GetArgumentRefOffR2V",ArgumentRefOff) \
130 MATCH_OP2_ANYR(OPNAME,"GetThisBlockArgument",ThisBlockArgument) \
131 MATCH_OP2_ANYL(OPNAME,"GetThisBlockArgument",ThisBlockArgument) \
132 MATCH_OP2_ANYR(OPNAME,"ConstValue",Const) \
133 MATCH_OP2_ANYL(OPNAME,"ConstValue",Const) \
134 MATCH_OP2_ANYR(OPNAME,"GetLocalR2V",Local) \
135 MATCH_OP2_ANYL(OPNAME,"GetLocalR2V",Local) \
136 MATCH_OP2_ANYR(OPNAME,"GetLocalRefOffR2V",LocalRefOff) \
137 MATCH_OP2_ANYL(OPNAME,"GetLocalRefOffR2V",LocalRefOff) \
138 return nullptr; \
139 } \
140 virtual void set(SimNode_Op2Fusion * result, SimNode * node) override { \
141 result->set(#OPNAME,Type(ToBasicType<CTYPE>::type),node->debugInfo); \
142 IMPLEMENT_OP2_SETUP_NODE(result,node); \

Callers 2

smart_ptrClass · 0.50
resetMethod · 0.50

Calls

no outgoing calls

Tested by

no test coverage detected