1 #ifndef ZSERIO_REFLECTABLE_H_INC
2 #define ZSERIO_REFLECTABLE_H_INC
27 template <
typename ALLOC>
61 size_t bitSizeOf(
size_t bitPosition)
const override;
81 size_t size()
const override;
97 int8_t
getInt8()
const override;
112 int64_t
toInt()
const override;
113 uint64_t
toUInt()
const override;
127 template <
typename ALLOC,
typename T,
typename =
void>
165 template <
typename ALLOC,
typename T>
167 typename std::enable_if<std::is_arithmetic<T>::value || std::is_same<T, StringView>::value ||
207 template <
typename ALLOC,
typename T>
211 static_assert(std::is_integral<T>::value,
"T must be a signed integral type!");
217 Base(typeInfo, value)
236 template <
typename ALLOC,
typename T>
240 static_assert(std::is_signed<T>::value,
"T must be a signed integral type!");
258 template <
typename ALLOC,
typename T>
262 static_assert(std::is_unsigned<T>::value,
"T must be an unsigned integral type!");
278 template <
typename ALLOC>
315 template <
typename ALLOC>
335 template <
typename ALLOC>
355 template <
typename ALLOC>
375 template <
typename ALLOC>
395 template <
typename ALLOC>
415 template <
typename ALLOC>
435 template <
typename ALLOC>
455 template <
typename ALLOC>
473 template <
typename ALLOC>
503 template <
typename ALLOC>
533 template <
typename ALLOC>
563 template <
typename ALLOC>
593 template <
typename ALLOC>
623 template <
typename ALLOC>
653 template <
typename ALLOC>
683 template <
typename ALLOC>
710 template <
typename ALLOC,
typename T>
713 template <
typename ALLOC>
726 Base(typeInfo(bitSize), value)
731 <<
" - invalid bit size '" << bitSize <<
"' for 'int8_t' value!";
737 return Base::getTypeInfo().getBitSize();
742 writer.
writeSignedBits(Base::getValue(), Base::getTypeInfo().getBitSize());
746 template <
typename ALLOC>
759 Base(typeInfo(bitSize), value)
761 if (bitSize <= 8 || bitSize > 16)
764 <<
" - invalid bit size '" << bitSize <<
"' for 'int16_t' value!";
770 return Base::getTypeInfo().getBitSize();
775 writer.
writeSignedBits(Base::getValue(), Base::getTypeInfo().getBitSize());
779 template <
typename ALLOC>
792 Base(typeInfo(bitSize), value)
794 if (bitSize <= 16 || bitSize > 32)
797 <<
" - invalid bit size '" << bitSize <<
"' for 'int32_t' value!";
803 return Base::getTypeInfo().getBitSize();
808 writer.
writeSignedBits(Base::getValue(), Base::getTypeInfo().getBitSize());
812 template <
typename ALLOC>
825 Base(typeInfo(bitSize), value)
830 <<
" - invalid bit size '" << bitSize <<
"' for 'int64_t' value!";
836 return Base::getTypeInfo().getBitSize();
845 template <
typename ALLOC,
typename T>
848 template <
typename ALLOC>
861 Base(typeInfo(bitSize), value)
866 <<
" - invalid bit size '" << bitSize <<
"' for 'uint8_t' value!";
872 return Base::getTypeInfo().getBitSize();
877 writer.
writeBits(Base::getValue(), Base::getTypeInfo().getBitSize());
881 template <
typename ALLOC>
894 Base(typeInfo(bitSize), value)
896 if (bitSize <= 8 || bitSize > 16)
899 <<
" - invalid bit size '" << bitSize <<
"' for 'uint16_t' value!";
905 return Base::getTypeInfo().getBitSize();
910 writer.
writeBits(Base::getValue(), Base::getTypeInfo().getBitSize());
914 template <
typename ALLOC>
927 Base(typeInfo(bitSize), value)
929 if (bitSize <= 16 || bitSize > 32)
932 <<
" - invalid bit size '" << bitSize <<
"' for 'uint32_t' value!";
938 return Base::getTypeInfo().getBitSize();
943 writer.
writeBits(Base::getValue(), Base::getTypeInfo().getBitSize());
947 template <
typename ALLOC>
960 Base(typeInfo(bitSize), value)
965 <<
" - invalid bit size '" << bitSize <<
"' for 'uint64_t' value!";
971 return Base::getTypeInfo().getBitSize();
976 writer.
writeBits64(Base::getValue(), Base::getTypeInfo().getBitSize());
980 template <
typename ALLOC,
typename T>
983 template <
typename ALLOC>
996 Base(typeInfo(maxBitSize), value),
997 m_dynamicBitSize(dynamicBitSize)
1002 <<
" - invalid max bit size '" << maxBitSize <<
"' for 'int8_t' value!";
1005 if (dynamicBitSize > maxBitSize)
1008 << dynamicBitSize <<
"' is greater than max bit size '" << maxBitSize <<
"'!";
1014 return m_dynamicBitSize;
1023 uint8_t m_dynamicBitSize;
1026 template <
typename ALLOC>
1039 Base(typeInfo(maxBitSize), value),
1040 m_dynamicBitSize(dynamicBitSize)
1042 if (maxBitSize <= 8 || maxBitSize > 16)
1045 <<
" - invalid max bit size '" << maxBitSize <<
"' for 'int16_t' value!";
1048 if (dynamicBitSize > maxBitSize)
1051 << dynamicBitSize <<
"' is greater than max bit size '" << maxBitSize <<
"'!";
1057 return m_dynamicBitSize;
1066 uint8_t m_dynamicBitSize;
1069 template <
typename ALLOC>
1082 Base(typeInfo(maxBitSize), value),
1083 m_dynamicBitSize(dynamicBitSize)
1085 if (maxBitSize <= 16 || maxBitSize > 32)
1088 <<
" - invalid max bit size '" << maxBitSize <<
"' for 'int32_t' value!";
1091 if (dynamicBitSize > maxBitSize)
1094 << dynamicBitSize <<
"' is greater than max bit size '" << maxBitSize <<
"'!";
1100 return m_dynamicBitSize;
1109 uint8_t m_dynamicBitSize;
1112 template <
typename ALLOC>
1125 Base(typeInfo(maxBitSize), value),
1126 m_dynamicBitSize(dynamicBitSize)
1128 if (maxBitSize <= 32)
1131 <<
" - invalid max bit size '" << maxBitSize <<
"' for 'int64_t' value!";
1134 if (dynamicBitSize > maxBitSize)
1137 << dynamicBitSize <<
"' is greater than max bit size '" << maxBitSize <<
"'!";
1143 return m_dynamicBitSize;
1152 uint8_t m_dynamicBitSize;
1155 template <
typename ALLOC,
typename T>
1158 template <
typename ALLOC>
1171 Base(typeInfo(maxBitSize), value),
1172 m_dynamicBitSize(dynamicBitSize)
1177 <<
" - invalid max bit size '" << maxBitSize <<
"' for 'uint8_t' value!";
1180 if (dynamicBitSize > maxBitSize)
1183 << dynamicBitSize <<
"' is greater than max bit size '" << maxBitSize <<
"'!";
1189 return m_dynamicBitSize;
1194 writer.
writeBits(Base::getValue(), m_dynamicBitSize);
1198 uint8_t m_dynamicBitSize;
1201 template <
typename ALLOC>
1214 Base(typeInfo(maxBitSize), value),
1215 m_dynamicBitSize(dynamicBitSize)
1217 if (maxBitSize <= 8 || maxBitSize > 16)
1220 <<
" - invalid max bit size '" << maxBitSize <<
"' for 'uint16_t' value!";
1223 if (dynamicBitSize > maxBitSize)
1226 << dynamicBitSize <<
"' is greater than max bit size '" << maxBitSize <<
"'!";
1232 return m_dynamicBitSize;
1237 writer.
writeBits(Base::getValue(), m_dynamicBitSize);
1241 uint8_t m_dynamicBitSize;
1244 template <
typename ALLOC>
1257 Base(typeInfo(maxBitSize), value),
1258 m_dynamicBitSize(dynamicBitSize)
1260 if (maxBitSize <= 16 || maxBitSize > 32)
1263 <<
" - invalid max bit size '" << maxBitSize <<
"' for 'uint32_t' value!";
1266 if (dynamicBitSize > maxBitSize)
1269 << dynamicBitSize <<
"' is greater than max bit size '" << maxBitSize <<
"'!";
1275 return m_dynamicBitSize;
1280 writer.
writeBits(Base::getValue(), m_dynamicBitSize);
1284 uint8_t m_dynamicBitSize;
1287 template <
typename ALLOC>
1300 Base(typeInfo(maxBitSize), value),
1301 m_dynamicBitSize(dynamicBitSize)
1303 if (maxBitSize <= 32)
1306 <<
" - invalid max bit size '" << maxBitSize <<
"' for 'uint64_t' value!";
1309 if (dynamicBitSize > maxBitSize)
1312 << dynamicBitSize <<
"' is greater than max bit size '" << maxBitSize <<
"'!";
1318 return m_dynamicBitSize;
1323 writer.
writeBits64(Base::getValue(), m_dynamicBitSize);
1327 uint8_t m_dynamicBitSize;
1333 template <
typename ALLOC>
1363 template <
typename ALLOC>
1393 template <
typename ALLOC>
1423 template <
typename ALLOC>
1453 template <
typename ALLOC>
1483 template <
typename ALLOC>
1513 template <
typename ALLOC>
1543 template <
typename ALLOC>
1573 template <
typename ALLOC>
1603 template <
typename ALLOC,
typename T>
1607 static_assert(std::is_floating_point<T>::value,
"T must be a floating point type!");
1615 return static_cast<double>(
getValue());
1622 template <
typename ALLOC>
1657 template <
typename ALLOC>
1692 template <
typename ALLOC>
1727 template <
typename ALLOC>
1762 template <
typename ALLOC>
1802 template <
typename ALLOC>
1837 template <
typename ALLOC>
1838 IBasicReflectableConstPtr<ALLOC> getFieldFromObject(
const IBasicReflectable<ALLOC>&
object,
StringView name)
1840 const auto& typeInfo =
object.getTypeInfo();
1843 const auto& fields = typeInfo.getFields();
1844 auto fieldsIt = std::find_if(fields.begin(), fields.end(),
1845 [name](
const BasicFieldInfo<ALLOC>& fieldInfo) { return fieldInfo.schemaName == name; });
1846 if (fieldsIt != fields.end())
1848 return object.getField(name);
1855 template <
typename ALLOC>
1856 IBasicReflectablePtr<ALLOC> getFieldFromObject(IBasicReflectable<ALLOC>&
object,
StringView name)
1858 const auto& typeInfo =
object.getTypeInfo();
1861 const auto& fields = typeInfo.getFields();
1862 auto fieldsIt = std::find_if(fields.begin(), fields.end(),
1863 [name](
const BasicFieldInfo<ALLOC>& fieldInfo) { return fieldInfo.schemaName == name; });
1864 if (fieldsIt != fields.end())
1866 return object.getField(name);
1873 template <
typename ALLOC>
1874 IBasicReflectableConstPtr<ALLOC> getParameterFromObject(
const IBasicReflectable<ALLOC>&
object,
StringView name)
1876 const auto& typeInfo =
object.getTypeInfo();
1879 const auto& parameters = typeInfo.getParameters();
1880 auto parametersIt = std::find_if(
1881 parameters.begin(), parameters.end(), [name](
const BasicParameterInfo<ALLOC>& parameterInfo) {
1882 return parameterInfo.schemaName == name;
1884 if (parametersIt != parameters.end())
1886 return object.getParameter(name);
1893 template <
typename ALLOC>
1894 IBasicReflectablePtr<ALLOC> getParameterFromObject(IBasicReflectable<ALLOC>&
object,
StringView name)
1896 const auto& typeInfo =
object.getTypeInfo();
1899 const auto& parameters = typeInfo.getParameters();
1900 auto parametersIt = std::find_if(
1901 parameters.begin(), parameters.end(), [name](
const BasicParameterInfo<ALLOC>& parameterInfo) {
1902 return parameterInfo.schemaName == name;
1904 if (parametersIt != parameters.end())
1906 return object.getParameter(name);
1913 template <
typename ALLOC>
1914 IBasicReflectableConstPtr<ALLOC> callFunctionInObject(
const IBasicReflectable<ALLOC>&
object,
StringView name)
1916 const auto& typeInfo =
object.getTypeInfo();
1919 const auto& functions = typeInfo.getFunctions();
1920 auto functionsIt = std::find_if(
1921 functions.begin(), functions.end(), [name](
const BasicFunctionInfo<ALLOC>& functionInfo) {
1922 return functionInfo.schemaName == name;
1924 if (functionsIt != functions.end())
1926 return object.callFunction(name);
1933 template <
typename ALLOC>
1934 IBasicReflectablePtr<ALLOC> callFunctionInObject(IBasicReflectable<ALLOC>&
object,
StringView name)
1936 const auto& typeInfo =
object.getTypeInfo();
1939 const auto& functions = typeInfo.getFunctions();
1940 auto functionsIt = std::find_if(
1941 functions.begin(), functions.end(), [name](
const BasicFunctionInfo<ALLOC>& functionInfo) {
1942 return functionInfo.schemaName == name;
1944 if (functionsIt != functions.end())
1946 return object.callFunction(name);
1953 template <
typename ALLOC>
1954 IBasicReflectableConstPtr<ALLOC> getFromObject(
1955 const IBasicReflectable<ALLOC>&
object,
StringView path,
size_t pos)
1959 const size_t dotPos = path.find(
'.', pos);
1963 auto field = getFieldFromObject(
object, name);
1966 return isLast ? std::move(field) : getFromObject(*field, path, dotPos + 1);
1969 auto parameter = getParameterFromObject(
object, name);
1972 return isLast ? std::move(parameter) : getFromObject(*parameter, path, dotPos + 1);
1975 auto functionResult = callFunctionInObject(
object, name);
1978 return isLast ? std::move(functionResult) : getFromObject(*functionResult, path, dotPos + 1);
1981 catch (
const CppRuntimeException&)
1987 template <
typename ALLOC>
1988 IBasicReflectablePtr<ALLOC> getFromObject(IBasicReflectable<ALLOC>&
object,
StringView path,
size_t pos)
1992 const size_t dotPos = path.find(
'.', pos);
1996 auto field = getFieldFromObject(
object, name);
1999 return isLast ? std::move(field) : getFromObject(*field, path, dotPos + 1);
2002 auto parameter = getParameterFromObject(
object, name);
2005 return isLast ? std::move(parameter) : getFromObject(*parameter, path, dotPos + 1);
2008 auto functionResult = callFunctionInObject(
object, name);
2011 return isLast ? std::move(functionResult) : getFromObject(*functionResult, path, dotPos + 1);
2014 catch (
const CppRuntimeException&)
2025 template <
typename ALLOC>
2040 template <
typename ALLOC>
2067 template <
typename ALLOC>
2085 size_t bitSizeOf(
size_t bitPosition)
const override;
2102 bool getBool()
const override;
2103 int8_t
getInt8()
const override;
2117 int64_t
toInt()
const override;
2118 uint64_t
toUInt()
const override;
2128 template <
typename ALLOC>
2138 void resize(
size_t index)
override;
2151 template <
typename ALLOC,
typename RAW_ARRAY,
typename ELEMENT_REFLECTABLE>
2157 using ElementReflectable = ELEMENT_REFLECTABLE;
2162 using Base::operator[];
2166 Base(ElementReflectable::typeInfo(), allocator),
2167 m_rawArray(rawArray)
2172 return m_rawArray.size();
2177 if (index >=
size())
2181 <<
"' of size " <<
size() <<
"!";
2184 return std::allocate_shared<ElementReflectable>(
Base::get_allocator(), m_rawArray[index]);
2193 const RAW_ARRAY& m_rawArray;
2196 template <
typename ALLOC,
typename RAW_ARRAY,
typename ELEMENT_REFLECTABLE>
2202 using ElementReflectable = ELEMENT_REFLECTABLE;
2208 Base(ElementReflectable::typeInfo(), allocator),
2209 m_rawArray(rawArray)
2214 return m_rawArray.size();
2219 m_rawArray.resize(
size);
2224 if (index >=
size())
2228 <<
"' of size " <<
size() <<
"!";
2231 return std::allocate_shared<ElementReflectable>(
Base::get_allocator(), m_rawArray[index]);
2236 if (index >=
size())
2240 <<
"' of size " <<
size() <<
"!";
2243 return std::allocate_shared<ElementReflectable>(
Base::get_allocator(), m_rawArray[index]);
2248 if (index >=
size())
2252 <<
"' of size " <<
size() <<
"!";
2255 m_rawArray[index] = value.template get<typename RAW_ARRAY::value_type>();
2260 m_rawArray.push_back(value.template get<typename RAW_ARRAY::value_type>());
2274 RAW_ARRAY& m_rawArray;
2282 template <
typename ALLOC,
typename RAW_ARRAY,
typename ELEMENT_REFLECTABLE>
2288 using ElementReflectable = ELEMENT_REFLECTABLE;
2293 using Base::operator[];
2297 Base(ElementReflectable::typeInfo(bitSize), allocator),
2298 m_rawArray(rawArray)
2303 return m_rawArray.size();
2308 if (index >=
size())
2312 <<
"' of size " <<
size() <<
"!";
2315 return std::allocate_shared<ElementReflectable>(
2325 const RAW_ARRAY& m_rawArray;
2328 template <
typename ALLOC,
typename RAW_ARRAY,
typename ELEMENT_REFLECTABLE>
2334 using ElementReflectable = ELEMENT_REFLECTABLE;
2340 Base(ElementReflectable::typeInfo(bitSize), allocator),
2341 m_rawArray(rawArray)
2346 return m_rawArray.size();
2351 m_rawArray.resize(
size);
2356 if (index >=
size())
2360 <<
"' of size " <<
size() <<
"!";
2363 return std::allocate_shared<ElementReflectable>(
2369 if (index >=
size())
2373 <<
"' of size " <<
size() <<
"!";
2376 return std::allocate_shared<ElementReflectable>(
2382 if (index >=
size())
2386 <<
"' of size " <<
size() <<
"!";
2389 m_rawArray[index] = value.template get<typename RAW_ARRAY::value_type>();
2394 m_rawArray.push_back(value.template get<typename RAW_ARRAY::value_type>());
2408 RAW_ARRAY& m_rawArray;
2416 template <
typename ALLOC,
typename RAW_ARRAY,
typename ELEMENT_REFLECTABLE>
2422 using ElementReflectable = ELEMENT_REFLECTABLE;
2427 using Base::operator[];
2431 const ALLOC& allocator,
const RAW_ARRAY& rawArray, uint8_t maxBitSize, uint8_t dynamicBitSize) :
2432 Base(ElementReflectable::typeInfo(maxBitSize), allocator),
2433 m_rawArray(rawArray),
2434 m_maxBitSize(maxBitSize),
2435 m_dynamicBitSize(dynamicBitSize)
2440 return m_rawArray.size();
2445 if (index >=
size())
2449 <<
"' of size " <<
size() <<
"!";
2452 return std::allocate_shared<ElementReflectable>(
2462 const RAW_ARRAY& m_rawArray;
2463 const uint8_t m_maxBitSize;
2464 const uint8_t m_dynamicBitSize;
2467 template <
typename ALLOC,
typename RAW_ARRAY,
typename ELEMENT_REFLECTABLE>
2473 using ElementReflectable = ELEMENT_REFLECTABLE;
2479 const ALLOC& allocator, RAW_ARRAY& rawArray, uint8_t maxBitSize, uint8_t dynamicBitSize) :
2480 Base(ElementReflectable::typeInfo(maxBitSize), allocator),
2481 m_rawArray(rawArray),
2482 m_maxBitSize(maxBitSize),
2483 m_dynamicBitSize(dynamicBitSize)
2488 return m_rawArray.size();
2493 m_rawArray.resize(
size);
2498 if (index >=
size())
2502 <<
"' of size " <<
size() <<
"!";
2505 return std::allocate_shared<ElementReflectable>(
2511 if (index >=
size())
2515 <<
"' of size " <<
size() <<
"!";
2518 return std::allocate_shared<ElementReflectable>(
2524 if (index >=
size())
2528 <<
"' of size " <<
size() <<
"!";
2531 m_rawArray[index] = value.template get<typename RAW_ARRAY::value_type>();
2536 m_rawArray.push_back(value.template get<typename RAW_ARRAY::value_type>());
2550 RAW_ARRAY& m_rawArray;
2551 const uint8_t m_maxBitSize;
2552 const uint8_t m_dynamicBitSize;
2560 template <
typename ALLOC,
typename RAW_ARRAY>
2562 template <
typename ALLOC,
typename RAW_ARRAY>
2565 template <
typename ALLOC,
typename RAW_ARRAY>
2567 template <
typename ALLOC,
typename RAW_ARRAY>
2570 template <
typename ALLOC,
typename RAW_ARRAY>
2572 template <
typename ALLOC,
typename RAW_ARRAY>
2575 template <
typename ALLOC,
typename RAW_ARRAY>
2577 template <
typename ALLOC,
typename RAW_ARRAY>
2580 template <
typename ALLOC,
typename RAW_ARRAY>
2582 template <
typename ALLOC,
typename RAW_ARRAY>
2585 template <
typename ALLOC,
typename RAW_ARRAY>
2587 template <
typename ALLOC,
typename RAW_ARRAY>
2590 template <
typename ALLOC,
typename RAW_ARRAY>
2592 template <
typename ALLOC,
typename RAW_ARRAY>
2595 template <
typename ALLOC,
typename RAW_ARRAY>
2597 template <
typename ALLOC,
typename RAW_ARRAY>
2600 template <
typename ALLOC,
typename RAW_ARRAY>
2602 template <
typename ALLOC,
typename RAW_ARRAY>
2605 template <
typename ALLOC,
typename RAW_ARRAY>
2608 template <
typename ALLOC,
typename RAW_ARRAY>
2612 template <
typename ALLOC,
typename RAW_ARRAY>
2615 template <
typename ALLOC,
typename RAW_ARRAY>
2619 template <
typename ALLOC,
typename RAW_ARRAY>
2622 template <
typename ALLOC,
typename RAW_ARRAY>
2626 template <
typename ALLOC,
typename RAW_ARRAY>
2629 template <
typename ALLOC,
typename RAW_ARRAY>
2633 template <
typename ALLOC,
typename RAW_ARRAY>
2636 template <
typename ALLOC,
typename RAW_ARRAY>
2639 template <
typename ALLOC,
typename RAW_ARRAY>
2642 template <
typename ALLOC,
typename RAW_ARRAY>
2645 template <
typename ALLOC,
typename RAW_ARRAY>
2648 template <
typename ALLOC,
typename RAW_ARRAY>
2651 template <
typename ALLOC,
typename RAW_ARRAY>
2653 template <
typename ALLOC,
typename RAW_ARRAY>
2656 template <
typename ALLOC,
typename RAW_ARRAY>
2659 template <
typename ALLOC,
typename RAW_ARRAY>
2662 template <
typename ALLOC,
typename RAW_ARRAY>
2665 template <
typename ALLOC,
typename RAW_ARRAY>
2668 template <
typename ALLOC,
typename RAW_ARRAY>
2671 template <
typename ALLOC,
typename RAW_ARRAY>
2674 template <
typename ALLOC,
typename RAW_ARRAY>
2676 template <
typename ALLOC,
typename RAW_ARRAY>
2679 template <
typename ALLOC,
typename RAW_ARRAY>
2681 template <
typename ALLOC,
typename RAW_ARRAY>
2684 template <
typename ALLOC,
typename RAW_ARRAY>
2686 template <
typename ALLOC,
typename RAW_ARRAY>
2689 template <
typename ALLOC,
typename RAW_ARRAY>
2691 template <
typename ALLOC,
typename RAW_ARRAY>
2694 template <
typename ALLOC,
typename RAW_ARRAY>
2696 template <
typename ALLOC,
typename RAW_ARRAY>
2699 template <
typename ALLOC,
typename RAW_ARRAY>
2701 template <
typename ALLOC,
typename RAW_ARRAY>
2704 template <
typename ALLOC,
typename RAW_ARRAY>
2706 template <
typename ALLOC,
typename RAW_ARRAY>
2709 template <
typename ALLOC,
typename RAW_ARRAY>
2712 template <
typename ALLOC,
typename RAW_ARRAY>
2720 template <
typename ALLOC,
typename RAW_ARRAY>
2726 using ElementType =
typename RAW_ARRAY::value_type;
2731 using Base::operator[];
2735 Base(ElementType::typeInfo(), allocator),
2736 m_rawArray(rawArray)
2741 return m_rawArray.size();
2746 if (index >=
size())
2750 <<
"' of size " <<
size() <<
"!";
2762 const RAW_ARRAY& m_rawArray;
2765 template <
typename ALLOC,
typename RAW_ARRAY>
2771 using ElementType =
typename RAW_ARRAY::value_type;
2777 Base(ElementType::typeInfo(), allocator),
2778 m_rawArray(rawArray)
2783 return m_rawArray.size();
2788 m_rawArray.resize(
size);
2793 if (index >=
size())
2797 <<
"' of size " <<
size() <<
"!";
2805 if (index >=
size())
2809 <<
"' of size " <<
size() <<
"!";
2817 if (index >=
size())
2821 <<
"' of size " <<
size() <<
"!";
2824 m_rawArray[index] = value.template get<typename RAW_ARRAY::value_type>();
2829 m_rawArray.push_back(value.template get<typename RAW_ARRAY::value_type>());
2843 RAW_ARRAY& m_rawArray;
2849 template <
typename ALLOC,
typename RAW_ARRAY>
2855 using ElementType =
typename RAW_ARRAY::value_type;
2860 using Base::operator[];
2864 Base(ElementType::typeInfo(), allocator),
2865 m_rawArray(rawArray)
2870 return m_rawArray.size();
2875 if (index >=
size())
2879 <<
"' of size " <<
size() <<
"!";
2891 const RAW_ARRAY& m_rawArray;
2894 template <
typename ALLOC,
typename RAW_ARRAY>
2900 using ElementType =
typename RAW_ARRAY::value_type;
2901 using UnderlyingElementType =
typename ElementType::underlying_type;
2907 Base(ElementType::typeInfo(), allocator),
2908 m_rawArray(rawArray)
2913 return m_rawArray.size();
2918 m_rawArray.resize(
size);
2923 if (index >=
size())
2927 <<
"' of size " <<
size() <<
"!";
2935 if (index >=
size())
2939 <<
"' of size " <<
size() <<
"!";
2947 if (index >=
size())
2951 <<
"' of size " <<
size() <<
"!";
2954 if (value.template isType<ElementType>())
2956 m_rawArray[index] = value.template get<ElementType>();
2960 m_rawArray[index] = ElementType(value.template get<UnderlyingElementType>());
2966 if (value.template isType<ElementType>())
2968 m_rawArray.push_back(value.template get<ElementType>());
2972 m_rawArray.push_back(ElementType(value.template get<UnderlyingElementType>()));
2987 RAW_ARRAY& m_rawArray;
2993 template <
typename ALLOC,
typename RAW_ARRAY>
2999 using ElementType =
typename RAW_ARRAY::value_type;
3004 using Base::operator[];
3009 m_rawArray(rawArray)
3014 return m_rawArray.size();
3019 if (index >=
size())
3023 <<
"' of size " <<
size() <<
"!";
3035 const RAW_ARRAY& m_rawArray;
3038 template <
typename ALLOC,
typename RAW_ARRAY>
3044 using ElementType =
typename RAW_ARRAY::value_type;
3045 using UnderlyingElementType =
typename std::underlying_type<ElementType>::type;
3052 m_rawArray(rawArray)
3057 return m_rawArray.size();
3062 m_rawArray.resize(
size);
3067 if (index >=
size())
3071 <<
"' of size " <<
size() <<
"!";
3079 if (index >=
size())
3083 <<
"' of size " <<
size() <<
"!";
3091 if (index >=
size())
3095 <<
"' of size " <<
size() <<
"!";
3098 if (value.template isType<ElementType>())
3100 m_rawArray[index] = value.template get<ElementType>();
3104 m_rawArray[index] = valueToEnum<ElementType>(value.template get<UnderlyingElementType>());
3110 if (value.template isType<ElementType>())
3112 m_rawArray.push_back(value.template get<ElementType>());
3116 m_rawArray.push_back(valueToEnum<ElementType>(value.template get<UnderlyingElementType>()));
3131 RAW_ARRAY& m_rawArray;
3140 template <
typename T,
typename ALLOC =
typename T::allocator_type>
3149 m_object(allocator),
3150 m_reflectable(m_object.reflectable(allocator))
3155 return m_reflectable->getTypeInfo();
3160 return m_reflectable->isArray();
3165 m_reflectable->initializeChildren();
3170 m_reflectable->initialize(typeArguments);
3175 return m_reflectable->initializeOffsets(bitPosition);
3185 return m_reflectable->bitSizeOf(bitPosition);
3195 m_reflectable->write(writer);
3200 return m_reflectable->getField(name);
3205 return m_reflectable->getField(name);
3210 return m_reflectable->createField(name);
3215 m_reflectable->setField(name, value);
3220 return m_reflectable->getParameter(name);
3225 return m_reflectable->getParameter(name);
3230 return m_reflectable->callFunction(name);
3235 return m_reflectable->callFunction(name);
3240 return m_reflectable->getChoice();
3245 return m_reflectable->find(path);
3250 return m_reflectable->find(path);
3255 return m_reflectable->operator[](path);
3260 return m_reflectable->operator[](path);
3265 return m_reflectable->size();
3270 m_reflectable->resize(
size);
3275 return m_reflectable->at(index);
3280 return m_reflectable->at(index);
3285 return m_reflectable->operator[](index);
3290 return m_reflectable->operator[](index);
3295 m_reflectable->setAt(value, index);
3300 m_reflectable->append(value);
3305 return m_reflectable->getAnyValue(allocator);
3310 return m_reflectable->getAnyValue(allocator);
3326 return m_reflectable->getBool();
3330 return m_reflectable->getInt8();
3334 return m_reflectable->getInt16();
3338 return m_reflectable->getInt32();
3342 return m_reflectable->getInt64();
3346 return m_reflectable->getUInt8();
3350 return m_reflectable->getUInt16();
3354 return m_reflectable->getUInt32();
3358 return m_reflectable->getUInt64();
3362 return m_reflectable->getFloat();
3366 return m_reflectable->getDouble();
3370 return m_reflectable->getBytes();
3374 return m_reflectable->getStringView();
3378 return m_reflectable->getBitBuffer();
3384 return m_reflectable->toInt();
3388 return m_reflectable->toUInt();
3392 return m_reflectable->toDouble();
3396 return m_reflectable->toString(allocator);
3405 return m_reflectable->parsingInfo();
3418 template <
typename ALLOC>
3424 return std::allocate_shared<BoolReflectable<ALLOC>>(allocator, value);
3429 return std::allocate_shared<Int8Reflectable<ALLOC>>(allocator, value);
3434 return std::allocate_shared<Int16Reflectable<ALLOC>>(allocator, value);
3439 return std::allocate_shared<Int32Reflectable<ALLOC>>(allocator, value);
3444 return std::allocate_shared<Int64Reflectable<ALLOC>>(allocator, value);
3449 return std::allocate_shared<UInt8Reflectable<ALLOC>>(allocator, value);
3454 return std::allocate_shared<UInt16Reflectable<ALLOC>>(allocator, value);
3459 return std::allocate_shared<UInt32Reflectable<ALLOC>>(allocator, value);
3464 return std::allocate_shared<UInt64Reflectable<ALLOC>>(allocator, value);
3467 template <typename T, typename std::enable_if<std::is_signed<T>::value,
int>::type = 0>
3469 T value, uint8_t bitSize,
const ALLOC& allocator = ALLOC())
3471 return std::allocate_shared<FixedSignedBitFieldReflectable<ALLOC, T>>(allocator, value, bitSize);
3474 template <typename T, typename std::enable_if<std::is_unsigned<T>::value,
int>::type = 0>
3476 T value, uint8_t bitSize,
const ALLOC& allocator = ALLOC())
3478 return std::allocate_shared<FixedUnsignedBitFieldReflectable<ALLOC, T>>(allocator, value, bitSize);
3481 template <typename T, typename std::enable_if<std::is_signed<T>::value,
int>::type = 0>
3483 T value, uint8_t maxBitSize, uint8_t dynamicBitSize,
const ALLOC& allocator = ALLOC())
3485 return std::allocate_shared<DynamicSignedBitFieldReflectable<ALLOC, T>>(
3486 allocator, value, maxBitSize, dynamicBitSize);
3491 int64_t value, uint8_t maxBitSize,
const ALLOC& allocator = ALLOC())
3493 if (maxBitSize != 64)
3496 <<
"maxBitSize != 64 for referenced dynamic bit field!";
3502 template <typename T, typename std::enable_if<std::is_unsigned<T>::value,
int>::type = 0>
3504 T value, uint8_t maxBitSize, uint8_t dynamicBitSize,
const ALLOC& allocator = ALLOC())
3506 return std::allocate_shared<DynamicUnsignedBitFieldReflectable<ALLOC, T>>(
3507 allocator, value, maxBitSize, dynamicBitSize);
3512 uint64_t value, uint8_t maxBitSize,
const ALLOC& allocator = ALLOC())
3514 if (maxBitSize != 64)
3517 <<
"maxBitSize != 64 for referenced dynamic bit field!";
3525 return std::allocate_shared<VarInt16Reflectable<ALLOC>>(allocator, value);
3530 return std::allocate_shared<VarInt32Reflectable<ALLOC>>(allocator, value);
3535 return std::allocate_shared<VarInt64Reflectable<ALLOC>>(allocator, value);
3540 return std::allocate_shared<VarIntReflectable<ALLOC>>(allocator, value);
3545 return std::allocate_shared<VarUInt16Reflectable<ALLOC>>(allocator, value);
3550 return std::allocate_shared<VarUInt32Reflectable<ALLOC>>(allocator, value);
3555 return std::allocate_shared<VarUInt64Reflectable<ALLOC>>(allocator, value);
3560 return std::allocate_shared<VarUIntReflectable<ALLOC>>(allocator, value);
3565 return std::allocate_shared<VarSizeReflectable<ALLOC>>(allocator, value);
3570 return std::allocate_shared<Float16Reflectable<ALLOC>>(allocator, value);
3575 return std::allocate_shared<Float32Reflectable<ALLOC>>(allocator, value);
3580 return std::allocate_shared<Float64Reflectable<ALLOC>>(allocator, value);
3585 return std::allocate_shared<BytesReflectable<ALLOC>>(allocator, value);
3590 return std::allocate_shared<StringReflectable<ALLOC>>(allocator, value);
3596 return std::allocate_shared<BitBufferReflectable<ALLOC>>(allocator, value);
3599 template <
typename RAW_ARRAY>
3601 const RAW_ARRAY& rawArray,
const ALLOC& allocator = ALLOC())
3603 return std::allocate_shared<BoolReflectableConstArray<ALLOC, RAW_ARRAY>>(
3604 allocator, allocator, rawArray);
3607 template <
typename RAW_ARRAY>
3610 return std::allocate_shared<BoolReflectableArray<ALLOC, RAW_ARRAY>>(allocator, allocator, rawArray);
3613 template <
typename RAW_ARRAY>
3615 const RAW_ARRAY& rawArray,
const ALLOC& allocator = ALLOC())
3617 return std::allocate_shared<Int8ReflectableConstArray<ALLOC, RAW_ARRAY>>(
3618 allocator, allocator, rawArray);
3621 template <
typename RAW_ARRAY>
3624 return std::allocate_shared<Int8ReflectableArray<ALLOC, RAW_ARRAY>>(allocator, allocator, rawArray);
3627 template <
typename RAW_ARRAY>
3629 const RAW_ARRAY& rawArray,
const ALLOC& allocator = ALLOC())
3631 return std::allocate_shared<Int16ReflectableConstArray<ALLOC, RAW_ARRAY>>(
3632 allocator, allocator, rawArray);
3635 template <
typename RAW_ARRAY>
3638 return std::allocate_shared<Int16ReflectableArray<ALLOC, RAW_ARRAY>>(allocator, allocator, rawArray);
3641 template <
typename RAW_ARRAY>
3643 const RAW_ARRAY& rawArray,
const ALLOC& allocator = ALLOC())
3645 return std::allocate_shared<Int32ReflectableConstArray<ALLOC, RAW_ARRAY>>(
3646 allocator, allocator, rawArray);
3649 template <
typename RAW_ARRAY>
3652 return std::allocate_shared<Int32ReflectableArray<ALLOC, RAW_ARRAY>>(allocator, allocator, rawArray);
3655 template <
typename RAW_ARRAY>
3657 const RAW_ARRAY& rawArray,
const ALLOC& allocator = ALLOC())
3659 return std::allocate_shared<Int64ReflectableConstArray<ALLOC, RAW_ARRAY>>(
3660 allocator, allocator, rawArray);
3663 template <
typename RAW_ARRAY>
3666 return std::allocate_shared<Int64ReflectableArray<ALLOC, RAW_ARRAY>>(allocator, allocator, rawArray);
3669 template <
typename RAW_ARRAY>
3671 const RAW_ARRAY& rawArray,
const ALLOC& allocator = ALLOC())
3673 return std::allocate_shared<UInt8ReflectableConstArray<ALLOC, RAW_ARRAY>>(
3674 allocator, allocator, rawArray);
3677 template <
typename RAW_ARRAY>
3680 return std::allocate_shared<UInt8ReflectableArray<ALLOC, RAW_ARRAY>>(allocator, allocator, rawArray);
3683 template <
typename RAW_ARRAY>
3685 const RAW_ARRAY& rawArray,
const ALLOC& allocator = ALLOC())
3687 return std::allocate_shared<UInt16ReflectableConstArray<ALLOC, RAW_ARRAY>>(
3688 allocator, allocator, rawArray);
3691 template <
typename RAW_ARRAY>
3694 return std::allocate_shared<UInt16ReflectableArray<ALLOC, RAW_ARRAY>>(allocator, allocator, rawArray);
3697 template <
typename RAW_ARRAY>
3699 const RAW_ARRAY& rawArray,
const ALLOC& allocator = ALLOC())
3701 return std::allocate_shared<UInt32ReflectableConstArray<ALLOC, RAW_ARRAY>>(
3702 allocator, allocator, rawArray);
3705 template <
typename RAW_ARRAY>
3708 return std::allocate_shared<UInt32ReflectableArray<ALLOC, RAW_ARRAY>>(allocator, allocator, rawArray);
3711 template <
typename RAW_ARRAY>
3713 const RAW_ARRAY& rawArray,
const ALLOC& allocator = ALLOC())
3715 return std::allocate_shared<UInt64ReflectableConstArray<ALLOC, RAW_ARRAY>>(
3716 allocator, allocator, rawArray);
3719 template <
typename RAW_ARRAY>
3722 return std::allocate_shared<UInt64ReflectableArray<ALLOC, RAW_ARRAY>>(allocator, allocator, rawArray);
3725 template <
typename RAW_ARRAY>
3727 const RAW_ARRAY& rawArray, uint8_t bitSize,
const ALLOC& allocator = ALLOC())
3729 return std::allocate_shared<FixedSignedBitFieldReflectableConstArray<ALLOC, RAW_ARRAY>>(
3730 allocator, allocator, rawArray, bitSize);
3733 template <
typename RAW_ARRAY>
3735 RAW_ARRAY& rawArray, uint8_t bitSize,
const ALLOC& allocator = ALLOC())
3737 return std::allocate_shared<FixedSignedBitFieldReflectableArray<ALLOC, RAW_ARRAY>>(
3738 allocator, allocator, rawArray, bitSize);
3741 template <
typename RAW_ARRAY>
3743 const RAW_ARRAY& rawArray, uint8_t bitSize,
const ALLOC& allocator = ALLOC())
3745 return std::allocate_shared<FixedUnsignedBitFieldReflectableConstArray<ALLOC, RAW_ARRAY>>(
3746 allocator, allocator, rawArray, bitSize);
3749 template <
typename RAW_ARRAY>
3751 RAW_ARRAY& rawArray, uint8_t bitSize,
const ALLOC& allocator = ALLOC())
3753 return std::allocate_shared<FixedUnsignedBitFieldReflectableArray<ALLOC, RAW_ARRAY>>(
3754 allocator, allocator, rawArray, bitSize);
3757 template <
typename RAW_ARRAY>
3759 uint8_t maxBitSize, uint8_t dynamicBitSize,
const ALLOC& allocator = ALLOC())
3761 return std::allocate_shared<DynamicSignedBitFieldReflectableConstArray<ALLOC, RAW_ARRAY>>(
3762 allocator, allocator, rawArray, maxBitSize, dynamicBitSize);
3765 template <
typename RAW_ARRAY>
3767 RAW_ARRAY& rawArray, uint8_t maxBitSize, uint8_t dynamicBitSize,
const ALLOC& allocator = ALLOC())
3769 return std::allocate_shared<DynamicSignedBitFieldReflectableArray<ALLOC, RAW_ARRAY>>(
3770 allocator, allocator, rawArray, maxBitSize, dynamicBitSize);
3773 template <
typename RAW_ARRAY>
3775 uint8_t maxBitSize, uint8_t dynamicBitSize,
const ALLOC& allocator = ALLOC())
3777 return std::allocate_shared<DynamicUnsignedBitFieldReflectableConstArray<ALLOC, RAW_ARRAY>>(
3778 allocator, allocator, rawArray, maxBitSize, dynamicBitSize);
3781 template <
typename RAW_ARRAY>
3783 RAW_ARRAY& rawArray, uint8_t maxBitSize, uint8_t dynamicBitSize,
const ALLOC& allocator = ALLOC())
3785 return std::allocate_shared<DynamicUnsignedBitFieldReflectableArray<ALLOC, RAW_ARRAY>>(
3786 allocator, allocator, rawArray, maxBitSize, dynamicBitSize);
3789 template <
typename RAW_ARRAY>
3791 const RAW_ARRAY& rawArray,
const ALLOC& allocator = ALLOC())
3793 return std::allocate_shared<VarInt16ReflectableConstArray<ALLOC, RAW_ARRAY>>(
3794 allocator, allocator, rawArray);
3797 template <
typename RAW_ARRAY>
3800 return std::allocate_shared<VarInt16ReflectableArray<ALLOC, RAW_ARRAY>>(allocator, allocator, rawArray);
3803 template <
typename RAW_ARRAY>
3805 const RAW_ARRAY& rawArray,
const ALLOC& allocator = ALLOC())
3807 return std::allocate_shared<VarInt32ReflectableConstArray<ALLOC, RAW_ARRAY>>(
3808 allocator, allocator, rawArray);
3811 template <
typename RAW_ARRAY>
3814 return std::allocate_shared<VarInt32ReflectableArray<ALLOC, RAW_ARRAY>>(allocator, allocator, rawArray);
3817 template <
typename RAW_ARRAY>
3819 const RAW_ARRAY& rawArray,
const ALLOC& allocator = ALLOC())
3821 return std::allocate_shared<VarInt64ReflectableConstArray<ALLOC, RAW_ARRAY>>(
3822 allocator, allocator, rawArray);
3825 template <
typename RAW_ARRAY>
3828 return std::allocate_shared<VarInt64ReflectableArray<ALLOC, RAW_ARRAY>>(allocator, allocator, rawArray);
3831 template <
typename RAW_ARRAY>
3833 const RAW_ARRAY& rawArray,
const ALLOC& allocator = ALLOC())
3835 return std::allocate_shared<VarIntReflectableConstArray<ALLOC, RAW_ARRAY>>(
3836 allocator, allocator, rawArray);
3839 template <
typename RAW_ARRAY>
3842 return std::allocate_shared<VarIntReflectableArray<ALLOC, RAW_ARRAY>>(allocator, allocator, rawArray);
3845 template <
typename RAW_ARRAY>
3847 const RAW_ARRAY& rawArray,
const ALLOC& allocator = ALLOC())
3849 return std::allocate_shared<VarUInt16ReflectableConstArray<ALLOC, RAW_ARRAY>>(
3850 allocator, allocator, rawArray);
3853 template <
typename RAW_ARRAY>
3856 return std::allocate_shared<VarUInt16ReflectableArray<ALLOC, RAW_ARRAY>>(
3857 allocator, allocator, rawArray);
3860 template <
typename RAW_ARRAY>
3862 const RAW_ARRAY& rawArray,
const ALLOC& allocator = ALLOC())
3864 return std::allocate_shared<VarUInt32ReflectableConstArray<ALLOC, RAW_ARRAY>>(
3865 allocator, allocator, rawArray);
3868 template <
typename RAW_ARRAY>
3871 return std::allocate_shared<VarUInt32ReflectableArray<ALLOC, RAW_ARRAY>>(
3872 allocator, allocator, rawArray);
3875 template <
typename RAW_ARRAY>
3877 const RAW_ARRAY& rawArray,
const ALLOC& allocator = ALLOC())
3879 return std::allocate_shared<VarUInt64ReflectableConstArray<ALLOC, RAW_ARRAY>>(
3880 allocator, allocator, rawArray);
3883 template <
typename RAW_ARRAY>
3886 return std::allocate_shared<VarUInt64ReflectableArray<ALLOC, RAW_ARRAY>>(
3887 allocator, allocator, rawArray);
3890 template <
typename RAW_ARRAY>
3892 const RAW_ARRAY& rawArray,
const ALLOC& allocator = ALLOC())
3894 return std::allocate_shared<VarUIntReflectableConstArray<ALLOC, RAW_ARRAY>>(
3895 allocator, allocator, rawArray);
3898 template <
typename RAW_ARRAY>
3901 return std::allocate_shared<VarUIntReflectableArray<ALLOC, RAW_ARRAY>>(allocator, allocator, rawArray);
3904 template <
typename RAW_ARRAY>
3906 const RAW_ARRAY& rawArray,
const ALLOC& allocator = ALLOC())
3908 return std::allocate_shared<VarSizeReflectableConstArray<ALLOC, RAW_ARRAY>>(
3909 allocator, allocator, rawArray);
3912 template <
typename RAW_ARRAY>
3915 return std::allocate_shared<VarSizeReflectableArray<ALLOC, RAW_ARRAY>>(allocator, allocator, rawArray);
3918 template <
typename RAW_ARRAY>
3920 const RAW_ARRAY& rawArray,
const ALLOC& allocator = ALLOC())
3922 return std::allocate_shared<Float16ReflectableConstArray<ALLOC, RAW_ARRAY>>(
3923 allocator, allocator, rawArray);
3926 template <
typename RAW_ARRAY>
3929 return std::allocate_shared<Float16ReflectableArray<ALLOC, RAW_ARRAY>>(allocator, allocator, rawArray);
3932 template <
typename RAW_ARRAY>
3934 const RAW_ARRAY& rawArray,
const ALLOC& allocator = ALLOC())
3936 return std::allocate_shared<Float32ReflectableConstArray<ALLOC, RAW_ARRAY>>(
3937 allocator, allocator, rawArray);
3940 template <
typename RAW_ARRAY>
3943 return std::allocate_shared<Float32ReflectableArray<ALLOC, RAW_ARRAY>>(allocator, allocator, rawArray);
3946 template <
typename RAW_ARRAY>
3948 const RAW_ARRAY& rawArray,
const ALLOC& allocator = ALLOC())
3950 return std::allocate_shared<Float64ReflectableConstArray<ALLOC, RAW_ARRAY>>(
3951 allocator, allocator, rawArray);
3954 template <
typename RAW_ARRAY>
3957 return std::allocate_shared<Float64ReflectableArray<ALLOC, RAW_ARRAY>>(allocator, allocator, rawArray);
3960 template <
typename RAW_ARRAY>
3962 const RAW_ARRAY& rawArray,
const ALLOC& allocator = ALLOC())
3964 return std::allocate_shared<BytesReflectableConstArray<ALLOC, RAW_ARRAY>>(
3965 allocator, allocator, rawArray);
3968 template <
typename RAW_ARRAY>
3971 return std::allocate_shared<BytesReflectableArray<ALLOC, RAW_ARRAY>>(allocator, allocator, rawArray);
3974 template <
typename RAW_ARRAY>
3976 const RAW_ARRAY& rawArray,
const ALLOC& allocator = ALLOC())
3978 return std::allocate_shared<StringReflectableConstArray<ALLOC, RAW_ARRAY>>(
3979 allocator, allocator, rawArray);
3982 template <
typename RAW_ARRAY>
3985 return std::allocate_shared<StringReflectableArray<ALLOC, RAW_ARRAY>>(allocator, allocator, rawArray);
3988 template <
typename RAW_ARRAY>
3990 const RAW_ARRAY& rawArray,
const ALLOC& allocator = ALLOC())
3992 return std::allocate_shared<BitBufferReflectableConstArray<ALLOC, RAW_ARRAY>>(
3993 allocator, allocator, rawArray);
3996 template <
typename RAW_ARRAY>
3999 return std::allocate_shared<BitBufferReflectableArray<ALLOC, RAW_ARRAY>>(
4000 allocator, allocator, rawArray);
4003 template <
typename RAW_ARRAY>
4005 const RAW_ARRAY& rawArray,
const ALLOC& allocator = ALLOC())
4007 return std::allocate_shared<CompoundReflectableConstArray<ALLOC, RAW_ARRAY>>(
4008 allocator, allocator, rawArray);
4011 template <
typename RAW_ARRAY>
4014 return std::allocate_shared<CompoundReflectableArray<ALLOC, RAW_ARRAY>>(allocator, allocator, rawArray);
4017 template <
typename RAW_ARRAY>
4019 const RAW_ARRAY& rawArray,
const ALLOC& allocator = ALLOC())
4021 return std::allocate_shared<BitmaskReflectableConstArray<ALLOC, RAW_ARRAY>>(
4022 allocator, allocator, rawArray);
4025 template <
typename RAW_ARRAY>
4028 return std::allocate_shared<BitmaskReflectableArray<ALLOC, RAW_ARRAY>>(allocator, allocator, rawArray);
4031 template <
typename RAW_ARRAY>
4033 const RAW_ARRAY& rawArray,
const ALLOC& allocator = ALLOC())
4035 return std::allocate_shared<EnumReflectableConstArray<ALLOC, RAW_ARRAY>>(
4036 allocator, allocator, rawArray);
4039 template <
typename RAW_ARRAY>
4042 return std::allocate_shared<EnumReflectableArray<ALLOC, RAW_ARRAY>>(allocator, allocator, rawArray);
4049 template <
typename ALLOC>
4051 m_typeInfo(typeInfo)
4054 template <
typename ALLOC>
4057 template <
typename ALLOC>
4063 template <
typename ALLOC>
4069 template <
typename ALLOC>
4072 throw CppRuntimeException(
"Type '") << getTypeInfo().getSchemaName() <<
"' is not a compound type!";
4075 template <
typename ALLOC>
4078 throw CppRuntimeException(
"Type '") << getTypeInfo().getSchemaName() <<
"' has no type arguments!";
4081 template <
typename ALLOC>
4084 throw CppRuntimeException(
"Type '") << getTypeInfo().getSchemaName() <<
"' is not a compound type!";
4087 template <
typename ALLOC>
4093 template <
typename ALLOC>
4096 throw CppRuntimeException(
"Type '") << getTypeInfo().getSchemaName() <<
"' is not implemented!";
4099 template <
typename ALLOC>
4105 template <
typename ALLOC>
4108 throw CppRuntimeException(
"Type '") << getTypeInfo().getSchemaName() <<
"' is not implemented!";
4111 template <
typename ALLOC>
4114 throw CppRuntimeException(
"Type '") << getTypeInfo().getSchemaName() <<
"' has no fields to get!";
4117 template <
typename ALLOC>
4120 throw CppRuntimeException(
"Type '") << getTypeInfo().getSchemaName() <<
"' has no fields to get!";
4123 template <
typename ALLOC>
4126 throw CppRuntimeException(
"Type '") << getTypeInfo().getSchemaName() <<
"' has no fields to create!";
4129 template <
typename ALLOC>
4132 throw CppRuntimeException(
"Type '") << getTypeInfo().getSchemaName() <<
"' has no fields to set!";
4135 template <
typename ALLOC>
4138 throw CppRuntimeException(
"Type '") << getTypeInfo().getSchemaName() <<
"' has no parameters to get!";
4141 template <
typename ALLOC>
4144 throw CppRuntimeException(
"Type '") << getTypeInfo().getSchemaName() <<
"' has no parameters to get!";
4147 template <
typename ALLOC>
4150 throw CppRuntimeException(
"Type '") << getTypeInfo().getSchemaName() <<
"' has no functions to call!";
4153 template <
typename ALLOC>
4156 throw CppRuntimeException(
"Type '") << getTypeInfo().getSchemaName() <<
"' has no functions to call!";
4159 template <
typename ALLOC>
4162 throw CppRuntimeException(
"Type '") << getTypeInfo().getSchemaName() <<
"' is neither choice nor union!";
4165 template <
typename ALLOC>
4168 return detail::getFromObject(*
this, path, 0);
4171 template <
typename ALLOC>
4174 return detail::getFromObject(*
this, path, 0);
4177 template <
typename ALLOC>
4183 template <
typename ALLOC>
4189 template <
typename ALLOC>
4192 throw CppRuntimeException(
"Type '") << getTypeInfo().getSchemaName() <<
"' is not an array!";
4195 template <
typename ALLOC>
4198 throw CppRuntimeException(
"Type '") << getTypeInfo().getSchemaName() <<
"' is not an array!";
4201 template <
typename ALLOC>
4204 throw CppRuntimeException(
"Type '") << getTypeInfo().getSchemaName() <<
"' is not an array!";
4207 template <
typename ALLOC>
4210 throw CppRuntimeException(
"Type '") << getTypeInfo().getSchemaName() <<
"' is not an array!";
4213 template <
typename ALLOC>
4216 throw CppRuntimeException(
"Type '") << getTypeInfo().getSchemaName() <<
"' is not an array!";
4219 template <
typename ALLOC>
4222 throw CppRuntimeException(
"Type '") << getTypeInfo().getSchemaName() <<
"' is not an array!";
4225 template <
typename ALLOC>
4228 throw CppRuntimeException(
"Type '") << getTypeInfo().getSchemaName() <<
"' is not an array!";
4231 template <
typename ALLOC>
4234 throw CppRuntimeException(
"Type '") << getTypeInfo().getSchemaName() <<
"' is not an array!";
4237 template <
typename ALLOC>
4240 throw CppRuntimeException(
"Type '") << getTypeInfo().getSchemaName() <<
"' is not implemented!";
4243 template <
typename ALLOC>
4246 throw CppRuntimeException(
"Type '") << getTypeInfo().getSchemaName() <<
"' is not implemented!";
4249 template <
typename ALLOC>
4252 return getAnyValue(ALLOC());
4255 template <
typename ALLOC>
4258 return getAnyValue(ALLOC());
4261 template <
typename ALLOC>
4264 throw CppRuntimeException(
"'") << getTypeInfo().getSchemaName() <<
"' is not boolean type!";
4267 template <
typename ALLOC>
4273 template <
typename ALLOC>
4276 throw CppRuntimeException(
"'") << getTypeInfo().getSchemaName() <<
"' is not int16 type!";
4279 template <
typename ALLOC>
4282 throw CppRuntimeException(
"'") << getTypeInfo().getSchemaName() <<
"' is not int32 type!";
4285 template <
typename ALLOC>
4288 throw CppRuntimeException(
"'") << getTypeInfo().getSchemaName() <<
"' is not int64 type!";
4291 template <
typename ALLOC>
4294 throw CppRuntimeException(
"'") << getTypeInfo().getSchemaName() <<
"' is not uint8 type!";
4297 template <
typename ALLOC>
4300 throw CppRuntimeException(
"'") << getTypeInfo().getSchemaName() <<
"' is not uint16 type!";
4303 template <
typename ALLOC>
4306 throw CppRuntimeException(
"'") << getTypeInfo().getSchemaName() <<
"' is not uint32 type!";
4309 template <
typename ALLOC>
4312 throw CppRuntimeException(
"'") << getTypeInfo().getSchemaName() <<
"' is not uint64 type!";
4315 template <
typename ALLOC>
4318 throw CppRuntimeException(
"'") << getTypeInfo().getSchemaName() <<
"' is not float type!";
4321 template <
typename ALLOC>
4324 throw CppRuntimeException(
"'") << getTypeInfo().getSchemaName() <<
"' is not double type!";
4327 template <
typename ALLOC>
4330 throw CppRuntimeException(
"'") << getTypeInfo().getSchemaName() <<
"' is not bytes type!";
4333 template <
typename ALLOC>
4336 throw CppRuntimeException(
"'") << getTypeInfo().getSchemaName() <<
"' is not string type!";
4339 template <
typename ALLOC>
4342 throw CppRuntimeException(
"'") << getTypeInfo().getSchemaName() <<
"' is not an extern type!";
4345 template <
typename ALLOC>
4349 << getTypeInfo().getSchemaName() <<
"' to signed integer is not available!";
4352 template <
typename ALLOC>
4356 << getTypeInfo().getSchemaName() <<
"' to unsigned integer is not available!";
4359 template <
typename ALLOC>
4363 << getTypeInfo().getSchemaName() <<
"' to double is not available!";
4366 template <
typename ALLOC>
4370 << getTypeInfo().getSchemaName() <<
"' to string is not available!";
4373 template <
typename ALLOC>
4379 template <
typename ALLOC>
4383 << getTypeInfo().getSchemaName() <<
"'!";
4386 template <
typename ALLOC>
4389 throw CppRuntimeException(
"Reflectable '") << getTypeInfo().getSchemaName() <<
"' is constant!";
4392 template <
typename ALLOC>
4395 throw CppRuntimeException(
"Reflectable '") << getTypeInfo().getSchemaName() <<
"' is constant!";
4398 template <
typename ALLOC>
4401 throw CppRuntimeException(
"Reflectable '") << getTypeInfo().getSchemaName() <<
"' is constant!";
4404 template <
typename ALLOC>
4407 throw CppRuntimeException(
"Reflectable '") << getTypeInfo().getSchemaName() <<
"' is constant!";
4410 template <
typename ALLOC>
4413 throw CppRuntimeException(
"Reflectable '") << getTypeInfo().getSchemaName() <<
"' is constant!";
4416 template <
typename ALLOC>
4419 throw CppRuntimeException(
"Reflectable '") << getTypeInfo().getSchemaName() <<
"' is constant!";
4422 template <
typename ALLOC>
4425 throw CppRuntimeException(
"Reflectable '") << getTypeInfo().getSchemaName() <<
"' is constant!";
4428 template <
typename ALLOC>
4431 throw CppRuntimeException(
"Reflectable '") << getTypeInfo().getSchemaName() <<
"' is constant!";
4434 template <
typename ALLOC>
4437 throw CppRuntimeException(
"Reflectable is an array '") << getTypeInfo().getSchemaName() <<
"[]'!";
4440 template <
typename ALLOC>
4443 throw CppRuntimeException(
"Reflectable is an array '") << getTypeInfo().getSchemaName() <<
"[]'!";
4446 template <
typename ALLOC>
4449 throw CppRuntimeException(
"Reflectable is an array '") << getTypeInfo().getSchemaName() <<
"[]'!";
4452 template <
typename ALLOC>
4455 throw CppRuntimeException(
"Reflectable is an array '") << getTypeInfo().getSchemaName() <<
"[]'!";
4458 template <
typename ALLOC>
4461 throw CppRuntimeException(
"Reflectable is an array '") << getTypeInfo().getSchemaName() <<
"[]'!";
4464 template <
typename ALLOC>
4467 throw CppRuntimeException(
"Reflectable is an array '") << getTypeInfo().getSchemaName() <<
"[]'!";
4470 template <
typename ALLOC>
4473 throw CppRuntimeException(
"Reflectable is an array '") << getTypeInfo().getSchemaName() <<
"[]'!";
4476 template <
typename ALLOC>
4479 throw CppRuntimeException(
"Reflectable is an array '") << getTypeInfo().getSchemaName() <<
"[]'!";
4482 template <
typename ALLOC>
4485 throw CppRuntimeException(
"Reflectable is an array '") << getTypeInfo().getSchemaName() <<
"[]'!";
4488 template <
typename ALLOC>
4491 throw CppRuntimeException(
"Reflectable is an array '") << getTypeInfo().getSchemaName() <<
"[]'!";
4494 template <
typename ALLOC>
4497 throw CppRuntimeException(
"Reflectable is an array '") << getTypeInfo().getSchemaName() <<
"[]'!";
4500 template <
typename ALLOC>
4503 throw CppRuntimeException(
"Reflectable is an array '") << getTypeInfo().getSchemaName() <<
"[]'!";
4506 template <
typename ALLOC>
4509 throw CppRuntimeException(
"Reflectable is an array '") << getTypeInfo().getSchemaName() <<
"[]'!";
4512 template <
typename ALLOC>
4515 throw CppRuntimeException(
"Reflectable is an array '") << getTypeInfo().getSchemaName() <<
"[]'!";
4518 template <
typename ALLOC>
4521 return this->at(index);
4524 template <
typename ALLOC>
4527 return this->at(index);
4530 template <
typename ALLOC>
4533 throw CppRuntimeException(
"Reflectable is an array '") << getTypeInfo().getSchemaName() <<
"[]'!";
4536 template <
typename ALLOC>
4539 throw CppRuntimeException(
"Reflectable is an array '") << getTypeInfo().getSchemaName() <<
"[]'!";
4542 template <
typename ALLOC>
4545 throw CppRuntimeException(
"Reflectable is an array '") << getTypeInfo().getSchemaName() <<
"[]'!";
4548 template <
typename ALLOC>
4551 throw CppRuntimeException(
"Reflectable is an array '") << getTypeInfo().getSchemaName() <<
"[]'!";
4554 template <
typename ALLOC>
4557 throw CppRuntimeException(
"Reflectable is an array '") << getTypeInfo().getSchemaName() <<
"[]'!";
4560 template <
typename ALLOC>
4563 throw CppRuntimeException(
"Reflectable is an array '") << getTypeInfo().getSchemaName() <<
"[]'!";
4566 template <
typename ALLOC>
4569 throw CppRuntimeException(
"Reflectable is an array '") << getTypeInfo().getSchemaName() <<
"[]'!";
4572 template <
typename ALLOC>
4575 throw CppRuntimeException(
"Reflectable is an array '") << getTypeInfo().getSchemaName() <<
"[]'!";
4578 template <
typename ALLOC>
4581 throw CppRuntimeException(
"Reflectable is an array '") << getTypeInfo().getSchemaName() <<
"[]'!";
4584 template <
typename ALLOC>
4587 throw CppRuntimeException(
"Reflectable is an array '") << getTypeInfo().getSchemaName() <<
"[]'!";
4590 template <
typename ALLOC>
4593 throw CppRuntimeException(
"Reflectable is an array '") << getTypeInfo().getSchemaName() <<
"[]'!";
4596 template <
typename ALLOC>
4599 throw CppRuntimeException(
"Reflectable is an array '") << getTypeInfo().getSchemaName() <<
"[]'!";
4602 template <
typename ALLOC>
4605 throw CppRuntimeException(
"Reflectable is an array '") << getTypeInfo().getSchemaName() <<
"[]'!";
4608 template <
typename ALLOC>
4611 throw CppRuntimeException(
"Reflectable is an array '") << getTypeInfo().getSchemaName() <<
"[]'!";
4614 template <
typename ALLOC>
4617 throw CppRuntimeException(
"Reflectable is an array '") << getTypeInfo().getSchemaName() <<
"[]'!";
4620 template <
typename ALLOC>
4623 throw CppRuntimeException(
"Reflectable is an array '") << getTypeInfo().getSchemaName() <<
"[]'!";
4626 template <
typename ALLOC>
4629 throw CppRuntimeException(
"Reflectable is an array '") << getTypeInfo().getSchemaName() <<
"[]'!";
4632 template <
typename ALLOC>
4635 throw CppRuntimeException(
"Reflectable is an array '") << getTypeInfo().getSchemaName() <<
"[]'!";
4638 template <
typename ALLOC>
4641 throw CppRuntimeException(
"Reflectable '") << getTypeInfo().getSchemaName() <<
"' is a constant array!";
4644 template <
typename ALLOC>
4647 throw CppRuntimeException(
"Reflectable '") << getTypeInfo().getSchemaName() <<
"' is a constant array!";
4650 template <
typename ALLOC>
4653 throw CppRuntimeException(
"Reflectable '") << getTypeInfo().getSchemaName() <<
"' is a constant array!";
4656 template <
typename ALLOC>
4659 throw CppRuntimeException(
"Reflectable '") << getTypeInfo().getSchemaName() <<
"' is a constant array!";
4662 template <
typename ALLOC>
4665 throw CppRuntimeException(
"Reflectable '") << getTypeInfo().getSchemaName() <<
"' is a constant array!";
4668 template <
typename ALLOC>
4671 throw CppRuntimeException(
"Reflectable '") << getTypeInfo().getSchemaName() <<
"' is a constant array!";
allocator_type get_allocator() const
static IBasicReflectablePtr< ALLOC > getFloat32(float value, const ALLOC &allocator=ALLOC())
static IBasicReflectableConstPtr< ALLOC > getFloat32Array(const RAW_ARRAY &rawArray, const ALLOC &allocator=ALLOC())
static IBasicReflectablePtr< ALLOC > getFixedUnsignedBitFieldArray(RAW_ARRAY &rawArray, uint8_t bitSize, const ALLOC &allocator=ALLOC())
static IBasicReflectablePtr< ALLOC > getFloat64Array(RAW_ARRAY &rawArray, const ALLOC &allocator=ALLOC())
static IBasicReflectableConstPtr< ALLOC > getStringArray(const RAW_ARRAY &rawArray, const ALLOC &allocator=ALLOC())
static IBasicReflectableConstPtr< ALLOC > getVarUInt16Array(const RAW_ARRAY &rawArray, const ALLOC &allocator=ALLOC())
static IBasicReflectablePtr< ALLOC > getVarUIntArray(RAW_ARRAY &rawArray, const ALLOC &allocator=ALLOC())
static IBasicReflectablePtr< ALLOC > getVarInt16Array(RAW_ARRAY &rawArray, const ALLOC &allocator=ALLOC())
static IBasicReflectableConstPtr< ALLOC > getVarUInt32Array(const RAW_ARRAY &rawArray, const ALLOC &allocator=ALLOC())
static IBasicReflectableConstPtr< ALLOC > getVarInt16Array(const RAW_ARRAY &rawArray, const ALLOC &allocator=ALLOC())
static IBasicReflectablePtr< ALLOC > getVarInt32Array(RAW_ARRAY &rawArray, const ALLOC &allocator=ALLOC())
static IBasicReflectablePtr< ALLOC > getBool(bool value, const ALLOC &allocator=ALLOC())
static IBasicReflectablePtr< ALLOC > getInt64Array(RAW_ARRAY &rawArray, const ALLOC &allocator=ALLOC())
static IBasicReflectablePtr< ALLOC > getUInt32Array(RAW_ARRAY &rawArray, const ALLOC &allocator=ALLOC())
static IBasicReflectablePtr< ALLOC > getInt8Array(RAW_ARRAY &rawArray, const ALLOC &allocator=ALLOC())
static IBasicReflectablePtr< ALLOC > getInt8(int8_t value, const ALLOC &allocator=ALLOC())
static IBasicReflectableConstPtr< ALLOC > getDynamicSignedBitFieldArray(const RAW_ARRAY &rawArray, uint8_t maxBitSize, uint8_t dynamicBitSize, const ALLOC &allocator=ALLOC())
static IBasicReflectableConstPtr< ALLOC > getVarIntArray(const RAW_ARRAY &rawArray, const ALLOC &allocator=ALLOC())
static IBasicReflectablePtr< ALLOC > getBitmaskArray(RAW_ARRAY &rawArray, const ALLOC &allocator=ALLOC())
static IBasicReflectableConstPtr< ALLOC > getBytesArray(const RAW_ARRAY &rawArray, const ALLOC &allocator=ALLOC())
static IBasicReflectableConstPtr< ALLOC > getFixedUnsignedBitFieldArray(const RAW_ARRAY &rawArray, uint8_t bitSize, const ALLOC &allocator=ALLOC())
static IBasicReflectablePtr< ALLOC > getString(StringView value, const ALLOC &allocator=ALLOC())
static IBasicReflectableConstPtr< ALLOC > getFloat64Array(const RAW_ARRAY &rawArray, const ALLOC &allocator=ALLOC())
static IBasicReflectableConstPtr< ALLOC > getUInt16Array(const RAW_ARRAY &rawArray, const ALLOC &allocator=ALLOC())
static IBasicReflectableConstPtr< ALLOC > getVarInt32Array(const RAW_ARRAY &rawArray, const ALLOC &allocator=ALLOC())
static IBasicReflectableConstPtr< ALLOC > getInt8Array(const RAW_ARRAY &rawArray, const ALLOC &allocator=ALLOC())
static IBasicReflectableConstPtr< ALLOC > getFloat16Array(const RAW_ARRAY &rawArray, const ALLOC &allocator=ALLOC())
static IBasicReflectablePtr< ALLOC > getInt64(int64_t value, const ALLOC &allocator=ALLOC())
static IBasicReflectablePtr< ALLOC > getVarInt32(int32_t value, const ALLOC &allocator=ALLOC())
static IBasicReflectablePtr< ALLOC > getVarInt16(int16_t value, const ALLOC &allocator=ALLOC())
static IBasicReflectableConstPtr< ALLOC > getInt64Array(const RAW_ARRAY &rawArray, const ALLOC &allocator=ALLOC())
static IBasicReflectableConstPtr< ALLOC > getFixedSignedBitFieldArray(const RAW_ARRAY &rawArray, uint8_t bitSize, const ALLOC &allocator=ALLOC())
static IBasicReflectablePtr< ALLOC > getDynamicSignedBitField(int64_t value, uint8_t maxBitSize, const ALLOC &allocator=ALLOC())
static IBasicReflectablePtr< ALLOC > getBytesArray(RAW_ARRAY &rawArray, const ALLOC &allocator=ALLOC())
static IBasicReflectablePtr< ALLOC > getVarUInt64Array(RAW_ARRAY &rawArray, const ALLOC &allocator=ALLOC())
static IBasicReflectablePtr< ALLOC > getVarUInt32Array(RAW_ARRAY &rawArray, const ALLOC &allocator=ALLOC())
static IBasicReflectablePtr< ALLOC > getBitBuffer(const BasicBitBuffer< ALLOC > &value, const ALLOC &allocator=ALLOC())
static IBasicReflectableConstPtr< ALLOC > getVarUIntArray(const RAW_ARRAY &rawArray, const ALLOC &allocator=ALLOC())
static IBasicReflectablePtr< ALLOC > getUInt16(uint16_t value, const ALLOC &allocator=ALLOC())
static IBasicReflectablePtr< ALLOC > getCompoundArray(RAW_ARRAY &rawArray, const ALLOC &allocator=ALLOC())
static IBasicReflectablePtr< ALLOC > getVarUInt16Array(RAW_ARRAY &rawArray, const ALLOC &allocator=ALLOC())
static IBasicReflectableConstPtr< ALLOC > getVarUInt64Array(const RAW_ARRAY &rawArray, const ALLOC &allocator=ALLOC())
static IBasicReflectableConstPtr< ALLOC > getBitBufferArray(const RAW_ARRAY &rawArray, const ALLOC &allocator=ALLOC())
static IBasicReflectablePtr< ALLOC > getVarUInt(uint64_t value, const ALLOC &allocator=ALLOC())
static IBasicReflectablePtr< ALLOC > getUInt8(uint8_t value, const ALLOC &allocator=ALLOC())
static IBasicReflectablePtr< ALLOC > getUInt32(uint32_t value, const ALLOC &allocator=ALLOC())
static IBasicReflectablePtr< ALLOC > getInt32(int32_t value, const ALLOC &allocator=ALLOC())
static IBasicReflectablePtr< ALLOC > getBytes(Span< const uint8_t > value, const ALLOC &allocator=ALLOC())
static IBasicReflectableConstPtr< ALLOC > getCompoundArray(const RAW_ARRAY &rawArray, const ALLOC &allocator=ALLOC())
static IBasicReflectableConstPtr< ALLOC > getBitmaskArray(const RAW_ARRAY &rawArray, const ALLOC &allocator=ALLOC())
static IBasicReflectablePtr< ALLOC > getFixedSignedBitFieldArray(RAW_ARRAY &rawArray, uint8_t bitSize, const ALLOC &allocator=ALLOC())
static IBasicReflectablePtr< ALLOC > getDynamicUnsignedBitField(uint64_t value, uint8_t maxBitSize, const ALLOC &allocator=ALLOC())
static IBasicReflectablePtr< ALLOC > getVarInt64(int64_t value, const ALLOC &allocator=ALLOC())
static IBasicReflectablePtr< ALLOC > getUInt16Array(RAW_ARRAY &rawArray, const ALLOC &allocator=ALLOC())
static IBasicReflectablePtr< ALLOC > getVarUInt16(uint16_t value, const ALLOC &allocator=ALLOC())
static IBasicReflectableConstPtr< ALLOC > getBoolArray(const RAW_ARRAY &rawArray, const ALLOC &allocator=ALLOC())
static IBasicReflectableConstPtr< ALLOC > getUInt32Array(const RAW_ARRAY &rawArray, const ALLOC &allocator=ALLOC())
static IBasicReflectableConstPtr< ALLOC > getUInt8Array(const RAW_ARRAY &rawArray, const ALLOC &allocator=ALLOC())
static IBasicReflectablePtr< ALLOC > getBitBufferArray(RAW_ARRAY &rawArray, const ALLOC &allocator=ALLOC())
static IBasicReflectablePtr< ALLOC > getStringArray(RAW_ARRAY &rawArray, const ALLOC &allocator=ALLOC())
static IBasicReflectablePtr< ALLOC > getDynamicUnsignedBitField(T value, uint8_t maxBitSize, uint8_t dynamicBitSize, const ALLOC &allocator=ALLOC())
static IBasicReflectableConstPtr< ALLOC > getEnumArray(const RAW_ARRAY &rawArray, const ALLOC &allocator=ALLOC())
static IBasicReflectableConstPtr< ALLOC > getVarSizeArray(const RAW_ARRAY &rawArray, const ALLOC &allocator=ALLOC())
static IBasicReflectablePtr< ALLOC > getInt16Array(RAW_ARRAY &rawArray, const ALLOC &allocator=ALLOC())
static IBasicReflectablePtr< ALLOC > getVarSize(uint32_t value, const ALLOC &allocator=ALLOC())
static IBasicReflectablePtr< ALLOC > getDynamicSignedBitField(T value, uint8_t maxBitSize, uint8_t dynamicBitSize, const ALLOC &allocator=ALLOC())
static IBasicReflectablePtr< ALLOC > getVarSizeArray(RAW_ARRAY &rawArray, const ALLOC &allocator=ALLOC())
static IBasicReflectablePtr< ALLOC > getUInt64(uint64_t value, const ALLOC &allocator=ALLOC())
static IBasicReflectablePtr< ALLOC > getFloat16(float value, const ALLOC &allocator=ALLOC())
static IBasicReflectablePtr< ALLOC > getVarIntArray(RAW_ARRAY &rawArray, const ALLOC &allocator=ALLOC())
static IBasicReflectablePtr< ALLOC > getVarUInt32(uint32_t value, const ALLOC &allocator=ALLOC())
static IBasicReflectablePtr< ALLOC > getInt32Array(RAW_ARRAY &rawArray, const ALLOC &allocator=ALLOC())
static IBasicReflectablePtr< ALLOC > getBoolArray(RAW_ARRAY &rawArray, const ALLOC &allocator=ALLOC())
static IBasicReflectablePtr< ALLOC > getInt16(int16_t value, const ALLOC &allocator=ALLOC())
static IBasicReflectablePtr< ALLOC > getDynamicSignedBitFieldArray(RAW_ARRAY &rawArray, uint8_t maxBitSize, uint8_t dynamicBitSize, const ALLOC &allocator=ALLOC())
static IBasicReflectablePtr< ALLOC > getVarUInt64(uint64_t value, const ALLOC &allocator=ALLOC())
static IBasicReflectablePtr< ALLOC > getDynamicUnsignedBitFieldArray(RAW_ARRAY &rawArray, uint8_t maxBitSize, uint8_t dynamicBitSize, const ALLOC &allocator=ALLOC())
static IBasicReflectablePtr< ALLOC > getUInt64Array(RAW_ARRAY &rawArray, const ALLOC &allocator=ALLOC())
static IBasicReflectableConstPtr< ALLOC > getVarInt64Array(const RAW_ARRAY &rawArray, const ALLOC &allocator=ALLOC())
static IBasicReflectableConstPtr< ALLOC > getUInt64Array(const RAW_ARRAY &rawArray, const ALLOC &allocator=ALLOC())
static IBasicReflectablePtr< ALLOC > getEnumArray(RAW_ARRAY &rawArray, const ALLOC &allocator=ALLOC())
static IBasicReflectablePtr< ALLOC > getFixedSignedBitField(T value, uint8_t bitSize, const ALLOC &allocator=ALLOC())
static IBasicReflectablePtr< ALLOC > getFloat32Array(RAW_ARRAY &rawArray, const ALLOC &allocator=ALLOC())
static IBasicReflectableConstPtr< ALLOC > getDynamicUnsignedBitFieldArray(const RAW_ARRAY &rawArray, uint8_t maxBitSize, uint8_t dynamicBitSize, const ALLOC &allocator=ALLOC())
static IBasicReflectablePtr< ALLOC > getVarInt(int64_t value, const ALLOC &allocator=ALLOC())
static IBasicReflectableConstPtr< ALLOC > getInt32Array(const RAW_ARRAY &rawArray, const ALLOC &allocator=ALLOC())
static IBasicReflectablePtr< ALLOC > getFloat64(double value, const ALLOC &allocator=ALLOC())
static IBasicReflectablePtr< ALLOC > getVarInt64Array(RAW_ARRAY &rawArray, const ALLOC &allocator=ALLOC())
static IBasicReflectablePtr< ALLOC > getUInt8Array(RAW_ARRAY &rawArray, const ALLOC &allocator=ALLOC())
static IBasicReflectablePtr< ALLOC > getFixedUnsignedBitField(T value, uint8_t bitSize, const ALLOC &allocator=ALLOC())
static IBasicReflectableConstPtr< ALLOC > getInt16Array(const RAW_ARRAY &rawArray, const ALLOC &allocator=ALLOC())
static IBasicReflectablePtr< ALLOC > getFloat16Array(RAW_ARRAY &rawArray, const ALLOC &allocator=ALLOC())
BasicStringView substr(size_type pos=0, size_type count=npos) const
static constexpr const size_type npos
static const IBasicTypeInfo< ALLOC > & typeInfo()
BitBufferReflectable(const BasicBitBuffer< ALLOC > &value)
size_t bitSizeOf(size_t) const override
void write(BitStreamWriter &writer) const override
const BasicBitBuffer< ALLOC > & getBitBuffer() const override
void writeFloat64(double data)
void writeVarInt64(int64_t data)
void writeVarInt16(int16_t data)
void writeString(StringView data)
void writeSignedBits(int32_t data, uint8_t numBits=32)
void writeFloat32(float data)
void writeVarUInt64(uint64_t data)
void writeVarUInt16(uint16_t data)
void writeVarInt32(int32_t data)
void writeSignedBits64(int64_t data, uint8_t numBits=64)
void writeVarSize(uint32_t data)
void writeVarUInt32(uint32_t data)
void writeVarUInt(uint64_t data)
void writeVarInt(int64_t data)
void writeFloat16(float data)
void writeBits64(uint64_t data, uint8_t numBits=64)
void writeBytes(Span< const uint8_t > data)
void writeBool(bool data)
void writeBitBuffer(const BasicBitBuffer< ALLOC > &bitBuffer)
void writeBits(uint32_t data, uint8_t numBits=32)
void resize(size_t size) override
void setAt(const AnyHolder< ALLOC > &value, size_t index) override
IBasicReflectablePtr< ALLOC > at(size_t index) override
AnyHolder< ALLOC > getAnyValue(const ALLOC &allocator) override
BitmaskReflectableArray(const ALLOC &allocator, RAW_ARRAY &rawArray)
IBasicReflectableConstPtr< ALLOC > at(size_t index) const override
void append(const AnyHolder< ALLOC > &value) override
size_t size() const override
AnyHolder< ALLOC > getAnyValue(const ALLOC &allocator) const override
size_t size() const override
AnyHolder< ALLOC > getAnyValue(const ALLOC &allocator) const override
IBasicReflectableConstPtr< ALLOC > at(size_t index) const override
BitmaskReflectableConstArray(const ALLOC &allocator, const RAW_ARRAY &rawArray)
size_t bitSizeOf(size_t) const override
static const IBasicTypeInfo< ALLOC > & typeInfo()
BoolReflectable(bool value)
bool getBool() const override
void write(BitStreamWriter &writer) const override
void resize(size_t size) override
IBasicReflectableConstPtr< ALLOC > at(size_t index) const override
AnyHolder< ALLOC > getAnyValue(const ALLOC &allocator) override
void setAt(const AnyHolder< ALLOC > &value, size_t index) override
AnyHolder< ALLOC > getAnyValue(const ALLOC &allocator) const override
void append(const AnyHolder< ALLOC > &value) override
IBasicReflectablePtr< ALLOC > at(size_t index) override
BuiltinReflectableArray(const ALLOC &allocator, RAW_ARRAY &rawArray)
size_t size() const override
AnyHolder< ALLOC > getAnyValue(const ALLOC &allocator) override
AnyHolder< ALLOC > getAnyValue(const ALLOC &allocator) const override
BuiltinReflectableBase(const IBasicTypeInfo< ALLOC > &typeInfo, T value)
const T & getValue() const
AnyHolder< ALLOC > getAnyValue(const ALLOC &allocator) override
AnyHolder< ALLOC > getAnyValue(const ALLOC &allocator) const override
BuiltinReflectableBase(const IBasicTypeInfo< ALLOC > &typeInfo, const T &value)
size_t size() const override
IBasicReflectableConstPtr< ALLOC > at(size_t index) const override
AnyHolder< ALLOC > getAnyValue(const ALLOC &allocator) const override
BuiltinReflectableConstArray(const ALLOC &allocator, const RAW_ARRAY &rawArray)
static const IBasicTypeInfo< ALLOC > & getDynamicUnsignedBitField(uint8_t maxBitSize)
static const IBasicTypeInfo< ALLOC > & getFloat32()
static const IBasicTypeInfo< ALLOC > & getVarUInt64()
static const IBasicTypeInfo< ALLOC > & getUInt32()
static const IBasicTypeInfo< ALLOC > & getBool()
static const IBasicTypeInfo< ALLOC > & getVarInt64()
static const IBasicTypeInfo< ALLOC > & getVarUInt()
static const IBasicTypeInfo< ALLOC > & getVarInt32()
static const IBasicTypeInfo< ALLOC > & getFixedUnsignedBitField(uint8_t bitSize)
static const IBasicTypeInfo< ALLOC > & getInt32()
static const IBasicTypeInfo< ALLOC > & getInt16()
static const IBasicTypeInfo< ALLOC > & getVarInt()
static const IBasicTypeInfo< ALLOC > & getString()
static const IBasicTypeInfo< ALLOC > & getInt8()
static const IBasicTypeInfo< ALLOC > & getVarInt16()
static const IBasicTypeInfo< ALLOC > & getUInt8()
static const IBasicTypeInfo< ALLOC > & getBitBuffer()
static const IBasicTypeInfo< ALLOC > & getUInt64()
static const IBasicTypeInfo< ALLOC > & getInt64()
static const IBasicTypeInfo< ALLOC > & getUInt16()
static const IBasicTypeInfo< ALLOC > & getVarSize()
static const IBasicTypeInfo< ALLOC > & getFloat16()
static const IBasicTypeInfo< ALLOC > & getVarUInt32()
static const IBasicTypeInfo< ALLOC > & getBytes()
static const IBasicTypeInfo< ALLOC > & getVarUInt16()
static const IBasicTypeInfo< ALLOC > & getDynamicSignedBitField(uint8_t maxBitSize)
static const IBasicTypeInfo< ALLOC > & getFixedSignedBitField(uint8_t bitSize)
static const IBasicTypeInfo< ALLOC > & getFloat64()
size_t bitSizeOf(size_t) const override
void write(BitStreamWriter &writer) const override
BytesReflectable(Span< const uint8_t > value)
Span< const uint8_t > getBytes() const override
static const IBasicTypeInfo< ALLOC > & typeInfo()
void setAt(const AnyHolder< ALLOC > &value, size_t index) override
AnyHolder< ALLOC > getAnyValue(const ALLOC &allocator) const override
size_t size() const override
IBasicReflectablePtr< ALLOC > at(size_t index) override
void resize(size_t size) override
void append(const AnyHolder< ALLOC > &value) override
AnyHolder< ALLOC > getAnyValue(const ALLOC &allocator) override
IBasicReflectableConstPtr< ALLOC > at(size_t index) const override
CompoundReflectableArray(const ALLOC &allocator, RAW_ARRAY &rawArray)
AnyHolder< ALLOC > getAnyValue(const ALLOC &allocator) const override
CompoundReflectableConstArray(const ALLOC &allocator, const RAW_ARRAY &rawArray)
size_t size() const override
IBasicReflectableConstPtr< ALLOC > at(size_t index) const override
AnyHolder< ALLOC > getAnyValue(const ALLOC &allocator) const override
AnyHolder< ALLOC > getAnyValue(const ALLOC &allocator) override
size_t size() const override
void append(const AnyHolder< ALLOC > &value) override
IBasicReflectablePtr< ALLOC > at(size_t index) override
IBasicReflectableConstPtr< ALLOC > at(size_t index) const override
void resize(size_t size) override
void setAt(const AnyHolder< ALLOC > &value, size_t index) override
DynamicBitFieldReflectableArray(const ALLOC &allocator, RAW_ARRAY &rawArray, uint8_t maxBitSize, uint8_t dynamicBitSize)
AnyHolder< ALLOC > getAnyValue(const ALLOC &allocator) const override
DynamicBitFieldReflectableConstArray(const ALLOC &allocator, const RAW_ARRAY &rawArray, uint8_t maxBitSize, uint8_t dynamicBitSize)
size_t size() const override
IBasicReflectableConstPtr< ALLOC > at(size_t index) const override
static const IBasicTypeInfo< ALLOC > & typeInfo(uint8_t maxBitSize)
size_t bitSizeOf(size_t) const override
void write(BitStreamWriter &writer) const override
DynamicSignedBitFieldReflectable(int16_t value, uint8_t maxBitSize, uint8_t dynamicBitSize)
void write(BitStreamWriter &writer) const override
DynamicSignedBitFieldReflectable(int32_t value, uint8_t maxBitSize, uint8_t dynamicBitSize)
size_t bitSizeOf(size_t) const override
static const IBasicTypeInfo< ALLOC > & typeInfo(uint8_t maxBitSize)
static const IBasicTypeInfo< ALLOC > & typeInfo(uint8_t maxBitSize)
DynamicSignedBitFieldReflectable(int64_t value, uint8_t maxBitSize, uint8_t dynamicBitSize)
size_t bitSizeOf(size_t) const override
void write(BitStreamWriter &writer) const override
void write(BitStreamWriter &writer) const override
static const IBasicTypeInfo< ALLOC > & typeInfo(uint8_t maxBitSize)
size_t bitSizeOf(size_t) const override
DynamicSignedBitFieldReflectable(int8_t value, uint8_t maxBitSize, uint8_t dynamicBitSize)
size_t bitSizeOf(size_t) const override
void write(BitStreamWriter &writer) const override
DynamicUnsignedBitFieldReflectable(uint16_t value, uint8_t maxBitSize, uint8_t dynamicBitSize)
static const IBasicTypeInfo< ALLOC > & typeInfo(uint8_t maxBitSize)
DynamicUnsignedBitFieldReflectable(uint32_t value, uint8_t maxBitSize, uint8_t dynamicBitSize)
void write(BitStreamWriter &writer) const override
size_t bitSizeOf(size_t) const override
static const IBasicTypeInfo< ALLOC > & typeInfo(uint8_t maxBitSize)
size_t bitSizeOf(size_t) const override
static const IBasicTypeInfo< ALLOC > & typeInfo(uint8_t maxBitSize)
DynamicUnsignedBitFieldReflectable(uint64_t value, uint8_t maxBitSize, uint8_t dynamicBitSize)
void write(BitStreamWriter &writer) const override
void write(BitStreamWriter &writer) const override
static const IBasicTypeInfo< ALLOC > & typeInfo(uint8_t maxBitSize)
DynamicUnsignedBitFieldReflectable(uint8_t value, uint8_t maxBitSize, uint8_t dynamicBitSize)
size_t bitSizeOf(size_t) const override
AnyHolder< ALLOC > getAnyValue(const ALLOC &allocator) override
EnumReflectableArray(const ALLOC &allocator, RAW_ARRAY &rawArray)
IBasicReflectableConstPtr< ALLOC > at(size_t index) const override
IBasicReflectablePtr< ALLOC > at(size_t index) override
void resize(size_t size) override
void setAt(const AnyHolder< ALLOC > &value, size_t index) override
void append(const AnyHolder< ALLOC > &value) override
size_t size() const override
AnyHolder< ALLOC > getAnyValue(const ALLOC &allocator) const override
AnyHolder< ALLOC > getAnyValue(const ALLOC &allocator) const override
IBasicReflectableConstPtr< ALLOC > at(size_t index) const override
size_t size() const override
EnumReflectableConstArray(const ALLOC &allocator, const RAW_ARRAY &rawArray)
IBasicReflectablePtr< ALLOC > at(size_t index) override
void append(const AnyHolder< ALLOC > &value) override
AnyHolder< ALLOC > getAnyValue(const ALLOC &allocator) override
size_t size() const override
FixedBitFieldReflectableArray(const ALLOC &allocator, RAW_ARRAY &rawArray, uint8_t bitSize)
void resize(size_t size) override
void setAt(const AnyHolder< ALLOC > &value, size_t index) override
IBasicReflectableConstPtr< ALLOC > at(size_t index) const override
AnyHolder< ALLOC > getAnyValue(const ALLOC &allocator) const override
FixedBitFieldReflectableConstArray(const ALLOC &allocator, const RAW_ARRAY &rawArray, uint8_t bitSize)
IBasicReflectableConstPtr< ALLOC > at(size_t index) const override
AnyHolder< ALLOC > getAnyValue(const ALLOC &allocator) const override
size_t size() const override
void write(BitStreamWriter &writer) const override
FixedSignedBitFieldReflectable(int16_t value, uint8_t bitSize)
size_t bitSizeOf(size_t) const override
static const IBasicTypeInfo< ALLOC > & typeInfo(uint8_t bitSize)
static const IBasicTypeInfo< ALLOC > & typeInfo(uint8_t bitSize)
void write(BitStreamWriter &writer) const override
size_t bitSizeOf(size_t) const override
FixedSignedBitFieldReflectable(int32_t value, uint8_t bitSize)
void write(BitStreamWriter &writer) const override
FixedSignedBitFieldReflectable(int64_t value, uint8_t bitSize)
static const IBasicTypeInfo< ALLOC > & typeInfo(uint8_t bitSize)
size_t bitSizeOf(size_t) const override
size_t bitSizeOf(size_t) const override
FixedSignedBitFieldReflectable(int8_t value, uint8_t bitSize)
static const IBasicTypeInfo< ALLOC > & typeInfo(uint8_t bitSize)
void write(BitStreamWriter &writer) const override
FixedUnsignedBitFieldReflectable(uint16_t value, uint8_t bitSize)
void write(BitStreamWriter &writer) const override
size_t bitSizeOf(size_t) const override
static const IBasicTypeInfo< ALLOC > & typeInfo(uint8_t bitSize)
static const IBasicTypeInfo< ALLOC > & typeInfo(uint8_t bitSize)
size_t bitSizeOf(size_t) const override
void write(BitStreamWriter &writer) const override
FixedUnsignedBitFieldReflectable(uint32_t value, uint8_t bitSize)
static const IBasicTypeInfo< ALLOC > & typeInfo(uint8_t bitSize)
void write(BitStreamWriter &writer) const override
FixedUnsignedBitFieldReflectable(uint64_t value, uint8_t bitSize)
size_t bitSizeOf(size_t) const override
size_t bitSizeOf(size_t) const override
FixedUnsignedBitFieldReflectable(uint8_t value, uint8_t bitSize)
static const IBasicTypeInfo< ALLOC > & typeInfo(uint8_t bitSize)
void write(BitStreamWriter &writer) const override
static const IBasicTypeInfo< ALLOC > & typeInfo()
Float16Reflectable(float value)
void write(BitStreamWriter &writer) const override
size_t bitSizeOf(size_t) const override
float getFloat() const override
Float32Reflectable(float value)
static const IBasicTypeInfo< ALLOC > & typeInfo()
size_t bitSizeOf(size_t) const override
float getFloat() const override
void write(BitStreamWriter &writer) const override
static const IBasicTypeInfo< ALLOC > & typeInfo()
size_t bitSizeOf(size_t) const override
Float64Reflectable(double value)
void write(BitStreamWriter &writer) const override
double getDouble() const override
double toDouble() const override
virtual StringView getSchemaName() const =0
int16_t getInt16() const override
size_t bitSizeOf(size_t) const override
Int16Reflectable(int16_t value)
void write(BitStreamWriter &writer) const override
static const IBasicTypeInfo< ALLOC > & typeInfo()
int32_t getInt32() const override
size_t bitSizeOf(size_t) const override
Int32Reflectable(int32_t value)
void write(BitStreamWriter &writer) const override
static const IBasicTypeInfo< ALLOC > & typeInfo()
int64_t getInt64() const override
void write(BitStreamWriter &writer) const override
static const IBasicTypeInfo< ALLOC > & typeInfo()
Int64Reflectable(int64_t value)
size_t bitSizeOf(size_t) const override
int8_t getInt8() const override
size_t bitSizeOf(size_t) const override
static const IBasicTypeInfo< ALLOC > & typeInfo()
void write(BitStreamWriter &writer) const override
Int8Reflectable(int8_t value)
double toDouble() const override
string< ALLOC > toString(const ALLOC &allocator) const override
BuiltinReflectableBase< ALLOC, T > Base
IntegralReflectableBase(const IBasicTypeInfo< ALLOC > &typeInfo, T value)
ReflectableAllocatorHolderBase(const IBasicTypeInfo< ALLOC > &typeInfo, const ALLOC &allocator)
void initializeChildren() override
int32_t getInt32() const override
uint8_t getUInt8() const override
IBasicReflectableConstPtr< ALLOC > callFunction(StringView name) const override
Span< const uint8_t > getBytes() const override
float getFloat() const override
uint64_t toUInt() const override
double toDouble() const override
int16_t getInt16() const override
int64_t toInt() const override
StringView getChoice() const override
uint64_t getUInt64() const override
int8_t getInt8() const override
uint32_t getUInt32() const override
void initialize(const vector< AnyHolder< ALLOC >, ALLOC > &typeArguments) override
void write(BitStreamWriter &writer) const override
bool isArray() const override
IBasicReflectableConstPtr< ALLOC > operator[](size_t index) const override
IBasicReflectableConstPtr< ALLOC > getParameter(StringView name) const override
IBasicReflectableConstPtr< ALLOC > getField(StringView name) const override
int64_t getInt64() const override
double getDouble() const override
IBasicReflectablePtr< ALLOC > createField(StringView name) override
const BasicBitBuffer< ALLOC > & getBitBuffer() const override
bool getBool() const override
uint16_t getUInt16() const override
void setField(StringView name, const AnyHolder< ALLOC > &value) override
StringView getStringView() const override
StringView getStringView() const override
const IBasicTypeInfo< ALLOC > & getTypeInfo() const override
void initializeChildren() override
const BasicBitBuffer< ALLOC > & getBitBuffer() const override
int64_t toInt() const override
IBasicReflectableConstPtr< ALLOC > operator[](StringView path) const override
const ParsingInfo & parsingInfo() const override
IBasicReflectableConstPtr< ALLOC > at(size_t index) const override
ReflectableBase & operator=(const ReflectableBase &&)=delete
IBasicReflectableConstPtr< ALLOC > callFunction(StringView name) const override
int32_t getInt32() const override
void resize(size_t size) override
int16_t getInt16() const override
void setField(StringView name, const AnyHolder< ALLOC > &value) override
IBasicReflectableConstPtr< ALLOC > getParameter(StringView name) const override
ReflectableBase(const ReflectableBase &)=delete
IBasicReflectableConstPtr< ALLOC > find(StringView path) const override
Span< const uint8_t > getBytes() const override
ReflectableBase(const IBasicTypeInfo< ALLOC > &typeInfo)
size_t size() const override
float getFloat() const override
double getDouble() const override
uint64_t getUInt64() const override
uint8_t getUInt8() const override
uint16_t getUInt16() const override
bool isArray() const override
size_t bitSizeOf() const override
ReflectableBase & operator=(const ReflectableBase &)=delete
AnyHolder< ALLOC > getAnyValue() const override
void append(const AnyHolder< ALLOC > &value) override
~ReflectableBase() override=0
uint64_t toUInt() const override
IBasicReflectablePtr< ALLOC > createField(StringView name) override
ReflectableBase(const ReflectableBase &&)=delete
string< ALLOC > toString() const override
size_t initializeOffsets() override
uint32_t getUInt32() const override
bool getBool() const override
int8_t getInt8() const override
IBasicReflectableConstPtr< ALLOC > getField(StringView name) const override
void write(BitStreamWriter &writer) const override
void setAt(const AnyHolder< ALLOC > &value, size_t index) override
StringView getChoice() const override
int64_t getInt64() const override
double toDouble() const override
void initialize(const vector< AnyHolder< ALLOC >, ALLOC > &typeArguments) override
IBasicReflectablePtr< ALLOC > getParameter(StringView name) override
void setField(StringView name, const AnyHolder< ALLOC > &value) override
IBasicReflectablePtr< ALLOC > getField(StringView name) override
void initialize(const vector< AnyHolder< ALLOC >, ALLOC > &typeArguments) override
IBasicReflectablePtr< ALLOC > callFunction(StringView name) override
void initializeChildren() override
IBasicReflectablePtr< ALLOC > operator[](size_t index) override
void setAt(const AnyHolder< ALLOC > &value, size_t index) override
IBasicReflectablePtr< ALLOC > at(size_t index) override
void append(const AnyHolder< ALLOC > &value) override
void resize(size_t index) override
IBasicReflectablePtr< ALLOC > operator[](size_t index) override
IBasicReflectableConstPtr< ALLOC > find(StringView path) const override
void resize(size_t size) override
int32_t getInt32() const override
int64_t getInt64() const override
int16_t getInt16() const override
AnyHolder< ALLOC > getAnyValue() override
void initializeChildren() override
Span< const uint8_t > getBytes() const override
IBasicReflectablePtr< ALLOC > createField(StringView name) override
IBasicReflectableConstPtr< ALLOC > getParameter(StringView name) const override
const BasicBitBuffer< ALLOC > & getBitBuffer() const override
IBasicReflectablePtr< ALLOC > callFunction(StringView name) override
bool getBool() const override
int64_t toInt() const override
IBasicReflectableConstPtr< ALLOC > operator[](StringView path) const override
int8_t getInt8() const override
IBasicReflectablePtr< ALLOC > find(StringView path) override
IBasicReflectableConstPtr< ALLOC > callFunction(StringView name) const override
uint16_t getUInt16() const override
size_t bitSizeOf(size_t bitPosition) const override
AnyHolder< ALLOC > getAnyValue(const ALLOC &allocator) override
float getFloat() const override
size_t initializeOffsets() override
void setField(StringView name, const AnyHolder< ALLOC > &value) override
bool isArray() const override
IBasicReflectableConstPtr< ALLOC > operator[](size_t index) const override
IBasicReflectablePtr< ALLOC > at(size_t index) override
string< RebindAlloc< ALLOC, char > > toString(const ALLOC &allocator) const override
void append(const AnyHolder< ALLOC > &value) override
void setAt(const AnyHolder< ALLOC > &value, size_t index) override
size_t size() const override
double toDouble() const override
IBasicReflectableConstPtr< ALLOC > getField(StringView name) const override
void write(BitStreamWriter &writer) const override
IBasicReflectableConstPtr< ALLOC > at(size_t index) const override
IBasicReflectablePtr< ALLOC > getField(StringView name) override
IBasicReflectablePtr< ALLOC > operator[](StringView path) override
string< RebindAlloc< ALLOC, char > > toString() const override
uint64_t getUInt64() const override
uint64_t toUInt() const override
StringView getChoice() const override
uint32_t getUInt32() const override
double getDouble() const override
IBasicReflectablePtr< ALLOC > getParameter(StringView name) override
size_t bitSizeOf() const override
ReflectableOwner(const ALLOC &allocator)
void initialize(const vector< AnyHolder< ALLOC >, ALLOC > &typeArguments) override
const IBasicTypeInfo< ALLOC > & getTypeInfo() const override
AnyHolder< ALLOC > getAnyValue(const ALLOC &allocator) const override
size_t initializeOffsets(size_t bitPosition) override
uint8_t getUInt8() const override
AnyHolder< ALLOC > getAnyValue() const override
const ParsingInfo & parsingInfo() const override
StringView getStringView() const override
IntegralReflectableBase< ALLOC, int8_t > Base
int64_t toInt() const override
void write(BitStreamWriter &writer) const override
static const IBasicTypeInfo< ALLOC > & typeInfo()
StringView getStringView() const override
size_t bitSizeOf(size_t) const override
StringReflectable(StringView value)
string< ALLOC > toString(const ALLOC &allocator) const override
uint16_t getUInt16() const override
size_t bitSizeOf(size_t) const override
void write(BitStreamWriter &writer) const override
static const IBasicTypeInfo< ALLOC > & typeInfo()
UInt16Reflectable(uint16_t value)
uint32_t getUInt32() const override
void write(BitStreamWriter &writer) const override
size_t bitSizeOf(size_t) const override
UInt32Reflectable(uint32_t value)
static const IBasicTypeInfo< ALLOC > & typeInfo()
uint64_t getUInt64() const override
void write(BitStreamWriter &writer) const override
static const IBasicTypeInfo< ALLOC > & typeInfo()
size_t bitSizeOf(size_t) const override
UInt64Reflectable(uint64_t value)
uint8_t getUInt8() const override
void write(BitStreamWriter &writer) const override
static const IBasicTypeInfo< ALLOC > & typeInfo()
UInt8Reflectable(uint8_t value)
size_t bitSizeOf(size_t) const override
uint64_t toUInt() const override
IntegralReflectableBase< ALLOC, uint8_t > Base
size_t bitSizeOf(size_t) const override
void write(BitStreamWriter &writer) const override
static const IBasicTypeInfo< ALLOC > & typeInfo()
VarInt16Reflectable(int16_t value)
void write(BitStreamWriter &writer) const override
VarInt32Reflectable(int32_t value)
size_t bitSizeOf(size_t) const override
static const IBasicTypeInfo< ALLOC > & typeInfo()
void write(BitStreamWriter &writer) const override
static const IBasicTypeInfo< ALLOC > & typeInfo()
size_t bitSizeOf(size_t) const override
VarInt64Reflectable(int64_t value)
static const IBasicTypeInfo< ALLOC > & typeInfo()
VarIntReflectable(int64_t value)
size_t bitSizeOf(size_t) const override
void write(BitStreamWriter &writer) const override
size_t bitSizeOf(size_t) const override
void write(BitStreamWriter &writer) const override
static const IBasicTypeInfo< ALLOC > & typeInfo()
VarSizeReflectable(uint32_t value)
void write(BitStreamWriter &writer) const override
VarUInt16Reflectable(uint16_t value)
static const IBasicTypeInfo< ALLOC > & typeInfo()
size_t bitSizeOf(size_t) const override
size_t bitSizeOf(size_t) const override
VarUInt32Reflectable(uint32_t value)
void write(BitStreamWriter &writer) const override
static const IBasicTypeInfo< ALLOC > & typeInfo()
static const IBasicTypeInfo< ALLOC > & typeInfo()
size_t bitSizeOf(size_t) const override
void write(BitStreamWriter &writer) const override
VarUInt64Reflectable(uint64_t value)
static const IBasicTypeInfo< ALLOC > & typeInfo()
void write(BitStreamWriter &writer) const override
size_t bitSizeOf(size_t) const override
VarUIntReflectable(uint64_t value)
size_t bitSizeOfString(StringView stringValue)
size_t bitSizeOfVarInt32(int32_t value)
const IBasicTypeInfo< ALLOC > & enumTypeInfo()
size_t bitSizeOfVarUInt32(uint32_t value)
BasicStringView< char, std::char_traits< char > > StringView
size_t bitSizeOfVarInt64(int64_t value)
std::basic_string< char, std::char_traits< char >, RebindAlloc< ALLOC, char > > string
std::vector< T, RebindAlloc< ALLOC, T > > vector
IBasicReflectablePtr< ALLOC > enumReflectable(T value, const ALLOC &allocator=ALLOC())
size_t initializeOffsets(size_t bitPosition, T value)
size_t bitSizeOfVarUInt64(uint64_t value)
size_t bitSizeOfVarInt16(int16_t value)
size_t bitSizeOfBitBuffer(const BasicBitBuffer< ALLOC > &bitBuffer)
string< ALLOC > toString(T value, const ALLOC &allocator=ALLOC())
size_t bitSizeOfVarUInt(uint64_t value)
size_t bitSizeOfVarInt(int64_t value)
size_t bitSizeOfBytes(Span< const uint8_t > bytesValue)
typename IBasicReflectable< ALLOC >::Ptr IBasicReflectablePtr
size_t bitSizeOf(T value)
size_t bitSizeOfVarUInt16(uint16_t value)
typename IBasicReflectable< ALLOC >::ConstPtr IBasicReflectableConstPtr
static bool isCompound(SchemaType schemaType)