XII Release 0.1.0
Loading...
Searching...
No Matches
xiiVariantSubAccessor Class Reference

Accessor for a sub-tree on an xiiVariant property. The tools foundation code uses an xiiDocumentObject, one of its xiiAbstractProperty and an optional xiiVariant index to reference to properties. Any deeper hierarchies must be built from additional objects. This principle prevents the GUI to reference anything inside an xiiVariant that stores an VariantArray or VariantDictionary as xiiVariant is a pure value type and cannot store additional objects on the tool side. To work around this, this class creates a view one level deeper into an xiiVariant. This is done by calling SetSubItems which for each object in the map moves the view into the sub-tree referenced by the given value of the map. More...

#include <VariantSubAccessor.h>

Inheritance diagram for xiiVariantSubAccessor:
[legend]

Public Member Functions

 xiiVariantSubAccessor (xiiObjectAccessorBase *pSource, const xiiAbstractProperty *pProp)
 Constructor.
 
void SetSubItems (const xiiMap< const xiiDocumentObject *, xiiVariant > &subItemMap)
 Sets the sub-tree indices for the selected objects.
 
const xiiAbstractPropertyGetRootProperty () const
 Returns the property this accessor wraps.
 
xiiInt32 GetDepth () const
 How many level deep the view is inside the property.
 
xiiResult GetPath (const xiiDocumentObject *pObject, xiiDynamicArray< xiiVariant > &out_path) const
 
virtual xiiStatus GetValue (const xiiDocumentObject *pObject, const xiiAbstractProperty *pProp, xiiVariant &out_value, xiiVariant index=xiiVariant()) override
 
virtual xiiStatus SetValue (const xiiDocumentObject *pObject, const xiiAbstractProperty *pProp, const xiiVariant &newValue, xiiVariant index=xiiVariant()) override
 
virtual xiiStatus InsertValue (const xiiDocumentObject *pObject, const xiiAbstractProperty *pProp, const xiiVariant &newValue, xiiVariant index=xiiVariant()) override
 
virtual xiiStatus RemoveValue (const xiiDocumentObject *pObject, const xiiAbstractProperty *pProp, xiiVariant index=xiiVariant()) override
 
virtual xiiStatus MoveValue (const xiiDocumentObject *pObject, const xiiAbstractProperty *pProp, const xiiVariant &oldIndex, const xiiVariant &newIndex) override
 
virtual xiiStatus GetCount (const xiiDocumentObject *pObject, const xiiAbstractProperty *pProp, xiiInt32 &out_iCount) override
 
virtual xiiStatus GetKeys (const xiiDocumentObject *pObject, const xiiAbstractProperty *pProp, xiiDynamicArray< xiiVariant > &out_keys) override
 
virtual xiiStatus GetValues (const xiiDocumentObject *pObject, const xiiAbstractProperty *pProp, xiiDynamicArray< xiiVariant > &out_values) override
 
- Public Member Functions inherited from xiiObjectProxyAccessor
 xiiObjectProxyAccessor (xiiObjectAccessorBase *pSource)
 
xiiObjectAccessorBaseGetSourceAccessor () const
 
virtual void StartTransaction (xiiStringView sDisplayString) override
 
virtual void CancelTransaction () override
 
virtual void FinishTransaction () override
 
virtual void BeginTemporaryCommands (xiiStringView sDisplayString, bool bFireEventsWhenUndoingTempCommands=false) override
 
virtual void CancelTemporaryCommands () override
 
virtual void FinishTemporaryCommands () override
 
virtual const xiiDocumentObjectGetObject (const xiiUuid &object) override
 
virtual xiiStatus AddObject (const xiiDocumentObject *pParent, const xiiAbstractProperty *pParentProp, const xiiVariant &index, const xiiRTTI *pType, xiiUuid &inout_objectGuid) override
 
virtual xiiStatus RemoveObject (const xiiDocumentObject *pObject) override
 
virtual xiiStatus MoveObject (const xiiDocumentObject *pObject, const xiiDocumentObject *pNewParent, const xiiAbstractProperty *pParentProp, const xiiVariant &index) override
 
