summaryrefslogtreecommitdiff
path: root/ace/Functor.h
diff options
context:
space:
mode:
Diffstat (limited to 'ace/Functor.h')
-rw-r--r--ace/Functor.h229
1 files changed, 134 insertions, 95 deletions
diff --git a/ace/Functor.h b/ace/Functor.h
index bce51209ff6..7eb6333016e 100644
--- a/ace/Functor.h
+++ b/ace/Functor.h
@@ -1,39 +1,32 @@
/* -*- C++ -*- */
-// $Id$
-
-// ============================================================================
-//
-// = LIBRARY
-// ace
-//
-// = FILENAME
-// Functor.h
-//
-// = DESCRIPTION
-// Non-templatized classes and class template specializations for
-// implementing function objects that are used in various places
-// in ACE. There are currently two major categories of function
-// objects in ACE: GoF Command Pattern objects, and STL-style
-// functors for comparison of container elements. The command objects
-// are invoked via an execute () method, while the STL-style functors are
-// invoked via an operator() () method.
-// Non-templatized classes for implementing the GoF Command Pattern,
-// also known as functors or function objects.
-//
-// = AUTHOR
-// Chris Gill <cdgill@cs.wustl.edu>
-//
-// Based on Command Pattern implementations originally done by
-//
-// Carlos O'Ryan <coryan@cs.wustl.edu> and
-// Douglas C. Schmidt <schmidt@cs.wustl.edu> and
-// Sergio Flores-Gaitan <sergio@cs.wustl.edu>
-//
-// and on STL-style functor implementations originally done by
-//
-// Irfan Pyarali <irfan@cs.wustl.edu>
-//
-// ============================================================================
+
+//=============================================================================
+/**
+ * @file Functor.h
+ *
+ * $Id$
+ *
+ * Non-templatized classes and class template specializations for
+ * implementing function objects that are used in various places
+ * in ACE. There are currently two major categories of function
+ * objects in ACE: GoF Command Pattern objects, and STL-style
+ * functors for comparison of container elements. The command objects
+ * are invoked via an execute () method, while the STL-style functors are
+ * invoked via an operator() () method.
+ * Non-templatized classes for implementing the GoF Command Pattern,
+ * also known as functors or function objects.
+ *
+ *
+ * @author Chris Gill <cdgill@cs.wustl.edu>
+ * @author Based on Command Pattern implementations originally done by
+ * @author Carlos O'Ryan <coryan@cs.wustl.edu>
+ * @author Douglas C. Schmidt <schmidt@cs.wustl.edu>
+ * @author Sergio Flores-Gaitan <sergio@cs.wustl.edu>
+ * @author and on STL-style functor implementations originally done by
+ * @author Irfan Pyarali <irfan@cs.wustl.edu>
+ */
+//=============================================================================
+
#ifndef ACE_FUNCTOR_H
#define ACE_FUNCTOR_H
@@ -49,30 +42,34 @@
// GOF Command Pattern Classes and Template Specializations //
//////////////////////////////////////////////////////////////
+/**
+ * @class ACE_Command_Base
+ *
+ * @brief Defines an abstract class that allows us to invoke commands
+ * without knowing anything about the implementation.
+ *
+ * This class declares an interface to execute a command
+ * independent of the effect of the command, or the objects used
+ * to implement it.
+ */
class ACE_Export ACE_Command_Base
{
- // = TITLE
- // Defines an abstract class that allows us to invoke commands
- // without knowing anything about the implementation.
- //
- // = DESCRIPTION
- // This class declares an interface to execute a command
- // independent of the effect of the command, or the objects used
- // to implement it.
public:
// = Initialization and termination methods.
+ /// Default constructor.
ACE_Command_Base (void);
- // Default constructor.
+ /// Virtaul destructor.
virtual ~ACE_Command_Base (void);
- // Virtaul destructor.
+ /**
+ * Invokes the method encapsulated by the command, passing along the
+ * passed argument (if any). Users of classes derived from this
+ * class must ensure that the resulting invocation can tolerate a
+ * null void pointer being passed, or otherwise ensure that this
+ * will never occur.
+ */
virtual int execute (void *arg = 0) = 0;
- // Invokes the method encapsulated by the command, passing along the
- // passed argument (if any). Users of classes derived from this
- // class must ensure that the resulting invocation can tolerate a
- // null void pointer being passed, or otherwise ensure that this
- // will never occur.
};
////////////////////////////////////////////////////////////
@@ -87,154 +84,196 @@ template <class TYPE> class ACE_Equal_To;
template <class TYPE> class ACE_Less_Than;
ACE_TEMPLATE_SPECIALIZATION
+/**
+ * @class ACE_Hash<char>
+ *
+ * @brief Function object for hashing a char
+ */
class ACE_Export ACE_Hash<char>
{
- // = TITLE
- // Function object for hashing a char
public:
+ /// Simply returns t
u_long operator () (char t) const;
- // Simply returns t
};
ACE_TEMPLATE_SPECIALIZATION
+/**
+ * @class ACE_Hash<signed
+ *
+ * @brief Function object for hashing a signed char
+ */
class ACE_Export ACE_Hash<signed char>
{
- // = TITLE
- // Function object for hashing a signed char
public:
+ /// Simply returns t
u_long operator () (signed char t) const;
- // Simply returns t
};
ACE_TEMPLATE_SPECIALIZATION
+/**
+ * @class ACE_Hash<unsigned
+ *
+ * @brief Function object for hashing an unsigned char
+ */
class ACE_Export ACE_Hash<unsigned char>
{
- // = TITLE
- // Function object for hashing an unsigned char
public:
+ /// Simply returns t
u_long operator () (unsigned char t) const;
- // Simply returns t
};
// @@ ADD HASHES FOR ACE TYPES
ACE_TEMPLATE_SPECIALIZATION
+/**
+ * @class ACE_Hash<ACE_INT16>
+ *
+ * @brief Function object for hashing a 16-bit signed number
+ */
class ACE_Export ACE_Hash<ACE_INT16>
{
- // = TITLE
- // Function object for hashing a 16-bit signed number
public:
+ /// Simply returns t
u_long operator () (ACE_INT16 t) const;
- // Simply returns t
};
ACE_TEMPLATE_SPECIALIZATION
+/**
+ * @class ACE_Hash<ACE_UINT16>
+ *
+ * @brief Function object for hashing a 16-bit unsigned number
+ */
class ACE_Export ACE_Hash<ACE_UINT16>
{
- // = TITLE
- // Function object for hashing a 16-bit unsigned number
public:
+ /// Simply returns t
u_long operator () (ACE_UINT16 t) const;
- // Simply returns t
};
ACE_TEMPLATE_SPECIALIZATION
+/**
+ * @class ACE_Hash<ACE_INT32>
+ *
+ * @brief Function object for hashing a 32-bit signed number
+ */
class ACE_Export ACE_Hash<ACE_INT32>
{
- // = TITLE
- // Function object for hashing a 32-bit signed number
public:
+ /// Simply returns t
u_long operator () (ACE_INT32 t) const;
- // Simply returns t
};
ACE_TEMPLATE_SPECIALIZATION
+/**
+ * @class ACE_Hash<ACE_UINT32>
+ *
+ * @brief Function object for hashing a 32-bit unsigned number
+ */
class ACE_Export ACE_Hash<ACE_UINT32>
{
- // = TITLE
- // Function object for hashing a 32-bit unsigned number
public:
+ /// Simply returns t
u_long operator () (ACE_UINT32 t) const;
- // Simply returns t
};
ACE_TEMPLATE_SPECIALIZATION
+/**
+ * @class ACE_Hash<ACE_UINT64>
+ *
+ * @brief Function object for hashing a 64-bit unsigned number
+ */
class ACE_Export ACE_Hash<ACE_UINT64>
{
- // = TITLE
- // Function object for hashing a 64-bit unsigned number
public:
+ /// Simply returns t
u_long operator () (ACE_UINT64 t) const;
- // Simply returns t
};
// @@ DONE ADDING HASHES FOR ACE TYPES
ACE_TEMPLATE_SPECIALIZATION
+/**
+ * @class ACE_Hash<const
+ *
+ * @brief Function object for hashing a const string
+ */
class ACE_Export ACE_Hash<const ACE_TCHAR *>
{
- // = TITLE
- // Function object for hashing a const string
public:
+ /// Calls ACE::hash_pjw
u_long operator () (const ACE_TCHAR *t) const;
- // Calls ACE::hash_pjw
};
ACE_TEMPLATE_SPECIALIZATION
+/**
+ * @class ACE_Hash<ACE_TCHAR
+ *
+ * @brief Function object for hashing a string
+ */
class ACE_Export ACE_Hash<ACE_TCHAR *>
{
- // = TITLE
- // Function object for hashing a string
public:
+ /// Calls ACE::hash_pjw
u_long operator () (const ACE_TCHAR *t) const;
- // Calls ACE::hash_pjw
};
ACE_TEMPLATE_SPECIALIZATION
+/**
+ * @class ACE_Equal_To<const
+ *
+ * @brief Function object for determining whether two const strings are equal.
+ */
class ACE_Export ACE_Equal_To<const ACE_TCHAR *>
{
- // = TITLE
- // Function object for determining whether two const strings are equal.
public:
+ /// Simply calls ACE_OS::strcmp
int operator () (const ACE_TCHAR *lhs,
const ACE_TCHAR *rhs) const;
- // Simply calls ACE_OS::strcmp
};
ACE_TEMPLATE_SPECIALIZATION
+/**
+ * @class ACE_Equal_To<ACE_TCHAR
+ *
+ * @brief Function object for determining whether two non-const
+ * strings are equal.
+ */
class ACE_Export ACE_Equal_To<ACE_TCHAR *>
{
- // = TITLE
- // Function object for determining whether two non-const
- // strings are equal.
public:
+ /// Simply calls ACE_OS::strcmp
int operator () (const ACE_TCHAR *lhs,
const ACE_TCHAR *rhs) const;
- // Simply calls ACE_OS::strcmp
};
ACE_TEMPLATE_SPECIALIZATION
+/**
+ * @class ACE_Less_Than<const
+ *
+ * @brief Function object for determining whether the first const string
+ * is less than the second const string.
+ */
class ACE_Export ACE_Less_Than<const ACE_TCHAR *>
{
- // = TITLE
- // Function object for determining whether the first const string
- // is less than the second const string.
public:
+ /// Simply calls ACE_OS::strcmp
int operator () (const ACE_TCHAR *lhs,
const ACE_TCHAR *rhs) const;
- // Simply calls ACE_OS::strcmp
};
ACE_TEMPLATE_SPECIALIZATION
+/**
+ * @class ACE_Less_Than<ACE_TCHAR
+ *
+ * @brief Function object for determining whether the first string
+ * is less than the second string.
+ */
class ACE_Export ACE_Less_Than<ACE_TCHAR *>
{
- // = TITLE
- // Function object for determining whether the first string
- // is less than the second string.
public:
+ /// Simply calls ACE_OS::strcmp
int operator () (const ACE_TCHAR *lhs,
const ACE_TCHAR *rhs) const;
- // Simply calls ACE_OS::strcmp
};
#if defined (__ACE_INLINE__)