// Copyright 2017 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef COMPONENTS_CBOR_CONSTANTS_H_ #define COMPONENTS_CBOR_CONSTANTS_H_ #include namespace cbor { namespace constants { // Mask selecting the low-order 5 bits of the "initial byte", which is where // the additional information is encoded. static constexpr uint8_t kAdditionalInformationMask = 0x1F; // Mask selecting the high-order 3 bits of the "initial byte", which indicates // the major type of the encoded value. static constexpr uint8_t kMajorTypeMask = 0xE0; // Indicates the number of bits the "initial byte" needs to be shifted to the // right after applying |kMajorTypeMask| to produce the major type in the // lowermost bits. static constexpr uint8_t kMajorTypeBitShift = 5u; // Indicates the integer is in the following byte. static constexpr uint8_t kAdditionalInformation1Byte = 24u; // Indicates the integer is in the next 2 bytes. static constexpr uint8_t kAdditionalInformation2Bytes = 25u; // Indicates the integer is in the next 4 bytes. static constexpr uint8_t kAdditionalInformation4Bytes = 26u; // Indicates the integer is in the next 8 bytes. static constexpr uint8_t kAdditionalInformation8Bytes = 27u; extern const char kUnsupportedMajorType[]; } // namespace constants } // namespace cbor #endif // COMPONENTS_CBOR_CONSTANTS_H_