@@ -24,6 +24,7 @@ struct BYTE_CHOICE_INDEX;
2424struct LARGE_CHOICE_INDEX ;
2525struct TOP_LEVEL_BYTE_CHOICE_INDEX ;
2626struct CONST_NONE ;
27+ struct ANY_PACKED_TYPE_TAG_BYTE_PREFIX ;
2728struct UTF8_STRING_NO_LENGTH ;
2829struct FLOOR_VARINT_PREFIX_UTF8_STRING_SHARED ;
2930struct ROOF_VARINT_PREFIX_UTF8_STRING_SHARED ;
@@ -36,7 +37,6 @@ struct FLOOR_TYPED_ARRAY;
3637struct ROOF_TYPED_ARRAY ;
3738struct FIXED_TYPED_ARBITRARY_OBJECT ;
3839struct VARINT_TYPED_ARBITRARY_OBJECT ;
39- struct ANY_PACKED_TYPE_TAG_BYTE_PREFIX ;
4040#endif
4141
4242// / @ingroup runtime
@@ -45,14 +45,13 @@ using Encoding = std::variant<
4545 BOUNDED_MULTIPLE_8BITS_ENUM_FIXED, FLOOR_MULTIPLE_ENUM_VARINT,
4646 ROOF_MULTIPLE_MIRROR_ENUM_VARINT, ARBITRARY_MULTIPLE_ZIGZAG_VARINT,
4747 DOUBLE_VARINT_TUPLE, BYTE_CHOICE_INDEX, LARGE_CHOICE_INDEX,
48- TOP_LEVEL_BYTE_CHOICE_INDEX, CONST_NONE, UTF8_STRING_NO_LENGTH ,
49- FLOOR_VARINT_PREFIX_UTF8_STRING_SHARED,
48+ TOP_LEVEL_BYTE_CHOICE_INDEX, CONST_NONE, ANY_PACKED_TYPE_TAG_BYTE_PREFIX ,
49+ UTF8_STRING_NO_LENGTH, FLOOR_VARINT_PREFIX_UTF8_STRING_SHARED,
5050 ROOF_VARINT_PREFIX_UTF8_STRING_SHARED,
5151 BOUNDED_8BIT_PREFIX_UTF8_STRING_SHARED, RFC3339_DATE_INTEGER_TRIPLET,
5252 PREFIX_VARINT_LENGTH_STRING_SHARED, FIXED_TYPED_ARRAY,
5353 BOUNDED_8BITS_TYPED_ARRAY, FLOOR_TYPED_ARRAY, ROOF_TYPED_ARRAY,
54- FIXED_TYPED_ARBITRARY_OBJECT, VARINT_TYPED_ARBITRARY_OBJECT,
55- ANY_PACKED_TYPE_TAG_BYTE_PREFIX>;
54+ FIXED_TYPED_ARBITRARY_OBJECT, VARINT_TYPED_ARBITRARY_OBJECT>;
5655
5756// / @ingroup runtime
5857// / @defgroup encoding_integer Integer Encodings
@@ -260,7 +259,7 @@ struct DOUBLE_VARINT_TUPLE {};
260259// / @}
261260
262261// / @ingroup runtime
263- // / @defgroup encoding_enum Enumeration Encodings
262+ // / @defgroup encoding_any Any Encodings
264263// / @{
265264
266265// clang-format off
@@ -401,6 +400,59 @@ struct CONST_NONE {
401400 const sourcemeta::jsontoolkit::JSON value;
402401};
403402
403+ // TODO: Write brief description
404+ struct ANY_PACKED_TYPE_TAG_BYTE_PREFIX {};
405+ #ifndef DOXYGEN
406+ namespace internal ::ANY_PACKED_TYPE_TAG_BYTE_PREFIX {
407+ constexpr auto type_size = 3 ;
408+ constexpr std::uint8_t TYPE_SHARED_STRING = 0b00000000 ;
409+ constexpr std::uint8_t TYPE_STRING = 0b00000001 ;
410+ constexpr std::uint8_t TYPE_LONG_STRING = 0b00000010 ;
411+ constexpr std::uint8_t TYPE_OBJECT = 0b00000011 ;
412+ constexpr std::uint8_t TYPE_ARRAY = 0b00000100 ;
413+ constexpr std::uint8_t TYPE_POSITIVE_INTEGER_BYTE = 0b00000101 ;
414+ constexpr std::uint8_t TYPE_NEGATIVE_INTEGER_BYTE = 0b00000110 ;
415+ constexpr std::uint8_t TYPE_OTHER = 0b00000111 ;
416+ static_assert (TYPE_SHARED_STRING <= uint_max<type_size>);
417+ static_assert (TYPE_STRING <= uint_max<type_size>);
418+ static_assert (TYPE_LONG_STRING <= uint_max<type_size>);
419+ static_assert (TYPE_OBJECT <= uint_max<type_size>);
420+ static_assert (TYPE_ARRAY <= uint_max<type_size>);
421+ static_assert (TYPE_POSITIVE_INTEGER_BYTE <= uint_max<type_size>);
422+ static_assert (TYPE_NEGATIVE_INTEGER_BYTE <= uint_max<type_size>);
423+ static_assert (TYPE_OTHER <= uint_max<type_size>);
424+
425+ constexpr auto subtype_size = 5 ;
426+ constexpr std::uint8_t SUBTYPE_FALSE = 0b00000000 ;
427+ constexpr std::uint8_t SUBTYPE_TRUE = 0b00000001 ;
428+ constexpr std::uint8_t SUBTYPE_NULL = 0b00000010 ;
429+ constexpr std::uint8_t SUBTYPE_POSITIVE_INTEGER = 0b00000011 ;
430+ constexpr std::uint8_t SUBTYPE_NEGATIVE_INTEGER = 0b00000100 ;
431+ constexpr std::uint8_t SUBTYPE_NUMBER = 0b00000101 ;
432+ constexpr std::uint8_t SUBTYPE_LONG_STRING_BASE_EXPONENT_7 = 0b00000111 ;
433+ constexpr std::uint8_t SUBTYPE_LONG_STRING_BASE_EXPONENT_8 = 0b00001000 ;
434+ constexpr std::uint8_t SUBTYPE_LONG_STRING_BASE_EXPONENT_9 = 0b00001001 ;
435+ constexpr std::uint8_t SUBTYPE_LONG_STRING_BASE_EXPONENT_10 = 0b00001010 ;
436+
437+ static_assert (SUBTYPE_FALSE <= uint_max<subtype_size>);
438+ static_assert (SUBTYPE_TRUE <= uint_max<subtype_size>);
439+ static_assert (SUBTYPE_NULL <= uint_max<subtype_size>);
440+ static_assert (SUBTYPE_POSITIVE_INTEGER <= uint_max<subtype_size>);
441+ static_assert (SUBTYPE_NEGATIVE_INTEGER <= uint_max<subtype_size>);
442+ static_assert (SUBTYPE_NUMBER <= uint_max<subtype_size>);
443+ static_assert (SUBTYPE_LONG_STRING_BASE_EXPONENT_7 <= uint_max<subtype_size>);
444+ static_assert (SUBTYPE_LONG_STRING_BASE_EXPONENT_8 <= uint_max<subtype_size>);
445+ static_assert (SUBTYPE_LONG_STRING_BASE_EXPONENT_9 <= uint_max<subtype_size>);
446+ static_assert (SUBTYPE_LONG_STRING_BASE_EXPONENT_10 <= uint_max<subtype_size>);
447+
448+ // Note that the binary values actually match the declared exponents
449+ static_assert (SUBTYPE_LONG_STRING_BASE_EXPONENT_7 == 7 );
450+ static_assert (SUBTYPE_LONG_STRING_BASE_EXPONENT_8 == 8 );
451+ static_assert (SUBTYPE_LONG_STRING_BASE_EXPONENT_9 == 9 );
452+ static_assert (SUBTYPE_LONG_STRING_BASE_EXPONENT_10 == 10 );
453+ } // namespace internal::ANY_PACKED_TYPE_TAG_BYTE_PREFIX
454+ #endif
455+
404456// / @}
405457
406458// / @ingroup runtime
@@ -987,66 +1039,6 @@ struct VARINT_TYPED_ARBITRARY_OBJECT {
9871039
9881040// / @}
9891041
990- // / @ingroup runtime
991- // / @defgroup encoding_any Any Encodings
992- // / @{
993-
994- // TODO: Write brief description
995- struct ANY_PACKED_TYPE_TAG_BYTE_PREFIX {};
996- #ifndef DOXYGEN
997- namespace internal ::ANY_PACKED_TYPE_TAG_BYTE_PREFIX {
998- constexpr auto type_size = 3 ;
999- constexpr std::uint8_t TYPE_SHARED_STRING = 0b00000000 ;
1000- constexpr std::uint8_t TYPE_STRING = 0b00000001 ;
1001- constexpr std::uint8_t TYPE_LONG_STRING = 0b00000010 ;
1002- constexpr std::uint8_t TYPE_OBJECT = 0b00000011 ;
1003- constexpr std::uint8_t TYPE_ARRAY = 0b00000100 ;
1004- constexpr std::uint8_t TYPE_POSITIVE_INTEGER_BYTE = 0b00000101 ;
1005- constexpr std::uint8_t TYPE_NEGATIVE_INTEGER_BYTE = 0b00000110 ;
1006- constexpr std::uint8_t TYPE_OTHER = 0b00000111 ;
1007- static_assert (TYPE_SHARED_STRING <= uint_max<type_size>);
1008- static_assert (TYPE_STRING <= uint_max<type_size>);
1009- static_assert (TYPE_LONG_STRING <= uint_max<type_size>);
1010- static_assert (TYPE_OBJECT <= uint_max<type_size>);
1011- static_assert (TYPE_ARRAY <= uint_max<type_size>);
1012- static_assert (TYPE_POSITIVE_INTEGER_BYTE <= uint_max<type_size>);
1013- static_assert (TYPE_NEGATIVE_INTEGER_BYTE <= uint_max<type_size>);
1014- static_assert (TYPE_OTHER <= uint_max<type_size>);
1015-
1016- constexpr auto subtype_size = 5 ;
1017- constexpr std::uint8_t SUBTYPE_FALSE = 0b00000000 ;
1018- constexpr std::uint8_t SUBTYPE_TRUE = 0b00000001 ;
1019- constexpr std::uint8_t SUBTYPE_NULL = 0b00000010 ;
1020- constexpr std::uint8_t SUBTYPE_POSITIVE_INTEGER = 0b00000011 ;
1021- constexpr std::uint8_t SUBTYPE_NEGATIVE_INTEGER = 0b00000100 ;
1022- constexpr std::uint8_t SUBTYPE_NUMBER = 0b00000101 ;
1023- constexpr std::uint8_t SUBTYPE_LONG_STRING_BASE_EXPONENT_7 = 0b00000111 ;
1024- constexpr std::uint8_t SUBTYPE_LONG_STRING_BASE_EXPONENT_8 = 0b00001000 ;
1025- constexpr std::uint8_t SUBTYPE_LONG_STRING_BASE_EXPONENT_9 = 0b00001001 ;
1026- constexpr std::uint8_t SUBTYPE_LONG_STRING_BASE_EXPONENT_10 = 0b00001010 ;
1027-
1028- static_assert (SUBTYPE_FALSE <= uint_max<subtype_size>);
1029- static_assert (SUBTYPE_TRUE <= uint_max<subtype_size>);
1030- static_assert (SUBTYPE_NULL <= uint_max<subtype_size>);
1031- static_assert (SUBTYPE_POSITIVE_INTEGER <= uint_max<subtype_size>);
1032- static_assert (SUBTYPE_NEGATIVE_INTEGER <= uint_max<subtype_size>);
1033- static_assert (SUBTYPE_NUMBER <= uint_max<subtype_size>);
1034- static_assert (SUBTYPE_LONG_STRING_BASE_EXPONENT_7 <= uint_max<subtype_size>);
1035- static_assert (SUBTYPE_LONG_STRING_BASE_EXPONENT_8 <= uint_max<subtype_size>);
1036- static_assert (SUBTYPE_LONG_STRING_BASE_EXPONENT_9 <= uint_max<subtype_size>);
1037- static_assert (SUBTYPE_LONG_STRING_BASE_EXPONENT_10 <= uint_max<subtype_size>);
1038-
1039- // Note that the binary values actually match the declared exponents
1040- static_assert (SUBTYPE_LONG_STRING_BASE_EXPONENT_7 == 7 );
1041- static_assert (SUBTYPE_LONG_STRING_BASE_EXPONENT_8 == 8 );
1042- static_assert (SUBTYPE_LONG_STRING_BASE_EXPONENT_9 == 9 );
1043- static_assert (SUBTYPE_LONG_STRING_BASE_EXPONENT_10 == 10 );
1044- } // namespace internal::ANY_PACKED_TYPE_TAG_BYTE_PREFIX
1045- #endif
1046-
1047- // / @}
1048- // clang-format on
1049-
10501042} // namespace sourcemeta::jsonbinpack
10511043
10521044#endif
0 commit comments