예제 #1
0
 static public Either <Errors.FormatError, ID> DeserializeV1(Format.Schema.IDV1 id)
 {
     if (!id.HasBool)
     {
         return(new Errors.DeserializationError("invalid ID kind, expected bool"));
     }
     else
     {
         return(new Bool(id.Bool));
     }
 }
예제 #2
0
 static public Either <Errors.FormatError, ID> DeserializeV1(Format.Schema.IDV1 id)
 {
     if (!id.HasVariable)
     {
         return(new Errors.DeserializationError("invalid ID kind, expected variable"));
     }
     else
     {
         return(new Variable(id.Variable));
     }
 }
예제 #3
0
 static public Either <Errors.FormatError, ID> DeserializeV1(Format.Schema.IDV1 id)
 {
     if (!id.HasBytes)
     {
         return(new Errors.DeserializationError("invalid ID kind, expected byte array"));
     }
     else
     {
         return(new Bytes(id.Bytes.ToByteArray()));
     }
 }
예제 #4
0
 static public Either <Errors.FormatError, ID> DeserializeV1(Format.Schema.IDV1 id)
 {
     if (!id.HasString)
     {
         return(new Errors.DeserializationError("invalid ID kind, expected string"));
     }
     else
     {
         return(new Str(id.String));
     }
 }
예제 #5
0
 static public Either <Errors.FormatError, ID> DeserializeV1(Format.Schema.IDV1 id)
 {
     if (!id.HasInteger)
     {
         return(new Errors.DeserializationError("invalid ID kind, expected integer"));
     }
     else
     {
         return(new Integer(id.Integer));
     }
 }
예제 #6
0
            static public Either <Errors.FormatError, ID> DeserializeV1(Format.Schema.IDV1 id)
            {
                if (id.Set == null)
                {
                    return(new Errors.DeserializationError("invalid ID kind, expected set"));
                }
                else
                {
                    HashSet <ID>        values = new HashSet <ID>();
                    Format.Schema.IDSet s      = id.Set;

                    foreach (Format.Schema.IDV1 l in s.Set)
                    {
                        Either <Errors.FormatError, ID> res = ID.DeserializeEnumV1(l);
                        if (res.IsLeft)
                        {
                            return(res.Left);
                        }
                        else
                        {
                            ID value = res.Right;

                            if (value is Variable)
                            {
                                return(new Errors.DeserializationError("sets cannot contain variables"));
                            }

                            values.Add(value);
                        }
                    }

                    if (values.Count == 0)
                    {
                        return(new Errors.DeserializationError("invalid Set value"));
                    }
                    else
                    {
                        return(new Set(values));
                    }
                }
            }
예제 #7
0
 static public Either <Errors.FormatError, ID> DeserializeEnumV1(Format.Schema.IDV1 id)
 {
     if (id.HasDate)
     {
         return(Date.DeserializeV1(id));
     }
     else if (id.HasInteger)
     {
         return(Integer.DeserializeV1(id));
     }
     else if (id.HasString)
     {
         return(Str.DeserializeV1(id));
     }
     else if (id.HasBytes)
     {
         return(Bytes.DeserializeV1(id));
     }
     else if (id.HasSymbol)
     {
         return(Symbol.DeserializeV1(id));
     }
     else if (id.HasVariable)
     {
         return(Variable.DeserializeV1(id));
     }
     else if (id.HasBool)
     {
         return(Bool.DeserializeV1(id));
     }
     else if (id.Set != null)
     {
         return(Set.DeserializeV1(id));
     }
     else
     {
         return(new Errors.DeserializationError("invalid ID kind: id.Kind"));
     }
 }