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