Into

Modules

Documentation

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

(
  • const void * pointer = 0
  • int pointerIndex = 0
  • bool reference = false
)

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
(
  • const void * pointer
)

Set the held pointer.

void
(
  • int pointerIndex
)

Set the pointer index.

void
(
  • bool saved
)

Set the "saved by reference" flag.

(
  • const void * ptr
)

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.

  • PiiTrackedPointerHolder * createTrackedPointerHolder

    (
    • const void * ptr
    )
    [inline]

    Create an instance of PiiTrackedPointerHolder.

    Override this function if you want to provide a custom holder for your type.

Notes (0)

Add a note

Not a single note added yet. Be the first, add yours.