summaryrefslogtreecommitdiff
path: root/ACE/examples/Smart_Pointers/Gadget_Impl.h
diff options
context:
space:
mode:
Diffstat (limited to 'ACE/examples/Smart_Pointers/Gadget_Impl.h')
-rw-r--r--ACE/examples/Smart_Pointers/Gadget_Impl.h51
1 files changed, 51 insertions, 0 deletions
diff --git a/ACE/examples/Smart_Pointers/Gadget_Impl.h b/ACE/examples/Smart_Pointers/Gadget_Impl.h
new file mode 100644
index 00000000000..ed4faf27ca4
--- /dev/null
+++ b/ACE/examples/Smart_Pointers/Gadget_Impl.h
@@ -0,0 +1,51 @@
+/* -*- C++ -*- */
+//=============================================================================
+/**
+ * @file Gadget_Impl.h
+ *
+ * $Id$
+ *
+ * @author Christopher Kohlhoff <chris@kohlhoff.com>
+ */
+//=============================================================================
+
+#ifndef GADGET_IMPL_H
+#define GADGET_IMPL_H
+
+#include "ace/Unbounded_Queue.h"
+#include "Gadget.h"
+#include "Gadget_Part.h"
+
+/**
+ * @class Gadget_Impl
+ *
+ * @brief An implementation of the Gadget interface.
+ */
+class Gadget_Impl : public Gadget
+{
+public:
+ /// Constructor.
+ Gadget_Impl (void);
+
+ /// Destructor.
+ virtual ~Gadget_Impl (void);
+
+ /// Add a new part to the gadget. The gadget takes ownership of the part
+ /// object.
+ virtual void add_part (Gadget_Part_var part);
+
+ /// Remove a random part from the gadget. Ownership of the part is returned
+ /// to the caller.
+ virtual Gadget_Part_var remove_part (void);
+
+ /// Ask the gadget to print information about the parts that it contains.
+ virtual void list_parts (void);
+
+private:
+ /// The parts which make up this gadget. The set actually contains instances
+ /// of Gadget_Part_var to automatically manage the lifetimes of the
+ /// constituent parts.
+ ACE_Unbounded_Queue<Gadget_Part_var> parts_;
+};
+
+#endif /* GADGET_IMPL_H */