# Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. — Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

Public Types | Public Member Functions | Protected Member Functions

# boost::locale::collator< CharType > Class Template Reference
[Collation]

Collation facet. More...

`#include <boost/locale/collator.hpp>`

Inheritance diagram for boost::locale::collator< CharType >:

List of all members.

## Public Types
typedef CharType | char_type
typedef std::basic_string < CharType > | string_type
## Public Member Functions
int | compare (level_type level, char_type const *b1, char_type const *e1, char_type const *b2, char_type const *e2) const
string_type | transform (level_type level, char_type const *b, char_type const *e) const
long | hash (level_type level, char_type const *b, char_type const *e) const
int | compare (level_type level, string_type const &l, string_type const &r) const
long | hash (level_type level, string_type const &s) const
string_type | transform (level_type level, string_type const &s) const
## Protected Member Functions
| collator (size_t refs=0)
virtual int | do_compare (char_type const *b1, char_type const *e1, char_type const *b2, char_type const *e2) const
virtual string_type | do_transform (char_type const *b, char_type const *e) const
virtual long | do_hash (char_type const *b, char_type const *e) const
virtual int | do_compare (level_type level, char_type const *b1, char_type const *e1, char_type const *b2, char_type const *e2) const =0
virtual string_type | do_transform (level_type level, char_type const *b, char_type const *e) const =0
virtual long | do_hash (level_type level, char_type const *b, char_type const *e) const =0

## Detailed Description

### template<typename CharType>
class boost::locale::collator< CharType >

Collation facet.

It reimplements standard C++ std::collate, allowing usage of std::locale for direct string comparison

## Member Typedef Documentation

template<typename CharType >

typedef CharType boost::locale::collator< CharType >::char_type

Type of the underlying character

template<typename CharType >

typedef std::basic_string<CharType> boost::locale::collator< CharType >::string_type

Type of string used with this facet

## Constructor & Destructor Documentation

template<typename CharType >

boost::locale::collator< CharType >::collator | ( | size_t | refs = `0` | ) | `[inline, protected]`

constructor of the collator object

## Member Function Documentation

template<typename CharType >

int boost::locale::collator< CharType >::compare | ( | level_type | level,
|  | char_type const * | b1,
|  | char_type const * | e1,
|  | char_type const * | b2,
|  | char_type const * | e2 |
| ) |  |  | const`[inline]`

Compare two strings in rage [b1,e1), [b2,e2) according using a collation level level. Calls do_compare

Returns -1 if the first of the two strings sorts before the seconds, returns 1 if sorts after and 0 if they considered equal.

template<typename CharType >

int boost::locale::collator< CharType >::compare | ( | level_type | level,
|  | string_type const & | l,
|  | string_type const & | r |
| ) |  |  | const`[inline]`

Compare two strings l and r using collation level level

Returns -1 if the first of the two strings sorts before the seconds, returns 1 if sorts after and 0 if they considered equal.

template<typename CharType >

virtual int boost::locale::collator< CharType >::do_compare | ( | level_type | level,
|  | char_type const * | b1,
|  | char_type const * | e1,
|  | char_type const * | b2,
|  | char_type const * | e2 |
| ) |  |  | const`[protected, pure virtual]`

Actual function that performs comparison between the strings. For details see compare member function. Can be overridden.

template<typename CharType >

virtual int boost::locale::collator< CharType >::do_compare | ( | char_type const * | b1,
|  | char_type const * | e1,
|  | char_type const * | b2,
|  | char_type const * | e2 |
| ) |  |  | const`[inline, protected, virtual]`

This function is used to override default collation function that does not take in account collation level. Uses primary level

template<typename CharType >

virtual long boost::locale::collator< CharType >::do_hash | ( | char_type const * | b,
|  | char_type const * | e |
| ) |  |  | const`[inline, protected, virtual]`

This function is used to override default collation function that does not take in account collation level. Uses primary level

template<typename CharType >

virtual long boost::locale::collator< CharType >::do_hash | ( | level_type | level,
|  | char_type const * | b,
|  | char_type const * | e |
| ) |  |  | const`[protected, pure virtual]`

Actual function that calculates hash. For details see hash member function. Can be overridden.

template<typename CharType >

virtual string_type boost::locale::collator< CharType >::do_transform | ( | char_type const * | b,
|  | char_type const * | e |
| ) |  |  | const`[inline, protected, virtual]`

This function is used to override default collation function that does not take in account collation level. Uses primary level

template<typename CharType >

virtual string_type boost::locale::collator< CharType >::do_transform | ( | level_type | level,
|  | char_type const * | b,
|  | char_type const * | e |
| ) |  |  | const`[protected, pure virtual]`

Actual function that performs transformation. For details see transform member function. Can be overridden.

template<typename CharType >

long boost::locale::collator< CharType >::hash | ( | level_type | level,
|  | char_type const * | b,
|  | char_type const * | e |
| ) |  |  | const`[inline]`

Calculate a hash of a text in range [b,e). The value can be used for collation sensitive string comparison.

If compare(level,b1,e1,b2,e2) == 0 then hash(level,b1,e1) == hash(level,b2,e2)

Calls do_hash

template<typename CharType >

long boost::locale::collator< CharType >::hash | ( | level_type | level,
|  | string_type const & | s |
| ) |  |  | const`[inline]`

Calculate a hash that can be used for collation sensitive string comparison of a string s

If compare(level,s1,s2) == 0 then hash(level,s1) == hash(level,s2)

template<typename CharType >

string_type boost::locale::collator< CharType >::transform | ( | level_type | level,
|  | string_type const & | s |
| ) |  |  | const`[inline]`

Create a binary string from string s, that can be compared to other, useful for collation of multiple strings.

The transformation follows these rules:

       compare(level,s1,s2) == sign( transform(level,s1).compare(transform(level,s2)) );

template<typename CharType >

string_type boost::locale::collator< CharType >::transform | ( | level_type | level,
|  | char_type const * | b,
|  | char_type const * | e |
| ) |  |  | const`[inline]`

Create a binary string that can be compared to other in order to get collation order. The string is created for text in range [b,e). It is useful for collation of multiple strings for text.

The transformation follows these rules:

       compare(level,b1,e1,b2,e2) == sign( transform(level,b1,e1).compare(transform(level,b2,e2)) );

Calls do_transform

The documentation for this class was generated from the following file:

- boost/locale/collator.hpp