예제 #1
0
        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;
            }
        }
예제 #2
0
 public override void build()
 {
     sg_edge_node = (MG.SG_EdgeNode)children[0];
     rg_edge_node = (MG.RG_EdgeNode)children[1];
 }