| /* |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| */ |
| |
| #ifndef CBORCONSTANTS_P_H |
| #define CBORCONSTANTS_P_H |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| |
| /* |
| * CBOR Major types |
| * Encoded in the high 3 bits of the descriptor byte |
| * See http://tools.ietf.org/html/rfc7049#section-2.1 |
| */ |
| typedef enum CborMajorTypes { |
| UnsignedIntegerType = 0U, |
| NegativeIntegerType = 1U, |
| ByteStringType = 2U, |
| TextStringType = 3U, |
| ArrayType = 4U, |
| MapType = 5U, /* a.k.a. object */ |
| TagType = 6U, |
| SimpleTypesType = 7U |
| } CborMajorTypes; |
| |
| /* |
| * CBOR simple and floating point types |
| * Encoded in the low 8 bits of the descriptor byte when the |
| * Major Type is 7. |
| */ |
| typedef enum CborSimpleTypes { |
| FalseValue = 20, |
| TrueValue = 21, |
| NullValue = 22, |
| UndefinedValue = 23, |
| SimpleTypeInNextByte = 24, /* not really a simple type */ |
| HalfPrecisionFloat = 25, /* ditto */ |
| SinglePrecisionFloat = 26, /* ditto */ |
| DoublePrecisionFloat = 27, /* ditto */ |
| Break = 31 |
| } CborSimpleTypes; |
| |
| enum { |
| SmallValueBitLength = 5U, |
| SmallValueMask = (1U << SmallValueBitLength) - 1, /* 31 */ |
| Value8Bit = 24U, |
| Value16Bit = 25U, |
| Value32Bit = 26U, |
| Value64Bit = 27U, |
| IndefiniteLength = 31U, |
| |
| MajorTypeShift = SmallValueBitLength, |
| MajorTypeMask = ~0U << MajorTypeShift, |
| |
| BreakByte = (unsigned)Break | (SimpleTypesType << MajorTypeShift) |
| }; |
| |
| #ifdef __cplusplus |
| } |
| #endif |
| |
| #endif /* CBORCONSTANTS_P_H */ |