diff options
Diffstat (limited to 'ace/Functor.h')
-rw-r--r-- | ace/Functor.h | 229 |
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__) |