// 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); } } }
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)); }
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)); }
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); }
public void Append(WgContext Context) { ScheduleNextStep(Context, (F)this); // initialization if (Init != null) { Context.ProceedTo(Init); } }
// 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); } } }
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); } }
// first or subsequent iteration scheduling protected static void ScheduleNextStep(WgContext Context, F Data) { Context.ProceedTo(MakeStep, Data, 0, WgContext.DefaultLoopLabel); }