// -*- C++ -*- // // $Id$ // ============================================================================ // // = LIBRARY // ace // // = FILENAME // Functor.inl // // = DESCRIPTION // Inlinable method definitions for non-templatized classes // and template specializations implementing the GOF Command Pattern, // and STL-style functors. // // = AUTHOR // Chris Gill // // Based on Command Pattern implementations originally done by // // Carlos O'Ryan and // Douglas C. Schmidt and // Sergio Flores-Gaitan // // and on STL-style functor implementations originally done by // // Irfan Pyarali // // ============================================================================ #include "ace/ACE.h" #include "ace/OS_NS_string.h" ACE_BEGIN_VERSIONED_NAMESPACE_DECL ////////////////////////////////////////////////////////////// // GOF Command Pattern Classes and Template Specializations // ////////////////////////////////////////////////////////////// // Default constructor. ACE_INLINE ACE_Command_Base::ACE_Command_Base (void) { } //////////////////////////////////////////////////////////// // STL-style Functor Classes and Template Specializations // //////////////////////////////////////////////////////////// ACE_INLINE unsigned long ACE_Hash::operator () (char t) const { return t; } #if !defined (ACE_LACKS_BUILTIN_WCHAR_T) ACE_INLINE unsigned long ACE_Hash::operator () (wchar_t t) const { return t; } #endif /* ACE_LACKS_BUILTIN_WCHAR_T */ ACE_INLINE unsigned long ACE_Hash::operator () (signed char t) const { return t; } ACE_INLINE unsigned long ACE_Hash::operator () (unsigned char t) const { return t; } #if 0 ACE_INLINE unsigned long ACE_Hash::operator () (ACE_INT16 t) const { return t; } ACE_INLINE unsigned long ACE_Hash::operator () (ACE_UINT16 t) const { return t; } ACE_INLINE unsigned long ACE_Hash::operator () (ACE_INT32 t) const { return static_cast (t); } ACE_INLINE unsigned long ACE_Hash::operator () (ACE_UINT32 t) const { return t; } ACE_INLINE unsigned long ACE_Hash::operator () (ACE_UINT64 t) const { #if (ACE_SIZEOF_LONG == 4) return ACE_U64_TO_U32 (t); #else return static_cast (t); #endif /* ACE_SIZEOF_LONG */ } #endif ACE_INLINE unsigned long ACE_Hash::operator () (short t) const { return static_cast (t); } ACE_INLINE unsigned long ACE_Hash::operator () (unsigned short t) const { return static_cast (t); } ACE_INLINE unsigned long ACE_Hash::operator () (int t) const { return static_cast (t); } ACE_INLINE unsigned long ACE_Hash::operator () (unsigned int t) const { return static_cast (t); } ACE_INLINE unsigned long ACE_Hash::operator () (long t) const { return static_cast (t); } ACE_INLINE unsigned long ACE_Hash::operator () (unsigned long t) const { return t; } // This #if needs to match the one in Functor.h #if !defined (ACE_LACKS_LONGLONG_T) && (ACE_SIZEOF_LONG < 8) ACE_INLINE unsigned long ACE_Hash::operator () (ACE_INT64 t) const { return static_cast (t); } #endif /* !ACE_LACKS_LONGLONG_T && ACE_SIZEOF_LONG < 8 */ #if (ACE_SIZEOF_LONG < 8) ACE_INLINE unsigned long ACE_Hash::operator () (const ACE_UINT64 &t) const { #if (ACE_SIZEOF_LONG == 4) return ACE_U64_TO_U32 (t); #else return static_cast (t); #endif /* ACE_SIZEOF_LONG */ } #endif /* !ACE_LACKS_UNSIGNEDLONGLONG_T */ ACE_INLINE unsigned long ACE_Hash::operator () (const char *t) const { return ACE::hash_pjw (t); } ACE_INLINE unsigned long ACE_Hash::operator () (const char *t) const { return ACE::hash_pjw (t); } ACE_INLINE unsigned long ACE_Hash::operator () (const void *t) const { return (unsigned long)((ptrdiff_t) t); } /***********************************************************************/ ACE_INLINE int ACE_Equal_To::operator () (const char *lhs, const char *rhs) const { return !ACE_OS::strcmp (lhs, rhs); } ACE_INLINE int ACE_Equal_To::operator () (const char *lhs, const char *rhs) const { return !ACE_OS::strcmp (lhs, rhs); } ACE_INLINE int ACE_Equal_To::operator () (const ACE_UINT16 lhs, const ACE_UINT16 rhs) const { return (lhs == rhs); } ACE_INLINE int ACE_Equal_To::operator () (const ACE_INT16 lhs, const ACE_INT16 rhs) const { return (lhs == rhs); } ACE_INLINE int ACE_Equal_To::operator () (const ACE_UINT32 lhs, const ACE_UINT32 rhs) const { return (lhs == rhs); } ACE_INLINE int ACE_Equal_To::operator () (const ACE_INT32 lhs, const ACE_INT32 rhs) const { return (lhs == rhs); } ACE_INLINE int ACE_Equal_To::operator () (const ACE_UINT64 lhs, const ACE_UINT64 rhs) const { return (lhs == rhs); } /****************************************************************************/ ACE_INLINE int ACE_Less_Than::operator () (const char *lhs, const char *rhs) const { return (ACE_OS::strcmp (lhs, rhs) < 0) ? 1 : 0; } ACE_INLINE int ACE_Less_Than::operator () (const char *lhs, const char *rhs) const { return (ACE_OS::strcmp (lhs, rhs) < 0) ? 1 : 0; } ACE_INLINE unsigned long ACE_Hash::operator () (const wchar_t *t) const { return ACE::hash_pjw (t); } ACE_INLINE unsigned long ACE_Hash::operator () (const wchar_t *t) const { return ACE::hash_pjw (t); } ACE_INLINE int ACE_Equal_To::operator () (const wchar_t *lhs, const wchar_t *rhs) const { return !ACE_OS::strcmp (lhs, rhs); } ACE_INLINE int ACE_Equal_To::operator () (const wchar_t *lhs, const wchar_t *rhs) const { return !ACE_OS::strcmp (lhs, rhs); } ACE_INLINE int ACE_Less_Than::operator () (const wchar_t *lhs, const wchar_t *rhs) const { return (ACE_OS::strcmp (lhs, rhs) < 0) ? 1 : 0; } ACE_INLINE int ACE_Less_Than::operator () (const wchar_t *lhs, const wchar_t *rhs) const { return (ACE_OS::strcmp (lhs, rhs) < 0) ? 1 : 0; } ACE_END_VERSIONED_NAMESPACE_DECL