示例#1
0
        /// <summary>
        /// Skip a value of specified type
        /// </summary>
        /// <param name="type">Type of the value to skip</param>
        /// <exception cref="EndOfStreamException"/>
        public void Skip(BondDataType type)
        {
            switch (type)
            {
            case (BondDataType.BT_BOOL):
            case (BondDataType.BT_UINT8):
            case (BondDataType.BT_INT8):
                input.SkipBytes(sizeof(byte));
                break;

            case (BondDataType.BT_UINT16):
            case (BondDataType.BT_INT16):
                input.ReadVarUInt16();
                break;

            case (BondDataType.BT_UINT32):
            case (BondDataType.BT_INT32):
                input.ReadVarUInt32();
                break;

            case (BondDataType.BT_FLOAT):
                input.SkipBytes(sizeof(float));
                break;

            case (BondDataType.BT_DOUBLE):
                input.SkipBytes(sizeof(double));
                break;

            case (BondDataType.BT_UINT64):
            case (BondDataType.BT_INT64):
                input.ReadVarUInt64();
                break;

            case (BondDataType.BT_STRING):
                input.SkipBytes((int)input.ReadVarUInt32());
                break;

            case (BondDataType.BT_WSTRING):
                input.SkipBytes((int)(input.ReadVarUInt32() << 1));
                break;

            case BondDataType.BT_LIST:
            case BondDataType.BT_SET:
                SkipContainer();
                break;

            case BondDataType.BT_MAP:
                SkipMap();
                break;

            case BondDataType.BT_STRUCT:
                SkipStruct();
                break;

            default:
                Throw.InvalidBondDataType(type);
                break;
            }
        }
示例#2
0
        public void WriteFieldOmitted(BondDataType dataType, ushort id, Metadata metadata)
        {
            // Simple doesn't support omitting fields so instead we write the default value
            Audit.ArgRule(!metadata.default_value.nothing, "Field set to nothing can't be serialized.");

            switch (dataType)
            {
            case BondDataType.BT_BOOL:
                WriteBool(0 != metadata.default_value.uint_value);
                break;

            case BondDataType.BT_UINT8:
                WriteUInt8((byte)metadata.default_value.uint_value);
                break;

            case BondDataType.BT_UINT16:
                WriteUInt16((UInt16)metadata.default_value.uint_value);
                break;

            case BondDataType.BT_UINT32:
                WriteUInt32((UInt32)metadata.default_value.uint_value);
                break;

            case BondDataType.BT_UINT64:
                WriteUInt64(metadata.default_value.uint_value);
                break;

            case BondDataType.BT_FLOAT:
                WriteFloat((float)metadata.default_value.double_value);
                break;

            case BondDataType.BT_DOUBLE:
                WriteDouble(metadata.default_value.double_value);
                break;

            case BondDataType.BT_STRING:
                WriteString(metadata.default_value.string_value);
                break;

            case BondDataType.BT_LIST:
            case BondDataType.BT_SET:
            case BondDataType.BT_MAP:
                WriteContainerBegin(0, dataType);
                break;

            case BondDataType.BT_INT8:
                WriteInt8((sbyte)metadata.default_value.int_value);
                break;

            case BondDataType.BT_INT16:
                WriteInt16((Int16)metadata.default_value.int_value);
                break;

            case BondDataType.BT_INT32:
                WriteInt32((Int32)metadata.default_value.int_value);
                break;

            case BondDataType.BT_INT64:
                WriteInt64(metadata.default_value.int_value);
                break;

            case BondDataType.BT_WSTRING:
                WriteWString(metadata.default_value.wstring_value);
                break;

            default:
                Throw.InvalidBondDataType(dataType);
                break;
            }
        }