classPiiTrackedPointerHolder
#include <PiiTrackedPointerHolder.h>
A class that is used by PiiOutputArchive to store tracked pointers while serializing them.
Description
When a tracked pointer of type T is saved first time,
PiiOutputArchive
calls PiiSerialization::createTrackedPointerHolder(T*) and inserts
the returned object to the list of tracked pointers. The list is
consulted whenever a tracked pointer is being saved. If its address
already exists, it won't be saved again. The stored PiiTrackedPointerHolder
instances will be deleted when the archive is destroyed.
If a pointer type requires special actions when saved, one can create a specialization of PiiSerialization::createTrackedPointerHolder(). The following example shows how to ensure a refcounted object won't be deleted during serialization.
class MyRefCountedObjHolder : public PiiTrackedPointerHolder { public: MyRefCountedObjHolder(const MyRefCountedObj* pointer) : PiiTrackedPointerHolder(pointer) { pointer->increaseRefCount(); } ~MyRefCountedObjHolder() { reinterpret_cast<const MyRefCountedObj*>(_pointer)->decreaseRefCount(); } }; namespace PiiSerialization { inline PiiTrackedPointerHolder* createTrackedPointerHolder(const MyRefCountedObj* ptr) { return new MyRefCountedObjHolder(ptr); } }
Constructors and destructor
|
(
Create a new pointer holder. |
|
|
virtual
|
Public member functions
|
bool
|
See if the object pointed to by the held pointer was saved by a reference. |
|
const void *
|
( )
Get the held pointer. |
|
int
|
( )
Get the pointer index. |
|
void
|
(
Set the held pointer. |
|
void
|
(
Set the pointer index. |
|
void
|
(
Set the "saved by reference" flag. |
|
(
Create an instance of PiiTrackedPointerHolder. |
Function details
-
PiiTrackedPointerHolder
(- const void * pointer = 0
- int pointerIndex = 0
- bool reference = false
Create a new pointer holder.
Parameters
- pointer
-
the memory address of a tracked object
- pointerIndex
-
a serial number generated by PiiOutputArchive.
- reference
-
a flag that indicates whether the object was saved through a reference.
-
virtual ~PiiTrackedPointerHolder
()[virtual] -
bool isSavedByReference
()[inline]See if the object pointed to by the held pointer was saved by a reference.
-
const void * pointer
()[inline]Get the held pointer.
-
int pointerIndex
()[inline]Get the pointer index.
-
void setPointer
(- const void * pointer
[inline]Set the held pointer.
-
void setPointerIndex
(- int pointerIndex
[inline]Set the pointer index.
-
void setSavedByReference
(- bool saved
[inline]Set the "saved by reference" flag.
-
Create an instance of PiiTrackedPointerHolder.
Override this function if you want to provide a custom holder for your type.
Add a note
Not a single note added yet. Be the first, add yours.