base_array#

Fully qualified name: omni::graph::core::ogn::base_array

template<typename BaseDataType, typename HandleType>
class base_array#

std::span-like wrapper class for array attribute data in the Ogn Database.

In attribute terms an array is a variable sized collection of data of a single type, not to be confused with the C++ notion of an array, which is a fixed sized collection of data of a single type.

This wrapper operates by using the Fabric interface to interact with array data it has stored. The base array class provides common operations common to both const and non-const data.

Template Parameters:
  • BaseDataType – Type of data contained within the array

  • HandleType – Attribute handle used to access the underlying Fabric copy of the data

Subclassed by omni::graph::core::ogn::base_string< const char, ConstAttributeDataHandle >, omni::graph::core::ogn::base_string< char, AttributeDataHandle >

Public Types

using ConstBaseDataType = const typename std::remove_const<BaseDataType>::type#

const version of the BaseDataType

using this_t = base_array<BaseDataType, HandleType>#

Type definition of this class.

using iterator = typename gsl::span<BaseDataType>::iterator#

Iterator over the array contents.

using reverse_iterator = typename gsl::span<BaseDataType>::reverse_iterator#

Reverse iterator over the array contents.

Public Functions

base_array() = default#

Constructor.

inline bool isValid() const#

Confirm that the data values are safe for accessing.

Returns:

true if the context and attribute handle values are both valid

inline size_t size() const#
Returns:

The number of elements in the currently managed array

inline bool empty() const#
Returns:

Is the currently managed array empty?

inline ConstBaseDataType *data() const#
Returns:

Pointer to the raw data in the array (first element)

inline const iterator begin() const#
Returns:

Iterator pointing to the beginning of the array

inline const iterator end() const#
Returns:

Iterator pointing past the end of the array

inline const reverse_iterator rbegin() const#
Returns:

Iterator pointing to the end of the array

inline const reverse_iterator rend() const#
Returns:

Iterator pointing before the beginning of the array

inline ConstBaseDataType &operator[](size_t index) const#

Access a specific element of the array.

No bounds checking is performed.

Parameters:

index[in] Element index into the array

Returns:

Reference to the index’th element of the array

inline ConstBaseDataType &at(size_t index) const#

Access a specific element of the array with bounds checking.

Parameters:

index[in] Element index into the array

Throws:

std::out_of_range – if there is no data for the given index

Returns:

Reference to the index’th element of the array

inline gsl::span<BaseDataType> const &span() const#

Access the underlying span that allows to access the array data.

Returns:

A reference to the underlying span

inline GraphContextObj const *context() const#

Access the context to which this array belongs.

Returns:

Pointer to the context to which this array belongs

inline HandleType const &handle() const#

Access the attribute handle used to access the array data in Fabric.

Returns:

Pointer to the attribute handle used to access the array data in Fabric

inline void setDirty() const#

Flag the span data as not being up2Date.

inline void adjustHandle(size_t idx)#

In a vectorized context, move forward the current handle.

Parameters:

idx[in] The amount of instance(s) to offset the current handle

Protected Functions

inline void reset()#

Reset the internal span to point to new data.

inline BaseDataType **getData(
const IAttributeData &iData,
ConstAttributeDataHandle const &hdl,
)#

Get a pointer to the array data from a specific const data handle.

Parameters:
  • iData – Interface class containing the accessor functions

  • hdl – Handle to the attribute data whose value is being retrieved

Returns:

BaseDataType** Pointer to the array of retrieved data

inline BaseDataType **getData(
const IAttributeData &iData,
AttributeDataHandle const &hdl,
)#

Get a pointer to the array data from a specific mutable data handle.

Parameters:
  • iData – Interface class containing the accessor functions

  • hdl – Handle to the attribute data whose value is being retrieved

Returns:

BaseDataType** Pointer to the array of retrieved data

inline void setContext(const GraphContextObj &context)#

Set the context.

This is done to allow the same wrapper class to be used for multiple evaluations in different contexts.

Parameters:

context[in] The graph context to which the array belongs

inline void setHandle(HandleType handle)#

Set the attribute handle.

This is done to allow the same wrapper class to be used for multiple evaluations in different contexts.

Parameters:

handle[in] Handle to the attribute to which the array belongs