// This file was generated by generate-classes. // DO NOT EDIT THIS FILE! #pragma once #include #include #include #include #include #include namespace Cesium3DTiles { /** * @brief An array of binary property values. This represents one column of a * property table, and contains one value of a certain property for each * metadata entity. */ struct CESIUM3DTILES_API PropertyTableProperty final : public CesiumUtility::ExtensibleObject { /** * @brief The original name of this type. */ static constexpr const char* TypeName = "PropertyTableProperty"; /** * @brief Known values for The type of values in `arrayOffsets`. */ struct ArrayOffsetType { /** @brief `UINT8` */ inline static const std::string UINT8 = "UINT8"; /** @brief `UINT16` */ inline static const std::string UINT16 = "UINT16"; /** @brief `UINT32` */ inline static const std::string UINT32 = "UINT32"; /** @brief `UINT64` */ inline static const std::string UINT64 = "UINT64"; }; /** * @brief Known values for The type of values in `stringOffsets`. */ struct StringOffsetType { /** @brief `UINT8` */ inline static const std::string UINT8 = "UINT8"; /** @brief `UINT16` */ inline static const std::string UINT16 = "UINT16"; /** @brief `UINT32` */ inline static const std::string UINT32 = "UINT32"; /** @brief `UINT64` */ inline static const std::string UINT64 = "UINT64"; }; /** * @brief The index of the buffer view containing property values. The data * type of property values is determined by the property definition: When * `type` is `BOOLEAN` values are packed into a bitstream. When `type` is * `STRING` values are stored as byte sequences and decoded as UTF-8 strings. * When `type` is `SCALAR`, `VECN`, or `MATN` the values are stored as the * provided `componentType` and the buffer view `byteOffset` shall be aligned * to a multiple of the `componentType` size. When `type` is `ENUM` values are * stored as the enum's `valueType` and the buffer view `byteOffset` shall be * aligned to a multiple of the `valueType` size. Each enum value in the array * shall match one of the allowed values in the enum definition. * `arrayOffsets` is required for variable-length arrays and `stringOffsets` * is required for strings (for variable-length arrays of strings, both are * required). */ int64_t values = int64_t(); /** * @brief The index of the buffer view containing offsets for variable-length * arrays. The number of offsets is equal to the property table `count` plus * one. The offsets represent the start positions of each array, with the last * offset representing the position after the last array. The array length is * computed using the difference between the subsequent offset and the current * offset. If `type` is `STRING` the offsets index into the string offsets * array (stored in `stringOffsets`), otherwise they index into the property * array (stored in `values`). The data type of these offsets is determined by * `arrayOffsetType`. The buffer view `byteOffset` shall be aligned to a * multiple of the `arrayOffsetType` size. */ std::optional arrayOffsets; /** * @brief The index of the buffer view containing offsets for strings. The * number of offsets is equal to the number of string elements plus one. The * offsets represent the byte offsets of each string in the property array * (stored in `values`), with the last offset representing the byte offset * after the last string. The string byte length is computed using the * difference between the subsequent offset and the current offset. The data * type of these offsets is determined by `stringOffsetType`. The buffer view * `byteOffset` shall be aligned to a multiple of the `stringOffsetType` size. */ std::optional stringOffsets; /** * @brief The type of values in `arrayOffsets`. * * Known values are defined in {@link ArrayOffsetType}. * */ std::string arrayOffsetType = ArrayOffsetType::UINT32; /** * @brief The type of values in `stringOffsets`. * * Known values are defined in {@link StringOffsetType}. * */ std::string stringOffsetType = StringOffsetType::UINT32; /** * @brief An offset to apply to property values. Only applicable when the * component type is `FLOAT32` or `FLOAT64`, or when the property is * `normalized`. Overrides the class property's `offset` if both are defined. */ std::optional offset; /** * @brief A scale to apply to property values. Only applicable when the * component type is `FLOAT32` or `FLOAT64`, or when the property is * `normalized`. Overrides the class property's `scale` if both are defined. */ std::optional scale; /** * @brief Maximum value present in the property values. Only applicable to * `SCALAR`, `VECN`, and `MATN` types. This is the maximum of all property * values, after the transforms based on the `normalized`, `offset`, and * `scale` properties have been applied. */ std::optional max; /** * @brief Minimum value present in the property values. Only applicable to * `SCALAR`, `VECN`, and `MATN` types. This is the minimum of all property * values, after the transforms based on the `normalized`, `offset`, and * `scale` properties have been applied. */ std::optional min; /** * @brief Calculates the size in bytes of this object, including the contents * of all collections, pointers, and strings. This will NOT include the size * of any extensions attached to the object. Calling this method may be slow * as it requires traversing the object's entire structure. */ int64_t getSizeBytes() const { int64_t accum = 0; accum += int64_t(sizeof(PropertyTableProperty)); accum += CesiumUtility::ExtensibleObject::getSizeBytes() - int64_t(sizeof(CesiumUtility::ExtensibleObject)); return accum; } }; } // namespace Cesium3DTiles