- Public Member Functions inherited from xiiObjectAccessorBase
const xiiDocumentObjectManagerGetObjectManager () const
 
xiiStatus GetValueByName (const xiiDocumentObject *pObject, xiiStringView sProp, xiiVariant &out_value, xiiVariant index=xiiVariant())
 
xiiStatus SetValueByName (const xiiDocumentObject *pObject, xiiStringView sProp, const xiiVariant &newValue, xiiVariant index=xiiVariant())
 
xiiStatus InsertValueByName (const xiiDocumentObject *pObject, xiiStringView sProp, const xiiVariant &newValue, xiiVariant index=xiiVariant())
 
xiiStatus RemoveValueByName (const xiiDocumentObject *pObject, xiiStringView sProp, xiiVariant index=xiiVariant())
 
xiiStatus MoveValueByName (const xiiDocumentObject *pObject, xiiStringView sProp, const xiiVariant &oldIndex, const xiiVariant &newIndex)
 
xiiStatus GetCountByName (const xiiDocumentObject *pObject, xiiStringView sProp, xiiInt32 &out_iCount)
 
xiiStatus AddObjectByName (const xiiDocumentObject *pParent, xiiStringView sParentProp, const xiiVariant &index, const xiiRTTI *pType, xiiUuid &inout_objectGuid)
 
xiiStatus MoveObjectByName (const xiiDocumentObject *pObject, const xiiDocumentObject *pNewParent, xiiStringView sParentProp, const xiiVariant &index)
 
xiiStatus GetKeysByName (const xiiDocumentObject *pObject, xiiStringView sProp, xiiDynamicArray< xiiVariant > &out_keys)
 
xiiStatus GetValuesByName (const xiiDocumentObject *pObject, xiiStringView sProp, xiiDynamicArray< xiiVariant > &out_values)
 
const xiiDocumentObjectGetChildObjectByName (const xiiDocumentObject *pObject, xiiStringView sProp, xiiVariant index)
 
xiiStatus ClearByName (const xiiDocumentObject *pObject, xiiStringView sProp)
 
const xiiAbstractPropertyFindPropertyByName (const xiiDocumentObject *pObject, xiiStringView sProp)
 
template<typename T>
Get (const xiiDocumentObject *pObject, const xiiAbstractProperty *pProp, xiiVariant index=xiiVariant())
 
template<typename T>
GetByName (const xiiDocumentObject *pObject, xiiStringView sProp, xiiVariant index=xiiVariant())
 
xiiInt32 GetCount (const xiiDocumentObject *pObject, const xiiAbstractProperty *pProp)
 
xiiInt32 GetCountByName (const xiiDocumentObject *pObject, xiiStringView sProp)
 
- Public Member Functions inherited from xiiReflectedClass
virtual const xiiRTTIGetDynamicRTTI () const
 
bool IsInstanceOf (const xiiRTTI *pType) const
 Returns whether the type of this instance is of the given type or derived from it.
 
template<typename T>
XII_ALWAYS_INLINE bool IsInstanceOf () const
 Returns whether the type of this instance is of the given type or derived from it.
 

Additional Inherited Members

- Static Public Member Functions inherited from xiiNoBase
static const xiiRTTIGetStaticRTTI ()
 
- Protected Member Functions inherited from xiiObjectAccessorBase
 xiiObjectAccessorBase (const xiiDocumentObjectManager *pManager)
 
void FireDocumentObjectStructureEvent (const xiiDocumentObjectStructureEvent &e)
 
void FireDocumentObjectPropertyEvent (const xiiDocumentObjectPropertyEvent &e)
 
- Protected Attributes inherited from xiiObjectProxyAccessor
xiiObjectAccessorBasem_pSource = nullptr
 
- Protected Attributes inherited from xiiObjectAccessorBase
const xiiDocumentObjectManagerm_pConstManager
 

Detailed Description

Accessor for a sub-tree on an xiiVariant property. The tools foundation code uses an xiiDocumentObject, one of its xiiAbstractProperty and an optional xiiVariant index to reference to properties. Any deeper hierarchies must be built from additional objects. This principle prevents the GUI to reference anything inside an xiiVariant that stores an VariantArray or VariantDictionary as xiiVariant is a pure value type and cannot store additional objects on the tool side. To work around this, this class creates a view one level deeper into an xiiVariant. This is done by calling SetSubItems which for each object in the map moves the view into the sub-tree referenced by the given value of the map.

