abstract base class for all mutually-connected objects More...
#include <mutual.hpp>
Protected Member Functions | |
virtual void | _set (Base< U, T > &that)=0 |
takes the necessary steps to connect this to that , without worrying about anything on that 's end | |
virtual void | _unset (Base< U, T > &that)=0 |
takes the necessary steps to disconnect this from that , without worrying about anything on that 's end | |
virtual T * | _mine () |
may be overridden by derrived classes to provide partners to data of some arbitrary type T | |
virtual const T * | _mine () const |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. | |
void | _connect (Base< U, T > &that) |
mutually connects this and that by calling both of their _set() member functions | |
void | _disconnect (Base< U, T > &that) |
mutually disconnects this and that by calling both of their _unset() member functions | |
Static Protected Member Functions | |
static U * | _yours (Base< U, T > &that) |
Accesses the _mine() of that | |
static const U * | _yours (const Base< U, T > &that) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. | |
Friends | |
class | Base< U, T > |
abstract base class for all mutually-connected objects
Implements the basic mechanics of mutual connection and disconnection. Derived classes may provide data of currently unknown type, so Base
takes a template parameter T
and provides a virtual function _mine()
to access data of type T
. It may be desireable for a Base
to be mutually connected with another Base
(its "partner") that provides data of a different type, so Base
takes a second parameter U
which is its partner's T
. Derived classes must override _set()
and _unset()
to implement the process of connecting themself to a partner. Derived classes should implement an interface that calls _connect
and _disconnect
as desired, including:
_disconnect
s the object from its partners.Derived classes may override _mine()
to provide their partners access to some data.
Thread Safety
Connection and disconnection, and by consequence move semantics, are not thread safe in general.