diff options
Diffstat (limited to 'ACE/examples/Smart_Pointers/Gadget.h')
-rw-r--r-- | ACE/examples/Smart_Pointers/Gadget.h | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/ACE/examples/Smart_Pointers/Gadget.h b/ACE/examples/Smart_Pointers/Gadget.h new file mode 100644 index 00000000000..65b1fb0a34e --- /dev/null +++ b/ACE/examples/Smart_Pointers/Gadget.h @@ -0,0 +1,51 @@ +/* -*- C++ -*- */ +//============================================================================= +/** + * @file Gadget.h + * + * $Id$ + * + * @author Christopher Kohlhoff <chris@kohlhoff.com> + */ +//============================================================================= + +#ifndef GADGET_H +#define GADGET_H + +#include "ace/Bound_Ptr.h" +#include "Gadget_Part.h" + +/** + * @class Gadget + * + * @brief An interface for some high-level application object. + */ +class Gadget +{ +public: + /// Destructor. + virtual ~Gadget (void); + + /// Add a new part to the gadget. The gadget automatically takes shared + /// responsibility for the ownership of the part object since we are passing + /// a Gadget_Part_var. + virtual void add_part (Gadget_Part_var part) = 0; + + /// Remove a random part from the gadget. Responsibility for ownership of the + /// part is automatically returned to the caller since we are returning a + /// Gadget_Part_var. + virtual Gadget_Part_var remove_part (void) = 0; + + /// Ask the gadget to print information about the parts that it contains. + virtual void list_parts (void) = 0; +}; + +// The Gadget_var smart pointer has shared (reference counted) ownership +// semantics. +typedef ACE_Strong_Bound_Ptr<Gadget, ACE_SYNCH_MUTEX> Gadget_var; + +// The Gadget_ptr smart pointer has no ownership semantics, but supports +// conversion back into a Gadget_var. +typedef ACE_Weak_Bound_Ptr<Gadget, ACE_SYNCH_MUTEX> Gadget_ptr; + +#endif /* GADGET_H */ |