1/*
2*******************************************************************************
3*
4*   Copyright (C) 2000-2007, International Business Machines
5*   Corporation and others.  All Rights Reserved.
6*
7*******************************************************************************
8*   file name:  makeconv.h
9*   encoding:   US-ASCII
10*   tab size:   8 (not used)
11*   indentation:4
12*
13*   created on: 2000nov01
14*   created by: Markus W. Scherer
15*/
16
17#ifndef __MAKECONV_H__
18#define __MAKECONV_H__
19
20#include "unicode/utypes.h"
21#include "ucnv_bld.h"
22#include "unewdata.h"
23#include "ucm.h"
24
25/* exports from makeconv.c */
26U_CFUNC UBool VERBOSE;
27U_CFUNC UBool SMALL;
28
29/* converter table type for writing */
30enum {
31    TABLE_NONE,
32    TABLE_BASE,
33    TABLE_EXT,
34    TABLE_BASE_AND_EXT
35};
36
37/* abstract converter generator struct, C++ - style */
38struct NewConverter;
39typedef struct NewConverter NewConverter;
40
41struct NewConverter {
42    void
43    (*close)(NewConverter *cnvData);
44
45    /** is this byte sequence valid? */
46    UBool
47    (*isValid)(NewConverter *cnvData,
48               const uint8_t *bytes, int32_t length);
49
50    UBool
51    (*addTable)(NewConverter *cnvData, UCMTable *table, UConverterStaticData *staticData);
52
53    uint32_t
54    (*write)(NewConverter *cnvData, const UConverterStaticData *staticData,
55             UNewDataMemory *pData, int32_t tableType);
56};
57
58#endif /* __MAKECONV_H__ */
59