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; } }