1/* 2 * Copyright 2009, Dana Burkart 3 * Copyright 2009, Stephan A��mus <superstippi@gmx.de> 4 * Copyright 2010, Axel D��rfler, axeld@pinc-software.de 5 * Copyright 2010, Rene Gollent (anevilyak@gmail.com) 6 * Distributed under the terms of the MIT License. 7 */ 8 9 10#include <NaturalCompare.h> 11 12#include <ctype.h> 13#include <string.h> 14#include <strings.h> 15 16#include <Collator.h> 17#include <Locale.h> 18 19 20namespace BPrivate { 21 22 23// #pragma mark - Natural sorting 24 25 26//! Compares two strings naturally, as opposed to lexicographically 27int 28NaturalCompare(const char* stringA, const char* stringB) 29{ 30 static BCollator* collator = NULL; 31 32 if (collator == NULL) 33 { 34 collator = new BCollator(); 35 BLocale::Default()->GetCollator(collator); 36 collator->SetStrength(B_COLLATE_SECONDARY); 37 collator->SetNumericSorting(true); 38 } 39 40 return collator->Compare(stringA, stringB); 41} 42 43 44} // namespace BPrivate 45