base_string#

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

template<typename CharType, typename HandleType>
class base_string : public omni::graph::core::ogn::base_array<CharType, HandleType>#

std::string_view-like wrapper class for string attribute data in the Ogn Database.

As of this writing OGN is built on C++14 and std::string_view requires C++17 so the Microsoft forward compatible implementaton of gsl::string_span<> is used.

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

Public Types

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

const version of the BaseDataType

using this_t = base_array<CharType, HandleType>#

Type definition of this class.

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

Iterator over the array contents.

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

Reverse iterator over the array contents.

Public Functions

inline size_t length() const#
Returns:

The number of elements in the currently managed array

inline operator std::string() const#

Cast the string data to a std::string.

After you do this the string data is now a copy of the original so you can manipulate it without affecting the original, however it means you must reassign it back to a writable ogn::string if you do want to change the string.

Returns:

String containing a copy of the internal raw string data

template<typename IterableStringType>
inline bool operator==(
const IterableStringType &rhs,
) const#

See if two strings are equal.

These simple comparison operators avoid extra conversions to std::string, to help minimize allocations

Template Parameters:

IterableStringType – String variant that supports iteration for comparison

Parameters:

rhs[in] String to compare against - just requires iterability

Returns:

True if the strings have the same contents

template<typename IterableStringType>
inline bool operator!=(
const IterableStringType &rhs,
) const#

See if two strings are not equal.

These simple comparison operators avoid extra conversions to std::string, to help minimize allocations

Template Parameters:

IterableStringType – String variant that supports iteration for comparison

Parameters:

rhs[in] String to compare against - just requires iterability

Returns:

True if the strings do not have the same contents

template<typename IterableStringType>
inline bool operator<(
const IterableStringType &rhs,
) const#

See if this string is lexicographically less than the provided one.

These simple comparison operators avoid extra conversions to std::string, to help minimize allocations

Template Parameters:

IterableStringType – String variant that supports iteration for comparison

Parameters:

rhs[in] String to compare against - just requires iterability

Returns:

True if this string is lexicographically less than the provided one

template<typename IterableStringType>
inline bool operator>(
const IterableStringType &rhs,
) const#

See if this string is lexicographically greater than the provided one.

These simple comparison operators avoid extra conversions to std::string, to help minimize allocations

Template Parameters:

IterableStringType – String variant that supports iteration for comparison

Parameters:

rhs[in] String to compare against - just requires iterability

Returns:

True if this string is lexicographically greater than the provided one

template<typename IterableStringType>
inline bool operator<=(
const IterableStringType &rhs,
) const#

See if this string is lexicographically less than or equal to the provided one.

These simple comparison operators avoid extra conversions to std::string, to help minimize allocations

Template Parameters:

IterableStringType – String variant that supports iteration for comparison

Parameters:

rhs[in] String to compare against - just requires iterability

Returns:

True if this string is lexicographically less than or equal to the provided one

template<typename IterableStringType>
inline bool operator>=(
const IterableStringType &rhs,
) const#

See if this string is lexicographically greater than or equal to the provided one.

These simple comparison operators avoid extra conversions to std::string, to help minimize allocations

Template Parameters:

IterableStringType – String variant that supports iteration for comparison

Parameters:

rhs[in] String to compare against - just requires iterability

Returns:

True if this string is lexicographically greater than or equal to the provided one

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<CharType> 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 CharType **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 CharType **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