MacStd
OS X API using Standard C++
|
Base abstract template class to support generic object handle keeping. More...
#include <MacStd/common.hpp>
Public Member Functions | |
handle () noexcept | |
Initializes a new class instance with the object handle set to INVAL. | |
handle (T h) noexcept | |
Initializes a new class instance with an already available object handle. | |
handle (handle< T, INVAL > &&h) noexcept | |
Move constructor. | |
handle< T, INVAL > & | operator= (T h) noexcept |
Attaches already available object handle. | |
handle< T, INVAL > & | operator= (handle< T, INVAL > &&h) noexcept |
Move assignment. | |
operator T () const | |
Auto-typecasting operator. | |
T *& | operator* () const |
Returns the object handle value when the object handle is a pointer to a value (class, struct, etc.). | |
T * | operator& () |
Returns the object handle reference. | |
T | operator-> () const |
Provides object handle member access when the object handle is a pointer to a class or struct. | |
bool | operator! () const |
Tests if the object handle is invalid. | |
bool | operator< (T h) const |
Is handle less than? | |
bool | operator<= (T h) const |
Is handle less than or equal to? | |
bool | operator>= (T h) const |
Is handle greater than or equal to? | |
bool | operator> (T h) const |
Is handle greater than? | |
bool | operator!= (T h) const |
Is handle not equal to? | |
bool | operator== (T h) const |
Is handle equal to? | |
void | attach (T h) noexcept |
Sets a new object handle for the class. | |
T | detach () |
Dismisses the object handle from this class. | |
void | free () |
Destroys the object. | |
Protected Member Functions | |
virtual void | free_internal () noexcept=0 |
Abstract member function that must be implemented by child classes to do the actual object destruction. | |
Protected Attributes | |
T | m_h |
Object handle. | |
Base abstract template class to support generic object handle keeping.
It provides basic operators and methods common to all descendands of this class establishing a base to ease the replacement of native object handle type with classes in object-oriented approach.
|
inlinenoexcept |
Initializes a new class instance with an already available object handle.
[in] | h | Initial object handle value |
|
inlinenoexcept |
Move constructor.
[in,out] | h | A rvalue reference of another object |
|
inlinenoexcept |
Sets a new object handle for the class.
When the current object handle of the class is non-INVAL, the object is destroyed first.
[in] | h | New object handle |
|
inline |
Dismisses the object handle from this class.
|
protectedpure virtualnoexcept |
Abstract member function that must be implemented by child classes to do the actual object destruction.
Implemented in macstd::io_object< T >.
|
inline |
Auto-typecasting operator.
|
inline |
Tests if the object handle is invalid.
operator bool() const
would be correct C++ approach here. Unfortunately, it would produce ambiguities where bool
and T
are polymorphed. Use !!
to test if the object handle is valid.
|
inline |
Is handle not equal to?
[in] | h | Object handle to compare against |
|
inline |
Returns the object handle reference.
|
inline |
Returns the object handle value when the object handle is a pointer to a value (class, struct, etc.).
|
inline |
Provides object handle member access when the object handle is a pointer to a class or struct.
|
inline |
Is handle less than?
[in] | h | Object handle to compare against |
|
inline |
Is handle less than or equal to?
[in] | h | Object handle to compare against |
|
inlinenoexcept |
Move assignment.
[in,out] | h | A rvalue reference of another object |
|
inlinenoexcept |
Attaches already available object handle.
[in] | h | Object handle value |
|
inline |
Is handle equal to?
[in] | h | Object handle to compare against |
|
inline |
Is handle greater than?
[in] | h | Object handle to compare against |
|
inline |
Is handle greater than or equal to?
[in] | h | Object handle to compare against |