public RG_EdgeTU_RX(MG.RG_EdgeNode rg_EdgeNode, preCH preCH_in) { var memANodeRX = (MGRX.MemANodeRX)rg_EdgeNode.memAVT.children[0]; // todo proper field in MemAVTNode - hard cast doubles as Assert memANodeRX.ACMembTypingCallback = () => preCH_in.PayT; // for now, and for lazyness: no extra TU_RX for MemARX var memA_preCH_out = new deferred_preCH( () => { return(new TTuple { isMulti = false, // todo PayT = SGA.MembType_Exact(preCH_in.PayT, memANodeRX.name) }); }, dataSrc: null // not used in RX-case ); // todo Assign creates a new Column ( thus distinct preCH ) in the properly translated version // the proper preCH out is that of AssignVT - but since types are identical, and that's all we care for here : this could simply be dropped, but i need the assignVTNode for scoping if (rg_EdgeNode.assignVT == null) { preCH_out = memA_preCH_out; } else { assignVTNode = new Assign_VBXTU(preCH_in, rg_EdgeNode.assignVT); preCH_out = assignVTNode.preCH_out; } }
public static preCH SG_Step_preCH_OUT(MGRX.SG_EdgeNodeRX sg_edge_node) { if (sg_edge_node.typefilter.Length == 0) // contract : never null , absence of CS_name toks -> Array.Len == 0 { return(new explicit_preCH(new TTuple { isMulti = false, PayT = typeof(GameObject) }, _dataSrc: null)); } else { return(new deferred_preCH(() => new TTuple { isMulti = false, PayT = SGA.QTN_Exact(sg_edge_node.typefilter) }, dataSrc: null)); } }