Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

template<typename, typename>
class Geo::GeoRefPtr

    └>D

A value type to take ownership of a raw object allocated on the heap and track a reference count between multiple instances of this class.

The raw object is destroyed when the last reference is released. Virtually identical to std::shared_ptr, but with policy-based destruction semantics.

Functions

NameDescription
~GeoRefPtr()

Destructor - Delete the internal object.

Count()

How many pointers share this resource?

DecrementRef()

Handle reduction of the reference count.

GeoRefPtr(T *)

Take ownership of the raw ptr. Explicit so that you don't unknowingly change ownership.

GeoRefPtr(GeoRefPtr &&)

Move constructor.

GeoRefPtr(const GeoRefPtr< T, D > &)

Increase ownership of the payload of other GeoRefPtr.

GeoRefPtr(const GeoRefPtr< TOther, DOther > &)

Increase ownership of the payload of other GeoRefPtr, given a different contained type Theoretically could write a destruction policy that accepted matches to other policies, but none implemented to date.

GetPtr()

Explicitely return the contained type.

IncrementRef()

Handle increase of the reference count.

operator bool_type()

Is the object valid?

operator GeoRefPtr< TOther, DOther >()

Convert to GeoRefPtr of compatible type.

operator!=(const GeoRefPtr &)

Equivalence/comparison tests.

operator*()

Allow dereferencing of the contained type.

operator[](Geo::s32)

Allow array referencing of the contained type.

operator<(const GeoRefPtr &)

Equivalence/comparison tests.

operator=(const GeoRefPtr< T, D > &)

Support assignment (modifying other object)

operator=(GeoRefPtr &&)

Move assignment operator.

operator==(const GeoRefPtr &)

Equivalence/comparison tests.

operator>(const GeoRefPtr &)

Equivalence/comparison tests.

operator->()

Access members of the owned object.

Reset(T *)

Hold new object, reducing count of current (possibly deleting)

Unique()

Is the object unique?


Anchor
a12eb9f067a8e7c4cbae4934097bf4004
a12eb9f067a8e7c4cbae4934097bf4004

Geo::GeoRefPtr< T, D >::~GeoRefPtr

...

public: ~GeoRefPtr()

...

Destructor - Delete the internal object.


Anchor
a48fc338728654e8c1cbfdcfaedc3dfb3
a48fc338728654e8c1cbfdcfaedc3dfb3

Geo::s32 Geo::GeoRefPtr< T, D >::Count

...

public: Geo::s32 Count() const

...

How many pointers share this resource?


Anchor
af5f83b6bfa8a0bae044c97a9aedecff1
af5f83b6bfa8a0bae044c97a9aedecff1

void Geo::GeoRefPtr< T, D >::DecrementRef

...

public: void DecrementRef()

...

Handle reduction of the reference count.


Anchor
ae002a06438bf0cfa02774cfa90414fb2
ae002a06438bf0cfa02774cfa90414fb2

Geo::GeoRefPtr< T, D >::GeoRefPtr

...

public: GeoRefPtr
(
    T * ptr
)

...

Take ownership of the raw ptr. Explicit so that you don't unknowingly change ownership.


Anchor
a069ce15d87d492085c5da0627a134d8b
a069ce15d87d492085c5da0627a134d8b

Geo::GeoRefPtr< T, D >::GeoRefPtr

...

public: GeoRefPtr
(
    GeoRefPtr && rhs
)

...

Move constructor.


Anchor
a16340beae4d5bfd7f5e54e3208ffff41
a16340beae4d5bfd7f5e54e3208ffff41

Geo::GeoRefPtr< T, D >::GeoRefPtr

...

public: GeoRefPtr
(
    const GeoRefPtr< T, D > & rhs
)

...

Increase ownership of the payload of other GeoRefPtr.

Inheritance from the destruction policy ensures that you cannot assign between GeoRefPtr of different policies, whilst allowing assignment to GeoRefPtr to base types.


Anchor
a38aed6f22120b7e0416d1ec00b05b88a
a38aed6f22120b7e0416d1ec00b05b88a

Geo::GeoRefPtr< T, D >::GeoRefPtr

...

public: GeoRefPtr
(
    const GeoRefPtr< TOther, DOther > & rhs
)

...

Increase ownership of the payload of other GeoRefPtr, given a different contained type Theoretically could write a destruction policy that accepted matches to other policies, but none implemented to date.


