public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { CodeBlockDataC Block = (CodeBlockDataC)value; writer.WriteStartObject(); writer.WritePropertyName(TypePropName); serializer.Serialize(writer, Block.GetType()); writer.WritePropertyName(DataPropName); serializer.Serialize(writer, Block); writer.WriteEndObject(); }
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { if (reader.TokenType == JsonToken.Null) { return(null); } JObject Obj = JObject.Load(reader); Type DataType = Obj[TypePropName].ToObject <Type> (); JToken DataToken = Obj[DataPropName]; CodeBlockDataC Data = DataToken.ToObject(DataType, serializer) as CodeBlockDataC; return(Data); }
// push next action public void ProceedToGeneric(Delegate NextProc, CodeBlockDataC Data, uint StartAt = 0, string LoopHeader = null) { CodeBlockDataC LastStackData = CallStack.Count == 0 ? null : CallStack.Peek().Data ; if (Data == null) { Data = LastStackData; } Data.OuterC = object.ReferenceEquals(Data, LastStackData) ? LastStackData.OuterC : LastStackData ; CallStack.Push(new CallStackEntry { Proc = NextProc, Data = Data, LoopHeader = LoopHeader }); }
public static CallStackEntry MakeEmpty(CodeBlockDataC Data) { return(new CallStackEntry { Data = Data, Proc = null }); }