summaryrefslogtreecommitdiff
path: root/ACE/examples/Smart_Pointers/Gadget_Part.h
diff options
context:
space:
mode:
Diffstat (limited to 'ACE/examples/Smart_Pointers/Gadget_Part.h')
-rw-r--r--ACE/examples/Smart_Pointers/Gadget_Part.h45
1 files changed, 45 insertions, 0 deletions
diff --git a/ACE/examples/Smart_Pointers/Gadget_Part.h b/ACE/examples/Smart_Pointers/Gadget_Part.h
new file mode 100644
index 00000000000..cef4277168a
--- /dev/null
+++ b/ACE/examples/Smart_Pointers/Gadget_Part.h
@@ -0,0 +1,45 @@
+/* -*- C++ -*- */
+//=============================================================================
+/**
+ * @file Gadget_Part.h
+ *
+ * $Id$
+ *
+ * @author Christopher Kohlhoff <chris@kohlhoff.com>
+ */
+//=============================================================================
+
+#ifndef GADGET_PART_H
+#define GADGET_PART_H
+
+#include "ace/Bound_Ptr.h"
+#include "ace/Synch_Traits.h"
+#include "ace/Thread_Mutex.h"
+
+/**
+ * @class Gadget_Part
+ *
+ * @brief An interface for some high-level application object.
+ */
+class Gadget_Part
+{
+public:
+ /// Destructor.
+ virtual ~Gadget_Part (void);
+
+ /// Ask the part to print information about itself.
+ virtual void print_info (void) = 0;
+
+ /// Ask the part to remove itself from the gadget that contains it.
+ virtual void remove_from_owner (void) = 0;
+};
+
+// The Gadget_Part_var smart pointer has shared (reference counted) ownership
+// semantics.
+typedef ACE_Strong_Bound_Ptr<Gadget_Part, ACE_SYNCH_MUTEX> Gadget_Part_var;
+
+// The Gadget_Part_ptr smart pointer has no ownership semantics, but supports
+// conversion back into a Gadget_var.
+typedef ACE_Weak_Bound_Ptr<Gadget_Part, ACE_SYNCH_MUTEX> Gadget_Part_ptr;
+
+#endif /* GADGET_PART_H */