Caelum
0.6.4
|
PrivatePtr traits for uniquely-owned resources. More...
#include <PrivatePtr.h>
Public Types | |
typedef InnerT | InnerPointerType |
Static Public Member Functions | |
static const InnerT | getNullValue () |
static PointedT * | getPointer (const InnerPointerType &inner) |
static void | destroy (InnerPointerType &inner) |
PrivatePtr traits for uniquely-owned resources.
All ogre resources are tracked by a resource managed by name and can be globally referenced from multiple places. This traits class allows you to hold a pointer to a resource which you create and completely control.
The best example of this is a cloned material. It is frequently useful to create a clone of an existing material and tweak settings for one particular usage. After the clone is no longer useful the material must be explicitly removed from the MaterialManager. Otherwise an unloaded resource handle is leaked.
When the PrivatePtr gets out of scope the resource is removed from the manager. In debug mode this will also check that there are no other references to the destroyed resource.