コード例 #1
0
        //  interfaces

        internal void Serialize(MemoryStream stream, Mio meta, object data)
        {
            MemoryDataBuffer buffer = new MemoryDataBuffer(stream);
            MProto           proto  = new MBinaryProto(buffer);

            Write(proto, meta, data);
        }
コード例 #2
0
        internal object Deserialize(MemoryStream ms, Mio meta)
        {
            MemoryDataBuffer buffer = new MemoryDataBuffer(ms);
            MProto           proto  = new MBinaryProto(buffer);
            object           res    = Read(proto, meta);

            return(res);
        }
コード例 #3
0
        // Reads

        internal object Read(MProto proto, Mio meta)
        {
            if (meta == null)
            {
                return(null);
            }
            switch (meta.Type)
            {
            case MType.Binary: return(proto.ReadBinary());

            case MType.Bool: return(proto.ReadBool());

            case MType.Byte: return(proto.ReadByte());

            case MType.Double: return(proto.ReadDouble());

            case MType.Float: return(proto.ReadFloat());

            case MType.I16: return(proto.ReadI16());

            case MType.I32: return(proto.ReadI32());

            case MType.I64: return(proto.ReadI64());

            case MType.List: return(ReadList(proto, meta as MioList));

            case MType.Map: return(ReadMap(proto, meta as MioMap));

            case MType.Null: return(null);

            case MType.Set: return(ReadList(proto, meta as MioList));

            case MType.String: return(proto.ReadString());

            case MType.Struct: return(ReadStruct(proto, meta as MioStruct));
            }
            return(null);
        }
コード例 #4
0
        // Writes

        internal void Write(MProto proto, Mio meta, object data)
        {
            if (meta == null)
            {
                return;
            }
            switch (meta.Type)
            {
            case MType.Binary: proto.WriteBinary((byte[])data); break;

            case MType.Bool: proto.WriteBool(Convert.ToBoolean(data)); break;

            case MType.Byte: proto.WriteByte((sbyte)Convert.ToByte(data)); break;

            case MType.Double: proto.WriteDouble(Convert.ToDouble(data)); break;

            case MType.Float: proto.WriteFloat(Convert.ToSingle(data)); break;

            case MType.I16: proto.WriteI16(Convert.ToInt16(data)); break;

            case MType.I32: proto.WriteI32(Convert.ToInt32(data)); break;

            case MType.I64: proto.WriteI64(Convert.ToInt64(data)); break;

            case MType.List: WriteList(proto, meta as MioList, data as List <object>); break;

            case MType.Map: WriteMap(proto, meta as MioMap, data as Dictionary <object, object>); break;

            case MType.Null: break;

            case MType.Set: WriteList(proto, meta as MioList, data as List <object>); break;

            case MType.String: proto.WriteString(Convert.ToString(data)); break;

            case MType.Struct: WriteStruct(proto, meta as MioStruct, data as MioObject); break;
            }
        }
コード例 #5
0
ファイル: MSimpleIO.cs プロジェクト: msglib/msglib-csharp
 internal MioMap(Mio key, Mio val)
     : base(MType.Map)
 {
     this.Key = key; this.Value = val;
 }
コード例 #6
0
ファイル: MSimpleIO.cs プロジェクト: msglib/msglib-csharp
 internal MioList(Mio element)
     : base(MType.List)
 {
     this.Element = element;
 }
コード例 #7
0
ファイル: MSimpleIO.cs プロジェクト: msglib/msglib-csharp
 // Writes
 internal void Write(MProto proto, Mio meta, object data)
 {
     if (meta == null)
         return;
     switch (meta.Type)
     {
         case MType.Binary: proto.WriteBinary((byte[])data); break;
         case MType.Bool: proto.WriteBool(Convert.ToBoolean(data)); break;
         case MType.Byte: proto.WriteByte((sbyte)Convert.ToByte(data)); break;
         case MType.Double: proto.WriteDouble(Convert.ToDouble(data)); break;
         case MType.Float: proto.WriteFloat(Convert.ToSingle(data)); break;
         case MType.I16: proto.WriteI16(Convert.ToInt16(data)); break;
         case MType.I32: proto.WriteI32(Convert.ToInt32(data)); break;
         case MType.I64: proto.WriteI64(Convert.ToInt64(data)); break;
         case MType.List: WriteList(proto, meta as MioList, data as List<object>); break;
         case MType.Map: WriteMap(proto, meta as MioMap, data as Dictionary<object,object>); break;
         case MType.Null: break;
         case MType.Set: WriteList(proto, meta as MioList, data as List<object>); break;
         case MType.String: proto.WriteString(Convert.ToString(data)); break;
         case MType.Struct: WriteStruct(proto, meta as MioStruct, data as MioObject); break;
     }
 }
コード例 #8
0
ファイル: MSimpleIO.cs プロジェクト: msglib/msglib-csharp
 //  interfaces
 internal void Serialize(MemoryStream stream, Mio meta, object data)
 {
     MemoryDataBuffer buffer = new MemoryDataBuffer(stream);
     MProto proto = new MBinaryProto(buffer);
     Write(proto, meta, data);
 }
コード例 #9
0
ファイル: MSimpleIO.cs プロジェクト: msglib/msglib-csharp
 // Reads
 internal object Read(MProto proto, Mio meta)
 {
     if (meta == null)
         return null;
     switch (meta.Type)
     {
         case MType.Binary: return proto.ReadBinary();
         case MType.Bool: return proto.ReadBool();
         case MType.Byte: return proto.ReadByte();
         case MType.Double: return proto.ReadDouble();
         case MType.Float: return proto.ReadFloat();
         case MType.I16: return proto.ReadI16();
         case MType.I32: return proto.ReadI32();
         case MType.I64: return proto.ReadI64();
         case MType.List: return ReadList(proto, meta as MioList);
         case MType.Map: return ReadMap(proto, meta as MioMap);
         case MType.Null: return null;
         case MType.Set: return ReadList(proto, meta as MioList);
         case MType.String: return proto.ReadString();
         case MType.Struct: return ReadStruct(proto, meta as MioStruct);
     }
     return null;
 }
コード例 #10
0
ファイル: MSimpleIO.cs プロジェクト: msglib/msglib-csharp
 internal object Deserialize(MemoryStream ms, Mio meta)
 {
     MemoryDataBuffer buffer = new MemoryDataBuffer(ms);
     MProto proto = new MBinaryProto(buffer);
     object res = Read(proto, meta);
     return res;
 }
コード例 #11
0
ファイル: MSimpleIO.cs プロジェクト: msglib/msglib-csharp
 internal object Deserialize(byte[] bytes, Mio meta)
 {
     MemoryStream ms = new MemoryStream(bytes, false);
     return Deserialize(ms, meta);
 }
コード例 #12
0
ファイル: MSimpleIO.cs プロジェクト: msglib/msglib-csharp
 internal MioField(int id, Mio meta)
 {
     this.ID = id; this.Meta = meta;
 }
コード例 #13
0
 internal MioMap(Mio key, Mio val) : base(MType.Map)
 {
     this.Key = key; this.Value = val;
 }
コード例 #14
0
 internal MioList(Mio element) : base(MType.List)
 {
     this.Element = element;
 }
コード例 #15
0
 internal MioField(int id, Mio meta)
 {
     this.ID = id; this.Meta = meta;
 }
コード例 #16
0
        internal object Deserialize(byte[] bytes, Mio meta)
        {
            MemoryStream ms = new MemoryStream(bytes, false);

            return(Deserialize(ms, meta));
        }