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