Files

162 lines
6.0 KiB
C++

// This file was generated by generate-classes.
// DO NOT EDIT THIS FILE!
#pragma once
#include <CesiumGltf/Library.h>
#include <CesiumUtility/ExtensibleObject.h>
#include <CesiumUtility/JsonValue.h>
#include <cstdint>
#include <optional>
#include <string>
namespace CesiumGltf {
/**
* @brief An array of binary property values.
*/
struct CESIUMGLTF_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` must 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` must be
* aligned to a multiple of the `valueType` size. Each enum value in the array
* must 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).
*/
int32_t values = -1;
/**
* @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` must be aligned to a
* multiple of the `arrayOffsetType` size.
*/
int32_t arrayOffsets = -1;
/**
* @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` must be aligned to a multiple of the `stringOffsetType` size.
*/
int32_t stringOffsets = -1;
/**
* @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<CesiumUtility::JsonValue> 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<CesiumUtility::JsonValue> 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<CesiumUtility::JsonValue> 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<CesiumUtility::JsonValue> 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 CesiumGltf