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);
        }
Exemplo n.º 3
0
        // 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
            });
        }
Exemplo n.º 4
0
 public static CallStackEntry MakeEmpty(CodeBlockDataC Data)
 {
     return(new CallStackEntry {
         Data = Data, Proc = null
     });
 }