summaryrefslogtreecommitdiff
path: root/ACE/ace/Auto_Functor.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'ACE/ace/Auto_Functor.cpp')
-rw-r--r--ACE/ace/Auto_Functor.cpp42
1 files changed, 42 insertions, 0 deletions
diff --git a/ACE/ace/Auto_Functor.cpp b/ACE/ace/Auto_Functor.cpp
new file mode 100644
index 00000000000..91dbad1952b
--- /dev/null
+++ b/ACE/ace/Auto_Functor.cpp
@@ -0,0 +1,42 @@
+// $Id$
+
+#ifndef ACE_AUTO_FUNCTOR_CPP
+#define ACE_AUTO_FUNCTOR_CPP
+
+#include "ace/Auto_Functor.h"
+
+#if !defined(__ACE_INLINE__)
+# include "ace/Auto_Functor.inl"
+#endif /* __ACE_INLINE__ */
+
+ACE_BEGIN_VERSIONED_NAMESPACE_DECL
+
+template<typename X, typename Functor>
+ACE_Utils::Auto_Functor<X,Functor>::~Auto_Functor()
+ ACE_THROW_SPEC (())
+{
+ reset(0);
+}
+
+template<typename X, typename Functor> void
+ACE_Utils::Auto_Functor<X,Functor>::reset(X * p)
+ ACE_THROW_SPEC (())
+{
+ if(p_ != 0)
+ {
+ f_(p_);
+ }
+ p_ = p;
+}
+
+template<typename X, typename Functor>void
+ACE_Utils::Auto_Functor<X,Functor>::reset(X * p, Functor f)
+ ACE_THROW_SPEC (())
+{
+ reset(p);
+ f_ = f;
+}
+
+ACE_END_VERSIONED_NAMESPACE_DECL
+
+#endif /*ACE_AUTO_FUNCTOR_CPP*/