1e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott/* 2e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * Copyright (c) 1999 3e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * Silicon Graphics Computer Systems, Inc. 4e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * 5e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * Copyright (c) 1999 6e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * Boris Fomitchev 7e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * 8e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * This material is provided "as is", with absolutely no warranty expressed 9e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * or implied. Any use is at your own risk. 10e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * 11e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * Permission to use or copy this software for any purpose is hereby granted 12e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * without fee, provided the above notices are retained on all copies. 13e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * Permission to modify the code and to distribute modified code is granted, 14e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * provided the above notices are retained, and a notice that the code was 15e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * modified is included with the above copyright notice. 16e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * 17e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott */ 18e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#include "stlport_prefix.h" 19e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 20e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#include <locale> 21e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 22e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott_STLP_BEGIN_NAMESPACE 23e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 24e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott// collate<char> 25e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 26e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottcollate<char>::~collate() {} 27e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 28e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottint collate<char>::do_compare(const char* low1, const char* high1, 29e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott const char* low2, const char* high2) const 30e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott{ return _STLP_PRIV __lexicographical_compare_3way(low1, high1, low2, high2); } 31e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 32e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottstring collate<char>::do_transform(const char* low, const char* high) const 33e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott{ return string(low, high); } 34e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 35e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottlong collate<char>::do_hash(const char* low, const char* high) const { 36e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott unsigned long result = 0; 37e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott for ( ; low < high; ++low) 38e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott result = 5 * result + *low; 39e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott return result; 40e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott} 41e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 42e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#if !defined (_STLP_NO_WCHAR_T) 43e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott// collate<wchar_t> 44e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 45e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottcollate<wchar_t>::~collate() {} 46e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 47e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottint 48e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottcollate<wchar_t>::do_compare(const wchar_t* low1, const wchar_t* high1, 49e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott const wchar_t* low2, const wchar_t* high2) const 50e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott{ return _STLP_PRIV __lexicographical_compare_3way(low1, high1, low2, high2); } 51e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 52e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottwstring collate<wchar_t>::do_transform(const wchar_t* low, const wchar_t* high) const 53e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott{ return wstring(low, high); } 54e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 55e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottlong collate<wchar_t>::do_hash(const wchar_t* low, const wchar_t* high) const { 56e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott unsigned long result = 0; 57e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott for ( ; low < high; ++low) 58e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott result = 5 * result + *low; 59e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott return result; 60e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott} 61e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif 62e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 63e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott_STLP_END_NAMESPACE 64e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 65e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 66e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott// Local Variables: 67e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott// mode:C++ 68e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott// End: 69e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 70