3#include <Foundation/Containers/Blob.h>
4#include <Foundation/Types/SharedPtr.h>
5#include <VisualScriptPlugin/Runtime/VisualScriptDataType.h>
11 PL_DECLARE_POD_TYPE();
13 struct PL_VISUALSCRIPTPLUGIN_DLL
Source
24 static const char* GetName(Enum source);
29 BYTE_OFFSET_BITS = 24,
32 INVALID_BYTE_OFFSET = PL_BIT(BYTE_OFFSET_BITS) - 1
37 m_uiByteOffset = INVALID_BYTE_OFFSET;
38 m_uiType = plVisualScriptDataType::Invalid;
39 m_uiSource = Source::Local;
42 PL_ALWAYS_INLINE DataOffset(plUInt32 uiOffset, plVisualScriptDataType::Enum dataType, Source::Enum source)
44 m_uiByteOffset = uiOffset;
49 PL_ALWAYS_INLINE
bool IsValid()
const
51 return m_uiByteOffset != INVALID_BYTE_OFFSET &&
52 m_uiType != plVisualScriptDataType::Invalid;
55 PL_ALWAYS_INLINE plVisualScriptDataType::Enum GetType()
const {
return static_cast<plVisualScriptDataType::Enum
>(m_uiType); }
56 PL_ALWAYS_INLINE Source::Enum GetSource()
const {
return static_cast<Source::Enum
>(m_uiSource); }
57 PL_ALWAYS_INLINE
bool IsLocal()
const {
return m_uiSource == Source::Local; }
58 PL_ALWAYS_INLINE
bool IsInstance()
const {
return m_uiSource == Source::Instance; }
59 PL_ALWAYS_INLINE
bool IsConstant()
const {
return m_uiSource == Source::Constant; }
64 plUInt32 m_uiByteOffset : BYTE_OFFSET_BITS;
65 plUInt32 m_uiType : TYPE_BITS;
66 plUInt32 m_uiSource : SOURCE_BITS;
71 PL_DECLARE_POD_TYPE();
73 plUInt32 m_uiStartOffset = 0;
74 plUInt32 m_uiCount = 0;
78 plUInt32 m_uiStorageSizeNeeded = 0;
84 void CalculatePerTypeStartOffsets();
87 DataOffset GetOffset(plVisualScriptDataType::Enum dataType, plUInt32 uiIndex, DataOffset::Source::Enum source)
const;
96 bool IsAllocated()
const;
97 void AllocateStorage();
98 void DeallocateStorage();
105 template <
typename T>
106 const T& GetData(
DataOffset dataOffset)
const;
108 template <
typename T>
111 template <
typename T>
112 void SetData(
DataOffset dataOffset,
const T& value);
116 template <
typename T>
117 void SetPointerData(
DataOffset dataOffset, T ptr,
const plRTTI* pType, plUInt32 uiExecutionCounter);
120 void SetDataFromVariant(
DataOffset dataOffset,
const plVariant& value, plUInt32 uiExecutionCounter);
138#include <VisualScriptPlugin/Runtime/VisualScriptData_inl.h>
plBlob allows to store simple binary data larger than 4GB. This storage class is used by plImage to a...
Definition Blob.h:319
This class holds information about reflected types. Each instance represents one type that is known t...
Definition RTTI.h:30
Base class for reference counted objects.
Definition RefCounted.h:52
A Shared ptr manages a shared object and destroys that object when no one references it anymore....
Definition SharedPtr.h:10
Interface for binary in (read) streams.
Definition Stream.h:22
plResult ReadDWordValue(T *pDWordValue)
Helper method to read a dword value correctly (copes with potentially different endianess)
Definition Stream_inl.h:96
Interface for binary out (write) streams.
Definition Stream.h:107
plResult WriteDWordValue(const T *pDWordValue)
Helper method to write a dword value correctly (copes with potentially different endianess)
Definition Stream_inl.h:126
plVariant is a class that can store different types of variables, which is useful in situations where...
Definition Variant.h:44
Definition VisualScriptData.h:91
Default enum for returning failure or success, instead of using a bool.
Definition Types.h:54
A typed raw pointer.
Definition TypedPointer.h:13
Definition VisualScriptData.h:14
Definition VisualScriptData.h:10
Definition VisualScriptData.h:70
Definition VisualScriptData.h:8
Definition VisualScriptData.h:128