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;
            }
        }
Exemple #2
0
 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));
     }
 }