1 #ifndef ZSERIO_REFLECTABLE_H_INC
2 #define ZSERIO_REFLECTABLE_H_INC
26 template <
typename ALLOC>
60 size_t bitSizeOf(
size_t bitPosition)
const override;
80 size_t size()
const override;
96 int8_t
getInt8()
const override;
111 int64_t
toInt()
const override;
112 uint64_t
toUInt()
const override;
126 template <
typename ALLOC,
typename T,
typename =
void>
164 template <
typename ALLOC,
typename T>
166 typename std::enable_if<std::is_arithmetic<T>::value || std::is_same<T, StringView>::value ||
206 template <
typename ALLOC,
typename T>
210 static_assert(std::is_integral<T>::value,
"T must be a signed integral type!");
216 Base(typeInfo, value)
235 template <
typename ALLOC,
typename T>
239 static_assert(std::is_signed<T>::value,
"T must be a signed integral type!");
257 template <
typename ALLOC,
typename T>
261 static_assert(std::is_unsigned<T>::value,
"T must be an unsigned integral type!");
277 template <
typename ALLOC>
314 template <
typename ALLOC>
334 template <
typename ALLOC>
354 template <
typename ALLOC>
374 template <
typename ALLOC>
394 template <
typename ALLOC>
414 template <
typename ALLOC>
434 template <
typename ALLOC>
454 template <
typename ALLOC>
472 template <
typename ALLOC>
502 template <
typename ALLOC>
532 template <
typename ALLOC>
562 template <
typename ALLOC>
592 template <
typename ALLOC>
622 template <
typename ALLOC>
652 template <
typename ALLOC>
682 template <
typename ALLOC>
709 template <
typename ALLOC,
typename T>
712 template <
typename ALLOC>
725 Base(typeInfo(bitSize), value)
730 <<
" - invalid bit size '" << bitSize <<
"' for 'int8_t' value!";
736 return Base::getTypeInfo().getBitSize();
741 writer.
writeSignedBits(Base::getValue(), Base::getTypeInfo().getBitSize());
745 template <
typename ALLOC>
758 Base(typeInfo(bitSize), value)
760 if (bitSize <= 8 || bitSize > 16)
763 <<
" - invalid bit size '" << bitSize <<
"' for 'int16_t' value!";
769 return Base::getTypeInfo().getBitSize();
774 writer.
writeSignedBits(Base::getValue(), Base::getTypeInfo().getBitSize());
778 template <
typename ALLOC>
791 Base(typeInfo(bitSize), value)
793 if (bitSize <= 16 || bitSize > 32)
796 <<
" - invalid bit size '" << bitSize <<
"' for 'int32_t' value!";
802 return Base::getTypeInfo().getBitSize();
807 writer.
writeSignedBits(Base::getValue(), Base::getTypeInfo().getBitSize());
811 template <
typename ALLOC>
824 Base(typeInfo(bitSize), value)
829 <<
" - invalid bit size '" << bitSize <<
"' for 'int64_t' value!";
835 return Base::getTypeInfo().getBitSize();
844 template <
typename ALLOC,
typename T>
847 template <
typename ALLOC>
860 Base(typeInfo(bitSize), value)
865 <<
" - invalid bit size '" << bitSize <<
"' for 'uint8_t' value!";
871 return Base::getTypeInfo().getBitSize();
876 writer.
writeBits(Base::getValue(), Base::getTypeInfo().getBitSize());
880 template <
typename ALLOC>
893 Base(typeInfo(bitSize), value)
895 if (bitSize <= 8 || bitSize > 16)
898 <<
" - invalid bit size '" << bitSize <<
"' for 'uint16_t' value!";
904 return Base::getTypeInfo().getBitSize();
909 writer.
writeBits(Base::getValue(), Base::getTypeInfo().getBitSize());
913 template <
typename ALLOC>
926 Base(typeInfo(bitSize), value)
928 if (bitSize <= 16 || bitSize > 32)
931 <<
" - invalid bit size '" << bitSize <<
"' for 'uint32_t' value!";
937 return Base::getTypeInfo().getBitSize();
942 writer.
writeBits(Base::getValue(), Base::getTypeInfo().getBitSize());
946 template <
typename ALLOC>
959 Base(typeInfo(bitSize), value)
964 <<
" - invalid bit size '" << bitSize <<
"' for 'uint64_t' value!";
970 return Base::getTypeInfo().getBitSize();
975 writer.
writeBits64(Base::getValue(), Base::getTypeInfo().getBitSize());
979 template <
typename ALLOC,
typename T>
982 template <
typename ALLOC>
995 Base(typeInfo(maxBitSize), value),
996 m_dynamicBitSize(dynamicBitSize)
1001 <<
" - invalid max bit size '" << maxBitSize <<
"' for 'int8_t' value!";
1004 if (dynamicBitSize > maxBitSize)
1007 << dynamicBitSize <<
"' is greater than max bit size '" << maxBitSize <<
"'!";
1013 return m_dynamicBitSize;
1022 uint8_t m_dynamicBitSize;
1025 template <
typename ALLOC>
1038 Base(typeInfo(maxBitSize), value),
1039 m_dynamicBitSize(dynamicBitSize)
1041 if (maxBitSize <= 8 || maxBitSize > 16)
1044 <<
" - invalid max bit size '" << maxBitSize <<
"' for 'int16_t' value!";
1047 if (dynamicBitSize > maxBitSize)
1050 << dynamicBitSize <<
"' is greater than max bit size '" << maxBitSize <<
"'!";
1056 return m_dynamicBitSize;
1065 uint8_t m_dynamicBitSize;
1068 template <
typename ALLOC>
1081 Base(typeInfo(maxBitSize), value),
1082 m_dynamicBitSize(dynamicBitSize)
1084 if (maxBitSize <= 16 || maxBitSize > 32)
1087 <<
" - invalid max bit size '" << maxBitSize <<
"' for 'int32_t' value!";
1090 if (dynamicBitSize > maxBitSize)
1093 << dynamicBitSize <<
"' is greater than max bit size '" << maxBitSize <<
"'!";
1099 return m_dynamicBitSize;
1108 uint8_t m_dynamicBitSize;
1111 template <
typename ALLOC>
1124 Base(typeInfo(maxBitSize), value),
1125 m_dynamicBitSize(dynamicBitSize)
1127 if (maxBitSize <= 32)
1130 <<
" - invalid max bit size '" << maxBitSize <<
"' for 'int64_t' value!";
1133 if (dynamicBitSize > maxBitSize)
1136 << dynamicBitSize <<
"' is greater than max bit size '" << maxBitSize <<
"'!";
1142 return m_dynamicBitSize;
1151 uint8_t m_dynamicBitSize;
1154 template <
typename ALLOC,
typename T>
1157 template <
typename ALLOC>
1170 Base(typeInfo(maxBitSize), value),
1171 m_dynamicBitSize(dynamicBitSize)
1176 <<
" - invalid max bit size '" << maxBitSize <<
"' for 'uint8_t' value!";
1179 if (dynamicBitSize > maxBitSize)
1182 << dynamicBitSize <<
"' is greater than max bit size '" << maxBitSize <<
"'!";
1188 return m_dynamicBitSize;
1193 writer.
writeBits(Base::getValue(), m_dynamicBitSize);
1197 uint8_t m_dynamicBitSize;
1200 template <
typename ALLOC>
1213 Base(typeInfo(maxBitSize), value),
1214 m_dynamicBitSize(dynamicBitSize)
1216 if (maxBitSize <= 8 || maxBitSize > 16)
1219 <<
" - invalid max bit size '" << maxBitSize <<
"' for 'uint16_t' value!";
1222 if (dynamicBitSize > maxBitSize)
1225 << dynamicBitSize <<
"' is greater than max bit size '" << maxBitSize <<
"'!";
1231 return m_dynamicBitSize;
1236 writer.
writeBits(Base::getValue(), m_dynamicBitSize);
1240 uint8_t m_dynamicBitSize;
1243 template <
typename ALLOC>
1256 Base(typeInfo(maxBitSize), value),
1257 m_dynamicBitSize(dynamicBitSize)
1259 if (maxBitSize <= 16 || maxBitSize > 32)
1262 <<
" - invalid max bit size '" << maxBitSize <<
"' for 'uint32_t' value!";
1265 if (dynamicBitSize > maxBitSize)
1268 << dynamicBitSize <<
"' is greater than max bit size '" << maxBitSize <<
"'!";
1274 return m_dynamicBitSize;
1279 writer.
writeBits(Base::getValue(), m_dynamicBitSize);
1283 uint8_t m_dynamicBitSize;
1286 template <
typename ALLOC>
1299 Base(typeInfo(maxBitSize), value),
1300 m_dynamicBitSize(dynamicBitSize)
1302 if (maxBitSize <= 32)
1305 <<
" - invalid max bit size '" << maxBitSize <<
"' for 'uint64_t' value!";
1308 if (dynamicBitSize > maxBitSize)
1311 << dynamicBitSize <<
"' is greater than max bit size '" << maxBitSize <<
"'!";
1317 return m_dynamicBitSize;
1322 writer.
writeBits64(Base::getValue(), m_dynamicBitSize);
1326 uint8_t m_dynamicBitSize;
1332 template <
typename ALLOC>
1362 template <
typename ALLOC>
1392 template <
typename ALLOC>
1422 template <
typename ALLOC>
1452 template <
typename ALLOC>
1482 template <
typename ALLOC>
1512 template <
typename ALLOC>
1542 template <
typename ALLOC>
1572 template <
typename ALLOC>
1602 template <
typename ALLOC,
typename T>
1606 static_assert(std::is_floating_point<T>::value,
"T must be a floating point type!");
1614 return static_cast<double>(
getValue());
1621 template <
typename ALLOC>
1656 template <
typename ALLOC>
1691 template <
typename ALLOC>
1726 template <
typename ALLOC>
1761 template <
typename ALLOC>
1801 template <
typename ALLOC>
1836 template <
typename ALLOC>
1837 IBasicReflectableConstPtr<ALLOC> getFieldFromObject(
const IBasicReflectable<ALLOC>&
object,
StringView name)
1839 const auto& typeInfo =
object.getTypeInfo();
1842 const auto& fields = typeInfo.getFields();
1843 auto fieldsIt = std::find_if(fields.begin(), fields.end(),
1844 [name](
const BasicFieldInfo<ALLOC>& fieldInfo) { return fieldInfo.schemaName == name; });
1845 if (fieldsIt != fields.end())
1847 return object.getField(name);
1854 template <
typename ALLOC>
1855 IBasicReflectablePtr<ALLOC> getFieldFromObject(IBasicReflectable<ALLOC>&
object,
StringView name)
1857 const auto& typeInfo =
object.getTypeInfo();
1860 const auto& fields = typeInfo.getFields();
1861 auto fieldsIt = std::find_if(fields.begin(), fields.end(),
1862 [name](
const BasicFieldInfo<ALLOC>& fieldInfo) { return fieldInfo.schemaName == name; });
1863 if (fieldsIt != fields.end())
1865 return object.getField(name);
1872 template <
typename ALLOC>
1873 IBasicReflectableConstPtr<ALLOC> getParameterFromObject(
const IBasicReflectable<ALLOC>&
object,
StringView name)
1875 const auto& typeInfo =
object.getTypeInfo();
1878 const auto& parameters = typeInfo.getParameters();
1879 auto parametersIt = std::find_if(
1880 parameters.begin(), parameters.end(), [name](
const BasicParameterInfo<ALLOC>& parameterInfo) {
1881 return parameterInfo.schemaName == name;
1883 if (parametersIt != parameters.end())
1885 return object.getParameter(name);
1892 template <
typename ALLOC>
1893 IBasicReflectablePtr<ALLOC> getParameterFromObject(IBasicReflectable<ALLOC>&
object,
StringView name)
1895 const auto& typeInfo =
object.getTypeInfo();
1898 const auto& parameters = typeInfo.getParameters();
1899 auto parametersIt = std::find_if(
1900 parameters.begin(), parameters.end(), [name](
const BasicParameterInfo<ALLOC>& parameterInfo) {
1901 return parameterInfo.schemaName == name;
1903 if (parametersIt != parameters.end())
1905 return object.getParameter(name);
1912 template <
typename ALLOC>
1913 IBasicReflectableConstPtr<ALLOC> callFunctionInObject(
const IBasicReflectable<ALLOC>&
object,
StringView name)
1915 const auto& typeInfo =
object.getTypeInfo();
1918 const auto& functions = typeInfo.getFunctions();
1919 auto functionsIt = std::find_if(
1920 functions.begin(), functions.end(), [name](
const BasicFunctionInfo<ALLOC>& functionInfo) {
1921 return functionInfo.schemaName == name;
1923 if (functionsIt != functions.end())
1925 return object.callFunction(name);
1932 template <
typename ALLOC>
1933 IBasicReflectablePtr<ALLOC> callFunctionInObject(IBasicReflectable<ALLOC>&
object,
StringView name)
1935 const auto& typeInfo =
object.getTypeInfo();
1938 const auto& functions = typeInfo.getFunctions();
1939 auto functionsIt = std::find_if(
1940 functions.begin(), functions.end(), [name](
const BasicFunctionInfo<ALLOC>& functionInfo) {
1941 return functionInfo.schemaName == name;
1943 if (functionsIt != functions.end())
1945 return object.callFunction(name);
1952 template <
typename ALLOC>
1953 IBasicReflectableConstPtr<ALLOC> getFromObject(
1954 const IBasicReflectable<ALLOC>&
object,
StringView path,
size_t pos)
1958 const size_t dotPos = path.find(
'.', pos);
1962 auto field = getFieldFromObject(
object, name);
1965 return isLast ? std::move(field) : getFromObject(*field, path, dotPos + 1);
1968 auto parameter = getParameterFromObject(
object, name);
1971 return isLast ? std::move(parameter) : getFromObject(*parameter, path, dotPos + 1);
1974 auto functionResult = callFunctionInObject(
object, name);
1977 return isLast ? std::move(functionResult) : getFromObject(*functionResult, path, dotPos + 1);
1980 catch (
const CppRuntimeException&)
1986 template <
typename ALLOC>
1987 IBasicReflectablePtr<ALLOC> getFromObject(IBasicReflectable<ALLOC>&
object,
StringView path,
size_t pos)
1991 const size_t dotPos = path.find(
'.', pos);
1995 auto field = getFieldFromObject(
object, name);
1998 return isLast ? std::move(field) : getFromObject(*field, path, dotPos + 1);
2001 auto parameter = getParameterFromObject(
object, name);
2004 return isLast ? std::move(parameter) : getFromObject(*parameter, path, dotPos + 1);
2007 auto functionResult = callFunctionInObject(
object, name);
2010 return isLast ? std::move(functionResult) : getFromObject(*functionResult, path, dotPos + 1);
2013 catch (
const CppRuntimeException&)
2024 template <
typename ALLOC>
2039 template <
typename ALLOC>
2066 template <
typename ALLOC>
2084 size_t bitSizeOf(
size_t bitPosition)
const override;
2101 bool getBool()
const override;
2102 int8_t
getInt8()
const override;
2116 int64_t
toInt()
const override;
2117 uint64_t
toUInt()
const override;
2127 template <
typename ALLOC>
2137 void resize(
size_t index)
override;
2150 template <
typename ALLOC,
typename RAW_ARRAY,
typename ELEMENT_REFLECTABLE>
2156 using ElementReflectable = ELEMENT_REFLECTABLE;
2161 using Base::operator[];
2165 Base(ElementReflectable::typeInfo(), allocator),
2166 m_rawArray(rawArray)
2171 return m_rawArray.size();
2176 if (index >=
size())
2180 <<
"' of size " <<
size() <<
"!";
2183 return std::allocate_shared<ElementReflectable>(
Base::get_allocator(), m_rawArray[index]);
2192 const RAW_ARRAY& m_rawArray;
2195 template <
typename ALLOC,
typename RAW_ARRAY,
typename ELEMENT_REFLECTABLE>
2201 using ElementReflectable = ELEMENT_REFLECTABLE;
2207 Base(ElementReflectable::typeInfo(), allocator),
2208 m_rawArray(rawArray)
2213 return m_rawArray.size();
2218 m_rawArray.resize(
size);
2223 if (index >=
size())
2227 <<
"' of size " <<
size() <<
"!";
2230 return std::allocate_shared<ElementReflectable>(
Base::get_allocator(), m_rawArray[index]);
2235 if (index >=
size())
2239 <<
"' of size " <<
size() <<
"!";
2242 return std::allocate_shared<ElementReflectable>(
Base::get_allocator(), m_rawArray[index]);
2247 if (index >=
size())
2251 <<
"' of size " <<
size() <<
"!";
2254 m_rawArray[index] = value.template get<typename RAW_ARRAY::value_type>();
2259 m_rawArray.push_back(value.template get<typename RAW_ARRAY::value_type>());
2273 RAW_ARRAY& m_rawArray;
2281 template <
typename ALLOC,
typename RAW_ARRAY,
typename ELEMENT_REFLECTABLE>
2287 using ElementReflectable = ELEMENT_REFLECTABLE;
2292 using Base::operator[];
2296 Base(ElementReflectable::typeInfo(bitSize), allocator),
2297 m_rawArray(rawArray)
2302 return m_rawArray.size();
2307 if (index >=
size())
2311 <<
"' of size " <<
size() <<
"!";
2314 return std::allocate_shared<ElementReflectable>(
2324 const RAW_ARRAY& m_rawArray;
2327 template <
typename ALLOC,
typename RAW_ARRAY,
typename ELEMENT_REFLECTABLE>
2333 using ElementReflectable = ELEMENT_REFLECTABLE;
2339 Base(ElementReflectable::typeInfo(bitSize), allocator),
2340 m_rawArray(rawArray)
2345 return m_rawArray.size();
2350 m_rawArray.resize(
size);
2355 if (index >=
size())
2359 <<
"' of size " <<
size() <<
"!";
2362 return std::allocate_shared<ElementReflectable>(
2368 if (index >=
size())
2372 <<
"' of size " <<
size() <<
"!";
2375 return std::allocate_shared<ElementReflectable>(
2381 if (index >=
size())
2385 <<
"' of size " <<
size() <<
"!";
2388 m_rawArray[index] = value.template get<typename RAW_ARRAY::value_type>();
2393 m_rawArray.push_back(value.template get<typename RAW_ARRAY::value_type>());
2407 RAW_ARRAY& m_rawArray;
2415 template <
typename ALLOC,
typename RAW_ARRAY,
typename ELEMENT_REFLECTABLE>
2421 using ElementReflectable = ELEMENT_REFLECTABLE;
2426 using Base::operator[];
2430 const ALLOC& allocator,
const RAW_ARRAY& rawArray, uint8_t maxBitSize, uint8_t dynamicBitSize) :
2431 Base(ElementReflectable::typeInfo(maxBitSize), allocator),
2432 m_rawArray(rawArray),
2433 m_maxBitSize(maxBitSize),
2434 m_dynamicBitSize(dynamicBitSize)
2439 return m_rawArray.size();
2444 if (index >=
size())
2448 <<
"' of size " <<
size() <<
"!";
2451 return std::allocate_shared<ElementReflectable>(
2461 const RAW_ARRAY& m_rawArray;
2462 const uint8_t m_maxBitSize;
2463 const uint8_t m_dynamicBitSize;
2466 template <
typename ALLOC,
typename RAW_ARRAY,
typename ELEMENT_REFLECTABLE>
2472 using ElementReflectable = ELEMENT_REFLECTABLE;
2478 const ALLOC& allocator, RAW_ARRAY& rawArray, uint8_t maxBitSize, uint8_t dynamicBitSize) :
2479 Base(ElementReflectable::typeInfo(maxBitSize), allocator),
2480 m_rawArray(rawArray),
2481 m_maxBitSize(maxBitSize),
2482 m_dynamicBitSize(dynamicBitSize)
2487 return m_rawArray.size();
2492 m_rawArray.resize(
size);
2497 if (index >=
size())
2501 <<
"' of size " <<
size() <<
"!";
2504 return std::allocate_shared<ElementReflectable>(
2510 if (index >=
size())
2514 <<
"' of size " <<
size() <<
"!";
2517 return std::allocate_shared<ElementReflectable>(
2523 if (index >=
size())
2527 <<
"' of size " <<
size() <<
"!";
2530 m_rawArray[index] = value.template get<typename RAW_ARRAY::value_type>();
2535 m_rawArray.push_back(value.template get<typename RAW_ARRAY::value_type>());
2549 RAW_ARRAY& m_rawArray;
2550 const uint8_t m_maxBitSize;
2551 const uint8_t m_dynamicBitSize;
2559 template <
typename ALLOC,
typename RAW_ARRAY>
2561 template <
typename ALLOC,
typename RAW_ARRAY>
2564 template <
typename ALLOC,
typename RAW_ARRAY>
2566 template <
typename ALLOC,
typename RAW_ARRAY>
2569 template <
typename ALLOC,
typename RAW_ARRAY>
2571 template <
typename ALLOC,
typename RAW_ARRAY>
2574 template <
typename ALLOC,
typename RAW_ARRAY>
2576 template <
typename ALLOC,
typename RAW_ARRAY>
2579 template <
typename ALLOC,
typename RAW_ARRAY>
2581 template <
typename ALLOC,
typename RAW_ARRAY>
2584 template <
typename ALLOC,
typename RAW_ARRAY>
2586 template <
typename ALLOC,
typename RAW_ARRAY>
2589 template <
typename ALLOC,
typename RAW_ARRAY>
2591 template <
typename ALLOC,
typename RAW_ARRAY>
2594 template <
typename ALLOC,
typename RAW_ARRAY>
2596 template <
typename ALLOC,
typename RAW_ARRAY>
2599 template <
typename ALLOC,
typename RAW_ARRAY>
2601 template <
typename ALLOC,
typename RAW_ARRAY>
2604 template <
typename ALLOC,
typename RAW_ARRAY>
2607 template <
typename ALLOC,
typename RAW_ARRAY>
2611 template <
typename ALLOC,
typename RAW_ARRAY>
2614 template <
typename ALLOC,
typename RAW_ARRAY>
2618 template <
typename ALLOC,
typename RAW_ARRAY>
2621 template <
typename ALLOC,
typename RAW_ARRAY>
2625 template <
typename ALLOC,
typename RAW_ARRAY>
2628 template <
typename ALLOC,
typename RAW_ARRAY>
2632 template <
typename ALLOC,
typename RAW_ARRAY>
2635 template <
typename ALLOC,
typename RAW_ARRAY>
2638 template <
typename ALLOC,
typename RAW_ARRAY>
2641 template <
typename ALLOC,
typename RAW_ARRAY>
2644 template <
typename ALLOC,
typename RAW_ARRAY>
2647 template <
typename ALLOC,
typename RAW_ARRAY>
2650 template <
typename ALLOC,
typename RAW_ARRAY>
2652 template <
typename ALLOC,
typename RAW_ARRAY>
2655 template <
typename ALLOC,
typename RAW_ARRAY>
2658 template <
typename ALLOC,
typename RAW_ARRAY>
2661 template <
typename ALLOC,
typename RAW_ARRAY>
2664 template <
typename ALLOC,
typename RAW_ARRAY>
2667 template <
typename ALLOC,
typename RAW_ARRAY>
2670 template <
typename ALLOC,
typename RAW_ARRAY>
2673 template <
typename ALLOC,
typename RAW_ARRAY>
2675 template <
typename ALLOC,
typename RAW_ARRAY>
2678 template <
typename ALLOC,
typename RAW_ARRAY>
2680 template <
typename ALLOC,
typename RAW_ARRAY>
2683 template <
typename ALLOC,
typename RAW_ARRAY>
2685 template <
typename ALLOC,
typename RAW_ARRAY>
2688 template <
typename ALLOC,
typename RAW_ARRAY>
2690 template <
typename ALLOC,
typename RAW_ARRAY>
2693 template <
typename ALLOC,
typename RAW_ARRAY>
2695 template <
typename ALLOC,
typename RAW_ARRAY>
2698 template <
typename ALLOC,
typename RAW_ARRAY>
2700 template <
typename ALLOC,
typename RAW_ARRAY>
2703 template <
typename ALLOC,
typename RAW_ARRAY>
2705 template <
typename ALLOC,
typename RAW_ARRAY>
2708 template <
typename ALLOC,
typename RAW_ARRAY>
2711 template <
typename ALLOC,
typename RAW_ARRAY>
2719 template <
typename ALLOC,
typename RAW_ARRAY>
2725 using ElementType =
typename RAW_ARRAY::value_type;
2730 using Base::operator[];
2734 Base(ElementType::typeInfo(), allocator),
2735 m_rawArray(rawArray)
2740 return m_rawArray.size();
2745 if (index >=
size())
2749 <<
"' of size " <<
size() <<
"!";
2761 const RAW_ARRAY& m_rawArray;
2764 template <
typename ALLOC,
typename RAW_ARRAY>
2770 using ElementType =
typename RAW_ARRAY::value_type;
2776 Base(ElementType::typeInfo(), allocator),
2777 m_rawArray(rawArray)
2782 return m_rawArray.size();
2787 m_rawArray.resize(
size);
2792 if (index >=
size())
2796 <<
"' of size " <<
size() <<
"!";
2804 if (index >=
size())
2808 <<
"' of size " <<
size() <<
"!";
2816 if (index >=
size())
2820 <<
"' of size " <<
size() <<
"!";
2823 m_rawArray[index] = value.template get<typename RAW_ARRAY::value_type>();
2828 m_rawArray.push_back(value.template get<typename RAW_ARRAY::value_type>());
2842 RAW_ARRAY& m_rawArray;
2848 template <
typename ALLOC,
typename RAW_ARRAY>
2854 using ElementType =
typename RAW_ARRAY::value_type;
2859 using Base::operator[];
2863 Base(ElementType::typeInfo(), allocator),
2864 m_rawArray(rawArray)
2869 return m_rawArray.size();
2874 if (index >=
size())
2878 <<
"' of size " <<
size() <<
"!";
2890 const RAW_ARRAY& m_rawArray;
2893 template <
typename ALLOC,
typename RAW_ARRAY>
2899 using ElementType =
typename RAW_ARRAY::value_type;
2900 using UnderlyingElementType =
typename ElementType::underlying_type;
2906 Base(ElementType::typeInfo(), allocator),
2907 m_rawArray(rawArray)
2912 return m_rawArray.size();
2917 m_rawArray.resize(
size);
2922 if (index >=
size())
2926 <<
"' of size " <<
size() <<
"!";
2934 if (index >=
size())
2938 <<
"' of size " <<
size() <<
"!";
2946 if (index >=
size())
2950 <<
"' of size " <<
size() <<
"!";
2953 if (value.template isType<ElementType>())
2955 m_rawArray[index] = value.template get<ElementType>();
2959 m_rawArray[index] = ElementType(value.template get<UnderlyingElementType>());
2965 if (value.template isType<ElementType>())
2967 m_rawArray.push_back(value.template get<ElementType>());
2971 m_rawArray.push_back(ElementType(value.template get<UnderlyingElementType>()));
2986 RAW_ARRAY& m_rawArray;
2992 template <
typename ALLOC,
typename RAW_ARRAY>
2998 using ElementType =
typename RAW_ARRAY::value_type;
3003 using Base::operator[];
3008 m_rawArray(rawArray)
3013 return m_rawArray.size();
3018 if (index >=
size())
3022 <<
"' of size " <<
size() <<
"!";
3034 const RAW_ARRAY& m_rawArray;
3037 template <
typename ALLOC,
typename RAW_ARRAY>
3043 using ElementType =
typename RAW_ARRAY::value_type;
3044 using UnderlyingElementType =
typename std::underlying_type<ElementType>::type;
3051 m_rawArray(rawArray)
3056 return m_rawArray.size();
3061 m_rawArray.resize(
size);
3066 if (index >=
size())
3070 <<
"' of size " <<
size() <<
"!";
3078 if (index >=
size())
3082 <<
"' of size " <<
size() <<
"!";
3090 if (index >=
size())
3094 <<
"' of size " <<
size() <<
"!";
3097 if (value.template isType<ElementType>())
3099 m_rawArray[index] = value.template get<ElementType>();
3103 m_rawArray[index] = valueToEnum<ElementType>(value.template get<UnderlyingElementType>());
3109 if (value.template isType<ElementType>())
3111 m_rawArray.push_back(value.template get<ElementType>());
3115 m_rawArray.push_back(valueToEnum<ElementType>(value.template get<UnderlyingElementType>()));
3130 RAW_ARRAY& m_rawArray;
3139 template <
typename T,
typename ALLOC =
typename T::allocator_type>
3148 m_object(allocator),
3149 m_reflectable(m_object.reflectable(allocator))
3154 return m_reflectable->getTypeInfo();
3159 return m_reflectable->isArray();
3164 m_reflectable->initializeChildren();
3169 m_reflectable->initialize(typeArguments);
3174 return m_reflectable->initializeOffsets(bitPosition);
3184 return m_reflectable->bitSizeOf(bitPosition);
3194 m_reflectable->write(writer);
3199 return m_reflectable->getField(name);
3204 return m_reflectable->getField(name);
3209 return m_reflectable->createField(name);
3214 m_reflectable->setField(name, value);
3219 return m_reflectable->getParameter(name);
3224 return m_reflectable->getParameter(name);
3229 return m_reflectable->callFunction(name);
3234 return m_reflectable->callFunction(name);
3239 return m_reflectable->getChoice();
3244 return m_reflectable->find(path);
3249 return m_reflectable->find(path);
3254 return m_reflectable->operator[](path);
3259 return m_reflectable->operator[](path);
3264 return m_reflectable->size();
3269 m_reflectable->resize(
size);
3274 return m_reflectable->at(index);
3279 return m_reflectable->at(index);
3284 return m_reflectable->operator[](index);
3289 return m_reflectable->operator[](index);
3294 m_reflectable->setAt(value, index);
3299 m_reflectable->append(value);
3304 return m_reflectable->getAnyValue(allocator);
3309 return m_reflectable->getAnyValue(allocator);
3325 return m_reflectable->getBool();
3329 return m_reflectable->getInt8();
3333 return m_reflectable->getInt16();
3337 return m_reflectable->getInt32();
3341 return m_reflectable->getInt64();
3345 return m_reflectable->getUInt8();
3349 return m_reflectable->getUInt16();
3353 return m_reflectable->getUInt32();
3357 return m_reflectable->getUInt64();
3361 return m_reflectable->getFloat();
3365 return m_reflectable->getDouble();
3369 return m_reflectable->getBytes();
3373 return m_reflectable->getStringView();
3377 return m_reflectable->getBitBuffer();
3383 return m_reflectable->toInt();
3387 return m_reflectable->toUInt();
3391 return m_reflectable->toDouble();
3395 return m_reflectable->toString(allocator);
3404 return m_reflectable->parsingInfo();
3417 template <
typename ALLOC>
3423 return std::allocate_shared<BoolReflectable<ALLOC>>(allocator, value);
3428 return std::allocate_shared<Int8Reflectable<ALLOC>>(allocator, value);
3433 return std::allocate_shared<Int16Reflectable<ALLOC>>(allocator, value);
3438 return std::allocate_shared<Int32Reflectable<ALLOC>>(allocator, value);
3443 return std::allocate_shared<Int64Reflectable<ALLOC>>(allocator, value);
3448 return std::allocate_shared<UInt8Reflectable<ALLOC>>(allocator, value);
3453 return std::allocate_shared<UInt16Reflectable<ALLOC>>(allocator, value);
3458 return std::allocate_shared<UInt32Reflectable<ALLOC>>(allocator, value);
3463 return std::allocate_shared<UInt64Reflectable<ALLOC>>(allocator, value);
3466 template <typename T, typename std::enable_if<std::is_signed<T>::value,
int>::type = 0>
3468 T value, uint8_t bitSize,
const ALLOC& allocator = ALLOC())
3470 return std::allocate_shared<FixedSignedBitFieldReflectable<ALLOC, T>>(allocator, value, bitSize);
3473 template <typename T, typename std::enable_if<std::is_unsigned<T>::value,
int>::type = 0>
3475 T value, uint8_t bitSize,
const ALLOC& allocator = ALLOC())
3477 return std::allocate_shared<FixedUnsignedBitFieldReflectable<ALLOC, T>>(allocator, value, bitSize);
3480 template <typename T, typename std::enable_if<std::is_signed<T>::value,
int>::type = 0>
3482 T value, uint8_t maxBitSize, uint8_t dynamicBitSize,
const ALLOC& allocator = ALLOC())
3484 return std::allocate_shared<DynamicSignedBitFieldReflectable<ALLOC, T>>(
3485 allocator, value, maxBitSize, dynamicBitSize);
3490 int64_t value, uint8_t maxBitSize,
const ALLOC& allocator = ALLOC())
3492 if (maxBitSize != 64)
3495 <<
"maxBitSize != 64 for referenced dynamic bit field!";
3501 template <typename T, typename std::enable_if<std::is_unsigned<T>::value,
int>::type = 0>
3503 T value, uint8_t maxBitSize, uint8_t dynamicBitSize,
const ALLOC& allocator = ALLOC())
3505 return std::allocate_shared<DynamicUnsignedBitFieldReflectable<ALLOC, T>>(
3506 allocator, value, maxBitSize, dynamicBitSize);
3511 uint64_t value, uint8_t maxBitSize,
const ALLOC& allocator = ALLOC())
3513 if (maxBitSize != 64)
3516 <<
"maxBitSize != 64 for referenced dynamic bit field!";
3524 return std::allocate_shared<VarInt16Reflectable<ALLOC>>(allocator, value);
3529 return std::allocate_shared<VarInt32Reflectable<ALLOC>>(allocator, value);
3534 return std::allocate_shared<VarInt64Reflectable<ALLOC>>(allocator, value);
3539 return std::allocate_shared<VarIntReflectable<ALLOC>>(allocator, value);
3544 return std::allocate_shared<VarUInt16Reflectable<ALLOC>>(allocator, value);
3549 return std::allocate_shared<VarUInt32Reflectable<ALLOC>>(allocator, value);
3554 return std::allocate_shared<VarUInt64Reflectable<ALLOC>>(allocator, value);
3559 return std::allocate_shared<VarUIntReflectable<ALLOC>>(allocator, value);
3564 return std::allocate_shared<VarSizeReflectable<ALLOC>>(allocator, value);
3569 return std::allocate_shared<Float16Reflectable<ALLOC>>(allocator, value);
3574 return std::allocate_shared<Float32Reflectable<ALLOC>>(allocator, value);
3579 return std::allocate_shared<Float64Reflectable<ALLOC>>(allocator, value);
3584 return std::allocate_shared<BytesReflectable<ALLOC>>(allocator, value);
3589 return std::allocate_shared<StringReflectable<ALLOC>>(allocator, value);
3595 return std::allocate_shared<BitBufferReflectable<ALLOC>>(allocator, value);
3598 template <
typename RAW_ARRAY>
3600 const RAW_ARRAY& rawArray,
const ALLOC& allocator = ALLOC())
3602 return std::allocate_shared<BoolReflectableConstArray<ALLOC, RAW_ARRAY>>(
3603 allocator, allocator, rawArray);
3606 template <
typename RAW_ARRAY>
3609 return std::allocate_shared<BoolReflectableArray<ALLOC, RAW_ARRAY>>(allocator, allocator, rawArray);
3612 template <
typename RAW_ARRAY>
3614 const RAW_ARRAY& rawArray,
const ALLOC& allocator = ALLOC())
3616 return std::allocate_shared<Int8ReflectableConstArray<ALLOC, RAW_ARRAY>>(
3617 allocator, allocator, rawArray);
3620 template <
typename RAW_ARRAY>
3623 return std::allocate_shared<Int8ReflectableArray<ALLOC, RAW_ARRAY>>(allocator, allocator, rawArray);
3626 template <
typename RAW_ARRAY>
3628 const RAW_ARRAY& rawArray,
const ALLOC& allocator = ALLOC())
3630 return std::allocate_shared<Int16ReflectableConstArray<ALLOC, RAW_ARRAY>>(
3631 allocator, allocator, rawArray);
3634 template <
typename RAW_ARRAY>
3637 return std::allocate_shared<Int16ReflectableArray<ALLOC, RAW_ARRAY>>(allocator, allocator, rawArray);
3640 template <
typename RAW_ARRAY>
3642 const RAW_ARRAY& rawArray,
const ALLOC& allocator = ALLOC())
3644 return std::allocate_shared<Int32ReflectableConstArray<ALLOC, RAW_ARRAY>>(
3645 allocator, allocator, rawArray);
3648 template <
typename RAW_ARRAY>
3651 return std::allocate_shared<Int32ReflectableArray<ALLOC, RAW_ARRAY>>(allocator, allocator, rawArray);
3654 template <
typename RAW_ARRAY>
3656 const RAW_ARRAY& rawArray,
const ALLOC& allocator = ALLOC())
3658 return std::allocate_shared<Int64ReflectableConstArray<ALLOC, RAW_ARRAY>>(
3659 allocator, allocator, rawArray);
3662 template <
typename RAW_ARRAY>
3665 return std::allocate_shared<Int64ReflectableArray<ALLOC, RAW_ARRAY>>(allocator, allocator, rawArray);
3668 template <
typename RAW_ARRAY>
3670 const RAW_ARRAY& rawArray,
const ALLOC& allocator = ALLOC())
3672 return std::allocate_shared<UInt8ReflectableConstArray<ALLOC, RAW_ARRAY>>(
3673 allocator, allocator, rawArray);
3676 template <
typename RAW_ARRAY>
3679 return std::allocate_shared<UInt8ReflectableArray<ALLOC, RAW_ARRAY>>(allocator, allocator, rawArray);
3682 template <
typename RAW_ARRAY>
3684 const RAW_ARRAY& rawArray,
const ALLOC& allocator = ALLOC())
3686 return std::allocate_shared<UInt16ReflectableConstArray<ALLOC, RAW_ARRAY>>(
3687 allocator, allocator, rawArray);
3690 template <
typename RAW_ARRAY>
3693 return std::allocate_shared<UInt16ReflectableArray<ALLOC, RAW_ARRAY>>(allocator, allocator, rawArray);
3696 template <
typename RAW_ARRAY>
3698 const RAW_ARRAY& rawArray,
const ALLOC& allocator = ALLOC())
3700 return std::allocate_shared<UInt32ReflectableConstArray<ALLOC, RAW_ARRAY>>(
3701 allocator, allocator, rawArray);
3704 template <
typename RAW_ARRAY>
3707 return std::allocate_shared<UInt32ReflectableArray<ALLOC, RAW_ARRAY>>(allocator, allocator, rawArray);
3710 template <
typename RAW_ARRAY>
3712 const RAW_ARRAY& rawArray,
const ALLOC& allocator = ALLOC())
3714 return std::allocate_shared<UInt64ReflectableConstArray<ALLOC, RAW_ARRAY>>(
3715 allocator, allocator, rawArray);
3718 template <
typename RAW_ARRAY>
3721 return std::allocate_shared<UInt64ReflectableArray<ALLOC, RAW_ARRAY>>(allocator, allocator, rawArray);
3724 template <
typename RAW_ARRAY>
3726 const RAW_ARRAY& rawArray, uint8_t bitSize,
const ALLOC& allocator = ALLOC())
3728 return std::allocate_shared<FixedSignedBitFieldReflectableConstArray<ALLOC, RAW_ARRAY>>(
3729 allocator, allocator, rawArray, bitSize);
3732 template <
typename RAW_ARRAY>
3734 RAW_ARRAY& rawArray, uint8_t bitSize,
const ALLOC& allocator = ALLOC())
3736 return std::allocate_shared<FixedSignedBitFieldReflectableArray<ALLOC, RAW_ARRAY>>(
3737 allocator, allocator, rawArray, bitSize);
3740 template <
typename RAW_ARRAY>
3742 const RAW_ARRAY& rawArray, uint8_t bitSize,
const ALLOC& allocator = ALLOC())
3744 return std::allocate_shared<FixedUnsignedBitFieldReflectableConstArray<ALLOC, RAW_ARRAY>>(
3745 allocator, allocator, rawArray, bitSize);
3748 template <
typename RAW_ARRAY>
3750 RAW_ARRAY& rawArray, uint8_t bitSize,
const ALLOC& allocator = ALLOC())
3752 return std::allocate_shared<FixedUnsignedBitFieldReflectableArray<ALLOC, RAW_ARRAY>>(
3753 allocator, allocator, rawArray, bitSize);
3756 template <
typename RAW_ARRAY>
3758 uint8_t maxBitSize, uint8_t dynamicBitSize,
const ALLOC& allocator = ALLOC())
3760 return std::allocate_shared<DynamicSignedBitFieldReflectableConstArray<ALLOC, RAW_ARRAY>>(
3761 allocator, allocator, rawArray, maxBitSize, dynamicBitSize);
3764 template <
typename RAW_ARRAY>
3766 RAW_ARRAY& rawArray, uint8_t maxBitSize, uint8_t dynamicBitSize,
const ALLOC& allocator = ALLOC())
3768 return std::allocate_shared<DynamicSignedBitFieldReflectableArray<ALLOC, RAW_ARRAY>>(
3769 allocator, allocator, rawArray, maxBitSize, dynamicBitSize);
3772 template <
typename RAW_ARRAY>
3774 uint8_t maxBitSize, uint8_t dynamicBitSize,
const ALLOC& allocator = ALLOC())
3776 return std::allocate_shared<DynamicUnsignedBitFieldReflectableConstArray<ALLOC, RAW_ARRAY>>(
3777 allocator, allocator, rawArray, maxBitSize, dynamicBitSize);
3780 template <
typename RAW_ARRAY>
3782 RAW_ARRAY& rawArray, uint8_t maxBitSize, uint8_t dynamicBitSize,
const ALLOC& allocator = ALLOC())
3784 return std::allocate_shared<DynamicUnsignedBitFieldReflectableArray<ALLOC, RAW_ARRAY>>(
3785 allocator, allocator, rawArray, maxBitSize, dynamicBitSize);
3788 template <
typename RAW_ARRAY>
3790 const RAW_ARRAY& rawArray,
const ALLOC& allocator = ALLOC())
3792 return std::allocate_shared<VarInt16ReflectableConstArray<ALLOC, RAW_ARRAY>>(
3793 allocator, allocator, rawArray);
3796 template <
typename RAW_ARRAY>
3799 return std::allocate_shared<VarInt16ReflectableArray<ALLOC, RAW_ARRAY>>(allocator, allocator, rawArray);
3802 template <
typename RAW_ARRAY>
3804 const RAW_ARRAY& rawArray,
const ALLOC& allocator = ALLOC())
3806 return std::allocate_shared<VarInt32ReflectableConstArray<ALLOC, RAW_ARRAY>>(
3807 allocator, allocator, rawArray);
3810 template <
typename RAW_ARRAY>
3813 return std::allocate_shared<VarInt32ReflectableArray<ALLOC, RAW_ARRAY>>(allocator, allocator, rawArray);
3816 template <
typename RAW_ARRAY>
3818 const RAW_ARRAY& rawArray,
const ALLOC& allocator = ALLOC())
3820 return std::allocate_shared<VarInt64ReflectableConstArray<ALLOC, RAW_ARRAY>>(
3821 allocator, allocator, rawArray);
3824 template <
typename RAW_ARRAY>
3827 return std::allocate_shared<VarInt64ReflectableArray<ALLOC, RAW_ARRAY>>(allocator, allocator, rawArray);
3830 template <
typename RAW_ARRAY>
3832 const RAW_ARRAY& rawArray,
const ALLOC& allocator = ALLOC())
3834 return std::allocate_shared<VarIntReflectableConstArray<ALLOC, RAW_ARRAY>>(
3835 allocator, allocator, rawArray);
3838 template <
typename RAW_ARRAY>
3841 return std::allocate_shared<VarIntReflectableArray<ALLOC, RAW_ARRAY>>(allocator, allocator, rawArray);
3844 template <
typename RAW_ARRAY>
3846 const RAW_ARRAY& rawArray,
const ALLOC& allocator = ALLOC())
3848 return std::allocate_shared<VarUInt16ReflectableConstArray<ALLOC, RAW_ARRAY>>(
3849 allocator, allocator, rawArray);
3852 template <
typename RAW_ARRAY>
3855 return std::allocate_shared<VarUInt16ReflectableArray<ALLOC, RAW_ARRAY>>(
3856 allocator, allocator, rawArray);
3859 template <
typename RAW_ARRAY>
3861 const RAW_ARRAY& rawArray,
const ALLOC& allocator = ALLOC())
3863 return std::allocate_shared<VarUInt32ReflectableConstArray<ALLOC, RAW_ARRAY>>(
3864 allocator, allocator, rawArray);
3867 template <
typename RAW_ARRAY>
3870 return std::allocate_shared<VarUInt32ReflectableArray<ALLOC, RAW_ARRAY>>(
3871 allocator, allocator, rawArray);
3874 template <
typename RAW_ARRAY>
3876 const RAW_ARRAY& rawArray,
const ALLOC& allocator = ALLOC())
3878 return std::allocate_shared<VarUInt64ReflectableConstArray<ALLOC, RAW_ARRAY>>(
3879 allocator, allocator, rawArray);
3882 template <
typename RAW_ARRAY>
3885 return std::allocate_shared<VarUInt64ReflectableArray<ALLOC, RAW_ARRAY>>(
3886 allocator, allocator, rawArray);
3889 template <
typename RAW_ARRAY>
3891 const RAW_ARRAY& rawArray,
const ALLOC& allocator = ALLOC())
3893 return std::allocate_shared<VarUIntReflectableConstArray<ALLOC, RAW_ARRAY>>(
3894 allocator, allocator, rawArray);
3897 template <
typename RAW_ARRAY>
3900 return std::allocate_shared<VarUIntReflectableArray<ALLOC, RAW_ARRAY>>(allocator, allocator, rawArray);
3903 template <
typename RAW_ARRAY>
3905 const RAW_ARRAY& rawArray,
const ALLOC& allocator = ALLOC())
3907 return std::allocate_shared<VarSizeReflectableConstArray<ALLOC, RAW_ARRAY>>(
3908 allocator, allocator, rawArray);
3911 template <
typename RAW_ARRAY>
3914 return std::allocate_shared<VarSizeReflectableArray<ALLOC, RAW_ARRAY>>(allocator, allocator, rawArray);
3917 template <
typename RAW_ARRAY>
3919 const RAW_ARRAY& rawArray,
const ALLOC& allocator = ALLOC())
3921 return std::allocate_shared<Float16ReflectableConstArray<ALLOC, RAW_ARRAY>>(
3922 allocator, allocator, rawArray);
3925 template <
typename RAW_ARRAY>
3928 return std::allocate_shared<Float16ReflectableArray<ALLOC, RAW_ARRAY>>(allocator, allocator, rawArray);
3931 template <
typename RAW_ARRAY>
3933 const RAW_ARRAY& rawArray,
const ALLOC& allocator = ALLOC())
3935 return std::allocate_shared<Float32ReflectableConstArray<ALLOC, RAW_ARRAY>>(
3936 allocator, allocator, rawArray);
3939 template <
typename RAW_ARRAY>
3942 return std::allocate_shared<Float32ReflectableArray<ALLOC, RAW_ARRAY>>(allocator, allocator, rawArray);
3945 template <
typename RAW_ARRAY>
3947 const RAW_ARRAY& rawArray,
const ALLOC& allocator = ALLOC())
3949 return std::allocate_shared<Float64ReflectableConstArray<ALLOC, RAW_ARRAY>>(
3950 allocator, allocator, rawArray);
3953 template <
typename RAW_ARRAY>
3956 return std::allocate_shared<Float64ReflectableArray<ALLOC, RAW_ARRAY>>(allocator, allocator, rawArray);
3959 template <
typename RAW_ARRAY>
3961 const RAW_ARRAY& rawArray,
const ALLOC& allocator = ALLOC())
3963 return std::allocate_shared<BytesReflectableConstArray<ALLOC, RAW_ARRAY>>(
3964 allocator, allocator, rawArray);
3967 template <
typename RAW_ARRAY>
3970 return std::allocate_shared<BytesReflectableArray<ALLOC, RAW_ARRAY>>(allocator, allocator, rawArray);
3973 template <
typename RAW_ARRAY>
3975 const RAW_ARRAY& rawArray,
const ALLOC& allocator = ALLOC())
3977 return std::allocate_shared<StringReflectableConstArray<ALLOC, RAW_ARRAY>>(
3978 allocator, allocator, rawArray);
3981 template <
typename RAW_ARRAY>
3984 return std::allocate_shared<StringReflectableArray<ALLOC, RAW_ARRAY>>(allocator, allocator, rawArray);
3987 template <
typename RAW_ARRAY>
3989 const RAW_ARRAY& rawArray,
const ALLOC& allocator = ALLOC())
3991 return std::allocate_shared<BitBufferReflectableConstArray<ALLOC, RAW_ARRAY>>(
3992 allocator, allocator, rawArray);
3995 template <
typename RAW_ARRAY>
3998 return std::allocate_shared<BitBufferReflectableArray<ALLOC, RAW_ARRAY>>(
3999 allocator, allocator, rawArray);
4002 template <
typename RAW_ARRAY>
4004 const RAW_ARRAY& rawArray,
const ALLOC& allocator = ALLOC())
4006 return std::allocate_shared<CompoundReflectableConstArray<ALLOC, RAW_ARRAY>>(
4007 allocator, allocator, rawArray);
4010 template <
typename RAW_ARRAY>
4013 return std::allocate_shared<CompoundReflectableArray<ALLOC, RAW_ARRAY>>(allocator, allocator, rawArray);
4016 template <
typename RAW_ARRAY>
4018 const RAW_ARRAY& rawArray,
const ALLOC& allocator = ALLOC())
4020 return std::allocate_shared<BitmaskReflectableConstArray<ALLOC, RAW_ARRAY>>(
4021 allocator, allocator, rawArray);
4024 template <
typename RAW_ARRAY>
4027 return std::allocate_shared<BitmaskReflectableArray<ALLOC, RAW_ARRAY>>(allocator, allocator, rawArray);
4030 template <
typename RAW_ARRAY>
4032 const RAW_ARRAY& rawArray,
const ALLOC& allocator = ALLOC())
4034 return std::allocate_shared<EnumReflectableConstArray<ALLOC, RAW_ARRAY>>(
4035 allocator, allocator, rawArray);
4038 template <
typename RAW_ARRAY>
4041 return std::allocate_shared<EnumReflectableArray<ALLOC, RAW_ARRAY>>(allocator, allocator, rawArray);
4048 template <
typename ALLOC>
4050 m_typeInfo(typeInfo)
4053 template <
typename ALLOC>
4056 template <
typename ALLOC>
4062 template <
typename ALLOC>
4068 template <
typename ALLOC>
4071 throw CppRuntimeException(
"Type '") << getTypeInfo().getSchemaName() <<
"' is not a compound type!";
4074 template <
typename ALLOC>
4077 throw CppRuntimeException(
"Type '") << getTypeInfo().getSchemaName() <<
"' has no type arguments!";
4080 template <
typename ALLOC>
4083 throw CppRuntimeException(
"Type '") << getTypeInfo().getSchemaName() <<
"' is not a compound type!";
4086 template <
typename ALLOC>
4092 template <
typename ALLOC>
4095 throw CppRuntimeException(
"Type '") << getTypeInfo().getSchemaName() <<
"' is not implemented!";
4098 template <
typename ALLOC>
4104 template <
typename ALLOC>
4107 throw CppRuntimeException(
"Type '") << getTypeInfo().getSchemaName() <<
"' is not implemented!";
4110 template <
typename ALLOC>
4113 throw CppRuntimeException(
"Type '") << getTypeInfo().getSchemaName() <<
"' has no fields to get!";
4116 template <
typename ALLOC>
4119 throw CppRuntimeException(
"Type '") << getTypeInfo().getSchemaName() <<
"' has no fields to get!";
4122 template <
typename ALLOC>
4125 throw CppRuntimeException(
"Type '") << getTypeInfo().getSchemaName() <<
"' has no fields to create!";
4128 template <
typename ALLOC>
4131 throw CppRuntimeException(
"Type '") << getTypeInfo().getSchemaName() <<
"' has no fields to set!";
4134 template <
typename ALLOC>
4137 throw CppRuntimeException(
"Type '") << getTypeInfo().getSchemaName() <<
"' has no parameters to get!";
4140 template <
typename ALLOC>
4143 throw CppRuntimeException(
"Type '") << getTypeInfo().getSchemaName() <<
"' has no parameters to get!";
4146 template <
typename ALLOC>
4149 throw CppRuntimeException(
"Type '") << getTypeInfo().getSchemaName() <<
"' has no functions to call!";
4152 template <
typename ALLOC>
4155 throw CppRuntimeException(
"Type '") << getTypeInfo().getSchemaName() <<
"' has no functions to call!";
4158 template <
typename ALLOC>
4161 throw CppRuntimeException(
"Type '") << getTypeInfo().getSchemaName() <<
"' is neither choice nor union!";
4164 template <
typename ALLOC>
4167 return detail::getFromObject(*
this, path, 0);
4170 template <
typename ALLOC>
4173 return detail::getFromObject(*
this, path, 0);
4176 template <
typename ALLOC>
4182 template <
typename ALLOC>
4188 template <
typename ALLOC>
4191 throw CppRuntimeException(
"Type '") << getTypeInfo().getSchemaName() <<
"' is not an array!";
4194 template <
typename ALLOC>
4197 throw CppRuntimeException(
"Type '") << getTypeInfo().getSchemaName() <<
"' is not an array!";
4200 template <
typename ALLOC>
4203 throw CppRuntimeException(
"Type '") << getTypeInfo().getSchemaName() <<
"' is not an array!";
4206 template <
typename ALLOC>
4209 throw CppRuntimeException(
"Type '") << getTypeInfo().getSchemaName() <<
"' is not an array!";
4212 template <
typename ALLOC>
4215 throw CppRuntimeException(
"Type '") << getTypeInfo().getSchemaName() <<
"' is not an array!";
4218 template <
typename ALLOC>
4221 throw CppRuntimeException(
"Type '") << getTypeInfo().getSchemaName() <<
"' is not an array!";
4224 template <
typename ALLOC>
4227 throw CppRuntimeException(
"Type '") << getTypeInfo().getSchemaName() <<
"' is not an array!";
4230 template <
typename ALLOC>
4233 throw CppRuntimeException(
"Type '") << getTypeInfo().getSchemaName() <<
"' is not an array!";
4236 template <
typename ALLOC>
4239 throw CppRuntimeException(
"Type '") << getTypeInfo().getSchemaName() <<
"' is not implemented!";
4242 template <
typename ALLOC>
4245 throw CppRuntimeException(
"Type '") << getTypeInfo().getSchemaName() <<
"' is not implemented!";
4248 template <
typename ALLOC>
4251 return getAnyValue(ALLOC());
4254 template <
typename ALLOC>
4257 return getAnyValue(ALLOC());
4260 template <
typename ALLOC>
4263 throw CppRuntimeException(
"'") << getTypeInfo().getSchemaName() <<
"' is not boolean type!";
4266 template <
typename ALLOC>
4272 template <
typename ALLOC>
4275 throw CppRuntimeException(
"'") << getTypeInfo().getSchemaName() <<
"' is not int16 type!";
4278 template <
typename ALLOC>
4281 throw CppRuntimeException(
"'") << getTypeInfo().getSchemaName() <<
"' is not int32 type!";
4284 template <
typename ALLOC>
4287 throw CppRuntimeException(
"'") << getTypeInfo().getSchemaName() <<
"' is not int64 type!";
4290 template <
typename ALLOC>
4293 throw CppRuntimeException(
"'") << getTypeInfo().getSchemaName() <<
"' is not uint8 type!";
4296 template <
typename ALLOC>
4299 throw CppRuntimeException(
"'") << getTypeInfo().getSchemaName() <<
"' is not uint16 type!";
4302 template <
typename ALLOC>
4305 throw CppRuntimeException(
"'") << getTypeInfo().getSchemaName() <<
"' is not uint32 type!";
4308 template <
typename ALLOC>
4311 throw CppRuntimeException(
"'") << getTypeInfo().getSchemaName() <<
"' is not uint64 type!";
4314 template <
typename ALLOC>
4317 throw CppRuntimeException(
"'") << getTypeInfo().getSchemaName() <<
"' is not float type!";
4320 template <
typename ALLOC>
4323 throw CppRuntimeException(
"'") << getTypeInfo().getSchemaName() <<
"' is not double type!";
4326 template <
typename ALLOC>
4329 throw CppRuntimeException(
"'") << getTypeInfo().getSchemaName() <<
"' is not bytes type!";
4332 template <
typename ALLOC>
4335 throw CppRuntimeException(
"'") << getTypeInfo().getSchemaName() <<
"' is not string type!";
4338 template <
typename ALLOC>
4341 throw CppRuntimeException(
"'") << getTypeInfo().getSchemaName() <<
"' is not an extern type!";
4344 template <
typename ALLOC>
4348 << getTypeInfo().getSchemaName() <<
"' to signed integer is not available!";
4351 template <
typename ALLOC>
4355 << getTypeInfo().getSchemaName() <<
"' to unsigned integer is not available!";
4358 template <
typename ALLOC>
4362 << getTypeInfo().getSchemaName() <<
"' to double is not available!";
4365 template <
typename ALLOC>
4369 << getTypeInfo().getSchemaName() <<
"' to string is not available!";
4372 template <
typename ALLOC>
4378 template <
typename ALLOC>
4382 << getTypeInfo().getSchemaName() <<
"'!";
4385 template <
typename ALLOC>
4388 throw CppRuntimeException(
"Reflectable '") << getTypeInfo().getSchemaName() <<
"' is constant!";
4391 template <
typename ALLOC>
4394 throw CppRuntimeException(
"Reflectable '") << getTypeInfo().getSchemaName() <<
"' is constant!";
4397 template <
typename ALLOC>
4400 throw CppRuntimeException(
"Reflectable '") << getTypeInfo().getSchemaName() <<
"' is constant!";
4403 template <
typename ALLOC>
4406 throw CppRuntimeException(
"Reflectable '") << getTypeInfo().getSchemaName() <<
"' is constant!";
4409 template <
typename ALLOC>
4412 throw CppRuntimeException(
"Reflectable '") << getTypeInfo().getSchemaName() <<
"' is constant!";
4415 template <
typename ALLOC>
4418 throw CppRuntimeException(
"Reflectable '") << getTypeInfo().getSchemaName() <<
"' is constant!";
4421 template <
typename ALLOC>
4424 throw CppRuntimeException(
"Reflectable '") << getTypeInfo().getSchemaName() <<
"' is constant!";
4427 template <
typename ALLOC>
4430 throw CppRuntimeException(
"Reflectable '") << getTypeInfo().getSchemaName() <<
"' is constant!";
4433 template <
typename ALLOC>
4436 throw CppRuntimeException(
"Reflectable is an array '") << getTypeInfo().getSchemaName() <<
"[]'!";
4439 template <
typename ALLOC>
4442 throw CppRuntimeException(
"Reflectable is an array '") << getTypeInfo().getSchemaName() <<
"[]'!";
4445 template <
typename ALLOC>
4448 throw CppRuntimeException(
"Reflectable is an array '") << getTypeInfo().getSchemaName() <<
"[]'!";
4451 template <
typename ALLOC>
4454 throw CppRuntimeException(
"Reflectable is an array '") << getTypeInfo().getSchemaName() <<
"[]'!";
4457 template <
typename ALLOC>
4460 throw CppRuntimeException(
"Reflectable is an array '") << getTypeInfo().getSchemaName() <<
"[]'!";
4463 template <
typename ALLOC>
4466 throw CppRuntimeException(
"Reflectable is an array '") << getTypeInfo().getSchemaName() <<
"[]'!";
4469 template <
typename ALLOC>
4472 throw CppRuntimeException(
"Reflectable is an array '") << getTypeInfo().getSchemaName() <<
"[]'!";
4475 template <
typename ALLOC>
4478 throw CppRuntimeException(
"Reflectable is an array '") << getTypeInfo().getSchemaName() <<
"[]'!";
4481 template <
typename ALLOC>
4484 throw CppRuntimeException(
"Reflectable is an array '") << getTypeInfo().getSchemaName() <<
"[]'!";
4487 template <
typename ALLOC>
4490 throw CppRuntimeException(
"Reflectable is an array '") << getTypeInfo().getSchemaName() <<
"[]'!";
4493 template <
typename ALLOC>
4496 throw CppRuntimeException(
"Reflectable is an array '") << getTypeInfo().getSchemaName() <<
"[]'!";
4499 template <
typename ALLOC>
4502 throw CppRuntimeException(
"Reflectable is an array '") << getTypeInfo().getSchemaName() <<
"[]'!";
4505 template <
typename ALLOC>
4508 throw CppRuntimeException(
"Reflectable is an array '") << getTypeInfo().getSchemaName() <<
"[]'!";
4511 template <
typename ALLOC>
4514 throw CppRuntimeException(
"Reflectable is an array '") << getTypeInfo().getSchemaName() <<
"[]'!";
4517 template <
typename ALLOC>
4520 return this->at(index);
4523 template <
typename ALLOC>
4526 return this->at(index);
4529 template <
typename ALLOC>
4532 throw CppRuntimeException(
"Reflectable is an array '") << getTypeInfo().getSchemaName() <<
"[]'!";
4535 template <
typename ALLOC>
4538 throw CppRuntimeException(
"Reflectable is an array '") << getTypeInfo().getSchemaName() <<
"[]'!";
4541 template <
typename ALLOC>
4544 throw CppRuntimeException(
"Reflectable is an array '") << getTypeInfo().getSchemaName() <<
"[]'!";
4547 template <
typename ALLOC>
4550 throw CppRuntimeException(
"Reflectable is an array '") << getTypeInfo().getSchemaName() <<
"[]'!";
4553 template <
typename ALLOC>
4556 throw CppRuntimeException(
"Reflectable is an array '") << getTypeInfo().getSchemaName() <<
"[]'!";
4559 template <
typename ALLOC>
4562 throw CppRuntimeException(
"Reflectable is an array '") << getTypeInfo().getSchemaName() <<
"[]'!";
4565 template <
typename ALLOC>
4568 throw CppRuntimeException(
"Reflectable is an array '") << getTypeInfo().getSchemaName() <<
"[]'!";
4571 template <
typename ALLOC>
4574 throw CppRuntimeException(
"Reflectable is an array '") << getTypeInfo().getSchemaName() <<
"[]'!";
4577 template <
typename ALLOC>
4580 throw CppRuntimeException(
"Reflectable is an array '") << getTypeInfo().getSchemaName() <<
"[]'!";
4583 template <
typename ALLOC>
4586 throw CppRuntimeException(
"Reflectable is an array '") << getTypeInfo().getSchemaName() <<
"[]'!";
4589 template <
typename ALLOC>
4592 throw CppRuntimeException(
"Reflectable is an array '") << getTypeInfo().getSchemaName() <<
"[]'!";
4595 template <
typename ALLOC>
4598 throw CppRuntimeException(
"Reflectable is an array '") << getTypeInfo().getSchemaName() <<
"[]'!";
4601 template <
typename ALLOC>
4604 throw CppRuntimeException(
"Reflectable is an array '") << getTypeInfo().getSchemaName() <<
"[]'!";
4607 template <
typename ALLOC>
4610 throw CppRuntimeException(
"Reflectable is an array '") << getTypeInfo().getSchemaName() <<
"[]'!";
4613 template <
typename ALLOC>
4616 throw CppRuntimeException(
"Reflectable is an array '") << getTypeInfo().getSchemaName() <<
"[]'!";
4619 template <
typename ALLOC>
4622 throw CppRuntimeException(
"Reflectable is an array '") << getTypeInfo().getSchemaName() <<
"[]'!";
4625 template <
typename ALLOC>
4628 throw CppRuntimeException(
"Reflectable is an array '") << getTypeInfo().getSchemaName() <<
"[]'!";
4631 template <
typename ALLOC>
4634 throw CppRuntimeException(
"Reflectable is an array '") << getTypeInfo().getSchemaName() <<
"[]'!";
4637 template <
typename ALLOC>
4640 throw CppRuntimeException(
"Reflectable '") << getTypeInfo().getSchemaName() <<
"' is a constant array!";
4643 template <
typename ALLOC>
4646 throw CppRuntimeException(
"Reflectable '") << getTypeInfo().getSchemaName() <<
"' is a constant array!";
4649 template <
typename ALLOC>
4652 throw CppRuntimeException(
"Reflectable '") << getTypeInfo().getSchemaName() <<
"' is a constant array!";
4655 template <
typename ALLOC>
4658 throw CppRuntimeException(
"Reflectable '") << getTypeInfo().getSchemaName() <<
"' is a constant array!";
4661 template <
typename ALLOC>
4664 throw CppRuntimeException(
"Reflectable '") << getTypeInfo().getSchemaName() <<
"' is a constant array!";
4667 template <
typename ALLOC>
4670 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())
static constexpr const size_type npos
BasicStringView substr(size_type pos=0, size_type count=npos) const
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)