1/*
2*******************************************************************************
3*
4*   Copyright (C) 1998-2014, International Business Machines
5*   Corporation and others.  All Rights Reserved.
6*
7*******************************************************************************
8*
9* Private implementation header for C collation
10*   file name:  ucol_imp.h
11*   encoding:   US-ASCII
12*   tab size:   8 (not used)
13*   indentation:4
14*
15*   created on: 2000dec11
16*   created by: Vladimir Weinstein
17*
18* Modification history
19* Date        Name      Comments
20* 02/16/2001  synwee    Added UCOL_GETPREVCE for the use in ucoleitr
21* 02/27/2001  synwee    Added getMaxExpansion data structure in UCollator
22* 03/02/2001  synwee    Added UCOL_IMPLICIT_CE
23* 03/12/2001  synwee    Added pointer start to collIterate.
24*/
25
26#ifndef UCOL_IMP_H
27#define UCOL_IMP_H
28
29#include "unicode/utypes.h"
30
31#if !UCONFIG_NO_COLLATION
32
33#include "unicode/ucol.h"
34
35/** Check whether two collators are equal. Collators are considered equal if they
36 *  will sort strings the same. This means that both the current attributes and the
37 *  rules must be equivalent.
38 *  @param source first collator
39 *  @param target second collator
40 *  @return TRUE or FALSE
41 *  @internal ICU 3.0
42 */
43U_INTERNAL UBool U_EXPORT2
44ucol_equals(const UCollator *source, const UCollator *target);
45
46/**
47 * Convenience string denoting the Collation data tree
48 */
49#define U_ICUDATA_COLL U_ICUDATA_NAME U_TREE_SEPARATOR_STRING "coll"
50
51#ifdef __cplusplus
52
53U_NAMESPACE_BEGIN
54
55struct CollationTailoring;
56
57class Locale;
58class UnicodeString;
59
60/** Implemented in ucol_res.cpp. */
61class CollationLoader {
62public:
63    static void appendRootRules(UnicodeString &s);
64    static UnicodeString *loadRules(const char *localeID, const char *collationType,
65                                    UErrorCode &errorCode);
66    static const CollationTailoring *loadTailoring(const Locale &locale, Locale &validLocale,
67                                                   UErrorCode &errorCode);
68
69private:
70    CollationLoader();  // not implemented, all methods are static
71    static void loadRootRules(UErrorCode &errorCode);
72};
73
74U_NAMESPACE_END
75
76#endif  /* __cplusplus */
77
78#endif /* #if !UCONFIG_NO_COLLATION */
79
80#endif
81