Esempio n. 1
0
        // loop header
        public static void MakeStep(WgContext Context, F Data)
        {
            if (Context.IsLoopBreak)
            {
                return;
            }

            // check if condition holds
            bool Proceed = Data.Check?.Invoke(Context, Data) ?? true;

            if (Proceed)
            {
                ScheduleNextStep(Context, Data);

                // increment
                if (Data.Step != null)
                {
                    Context.ProceedTo(Data.Step);
                }

                // iteration body
                if (Data.Body != null)
                {
                    Context.ProceedTo(Data.Body);
                }
            }
        }
Esempio n. 2
0
        public static void p01(WgContext Context, S03 Data)
        {
            // data
            Data.Result = new List <string> ();

            // stacking sub-blocks
            Context.ProceedTo <S03> (p02);
            Context.ProceedTo(S03._foreach01.Generate(ForEach_01_GetContainer, ForEach_01_Step, ForEach_01_Body));
        }
Esempio n. 3
0
        public static void p01(WgContext Context, S02 Data)
        {
            // data
            Data.Sum     = 0;
            Data.Numbers = new List <int> ();

            // stacking sub-blocks
            Context.ProceedTo <S02> (p02);
            Context.ProceedTo(S02._while01.Generate(While_01_Check, While_01_Body));
        }
Esempio n. 4
0
        public static void While_01_Body(WgContext Context, S02._while01 Data)
        {
            --Data.Outer.Top;

            if ((Data.Outer.Top % 5) == 0)
            {
                Context.LoopContinue();
            }

            Data.Outer.Sum += Data.Outer.Top;
            Data.Outer.Numbers.Add(Data.Outer.Top);

            Context.ProceedTo <S02._while01> (While_01_Dummy);
            Context.ProceedTo <S02._while01> (While_01_SubProc);
        }
Esempio n. 5
0
        public void Append(WgContext Context)
        {
            ScheduleNextStep(Context, (F)this);

            // initialization
            if (Init != null)
            {
                Context.ProceedTo(Init);
            }
        }
Esempio n. 6
0
        // loop header
        public static void MakeStep(WgContext Context, F Data)
        {
            if (Context.IsLoopBreak)
            {
                return;
            }

            // retrieve container
            if (Data.Container == null)
            {
                Data.GetContainer(Context, Data);
            }

            if (Data.Container == null)
            {
                return;
            }

            // check if continuation condition holds
            ++Data.CurrentIndex;
            bool Proceed = Data.CurrentIndex < Data.Container.Count;

            if (Proceed)
            {
                ScheduleNextStep(Context, Data);

                // increment
                Data.CurrentElement = Data.Container[Data.CurrentIndex];

                // iteration body
                if (Data.Body != null)
                {
                    Context.ProceedTo(Data.Body);
                }

                // step
                if (Data.Step != null)
                {
                    Context.ProceedTo(Data.Step);
                }
            }
        }
Esempio n. 7
0
        static void Main(string[] args)
        {
            WgContext         Context;
            DelegateConverter DelConv = new DelegateConverter();

            //
            string   StateFilePath = Path.GetFullPath("state.json");
            Encoding enc           = Encoding.UTF8;

            if (File.Exists(StateFilePath))
            {
                string StateJson = File.ReadAllText(StateFilePath, enc);
                Context = JsonConvert.DeserializeObject <WgContext> (StateJson, DelConv);
            }
            else
            {
                Context = new WgContext();

                //S01 Data = new S01 { Numbers = new[] { 5, 3, 8, 10, 1, 7, 4, 2 } };
                //Context.ProceedTo (Pieces01.p01, Data);

                //S02 Data = new S02 { Top = DateTime.Now.Second };
                //Context.ProceedTo (Pieces02.p01, Data);

                S03 Data = new S03 {
                    Lines = new List <string> {
                        "report", "story", "lines", "text", "narrative", "plot"
                    }
                };
                Context.ProceedTo(Pieces03.p01, Data);
            }

            Context.Run(new ManualResetEvent(false));

            {
                string StateJson = JsonConvert.SerializeObject(Context, DelConv);
                File.WriteAllText(StateFilePath, StateJson, enc);
            }
        }
Esempio n. 8
0
 // first or subsequent iteration scheduling
 protected static void ScheduleNextStep(WgContext Context, F Data)
 {
     Context.ProceedTo(MakeStep, Data, 0, WgContext.DefaultLoopLabel);
 }