Plasma Engine  2.0
Loading...
Searching...
No Matches
ObjectAccessorBase.h
1#pragma once
2
3#include <ToolsFoundation/Object/DocumentObjectManager.h>
4
6
7class PL_TOOLSFOUNDATION_DLL plObjectAccessorBase
8{
9public:
10 virtual ~plObjectAccessorBase();
11 const plDocumentObjectManager* GetObjectManager() const;
12
15
16 virtual void StartTransaction(plStringView sDisplayString);
17 virtual void CancelTransaction();
18 virtual void FinishTransaction();
19 virtual void BeginTemporaryCommands(plStringView sDisplayString, bool bFireEventsWhenUndoingTempCommands = false);
20 virtual void CancelTemporaryCommands();
21 virtual void FinishTemporaryCommands();
22
26
27 virtual const plDocumentObject* GetObject(const plUuid& object) = 0;
28 virtual plStatus GetValue(
29 const plDocumentObject* pObject, const plAbstractProperty* pProp, plVariant& out_value, plVariant index = plVariant()) = 0;
30 virtual plStatus SetValue(
31 const plDocumentObject* pObject, const plAbstractProperty* pProp, const plVariant& newValue, plVariant index = plVariant()) = 0;
32 virtual plStatus InsertValue(
33 const plDocumentObject* pObject, const plAbstractProperty* pProp, const plVariant& newValue, plVariant index = plVariant()) = 0;
34 virtual plStatus RemoveValue(const plDocumentObject* pObject, const plAbstractProperty* pProp, plVariant index = plVariant()) = 0;
35 virtual plStatus MoveValue(
36 const plDocumentObject* pObject, const plAbstractProperty* pProp, const plVariant& oldIndex, const plVariant& newIndex) = 0;
37 virtual plStatus GetCount(const plDocumentObject* pObject, const plAbstractProperty* pProp, plInt32& out_iCount) = 0;
38
39 virtual plStatus AddObject(const plDocumentObject* pParent, const plAbstractProperty* pParentProp, const plVariant& index, const plRTTI* pType,
40 plUuid& inout_objectGuid) = 0;
41 virtual plStatus RemoveObject(const plDocumentObject* pObject) = 0;
42 virtual plStatus MoveObject(
43 const plDocumentObject* pObject, const plDocumentObject* pNewParent, const plAbstractProperty* pParentProp, const plVariant& index) = 0;
44
45 virtual plStatus GetKeys(const plDocumentObject* pObject, const plAbstractProperty* pProp, plDynamicArray<plVariant>& out_keys) = 0;
46 virtual plStatus GetValues(const plDocumentObject* pObject, const plAbstractProperty* pProp, plDynamicArray<plVariant>& out_values) = 0;
47
51
52 plStatus GetValue(const plDocumentObject* pObject, plStringView sProp, plVariant& out_value, plVariant index = plVariant());
53 plStatus SetValue(const plDocumentObject* pObject, plStringView sProp, const plVariant& newValue, plVariant index = plVariant());
54 plStatus InsertValue(const plDocumentObject* pObject, plStringView sProp, const plVariant& newValue, plVariant index = plVariant());
55 plStatus RemoveValue(const plDocumentObject* pObject, plStringView sProp, plVariant index = plVariant());
56 plStatus MoveValue(const plDocumentObject* pObject, plStringView sProp, const plVariant& oldIndex, const plVariant& newIndex);
57 plStatus GetCount(const plDocumentObject* pObject, plStringView sProp, plInt32& out_iCount);
58
59 plStatus AddObject(
60 const plDocumentObject* pParent, plStringView sParentProp, const plVariant& index, const plRTTI* pType, plUuid& inout_objectGuid);
61 plStatus MoveObject(const plDocumentObject* pObject, const plDocumentObject* pNewParent, plStringView sParentProp, const plVariant& index);
62
63 plStatus GetKeys(const plDocumentObject* pObject, plStringView sProp, plDynamicArray<plVariant>& out_keys);
64 plStatus GetValues(const plDocumentObject* pObject, plStringView sProp, plDynamicArray<plVariant>& out_values);
65 const plDocumentObject* GetChildObject(const plDocumentObject* pObject, plStringView sProp, plVariant index);
66
67 plStatus Clear(const plDocumentObject* pObject, plStringView sProp);
68
69 template <typename T>
70 T Get(const plDocumentObject* pObject, const plAbstractProperty* pProp, plVariant index = plVariant());
71 template <typename T>
72 T Get(const plDocumentObject* pObject, plStringView sProp, plVariant index = plVariant());
73 plInt32 GetCount(const plDocumentObject* pObject, const plAbstractProperty* pProp);
74 plInt32 GetCount(const plDocumentObject* pObject, plStringView sProp);
75
77
78protected:
80 void FireDocumentObjectStructureEvent(const plDocumentObjectStructureEvent& e);
81 void FireDocumentObjectPropertyEvent(const plDocumentObjectPropertyEvent& e);
82
83protected:
84 const plDocumentObjectManager* m_pConstManager;
85};
86
87#include <ToolsFoundation/Object/Implementation/ObjectAccessorBase_inl.h>
This is the base interface for all properties in the reflection system. It provides enough informatio...
Definition AbstractProperty.h:150
Definition DocumentObjectBase.h:11
Represents to content of a document. Every document has exactly one root object under which all objec...
Definition DocumentObjectManager.h:116
Definition DynamicArray.h:81
Definition ObjectAccessorBase.h:8
This class holds information about reflected types. Each instance represents one type that is known t...
Definition RTTI.h:30
plStringView represent a read-only sub-string of a larger string, as it can store a dedicated string ...
Definition StringView.h:34
This data type is the abstraction for 128-bit Uuid (also known as GUID) instances.
Definition Uuid.h:11
plVariant is a class that can store different types of variables, which is useful in situations where...
Definition Variant.h:44
Used by plDocumentObjectManager::m_PropertyEvents.
Definition DocumentObjectManager.h:77
Used by plDocumentObjectManager::m_StructureEvents.
Definition DocumentObjectManager.h:45
An plResult with an additional message for the reason of failure.
Definition Status.h:12