MNX Document Model
Loading...
Searching...
No Matches
mnx::Array< T > Class Template Reference

Represents an MNX array, encapsulating property access. More...

#include <BaseTypes.h>

+ Inheritance diagram for mnx::Array< T >:

Public Types

using value_type = T
 The type for elements in this Array.
 
using iterator = iter< Array >
 non-const iterator type
 
using const_iterator = iter< const Array >
 const iterator type
 

Public Member Functions

 Array (const std::shared_ptr< json > &root, json_pointer pointer)
 Wraps an Array class around an existing JSON array node.
 
 Array (Base &parent, std::string_view key)
 Creates a new Array class as a child of a JSON node.
 
size_t size () const
 Get the size of the array.
 
bool empty () const
 Check if the array is empty.
 
void clear ()
 Clear all elements.
 
at (size_t index) const
 Direct getter for a particular element.
 
front () const
 Access the first element.
 
back () const
 Access the last element.
 
auto operator[] (size_t index) const
 const operator[]
 
auto operator[] (size_t index)
 non-const operator[]
 
template<typename U = T>
std::enable_if_t<!std::is_base_of_v< Base, U >, void > push_back (const U &value)
 Append a new value to the array. (Available only for primitive types)
 
void erase (size_t index)
 Remove an element at a given index.
 
template<typename U = T>
std::enable_if_t<!std::is_base_of_v< Base, U >, std::vector< U > > toStdVector () const
 Converts the Array to an owning std::vector.
 
auto begin ()
 Returns an iterator to the beginning of the array.
 
auto end ()
 Returns an iterator to the end of the array.
 
auto begin () const
 Returns a const iterator to the beginning of the array.
 
auto end () const
 Returns a const iterator to the end of the array.
 
- Public Member Functions inherited from mnx::Base
 Base (const Base &src)
 Copy constructor.
 
 Base (Base &&src) noexcept
 Move constructor.
 
Baseoperator= (const Base &src)
 Copy assignment operator.
 
Baseoperator= (Base &&src)
 Move assignment operator.
 
std::string dump (int indents=-1) const
 Dumps the branch to a string. Useful in debugging.
 
template<typename T >
parent () const
 Returns the parent object for this node.
 
template<typename T , typename Scope = scope::Default>
std::optional< T > getEnclosingElement () const
 Returns the enclosing array element for this instance. If T is a type that can be nested (e.g. ContentObject), the highest level instance is returned. (To get the lowest level immediate container, use ContentObject::container.)
 
json_pointer pointer () const
 Returns the json_pointer for this node.
 
Document document () const
 Returns the document root.
 
- Public Member Functions inherited from mnx::detail::ArrayAppendBase< Derived, T >
template<typename U = T, typename... Args, std::enable_if_t< std::is_base_of_v< Base, U >, int > = 0>
append (Args &&... args)
 Append a new element at the end of the array. (Available only for Base types)
 

Protected Member Functions

void checkIndex (size_t index) const
 validates that an index is not out of range
 
- Protected Member Functions inherited from mnx::Base
jsonref () const
 Convert this node for retrieval.
 
jsonref ()
 Access the JSON node for modification.
 
const std::shared_ptr< json > & root () const
 Returns the root.
 
 Base (const std::shared_ptr< json > &root, json_pointer pointer)
 Wrap a Base instance around a specific JSON reference using a json_pointer.
 
 Base (json &&jsonRef, Base &parent, std::string_view key)
 Construct a Base reference as a child inside a parent node.
 
template<typename T >
getChild (std::string_view key) const
 Retrieves and validates a required child node.
 
template<typename T >
setChild (std::string_view key, const T &value)
 Sets a child node.
 
template<typename T >
std::optional< T > getOptionalChild (std::string_view key) const
 Retrieves an optional child node.
 

Friends

template<typename , auto >
struct detail::ArrayAppendFromMake
 
template<typename , typename >
struct detail::ArrayAppendBase
 

Detailed Description

template<typename T>
class mnx::Array< T >

Represents an MNX array, encapsulating property access.

Constructor & Destructor Documentation

◆ Array() [1/2]

template<typename T >
mnx::Array< T >::Array ( const std::shared_ptr< json > &  root,
json_pointer  pointer 
)
inline

Wraps an Array class around an existing JSON array node.

Parameters
rootReference to the document root
pointerThe json_pointer value for the node

◆ Array() [2/2]

template<typename T >
mnx::Array< T >::Array ( Base parent,
std::string_view  key 
)
inline

Creates a new Array class as a child of a JSON node.

Parameters
parentThe parent class instance
keyThe JSON key to use for embedding in parent.

Member Function Documentation

◆ back()

template<typename T >
T mnx::Array< T >::back ( ) const
inline

Access the last element.

Exceptions
std::out_of_rangeif the array is empty.

◆ checkIndex()

template<typename T >
void mnx::Array< T >::checkIndex ( size_t  index) const
inlineprotected

validates that an index is not out of range

Exceptions
std::out_of_rangeif the index is out of range

◆ front()

template<typename T >
T mnx::Array< T >::front ( ) const
inline

Access the first element.

Exceptions
std::out_of_rangeif the array is empty.

◆ toStdVector()

template<typename T >
template<typename U = T>
std::enable_if_t<!std::is_base_of_v< Base, U >, std::vector< U > > mnx::Array< T >::toStdVector ( ) const
inline

Converts the Array to an owning std::vector.

Intended only for value-like element types. The returned vector is detached from the document and may be used as a grouped snapshot of values (e.g., for passing to external APIs).