Constructor & Destructor Documentation

◆ xiiVariantSubAccessor()

xiiVariantSubAccessor::xiiVariantSubAccessor ( xiiObjectAccessorBase * pSource,
const xiiAbstractProperty * pProp )

Constructor.

Parameters
pSourceThe original accessor that is going to be proxied. By chaining this class an xiiVariant can be explored deeper and deeper.
pPropThe xiiVariant property that is going to be proxied. Only this property is allowed to be accessed by the accessor functions.

Member Function Documentation

◆ GetCount()

xiiStatus xiiVariantSubAccessor::GetCount ( const xiiDocumentObject * pObject,
const xiiAbstractProperty * pProp,
xiiInt32 & out_iCount )
overridevirtual

Reimplemented from xiiObjectProxyAccessor.

◆ GetKeys()

xiiStatus xiiVariantSubAccessor::GetKeys ( const xiiDocumentObject * pObject,
const xiiAbstractProperty * pProp,
xiiDynamicArray< xiiVariant > & out_keys )
overridevirtual

Reimplemented from xiiObjectProxyAccessor.

◆ GetPath()

xiiResult xiiVariantSubAccessor::GetPath ( const xiiDocumentObject * pObject,
xiiDynamicArray< xiiVariant > & out_path ) const

Builds a path up the hierarchy of wrapped xiiVariantSubAccessor objects to determine the path to the current sub-tree of the xiiVariant.

Parameters
pObjectThe object for which the path should be computed
out_pathAn array of indices that has to be followed from the root of the xiiVariant to each the current sub-tree view.
Returns
Returns XII_FAILURE if pObject is not known.

◆ GetValue()

xiiStatus xiiVariantSubAccessor::GetValue ( const xiiDocumentObject * pObject,
const xiiAbstractProperty * pProp,
xiiVariant & out_value,
xiiVariant index = xiiVariant() )
overridevirtual

Reimplemented from xiiObjectProxyAccessor.

◆ GetValues()

xiiStatus xiiVariantSubAccessor::GetValues ( const xiiDocumentObject * pObject,
const xiiAbstractProperty * pProp,
xiiDynamicArray< xiiVariant > & out_values )
overridevirtual

Reimplemented from xiiObjectProxyAccessor.

◆ InsertValue()

xiiStatus xiiVariantSubAccessor::InsertValue ( const xiiDocumentObject * pObject,
const xiiAbstractProperty * pProp,
const xiiVariant & newValue,
xiiVariant index = xiiVariant() )
overridevirtual

Reimplemented from xiiObjectProxyAccessor.

◆ MoveValue()

xiiStatus xiiVariantSubAccessor::MoveValue ( const xiiDocumentObject * pObject,
const xiiAbstractProperty * pProp,
const xiiVariant & oldIndex,
const xiiVariant & newIndex )
overridevirtual

Reimplemented from xiiObjectProxyAccessor.

◆ RemoveValue()

xiiStatus xiiVariantSubAccessor::RemoveValue ( const xiiDocumentObject * pObject,
const xiiAbstractProperty * pProp,
xiiVariant index = xiiVariant() )
overridevirtual

Reimplemented from xiiObjectProxyAccessor.

◆ SetSubItems()

void xiiVariantSubAccessor::SetSubItems ( const xiiMap< const xiiDocumentObject *, xiiVariant > & subItemMap)

Sets the sub-tree indices for the selected objects.

Parameters
subItemMapObject to index map. Note that as this is in the ToolsFoundation it cannot use the xiiPropertySelection class.

◆ SetValue()

xiiStatus xiiVariantSubAccessor::SetValue ( const xiiDocumentObject * pObject,
const xiiAbstractProperty * pProp,
const xiiVariant & newValue,
xiiVariant index = xiiVariant() )
overridevirtual

Reimplemented from xiiObjectProxyAccessor.


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