/* * 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 */