]>
Commit | Line | Data |
---|---|---|
252b5132 | 1 | /* winduni.h -- header file for unicode support for windres program. |
aa820537 | 2 | Copyright 1997, 1998, 2002, 2005, 2007 |
4a594fce | 3 | Free Software Foundation, Inc. |
252b5132 | 4 | Written by Ian Lance Taylor, Cygnus Support. |
4a594fce | 5 | Rewritten by Kai Tietz, Onevision. |
252b5132 RH |
6 | |
7 | This file is part of GNU Binutils. | |
8 | ||
9 | This program is free software; you can redistribute it and/or modify | |
10 | it under the terms of the GNU General Public License as published by | |
32866df7 | 11 | the Free Software Foundation; either version 3 of the License, or |
252b5132 RH |
12 | (at your option) any later version. |
13 | ||
14 | This program is distributed in the hope that it will be useful, | |
15 | but WITHOUT ANY WARRANTY; without even the implied warranty of | |
16 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
17 | GNU General Public License for more details. | |
18 | ||
19 | You should have received a copy of the GNU General Public License | |
20 | along with this program; if not, write to the Free Software | |
b43b5d5f NC |
21 | Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA |
22 | 02110-1301, USA. */ | |
252b5132 | 23 | |
e9792343 | 24 | #include "ansidecl.h" |
252b5132 | 25 | |
4a594fce NC |
26 | #ifndef WINDUNI_H |
27 | #define WINDUNI_H | |
28 | ||
252b5132 RH |
29 | /* This header file declares the types and functions we use for |
30 | unicode support in windres. Our unicode support is very limited at | |
31 | present. | |
32 | ||
33 | We don't put this stuff in windres.h so that winduni.c doesn't have | |
34 | to include windres.h. winduni.c needs to includes windows.h, and | |
35 | that would conflict with the definitions of Windows macros we | |
36 | already have in windres.h. */ | |
37 | ||
4a594fce NC |
38 | /* Use bfd_size_type to ensure a sufficient number of bits. */ |
39 | #ifndef DEFINED_RC_UINT_TYPE | |
40 | #define DEFINED_RC_UINT_TYPE | |
41 | typedef bfd_size_type rc_uint_type; | |
42 | #endif | |
43 | ||
252b5132 RH |
44 | /* We use this type to hold a unicode character. */ |
45 | ||
46 | typedef unsigned short unichar; | |
47 | ||
48 | /* Escape character translations. */ | |
49 | ||
4a594fce NC |
50 | #define ESCAPE_A 007 |
51 | #define ESCAPE_B 010 | |
52 | #define ESCAPE_F 014 | |
53 | #define ESCAPE_N 012 | |
54 | #define ESCAPE_R 015 | |
55 | #define ESCAPE_T 011 | |
56 | #define ESCAPE_V 013 | |
252b5132 RH |
57 | |
58 | /* Convert an ASCII string to a unicode string. */ | |
4a594fce NC |
59 | extern void unicode_from_ascii (rc_uint_type *, unichar **, const char *); |
60 | ||
61 | /* Convert an unicode string to an ASCII string. */ | |
62 | extern void ascii_from_unicode (rc_uint_type *, const unichar *, char **); | |
63 | ||
64 | /* Duplicate a unicode string by using res_alloc. */ | |
65 | extern unichar *unichar_dup (const unichar *); | |
66 | ||
67 | /* Duplicate a unicode string by using res_alloc and make it uppercase. */ | |
68 | extern unichar *unichar_dup_uppercase (const unichar *); | |
69 | ||
70 | /* The count of unichar elements. */ | |
71 | extern rc_uint_type unichar_len (const unichar *); | |
252b5132 RH |
72 | |
73 | /* Print a unicode string to a file. */ | |
4a594fce | 74 | extern void unicode_print (FILE *, const unichar *, rc_uint_type); |
252b5132 | 75 | |
4a594fce NC |
76 | /* Print a ascii string to a file. */ |
77 | extern void ascii_print (FILE *, const char *, rc_uint_type); | |
78 | ||
79 | /* Print a quoted unicode string to a file. */ | |
80 | extern void unicode_print_quoted (FILE *, const unichar *, rc_uint_type); | |
252b5132 | 81 | |
5ba684e2 NC |
82 | #ifndef CP_UTF8 |
83 | #define CP_UTF7 65000 /* UTF-7 translation. */ | |
84 | #define CP_UTF8 65001 /* UTF-8 translation. */ | |
85 | #endif | |
86 | ||
87 | #ifndef CP_UTF16 | |
88 | #define CP_UTF16 65002 /* UTF-16 translation. */ | |
89 | #endif | |
90 | ||
91 | #ifndef CP_ACP | |
92 | #define CP_ACP 0 /* Default to ANSI code page. */ | |
93 | #endif | |
94 | ||
95 | #ifndef CP_OEM | |
96 | #define CP_OEM 1 /* Default OEM code page. */ | |
97 | #endif | |
98 | ||
d856f2dd NC |
99 | /* Specifies the default codepage to be used for unicode |
100 | transformations. By default this is CP_ACP. */ | |
101 | extern rc_uint_type wind_default_codepage; | |
102 | ||
103 | /* Specifies the currently used codepage for unicode | |
104 | transformations. By default this is CP_ACP. */ | |
105 | extern rc_uint_type wind_current_codepage; | |
106 | ||
5ba684e2 NC |
107 | typedef struct wind_language_t |
108 | { | |
109 | unsigned id; | |
110 | unsigned doscp; | |
111 | unsigned wincp; | |
112 | const char *name; | |
113 | const char *country; | |
114 | } wind_language_t; | |
115 | ||
116 | extern const wind_language_t *wind_find_language_by_id (unsigned); | |
117 | extern int unicode_is_valid_codepage (rc_uint_type); | |
118 | ||
119 | typedef struct local_iconv_map | |
120 | { | |
121 | rc_uint_type codepage; | |
122 | const char * iconv_name; | |
123 | } local_iconv_map; | |
124 | ||
125 | extern const local_iconv_map *wind_find_codepage_info (unsigned); | |
126 | ||
127 | /* Convert an Codepage string to a unicode string. */ | |
128 | extern void unicode_from_codepage (rc_uint_type *, unichar **, const char *, rc_uint_type); | |
81472056 | 129 | extern void unicode_from_ascii_len (rc_uint_type *, unichar **, const char *, rc_uint_type ); |
5ba684e2 NC |
130 | |
131 | /* Convert an unicode string to an codepage string. */ | |
132 | extern void codepage_from_unicode (rc_uint_type *, const unichar *, char **, rc_uint_type); | |
133 | ||
252b5132 RH |
134 | /* Windres support routine called by unicode_from_ascii. This is both |
135 | here and in windres.h. It should probably be in a separate header | |
136 | file, but it hardly seems worth it for one function. */ | |
137 | ||
4a594fce NC |
138 | extern void * res_alloc (rc_uint_type); |
139 | ||
140 | #endif |