|
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 |