// Helper method to serialize the data-blob type and flags public static void SerializeDataBlobTypeAndFlags(ref NativePrimitiveEncoder encoder, SerializedDataBlobKind blobType, byte flags) { // make sure that blobType fits in 2 bits and flags fits in 6 bits Debug.Assert(blobType < SerializedDataBlobKind.Limit); Debug.Assert((byte)blobType <= 2 && flags <= 0x3F || (byte)blobType == 3 && flags <= 1 || (byte)blobType > 3 && flags <= 7); byte encodedKindAndFlags; if (blobType <= (SerializedDataBlobKind)3) { encodedKindAndFlags = (byte)((byte)blobType | (flags << 2)); } else { encodedKindAndFlags = (byte)(3 | (((byte)blobType - 3) << 3) | (flags << 5)); } encoder.WriteByte(encodedKindAndFlags); }
// Helper method to serialize the data-blob type and flags public void SerializeDataBlobTypeAndFlags(ref NativePrimitiveEncoder encoder, SerializedDataBlobKind blobType, byte flags) { // make sure that blobType fits in 2 bits and flags fits in 6 bits Debug.Assert(blobType < SerializedDataBlobKind.Limit); Debug.Assert((byte)blobType <= 2 && flags <= 0x3F || (byte)blobType == 3 && flags <= 1 || (byte)blobType > 3 && flags <= 7); byte encodedKindAndFlags; if (blobType <= (SerializedDataBlobKind)3) { encodedKindAndFlags = (byte)((byte)blobType | (flags << 2)); } else { encodedKindAndFlags = (byte)(3 | (((byte)blobType - 3) << 3) | (flags << 5)); } encoder.WriteByte(encodedKindAndFlags); }