1fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius/*
2fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius*******************************************************************************
3fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius* Copyright (C) 2013-2014, International Business Machines
4fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius* Corporation and others.  All Rights Reserved.
5fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius*******************************************************************************
6fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius* collationdatawriter.h
7fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius*
8fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius* created on: 2013aug06
9fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius* created by: Markus W. Scherer
10fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius*/
11fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius
12fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius#ifndef __COLLATIONDATAWRITER_H__
13fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius#define __COLLATIONDATAWRITER_H__
14fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius
15fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius#include "unicode/utypes.h"
16fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius
17fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius#if !UCONFIG_NO_COLLATION
18fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius
19fceb39872958b9fa2505e63f8b8699a9e0f882f4ccorneliusU_NAMESPACE_BEGIN
20fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius
21fceb39872958b9fa2505e63f8b8699a9e0f882f4ccorneliusstruct CollationData;
22fceb39872958b9fa2505e63f8b8699a9e0f882f4ccorneliusstruct CollationSettings;
23fceb39872958b9fa2505e63f8b8699a9e0f882f4ccorneliusstruct CollationTailoring;
24fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius
25fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius/**
26fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius * Collation-related code for tools & demos.
27fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius */
28fceb39872958b9fa2505e63f8b8699a9e0f882f4ccorneliusclass U_I18N_API CollationDataWriter /* all static */ {
29fceb39872958b9fa2505e63f8b8699a9e0f882f4ccorneliuspublic:
30fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius    static int32_t writeBase(const CollationData &data, const CollationSettings &settings,
31fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius                             const void *rootElements, int32_t rootElementsLength,
32fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius                             int32_t indexes[], uint8_t *dest, int32_t capacity,
33fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius                             UErrorCode &errorCode);
34fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius
35fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius    static int32_t writeTailoring(const CollationTailoring &t, const CollationSettings &settings,
36fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius                                  int32_t indexes[], uint8_t *dest, int32_t capacity,
37fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius                                  UErrorCode &errorCode);
38fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius
39fceb39872958b9fa2505e63f8b8699a9e0f882f4ccorneliusprivate:
40fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius    CollationDataWriter();  // no constructor
41fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius
42fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius    static int32_t write(UBool isBase, const UVersionInfo dataVersion,
43fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius                         const CollationData &data, const CollationSettings &settings,
44fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius                         const void *rootElements, int32_t rootElementsLength,
45fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius                         int32_t indexes[], uint8_t *dest, int32_t capacity,
46fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius                         UErrorCode &errorCode);
47fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius
48fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius    static void copyData(const int32_t indexes[], int32_t startIndex,
49fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius                         const void *src, uint8_t *dest);
50fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius};
51fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius
52fceb39872958b9fa2505e63f8b8699a9e0f882f4ccorneliusU_NAMESPACE_END
53fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius
54fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius#endif  // !UCONFIG_NO_COLLATION
55fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius#endif  // __COLLATIONDATAWRITER_H__
56