Gorgon Game Engine
ReferenceCounter Class Reference

This class allows references to be counted and destroyed properly. More...

Public Member Functions

void Decrease (const Data &data)
 Decreases the reference count of the given object. More...
 
void GetRidOf (Data &data)
 Never use without a proper reason. More...
 
void Increase (const Data &data)
 Increases the reference count of the given object. If it is not registered, this request is ignored. More...
 
void Increase (void *ptr)
 Increases the reference count of the given object. If it is not registered, this request is ignored. More...
 
bool IsRegistered (const Data &data) const
 
void list ()
 
void Register (const Data &data)
 Registers a new object of reference counting, this will set reference count to one. More...
 
void Register (void *ptr)
 Registers a new object of reference counting, this will set reference count to 0. More...
 
void Reset (const Data &data)
 Resets the reference count to 0. More...
 
void Unregister (const Data &data)
 Unregisters an object from reference counter. More...
 

Detailed Description

This class allows references to be counted and destroyed properly.

Member Function Documentation

◆ Decrease()

void Decrease ( const Data data)

Decreases the reference count of the given object.

If it is not registered, this request is ignored. If reference count of the object reaches 0, it is deleted.

References ASSERT, Data::Delete(), Data::GetData(), Member::GetName(), Data::GetType(), Any::IsPointer(), and Any::Pointer().

◆ GetRidOf()

void GetRidOf ( Data data)

Never use without a proper reason.

Gets rid of the data without destroying its content. It does decrease reference count. However, if it hits 0 it will not destroy its count.

References ASSERT, Data::GetData(), Member::GetName(), Data::GetType(), Data::Invalid(), Any::IsPointer(), and Any::Pointer().

◆ Increase() [1/2]

void Increase ( const Data data)

Increases the reference count of the given object. If it is not registered, this request is ignored.

References ASSERT, Data::GetData(), Member::GetName(), Data::GetType(), Any::IsPointer(), and Any::Pointer().

◆ Increase() [2/2]

void Increase ( void *  ptr)

Increases the reference count of the given object. If it is not registered, this request is ignored.

◆ IsRegistered()

bool IsRegistered ( const Data data) const

◆ list()

void list ( )

◆ Register() [1/2]

void Register ( const Data data)

Registers a new object of reference counting, this will set reference count to one.

This function ignores register requests for nullptr

References ASSERT, Data::GetData(), Member::GetName(), Data::GetType(), Any::IsPointer(), and Any::Pointer().

◆ Register() [2/2]

void Register ( void *  ptr)

Registers a new object of reference counting, this will set reference count to 0.

This function ignores register requests for nullptr

◆ Reset()

void Reset ( const Data data)

Resets the reference count to 0.

References ASSERT, Data::GetData(), Member::GetName(), Data::GetType(), Any::IsPointer(), and Any::Pointer().

◆ Unregister()

void Unregister ( const Data data)

Unregisters an object from reference counter.

References ASSERT, Data::GetData(), Member::GetName(), Data::GetType(), Any::IsPointer(), and Any::Pointer().


The documentation for this class was generated from the following file: