e2663a022094b65e5fc5f2aa6e2d303508c2a83b
[pspp] / src / libpspp / i18n.h
1 /* PSPP - a program for statistical analysis.
2    Copyright (C) 2006 Free Software Foundation, Inc.
3
4    This program is free software: you can redistribute it and/or modify
5    it under the terms of the GNU General Public License as published by
6    the Free Software Foundation, either version 3 of the License, or
7    (at your option) any later version.
8
9    This program is distributed in the hope that it will be useful,
10    but WITHOUT ANY WARRANTY; without even the implied warranty of
11    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12    GNU General Public License for more details.
13
14    You should have received a copy of the GNU General Public License
15    along with this program.  If not, see <http://www.gnu.org/licenses/>. */
16
17 #ifndef I18N_H
18 #define I18N_H
19
20 #include <stdbool.h>
21
22 void  i18n_done (void);
23 void  i18n_init (void);
24
25 #define UTF8 "UTF-8"
26
27 struct pool;
28
29
30 /* 
31 Converts the string TEXT, which should be encoded in FROM-encoding, to a
32 dynamically allocated string in TO-encoding.   Any characters which cannot
33 be converted will be represented by '?'.
34
35 LENGTH should be the length of the string or -1, if null terminated.
36
37 The returned string will be allocated on POOL.
38
39 This function's behaviour differs from that of g_convert_with_fallback provided
40 by GLib.  The GLib function will fail (returns NULL) if any part of the input
41 string is not valid in the declared input encoding.  This function however perseveres
42 even in the presence of badly encoded input.
43 */
44 char *recode_string_pool (const char *to, const char *from,
45                           const char *text, int length, struct pool *pool);
46
47
48
49 /* Similar to recode_string_pool, but allocates the returned value on the heap instead of 
50    in a pool.  It is the caller's responsibility to free the returned value. */
51 char *recode_string (const char *to, const char *from,
52                       const char *text, int len);
53
54
55 bool valid_encoding (const char *enc);
56
57 /* Return the decimal separator according to the
58    system locale */
59 char get_system_decimal (void);
60
61 const char * get_default_encoding (void);
62 void set_default_encoding (const char *enc);
63
64 bool set_encoding_from_locale (const char *loc);
65
66
67 #endif /* i18n.h */