libtranscript
Main Page
Modules
All
Data Structures
Functions
Variables
Enumerations
Enumerator
Groups
src
transcript.h
1
/* Copyright (C) 2011,2013 G.P. Halkes
2
This program is free software: you can redistribute it and/or modify
3
it under the terms of the GNU General Public License version 3, as
4
published by the Free Software Foundation.
5
6
This program is distributed in the hope that it will be useful,
7
but WITHOUT ANY WARRANTY; without even the implied warranty of
8
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
9
GNU General Public License for more details.
10
11
You should have received a copy of the GNU General Public License
12
along with this program. If not, see <http://www.gnu.org/licenses/>.
13
*/
14
#ifndef TRANSCRIPT_H
15
#define TRANSCRIPT_H
16
17
#ifdef __cplusplus
18
extern
"C"
{
19
#endif
20
21
#include <stdlib.h>
22
#include <stdint.h>
23
24
#include <transcript/api.h>
25
43
#define TRANSCRIPT_VERSION 0
44
48
typedef
struct
transcript_t
transcript_t
;
49
51
enum
transcript_flags_t
{
52
TRANSCRIPT_ALLOW_FALLBACK
= (1<<0),
56
TRANSCRIPT_SUBST_UNASSIGNED
= (1<<1),
57
TRANSCRIPT_SUBST_ILLEGAL
= (1<<2),
58
TRANSCRIPT_ALLOW_PRIVATE_USE
= (1<<3),
60
/* These are only valid as argument to transcript_from_unicode and transcript_to_unicode. */
61
TRANSCRIPT_FILE_START
= (1<<8),
70
TRANSCRIPT_END_OF_TEXT
= (1<<9),
75
TRANSCRIPT_SINGLE_CONVERSION
= (1<<10),
80
TRANSCRIPT_NO_MN_CONVERSION
= (1<<11),
85
TRANSCRIPT_NO_1N_CONVERSION
= (1<<12)
86
87
/* NOTE: internal flags are defined in transcript_internal.h and moduledefs.h. Make sure these don't overlap! */
88
};
89
91
typedef
enum
{
92
TRANSCRIPT_SUCCESS
,
93
TRANSCRIPT_NO_SPACE
,
94
TRANSCRIPT_INCOMPLETE
,
96
TRANSCRIPT_FALLBACK
,
97
TRANSCRIPT_UNASSIGNED
,
98
TRANSCRIPT_ILLEGAL
,
99
TRANSCRIPT_ILLEGAL_END
,
100
TRANSCRIPT_INTERNAL_ERROR
,
101
TRANSCRIPT_PRIVATE_USE
,
103
TRANSCRIPT_ERRNO
,
104
TRANSCRIPT_BAD_ARG
,
105
TRANSCRIPT_OUT_OF_MEMORY
,
106
TRANSCRIPT_INVALID_FORMAT
,
107
TRANSCRIPT_TRUNCATED_MAP
,
108
TRANSCRIPT_WRONG_VERSION
,
109
TRANSCRIPT_INTERNAL_TABLE
,
110
TRANSCRIPT_DLOPEN_FAILURE
,
111
TRANSCRIPT_CONVERTER_DISABLED
,
112
TRANSCRIPT_PACKAGE_FILE
,
113
TRANSCRIPT_INIT_DLFCN
,
114
TRANSCRIPT_NOT_INITIALIZED
,
116
TRANSCRIPT_PART_SUCCESS_MAX
=
TRANSCRIPT_INCOMPLETE
118
}
transcript_error_t
;
119
120
typedef
enum
{
121
TRANSCRIPT_UTF8 = 1,
122
TRANSCRIPT_UTF16,
123
TRANSCRIPT_UTF32,
124
TRANSCRIPT_UTF16BE,
125
TRANSCRIPT_UTF16LE,
126
TRANSCRIPT_UTF32BE,
127
TRANSCRIPT_UTF32LE,
128
_TRANSCRIPT_UTFLAST
129
} transcript_utf_t;
130
131
132
#ifndef _TRANSCRIPT_CONST
133
#define _TRANSCRIPT_CONST const
134
#endif
135
139
typedef
struct
{
140
_TRANSCRIPT_CONST
char
*
name
;
141
int
available;
145
}
transcript_name_t
;
146
148
#define TRANSCRIPT_SAVE_STATE_SIZE 32
149
150
TRANSCRIPT_API
transcript_error_t
transcript_init
(
void
);
151
TRANSCRIPT_API
void
transcript_finalize
(
void
);
152
TRANSCRIPT_API
int
transcript_probe_converter
(
const
char
*name);
153
TRANSCRIPT_API
transcript_t
*
transcript_open_converter
(
const
char
*name, transcript_utf_t utf_type,
int
flags,
transcript_error_t
*error);
154
TRANSCRIPT_API
void
transcript_close_converter
(
transcript_t
*handle);
155
TRANSCRIPT_API
int
transcript_equal
(
const
char
*name_a,
const
char
*name_b);
156
TRANSCRIPT_API
transcript_error_t
transcript_to_unicode
(
transcript_t
*handle,
const
char
**inbuf,
157
const
char
*inbuflimit,
char
**outbuf,
const
char
*outbuflimit,
int
flags);
158
TRANSCRIPT_API
transcript_error_t
transcript_from_unicode
(
transcript_t
*handle,
const
char
**inbuf,
159
const
char
*inbuflimit,
char
**outbuf,
const
char
*outbuflimit,
int
flags);
160
TRANSCRIPT_API
transcript_error_t
transcript_to_unicode_skip
(
transcript_t
*handle,
const
char
**inbuf,
const
char
*inbuflimit);
161
TRANSCRIPT_API
transcript_error_t
transcript_from_unicode_skip
(
transcript_t
*handle,
const
char
**inbuf,
const
char
*inbuflimit);
162
TRANSCRIPT_API
transcript_error_t
transcript_from_unicode_flush
(
transcript_t
*handle,
char
**outbuf,
const
char
*outbuflimit);
163
TRANSCRIPT_API
void
transcript_to_unicode_reset
(
transcript_t
*handle);
164
TRANSCRIPT_API
void
transcript_from_unicode_reset
(
transcript_t
*handle);
165
TRANSCRIPT_API
void
transcript_save_state
(
transcript_t
*handle,
void
*state);
166
/*FIXME: should we do loading (and perhaps saving) per direction?*/
167
TRANSCRIPT_API
void
transcript_load_state
(
transcript_t
*handle,
void
*state);
168
TRANSCRIPT_API
const
char
*
transcript_strerror
(
transcript_error_t
error);
169
TRANSCRIPT_API
const
transcript_name_t
*
transcript_get_names
(
int
*count);
170
TRANSCRIPT_API
void
transcript_normalize_name
(
const
char
*name,
char
*normalized_name,
size_t
normalized_name_max);
171
TRANSCRIPT_API
const
char
*
transcript_get_codeset
(
void
);
172
TRANSCRIPT_API
long
transcript_get_version
(
void
);
173
175
#define TRANSCRIPT_MIN_UNICODE_BUFFER_SIZE (4*20)
176
177
#define TRANSCRIPT_MIN_CODEPAGE_BUFFER_SIZE (32)
178
180
#define TRANSCRIPT_MIN_BUFFER_SIZE TRANSCRIPT_MIN_UNICODE_BUFFER_SIZE
181
184
#if defined(TRANSCRIPT_ICONV_API) || defined(TRANSCRIPT_ICONV)
185
199
typedef
struct
_transcript_iconv_t *
transcript_iconv_t
;
200
201
TRANSCRIPT_API transcript_iconv_t
transcript_iconv_open
(
const
char
*tocode,
const
char
*fromcode);
202
TRANSCRIPT_API
int
transcript_iconv_close
(transcript_iconv_t cd);
203
TRANSCRIPT_API
size_t
transcript_iconv
(transcript_iconv_t cd,
char
**inbuf,
size_t
*inbytesleft,
char
**outbuf,
size_t
*outbytesleft);
204
207
#ifdef TRANSCRIPT_ICONV
208
typedef
transcript_iconv_t iconv_t;
209
#define iconv(_a, _b, _c, _d, _e) transcript_iconv((_a), (_b), (_c), (_d), (_e))
210
#define iconv_open(_a, _b) transcript_iconv_open((_a), (_b))
211
#define iconv_close(_a) transcript_iconv_close(_a)
212
#endif
213
#endif
214
215
#ifdef __cplusplus
216
}
217
#endif
218
219
#endif
Generated on Sat May 3 2014 14:44:27 for libtranscript by
1.8.3.1