Open 3D Engine AzCore API Reference 23.10.0
O3DE is an open-source, fully-featured, high-fidelity, modular 3D engine for building games and simulations, available to every industry.
AZ::Dom::Value Class Referencefinal

#include <DomValue.h>

Public Types

using ShortStringType = AZStd::fixed_string< ShortStringSize >
 
using SharedStringContainer = AZStd::vector< char >
 
using SharedStringType = AZStd::shared_ptr< const SharedStringContainer >
 
using OpaqueStorageType = AZStd::shared_ptr< AZStd::any >
 
using ValueType = AZStd::variant< AZStd::monostate, AZ::s64, AZ::u64, double, bool, AZStd::string_view, SharedStringType, ShortStringType, ObjectPtr, ArrayPtr, NodePtr, OpaqueStorageType >
 

Public Member Functions

 AZ_TYPE_INFO (Value, "{3E20677F-3B8E-4F89-B665-ED41D74F4799}")
 
 AZ_CLASS_ALLOCATOR (Value, ValueAllocator)
 
 Value (const Value &)
 
 Value (Value &&) noexcept
 
 Value (AZStd::string_view stringView, bool copy)
 
 Value (SharedStringType sharedString)
 
 Value (int8_t value)
 
 Value (uint8_t value)
 
 Value (int16_t value)
 
 Value (uint16_t value)
 
 Value (int32_t value)
 
 Value (uint32_t value)
 
 Value (long value)
 
 Value (unsigned long value)
 
 Value (long long value)
 
 Value (unsigned long long value)
 
 Value (float value)
 
 Value (double value)
 
 Value (bool value)
 
 Value (Type type)
 
template<class EnumType , class = AZStd::enable_if_t<AZStd::is_enum_v<EnumType>>>
 Value (EnumType enumType)
 
template<class T >
 Value (T *)=delete
 
Valueoperator= (const Value &)
 
Valueoperator= (Value &&) noexcept
 
template<class T >
auto operator= (T &&arg) -> AZStd::enable_if_t<!AZStd::is_same_v< AZStd::remove_cvref_t< T >, Value > &&AZStd::is_constructible_v< Value, T >, Value & >
 Assignment operator to allow forwarding types constructible via Value(T) to be assigned.
 
bool operator== (const Value &rhs) const
 
bool operator!= (const Value &rhs) const
 
void Swap (Value &other) noexcept
 
Type GetType () const
 
bool IsNull () const
 
bool IsFalse () const
 
bool IsTrue () const
 
bool IsBool () const
 
bool IsNode () const
 
bool IsObject () const
 
bool IsArray () const
 
bool IsOpaqueValue () const
 
bool IsNumber () const
 
bool IsInt () const
 
bool IsUint () const
 
bool IsDouble () const
 
bool IsString () const
 
ValueSetObject ()
 
size_t MemberCount () const
 
size_t MemberCapacity () const
 
bool ObjectEmpty () const
 
Valueoperator[] (KeyType name)
 
const Valueoperator[] (KeyType name) const
 
Valueoperator[] (AZStd::string_view name)
 
const Valueoperator[] (AZStd::string_view name) const
 
Object::ConstIterator MemberBegin () const
 
Object::ConstIterator MemberEnd () const
 
Object::Iterator MutableMemberBegin ()
 
Object::Iterator MutableMemberEnd ()
 
Object::Iterator FindMutableMember (KeyType name)
 
Object::Iterator FindMutableMember (AZStd::string_view name)
 
Object::ConstIterator FindMember (KeyType name) const
 
Object::ConstIterator FindMember (AZStd::string_view name) const
 
ValueMemberReserve (size_t newCapacity)
 
bool HasMember (KeyType name) const
 
bool HasMember (AZStd::string_view name) const
 
ValueAddMember (KeyType name, const Value &value)
 
ValueAddMember (AZStd::string_view name, const Value &value)
 
ValueAddMember (KeyType name, Value &&value)
 
ValueAddMember (AZStd::string_view name, Value &&value)
 
void RemoveAllMembers ()
 
void RemoveMember (KeyType name)
 
void RemoveMember (AZStd::string_view name)
 
Object::Iterator RemoveMember (Object::Iterator pos)
 
Object::Iterator EraseMember (Object::Iterator pos)
 
Object::Iterator EraseMember (Object::Iterator first, Object::Iterator last)
 
Object::Iterator EraseMember (KeyType name)
 
Object::Iterator EraseMember (AZStd::string_view name)
 
Object::ContainerTypeGetMutableObject ()
 
const Object::ContainerTypeGetObject () const
 
ValueSetArray ()
 
size_t ArraySize () const
 
size_t ArrayCapacity () const
 
bool IsArrayEmpty () const
 
void ClearArray ()
 
Valueoperator[] (size_t index)
 
const Valueoperator[] (size_t index) const
 
