summaryrefslogtreecommitdiff
path: root/ACE/ace/Functor.inl
diff options
context:
space:
mode:
authorWilliam R. Otte <wotte@dre.vanderbilt.edu>2006-07-24 15:50:30 +0000
committerWilliam R. Otte <wotte@dre.vanderbilt.edu>2006-07-24 15:50:30 +0000
commitc44379cc7d9c7aa113989237ab0f56db12aa5219 (patch)
tree66a84b20d47f2269d8bdc6e0323f338763424d3a /ACE/ace/Functor.inl
parent3aff90f4a822fcf5d902bbfbcc9fa931d6191a8c (diff)
downloadATCD-c44379cc7d9c7aa113989237ab0f56db12aa5219.tar.gz
Repo restructuring
Diffstat (limited to 'ACE/ace/Functor.inl')
-rw-r--r--ACE/ace/Functor.inl289
1 files changed, 289 insertions, 0 deletions
diff --git a/ACE/ace/Functor.inl b/ACE/ace/Functor.inl
new file mode 100644
index 00000000000..84e38313b02
--- /dev/null
+++ b/ACE/ace/Functor.inl
@@ -0,0 +1,289 @@
+// -*- 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 <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>
+//
+// ============================================================================
+
+#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<char>::operator () (char t) const
+{
+ return t;
+}
+
+#if defined (ACE_HAS_WCHAR) && ! defined (ACE_LACKS_NATIVE_WCHAR_T)
+ACE_INLINE unsigned long
+ACE_Hash<wchar_t>::operator () (wchar_t t) const
+{
+ return t;
+}
+#endif /* ACE_HAS_WCHAR && ! ACE_LACKS_NATIVE_WCHAR_T */
+
+ACE_INLINE unsigned long
+ACE_Hash<signed char>::operator () (signed char t) const
+{
+ return t;
+}
+
+ACE_INLINE unsigned long
+ACE_Hash<unsigned char>::operator () (unsigned char t) const
+{
+ return t;
+}
+
+#if 0
+ACE_INLINE unsigned long
+ACE_Hash<ACE_INT16>::operator () (ACE_INT16 t) const
+{
+ return t;
+}
+
+ACE_INLINE unsigned long
+ACE_Hash<ACE_UINT16>::operator () (ACE_UINT16 t) const
+{
+ return t;
+}
+
+ACE_INLINE unsigned long
+ACE_Hash<ACE_INT32>::operator () (ACE_INT32 t) const
+{
+ return static_cast<unsigned long> (t);
+}
+
+ACE_INLINE unsigned long
+ACE_Hash<ACE_UINT32>::operator () (ACE_UINT32 t) const
+{
+ return t;
+}
+
+ACE_INLINE unsigned long
+ACE_Hash<ACE_UINT64>::operator () (ACE_UINT64 t) const
+{
+#if (ACE_SIZEOF_LONG == 4)
+ return ACE_U64_TO_U32 (t);
+#else
+ return static_cast<unsigned long> (t);
+#endif /* ACE_SIZEOF_LONG */
+}
+#endif
+
+ACE_INLINE unsigned long
+ACE_Hash<short>::operator () (short t) const
+{
+ return static_cast<unsigned long> (t);
+}
+
+ACE_INLINE unsigned long
+ACE_Hash<unsigned short>::operator () (unsigned short t) const
+{
+ return static_cast<unsigned long> (t);
+}
+
+ACE_INLINE unsigned long
+ACE_Hash<int>::operator () (int t) const
+{
+ return static_cast<unsigned long> (t);
+}
+
+ACE_INLINE unsigned long
+ACE_Hash<unsigned int>::operator () (unsigned int t) const
+{
+ return static_cast<unsigned long> (t);
+}
+
+ACE_INLINE unsigned long
+ACE_Hash<long>::operator () (long t) const
+{
+ return static_cast<unsigned long> (t);
+}
+
+ACE_INLINE unsigned long
+ACE_Hash<unsigned long>::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<ACE_INT64>::operator () (ACE_INT64 t) const
+{
+ return static_cast<unsigned long> (t);
+}
+#endif /* !ACE_LACKS_LONGLONG_T && ACE_SIZEOF_LONG < 8 */
+
+#if (ACE_SIZEOF_LONG < 8)
+ACE_INLINE unsigned long
+ACE_Hash<ACE_UINT64>::operator () (const ACE_UINT64 &t) const
+{
+#if (ACE_SIZEOF_LONG == 4)
+ return ACE_U64_TO_U32 (t);
+#else
+ return static_cast<unsigned long> (t);
+#endif /* ACE_SIZEOF_LONG */
+}
+#endif /* !ACE_LACKS_UNSIGNEDLONGLONG_T */
+
+ACE_INLINE unsigned long
+ACE_Hash<const char *>::operator () (const char *t) const
+{
+ return ACE::hash_pjw (t);
+}
+
+ACE_INLINE unsigned long
+ACE_Hash<char *>::operator () (const char *t) const
+{
+ return ACE::hash_pjw (t);
+}
+
+ACE_INLINE unsigned long
+ACE_Hash<void *>::operator () (const void *t) const
+{
+ return (unsigned long)((ptrdiff_t) t);
+}
+
+/***********************************************************************/
+ACE_INLINE int
+ACE_Equal_To<const char *>::operator () (const char *lhs, const char *rhs) const
+{
+ return !ACE_OS::strcmp (lhs, rhs);
+}
+
+ACE_INLINE int
+ACE_Equal_To<char *>::operator () (const char *lhs, const char *rhs) const
+{
+ return !ACE_OS::strcmp (lhs, rhs);
+}
+
+ACE_INLINE int
+ACE_Equal_To<ACE_UINT16>::operator () (const ACE_UINT16 lhs, const ACE_UINT16 rhs) const
+{
+ return (lhs == rhs);
+}
+
+ACE_INLINE int
+ACE_Equal_To<ACE_INT16>::operator () (const ACE_INT16 lhs, const ACE_INT16 rhs) const
+{
+ return (lhs == rhs);
+}
+
+ACE_INLINE int
+ACE_Equal_To<ACE_UINT32>::operator () (const ACE_UINT32 lhs, const ACE_UINT32 rhs) const
+{
+ return (lhs == rhs);
+}
+
+ACE_INLINE int
+ACE_Equal_To<ACE_INT32>::operator () (const ACE_INT32 lhs, const ACE_INT32 rhs) const
+{
+ return (lhs == rhs);
+}
+
+ACE_INLINE int
+ACE_Equal_To<ACE_UINT64>::operator () (const ACE_UINT64 lhs, const ACE_UINT64 rhs) const
+{
+ return (lhs == rhs);
+}
+
+/****************************************************************************/
+ACE_INLINE int
+ACE_Less_Than<const char *>::operator () (const char *lhs, const char *rhs) const
+{
+ return (ACE_OS::strcmp (lhs, rhs) < 0) ? 1 : 0;
+}
+
+ACE_INLINE int
+ACE_Less_Than<char *>::operator () (const char *lhs, const char *rhs) const
+{
+ return (ACE_OS::strcmp (lhs, rhs) < 0) ? 1 : 0;
+}
+
+
+#if defined (ACE_HAS_WCHAR)
+
+ACE_INLINE unsigned long
+ACE_Hash<const wchar_t *>::operator () (const wchar_t *t) const
+{
+ return ACE::hash_pjw (t);
+}
+
+ACE_INLINE unsigned long
+ACE_Hash<wchar_t *>::operator () (const wchar_t *t) const
+{
+ return ACE::hash_pjw (t);
+}
+
+ACE_INLINE int
+ACE_Equal_To<const wchar_t *>::operator () (const wchar_t *lhs,
+ const wchar_t *rhs) const
+{
+ return !ACE_OS::strcmp (lhs, rhs);
+}
+
+ACE_INLINE int
+ACE_Equal_To<wchar_t *>::operator () (const wchar_t *lhs,
+ const wchar_t *rhs) const
+{
+ return !ACE_OS::strcmp (lhs, rhs);
+}
+
+ACE_INLINE int
+ACE_Less_Than<const wchar_t *>::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<wchar_t *>::operator () (const wchar_t *lhs, const wchar_t *rhs) const
+{
+ return (ACE_OS::strcmp (lhs, rhs) < 0) ? 1 : 0;
+}
+
+#endif // ACE_HAS_WCHAR
+
+ACE_END_VERSIONED_NAMESPACE_DECL