private void ImplementVerb(TAVerb verb)
 {
     if (verb.During != null)
     {
         verb.During.Implement(this);
     }
 }
Example #2
0
        private void AddCoStates(int issuePoint, LocalVariableState lvState, IEnumerable <TAVerb> states)
        {
            Contract.Requires(states != null);

            TAVerb    first = states.First();
            CoFSMInfo cfi   = _coFSMs[first.Target];

            if (cfi.AddVerbs(issuePoint, lvState, states))
            {
                foreach (var tup in cfi.GetVerbs(issuePoint, lvState))
                {
                    TAVerb      tav = tup.Item1;
                    CoStateInfo csi = tup.Item2;
                    if (csi.StateAction == null)
                    {
                        InitCoState(tav, csi);
                        if (tav.During != null)
                        {
                            foreach (AbstractEvent ev in tav.During.Sensitivity)
                            {
                                cfi.Sensitivity.Add(((SignalBase)ev.Owner).Descriptor);
                            }
                        }
                    }
                }
            }
        }
Example #3
0
        public void ImplementCoState(int issuePoint, IEnumerable <TAVerb> states, int step, IFunctionBuilder builder)
        {
            LocalVariableState lvState = _templ.ExportLocalVariableState();

            AddCoStates(issuePoint, lvState, states);
            TAVerb      first = states.First();
            CoFSMInfo   cfi   = _coFSMs[first.Target];
            var         tup   = cfi.GetVerbs(issuePoint, lvState).ElementAt(step);
            CoStateInfo csi   = tup.Item2;

            ImplementCoStateAction(cfi, csi, builder);
        }
Example #4
0
        private void InitCoState(TAVerb tav, CoStateInfo csi)
        {
            MethodCode       csc    = MethodCode.Create(tav.Op.Method);
            MethodDescriptor md     = new MethodDescriptor(tav.Op.Method, new object[0], new EVariability[0]);
            MSILDecompiler   decomp = new MSILDecompiler(md, csc, tav.Op.Target);

            decomp.Template.DisallowReturnStatements = true;
            decomp.Template.NestLoopsDeeply          = true;
            decomp.Template.TryToEliminateLoops      = true;
            decomp.Template.DisallowConditionals     = true;
            IDecompilationResult result = decomp.Decompile();

            csi.StateAction  = result.Decompiled;
            csi.DuringAction = tav.During;
        }
        private void Initialize()
        {
            Debug.Assert(!_inited);
            IEnumerable <TAVerb> rdef = RealizeDefault();
            TAVerb last = null;

            foreach (TAVerb verb in rdef)
            {
                if (verb.TMode == ETVMode.Locked)
                {
                    ++_ii;
                }
                ++_lat;
                last = verb;
            }
            if (last != null)
            {
                --_lat;
            }
            _inited = true;
        }
Example #6
0
 /// <summary>
 /// Adds a transaction verb to describe the neutral (default) dataflows for all specified signal targets.
 /// </summary>
 /// <param name="verb">a transaction verb intended as neutral flow</param>
 public void AddNeutral(TAVerb verb)
 {
     AddNeutral(verb.ToCombFlow());
 }