1 /*
2 *******************************************************************************
3 *
4 *   Copyright (C) 2000-2010, 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 */
26 U_CFUNC UBool VERBOSE;
27 U_CFUNC UBool SMALL;
28 U_CFUNC UBool IGNORE_SISO_CHECK;
29 
30 /* converter table type for writing */
31 enum {
32     TABLE_NONE,
33     TABLE_BASE,
34     TABLE_EXT,
35     TABLE_BASE_AND_EXT
36 };
37 
38 /* abstract converter generator struct, C++ - style */
39 struct NewConverter;
40 typedef struct NewConverter NewConverter;
41 
42 struct NewConverter {
43     void
44     (*close)(NewConverter *cnvData);
45 
46     /** is this byte sequence valid? */
47     UBool
48     (*isValid)(NewConverter *cnvData,
49                const uint8_t *bytes, int32_t length);
50 
51     UBool
52     (*addTable)(NewConverter *cnvData, UCMTable *table, UConverterStaticData *staticData);
53 
54     uint32_t
55     (*write)(NewConverter *cnvData, const UConverterStaticData *staticData,
56              UNewDataMemory *pData, int32_t tableType);
57 };
58 
59 #endif /* __MAKECONV_H__ */
60