Exemplo n.º 1
0
        private BObject DecodeDocument()
        {
            int length = reader.ReadInt32() - 4;

            BObject obj = new BObject();

            int i = (int)reader.BaseStream.Position;

            while (reader.BaseStream.Position < i + length - 1)
            {
                BValue value = DecodeElement(out var name);
                obj.Add(name, value);
            }

            reader.ReadByte(); // zero
            return(obj);
        }
Exemplo n.º 2
0
        private void EncodeElement(MemoryStream ms, string name, BValue v)
        {
            switch (v.ValueType)
            {
            case BValueType.Double:
                ms.WriteByte(0x01);
                EncodeCString(ms, name);
                EncodeDouble(ms, v.DoubleValue);
                return;

            case BValueType.String:
                ms.WriteByte(0x02);
                EncodeCString(ms, name);
                EncodeString(ms, v.StringValue);
                return;

            case BValueType.Object:
                ms.WriteByte(0x03);
                EncodeCString(ms, name);
                EncodeDocument(ms, v as BObject);
                return;

            case BValueType.Array:
                ms.WriteByte(0x04);
                EncodeCString(ms, name);
                EncodeArray(ms, v as BArray);
                return;

            case BValueType.Binary:
                ms.WriteByte(0x05);
                EncodeCString(ms, name);
                EncodeBinary(ms, v.BinaryValue);
                return;

            case BValueType.Boolean:
                ms.WriteByte(0x08);
                EncodeCString(ms, name);
                EncodeBool(ms, v.BoolValue);
                return;

            case BValueType.UTCDateTime:
                ms.WriteByte(0x09);
                EncodeCString(ms, name);
                EncodeUTCDateTime(ms, v.DateTimeValue);
                return;

            case BValueType.None:
                ms.WriteByte(0x0A);
                EncodeCString(ms, name);
                return;

            case BValueType.Int32:
                ms.WriteByte(0x10);
                EncodeCString(ms, name);
                EncodeInt32(ms, v.Int32Value);
                return;

            case BValueType.Int64:
                ms.WriteByte(0x12);
                EncodeCString(ms, name);
                EncodeInt64(ms, v.Int64Value);
                return;
            }
        }
Exemplo n.º 3
0
 public virtual bool Contains(BValue v)
 {
     return(false);
 }
Exemplo n.º 4
0
 public virtual void Add(BValue value)
 {
 }
Exemplo n.º 5
0
 public virtual void Add(string key, BValue value)
 {
 }