Anchor
a1fc318650ca34070177296dd7bbf41c5
a1fc318650ca34070177296dd7bbf41c5

T* Geo::GeoRefPtr< T, D >::GetPtr

...

public: T * GetPtr() const

...

Explicitely return the contained type.


Anchor
ac1dedb87b3f6eab28529d01fb16ea4ed
ac1dedb87b3f6eab28529d01fb16ea4ed

RefCount* Geo::GeoRefPtr< T, D >::IncrementRef

...

public: RefCount * IncrementRef() const

...

Handle increase of the reference count.


Anchor
a17e5fafb3e96f26fd2c9106895b49ef4
a17e5fafb3e96f26fd2c9106895b49ef4

Geo::GeoRefPtr< T, D >::operator bool_type

...

public: operator bool_type() const

...

Is the object valid?


Anchor
ac206302e42412d7dc7e6a4fcb9ddfc23
ac206302e42412d7dc7e6a4fcb9ddfc23

Geo::GeoRefPtr< T, D >::operator GeoRefPtr< TOther, DOther >

...

public: operator GeoRefPtr< TOther, DOther >()

...

Convert to GeoRefPtr of compatible type.


Anchor
a02d543f45ae6dbfea0af551c9edfdf58
a02d543f45ae6dbfea0af551c9edfdf58

bool Geo::GeoRefPtr< T, D >::operator!=

...

public: bool operator!=
(
    const GeoRefPtr & rhs
) const

...

Equivalence/comparison tests.


Anchor
a41b02560bdd8a3f1134efbcf53c0d4a3
a41b02560bdd8a3f1134efbcf53c0d4a3

T& Geo::GeoRefPtr< T, D >::operator*

...

public: T & operator*() const

...

Allow dereferencing of the contained type.


Anchor
ab38384413bd16f6a184bb3a5c349a875
ab38384413bd16f6a184bb3a5c349a875

T& Geo::GeoRefPtr< T, D >::operator[]

...

public: T & operator[]
(
    Geo::s32 idx
) const

...

Allow array referencing of the contained type.


Anchor
a3da3785bb54489048d5da5ae25a61de5
a3da3785bb54489048d5da5ae25a61de5

bool Geo::GeoRefPtr< T, D >::operator<

...

public: bool operator<
(
    const GeoRefPtr & rhs
) const

...

Equivalence/comparison tests.


Anchor
a3fa29e2e79d89536f96a1dbf5fc2668e
a3fa29e2e79d89536f96a1dbf5fc2668e

GeoRefPtr<T,D>& Geo::GeoRefPtr< T, D >::operator=

...

public: GeoRefPtr< T, D > & operator=
(
    const GeoRefPtr< T, D > & rhs
)

...

Support assignment (modifying other object)


Anchor
a3fbe4878286dd8d76136c4c5ca58351f
a3fbe4878286dd8d76136c4c5ca58351f

GeoRefPtr& Geo::GeoRefPtr< T, D >::operator=

...

public: GeoRefPtr & operator=
(
    GeoRefPtr && obj
)

...

Move assignment operator.


Anchor
a480445aca93fde596602d083ccd384e7
a480445aca93fde596602d083ccd384e7

bool Geo::GeoRefPtr< T, D >::operator==

...

public: bool operator==
(
    const GeoRefPtr & rhs
) const

...

Equivalence/comparison tests.


Anchor
a8f01dbe185c5bb0488d0c05f58f2a9c9
a8f01dbe185c5bb0488d0c05f58f2a9c9

bool Geo::GeoRefPtr< T, D >::operator>

...

public: bool operator>
(
    const GeoRefPtr & rhs
) const

...

Equivalence/comparison tests.


Anchor
a9e6eb010942117760f9308580bacc4e4
a9e6eb010942117760f9308580bacc4e4

T* Geo::GeoRefPtr< T, D >::operator->

...

public: T * operator->() const

...

Access members of the owned object.


Anchor
a8a81f50d1faa301d7b58be1566782642
a8a81f50d1faa301d7b58be1566782642

void Geo::GeoRefPtr< T, D >::Reset

...

public: void Reset
(
    T * ptr
)

...

Hold new object, reducing count of current (possibly deleting)


Anchor
a35584b6551396b0cba59ad9323888a0f
a35584b6551396b0cba59ad9323888a0f

bool Geo::GeoRefPtr< T, D >::Unique

...

public: bool Unique() const

...

Is the object unique?