178 |
typedef std::vector<UID> UIDChain; |
typedef std::vector<UID> UIDChain; |
179 |
|
|
180 |
// prototyping of private internal friend functions |
// prototyping of private internal friend functions |
181 |
|
static String _encodePrimitiveValue(const Object& obj); |
182 |
static DataType _popDataTypeBlob(const char*& p, const char* end); |
static DataType _popDataTypeBlob(const char*& p, const char* end); |
183 |
static Member _popMemberBlob(const char*& p, const char* end); |
static Member _popMemberBlob(const char*& p, const char* end); |
184 |
static Object _popObjectBlob(const char*& p, const char* end); |
static Object _popObjectBlob(const char*& p, const char* end); |
185 |
static void _popPrimitiveValue(const char*& p, const char* end, Object& obj); |
static void _popPrimitiveValue(const char*& p, const char* end, Object& obj); |
186 |
|
static String _primitiveObjectValueToString(const Object& obj); |
187 |
|
|
188 |
/** @brief Abstract reflection of a native C++ data type. |
/** @brief Abstract reflection of a native C++ data type. |
189 |
* |
* |
288 |
bool m_isPointer; |
bool m_isPointer; |
289 |
|
|
290 |
friend DataType _popDataTypeBlob(const char*& p, const char* end); |
friend DataType _popDataTypeBlob(const char*& p, const char* end); |
291 |
|
friend class Archive; |
292 |
}; |
}; |
293 |
|
|
294 |
/** @brief Abstract reflection of a native C++ class/struct's member variable. |
/** @brief Abstract reflection of a native C++ class/struct's member variable. |
381 |
RawData m_data; |
RawData m_data; |
382 |
std::vector<Member> m_members; |
std::vector<Member> m_members; |
383 |
|
|
384 |
|
friend String _encodePrimitiveValue(const Object& obj); |
385 |
friend Object _popObjectBlob(const char*& p, const char* end); |
friend Object _popObjectBlob(const char*& p, const char* end); |
386 |
friend void _popPrimitiveValue(const char*& p, const char* end, Object& obj); |
friend void _popPrimitiveValue(const char*& p, const char* end, Object& obj); |
387 |
|
friend String _primitiveObjectValueToString(const Object& obj); |
388 |
|
friend class Archive; |
389 |
}; |
}; |
390 |
|
|
391 |
/** @brief Destination container for serialization, and source container for deserialization. |
/** @brief Destination container for serialization, and source container for deserialization. |
539 |
deserialize(&obj); |
deserialize(&obj); |
540 |
} |
} |
541 |
|
|
542 |
const RawData& rawData() const { return m_rawData; } |
const RawData& rawData(); |
543 |
virtual String rawDataFormat() const; |
virtual String rawDataFormat() const; |
544 |
|
|
545 |
template<typename T_classType, typename T_memberType> |
template<typename T_classType, typename T_memberType> |
573 |
virtual void decode(const RawData& data); |
virtual void decode(const RawData& data); |
574 |
virtual void decode(const uint8_t* data, size_t size); |
virtual void decode(const uint8_t* data, size_t size); |
575 |
void clear(); |
void clear(); |
576 |
|
bool isModified() const; |
577 |
void remove(const Object& obj); |
void remove(const Object& obj); |
578 |
Object& rootObject(); |
Object& rootObject(); |
579 |
Object& objectByUID(const UID& uid); |
Object& objectByUID(const UID& uid); |
580 |
|
void setAutoValue(Object& object, String value); |
581 |
|
void setIntValue(Object& object, int64_t value); |
582 |
|
void setRealValue(Object& object, double value); |
583 |
|
void setBoolValue(Object& object, bool value); |
584 |
|
void setEnumValue(Object& object, uint64_t value); |
585 |
|
String valueAsString(const Object& object); |
586 |
|
|
587 |
protected: |
protected: |
588 |
// UID resolver for non-pointer types |
// UID resolver for non-pointer types |
689 |
operation_t m_operation; |
operation_t m_operation; |
690 |
UID m_root; |
UID m_root; |
691 |
RawData m_rawData; |
RawData m_rawData; |
692 |
|
bool m_isModified; |
693 |
}; |
}; |
694 |
|
|
695 |
/** |
/** |