15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//===----------------------------------------------------------------------===// 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// The LLVM Compiler Infrastructure 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// This file is dual licensed under the MIT and the University of Illinois Open 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Source Licenses. See LICENSE.TXT for details. 72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// 82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)//===----------------------------------------------------------------------===// 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// <locale> 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 12c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// template <class charT> class collate; 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 14a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)// int compare(const charT* low1, const charT* high1, 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// const charT* low2, const charT* high2) const; 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include <locale> 18c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch#include <cassert> 19868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 20868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)int main() 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::locale l = std::locale::classic(); 237dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch { 242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const char ia[] = "1234"; 252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const unsigned sa = sizeof(ia)/sizeof(ia[0]); 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const char ib[] = "123"; 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::collate<char>& f = std::use_facet<std::collate<char> >(l); 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) assert(f.compare(ia, ia+sa, ib, ib+2) == 1); 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) assert(f.compare(ib, ib+2, ia, ia+sa) == -1); 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) assert(f.compare(ia, ia+sa, ib, ib+3) == 1); 317dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch assert(f.compare(ib, ib+3, ia, ia+sa) == -1); 3290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) assert(f.compare(ia, ia+sa, ib+1, ib+3) == -1); 335d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) assert(f.compare(ib+1, ib+3, ia, ia+sa) == 1); 34effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch assert(f.compare(ia, ia+3, ib, ib+3) == 0); 359ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch } 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const wchar_t ia[] = L"1234"; 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const unsigned sa = sizeof(ia)/sizeof(ia[0]); 39c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const wchar_t ib[] = L"123"; 40a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) const std::collate<wchar_t>& f = std::use_facet<std::collate<wchar_t> >(l); 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) assert(f.compare(ia, ia+sa, ib, ib+2) == 1); 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) assert(f.compare(ib, ib+2, ia, ia+sa) == -1); 43effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch assert(f.compare(ia, ia+sa, ib, ib+3) == 1); 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) assert(f.compare(ib, ib+3, ia, ia+sa) == -1); 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) assert(f.compare(ia, ia+sa, ib+1, ib+3) == -1); 462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) assert(f.compare(ib+1, ib+3, ia, ia+sa) == 1); 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) assert(f.compare(ia, ia+3, ib, ib+3) == 0); 48effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch } 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)