222 |
return __is_pod(T); |
return __is_pod(T); |
223 |
}*/ |
}*/ |
224 |
|
|
225 |
/** @brief Unique identifier for one specific C++ object, member or fundamental variable. |
/** @brief Unique identifier referring to one specific native C++ object, member, fundamental variable, or any other native C++ data. |
226 |
* |
* |
227 |
* Reflects a unique identifier for one specific serialized C++ class |
* Reflects a unique identifier for one specific serialized C++ data, i.e. |
228 |
* instance, C/C++ struct instance, member, primitive pointer, or |
* C++ class instance, C/C++ struct instance, member, primitive pointer, |
229 |
* fundamental variables. |
* fundamental variables, or any other native C/C++ data originally being |
230 |
|
* serialized. |
231 |
* |
* |
232 |
* A unique identifier is composed of an id (an identifier which is not |
* A unique identifier is composed of an id (an identifier which is not |
233 |
* necessarily unique) and a size. Since the underlying ID is derived from |
* necessarily unique) and a size. Since the underlying ID is derived from |
507 |
friend Member _popMemberBlob(const char*& p, const char* end); |
friend Member _popMemberBlob(const char*& p, const char* end); |
508 |
}; |
}; |
509 |
|
|
510 |
/** @brief Abstract reflection of a native C++ class/struct instance. |
/** @brief Abstract reflection of some native serialized C/C++ data. |
511 |
* |
* |
512 |
* Provides detailed information about a specific serialized C++ object, |
* When your native C++ objects are serialized, all native data is |
513 |
* like its C++ member variables, its C++ class/struct name, its native |
* translated and reflected by such an Object reflection. So each instance |
514 |
* memory size and more. When your native C++ objects are serialized, all |
* of your serialized native C++ class objects become available as an |
515 |
* native data is translated reflected by such an Object reflection. So each |
* Object, but also each member variable of your C++ objects is translated |
516 |
* instance of your serialized C++ class objects become available as an |
* into an Object, and any other native C/C++ data. So essentially every |
517 |
* Object, but also each member variable of your C++ objects, and all other |
* native data is turned into its own Object and accessible by this API. |
518 |
* native C/C++ data. So essentially every native data is turned into its |
* |
519 |
* own Object and accessible by this API. |
* For each one of those Object reflections, this class provides detailed |
520 |
|
* information about their native origin. For example if an Object |
521 |
|
* represents a native C++ class instante, then it provides access to its |
522 |
|
* C++ class/struct name, to its C++ member variables, its native memory |
523 |
|
* size and much more. |
524 |
* |
* |
525 |
* Even though this framework allows you to adjust abstract Object instances |
* Even though this framework allows you to adjust abstract Object instances |
526 |
* to a certain extent, most of the methods of this Object class are |
* to a certain extent, most of the methods of this Object class are |
527 |
* read-only though and the actual modifyable methods are made available |
* read-only though and the actual modifyable methods are made available |
528 |
* not as part of this Object class, but as part of the Archive class |
* not as part of this Object class, but as part of the Archive class |
529 |
* instead. This was designed like this for performance and safety reasons. |
* instead. This design decision was made for performance and safety |
530 |
|
* reasons. |
531 |
* |
* |
532 |
* @see Archive::setIntValue() as an example for modifying Object instances. |
* @see Archive::setIntValue() as an example for modifying Object instances. |
533 |
*/ |
*/ |