ValueMutableArrayAt (size_t index)
 
const ValueArrayAt (size_t index) const
 
Array::ConstIterator ArrayBegin () const
 
Array::ConstIterator ArrayEnd () const
 
Array::Iterator MutableArrayBegin ()
 
Array::Iterator MutableArrayEnd ()
 
ValueArrayReserve (size_t newCapacity)
 
ValueArrayPushBack (Value value)
 
ValueArrayPopBack ()
 
Array::Iterator ArrayErase (Array::Iterator pos)
 
Array::Iterator ArrayErase (Array::Iterator first, Array::Iterator last)
 
Array::ContainerTypeGetMutableArray ()
 
const Array::ContainerTypeGetArray () const
 
void SetNode (AZ::Name name)
 
void SetNode (AZStd::string_view name)
 
AZ::Name GetNodeName () const
 
void SetNodeName (AZ::Name name)
 
void SetNodeName (AZStd::string_view name)
 
void SetNodeValue (Value value)
 Convenience method, sets the first non-node element of a Node.
 
Value GetNodeValue () const
 Convenience method, gets the first non-node element of a Node.
 
NodeGetMutableNode ()
 
const NodeGetNode () const
 
AZ::s64 GetInt64 () const
 
void SetInt64 (AZ::s64)
 
AZ::u64 GetUint64 () const
 
void SetUint64 (AZ::u64)
 
bool GetBool () const
 
void SetBool (bool)
 
double GetDouble () const
 
void SetDouble (double)
 
AZStd::string_view GetString () const
 
size_t GetStringLength () const
 
void SetString (AZStd::string_view)
 
void SetString (SharedStringType sharedString)
 
void CopyFromString (AZStd::string_view)
 
const AZStd::anyGetOpaqueValue () const
 
void SetOpaqueValue (AZStd::any)
 
void SetNull ()
 
Visitor::Result Accept (Visitor &visitor, bool copyStrings) const
 
AZStd::unique_ptr< VisitorGetWriteHandler ()
 
Valueoperator[] (const PathEntry &entry)
 
const Valueoperator[] (const PathEntry &entry) const
 
Valueoperator[] (const Path &path)
 
const Valueoperator[] (const Path &path) const
 
const ValueFindChild (const PathEntry &entry) const
 
ValueFindMutableChild (const PathEntry &entry)
 
const ValueFindChild (const Path &path) const
 
ValueFindMutableChild (const Path &path)
 

Static Public Member Functions

static Value FromOpaqueValue (const AZStd::any &value)
 
static Value CreateNode (AZ::Name nodeName)
 
static Value CreateNode (AZStd::string_view nodeName)
 

Static Public Attributes

static constexpr const size_t ShortStringSize = sizeof(AZStd::string_view) - 2
 

Detailed Description

Value is a typed union of Dom types that can represent the types provdied by AZ::Dom::Visitor. Value can be one of the following types:

  • Null: a type with no value, this is the default type for Value
  • Bool: a true or false boolean value
  • Object: a container with an ordered list of Name/Value pairs, analagous to a JSON object
  • Array: a container with an ordered list of Values, analagous to a JSON array
  • String: a UTF-8 string
  • Int64: a signed, 64-bit integer
  • Uint64: an unsigned, 64-bit integer
  • Double: a double precision floating point value
  • Node: a container with a Name, an ordered list of Name/Values pairs (attributes), and an ordered list of Values (children), analagous to an XML node
  • Opaque: an arbitrary value stored in an AZStd::any. This is a non-serializable representation of an entry used only for in-memory options. This is intended to be used as an intermediate value over the course of DOM transformation and as a proxy to pass through types of which the DOM has no knowledge to other systems.
    Note
    Value is a copy-on-write data structure and may be cheaply returned by value. Heap allocated data larger than the size of the value itself (objects, arrays, and nodes) are copied by new Values only when their contents change, so care should be taken in performance critical code to avoid mutation operations such as operator[] to avoid copies. It is recommended that an immutable Value be explicitly be stored as a const Value to avoid accidental detach and copy operations.

Member Typedef Documentation

◆ ValueType

The internal storage type for Value. These types do not correspond one-to-one with the Value's external Type as there may be multiple storage classes for the same type in some instances, such as string storage. The AZ type aliases of AZ::s64 and AZ::u64 are being used in lieu of int64_t and uint64_t As those guaranteed to always be long long and unsigned long long on all platforms, where the C standard type aliases are long-based on Linux and Android and long long-based on Windows, Mac and iOS

Member Function Documentation

◆ SetOpaqueValue()

void AZ::Dom::Value::SetOpaqueValue ( AZStd::any  )

This sets this Value to represent a value of an type that the DOM has no formal knowledge of. Where possible, it should be preferred to serialize an opaque type into a DOM value instead, as serializers and other systems will have no means of dealing with fully arbitrary values.


The documentation for this class was generated from the following file: