diff options
author | James H. Hill <hilljh82@gmail.com> | 2011-02-18 22:21:16 +0000 |
---|---|---|
committer | James H. Hill <hilljh82@gmail.com> | 2011-02-18 22:21:16 +0000 |
commit | cfa8217795918e17c0c2fd86657e179e108c4bbe (patch) | |
tree | ca99d2c22905e922513f29b7bb7f23732b2f6a6a | |
parent | 0e3421f521348a82905557f370ae32804fe68d1e (diff) | |
download | ATCD-cfa8217795918e17c0c2fd86657e179e108c4bbe.tar.gz |
Fri Feb 18 22:20:42 UTC 2011 James H. Hill <hillj at cs dot iupui dot edu>
-rw-r--r-- | ACE/ChangeLog | 7 | ||||
-rw-r--r-- | ACE/ace/Functor_String.h | 39 | ||||
-rw-r--r-- | ACE/ace/Functor_String.inl | 20 |
3 files changed, 66 insertions, 0 deletions
diff --git a/ACE/ChangeLog b/ACE/ChangeLog index b7b317c1927..897bc38d25e 100644 --- a/ACE/ChangeLog +++ b/ACE/ChangeLog @@ -1,3 +1,10 @@ +Fri Feb 18 22:20:42 UTC 2011 James H. Hill <hillj at cs dot iupui dot edu> + + * ace/Functor_String.h: + * ace/Functor_String.inl: + + Specialized the string functors for std::string. + Fri Feb 18 13:37:44 UTC 2011 Olli Savia <ops@iki.fi> * include/makeinclude/platform_lynxos.GNU: diff --git a/ACE/ace/Functor_String.h b/ACE/ace/Functor_String.h index 1b9d8f90d6d..5a35e68d9d7 100644 --- a/ACE/ace/Functor_String.h +++ b/ACE/ace/Functor_String.h @@ -25,6 +25,7 @@ #include /**/ "ace/ACE_export.h" #include "ace/SStringfwd.h" +#include <string> ACE_BEGIN_VERSIONED_NAMESPACE_DECL @@ -77,6 +78,44 @@ public: const ACE_CString &rhs) const; }; +/** + * @brief Function object for determining whether two std::strings are + * equal. + */ +template<> +class ACE_Export ACE_Equal_To<std::string> +{ +public: + int operator () (const std::string &lhs, + const std::string &rhs) const; +}; + + +/** + * @brief Function object for hashing a std::string + */ +template<> +class ACE_Export ACE_Hash<std::string> +{ +public: + /// Calls ACE::hash_pjw + unsigned long operator () (const std::string &lhs) const; +}; + + +/** + * @brief Function object for determining whether the first const string + * is less than the second const string. + */ +template<> +class ACE_Export ACE_Less_Than<std::string> +{ +public: + /// Simply calls std::string::compare + int operator () (const std::string &lhs, + const std::string &rhs) const; +}; + #if defined (ACE_USES_WCHAR) diff --git a/ACE/ace/Functor_String.inl b/ACE/ace/Functor_String.inl index 82e8775a718..34eedd8613d 100644 --- a/ACE/ace/Functor_String.inl +++ b/ACE/ace/Functor_String.inl @@ -28,6 +28,26 @@ ACE_Less_Than<ACE_CString>::operator () (const ACE_CString &lhs, return (lhs < rhs); } +ACE_INLINE unsigned long +ACE_Hash<std::string>::operator () (const std::string &t) const +{ + return ACE::hash_pjw (t.c_str (), t.length ()); +} + + +ACE_INLINE int +ACE_Equal_To<std::string>::operator () (const std::string &lhs, + const std::string &rhs) const +{ + return lhs == rhs; +} + +ACE_INLINE int +ACE_Less_Than<std::string>::operator () (const std::string &lhs, + const std::string &rhs) const +{ + return (lhs < rhs); +} #if defined (ACE_USES_WCHAR) ACE_INLINE unsigned long |