| /* winduni.h -- header file for unicode support for windres program. | |
| Copyright (C) 1997-2022 Free Software Foundation, Inc. | |
| Written by Ian Lance Taylor, Cygnus Support. | |
| Rewritten by Kai Tietz, Onevision. | |
| This file is part of GNU Binutils. | |
| This program is free software; you can redistribute it and/or modify | |
| it under the terms of the GNU General Public License as published by | |
| the Free Software Foundation; either version 3 of the License, or | |
| (at your option) any later version. | |
| This program is distributed in the hope that it will be useful, | |
| but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| GNU General Public License for more details. | |
| You should have received a copy of the GNU General Public License | |
| along with this program; if not, write to the Free Software | |
| Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA | |
| 02110-1301, USA. */ | |
| #include "ansidecl.h" | |
| #ifndef WINDUNI_H | |
| #define WINDUNI_H | |
| /* This header file declares the types and functions we use for | |
| unicode support in windres. Our unicode support is very limited at | |
| present. | |
| We don't put this stuff in windres.h so that winduni.c doesn't have | |
| to include windres.h. winduni.c needs to includes windows.h, and | |
| that would conflict with the definitions of Windows macros we | |
| already have in windres.h. */ | |
| /* Use bfd_size_type to ensure a sufficient number of bits. */ | |
| #ifndef DEFINED_RC_UINT_TYPE | |
| #define DEFINED_RC_UINT_TYPE | |
| typedef bfd_size_type rc_uint_type; | |
| #endif | |
| /* We use this type to hold a unicode character. */ | |
| typedef unsigned short unichar; | |
| /* Escape character translations. */ | |
| #define ESCAPE_A 007 | |
| #define ESCAPE_B 010 | |
| #define ESCAPE_F 014 | |
| #define ESCAPE_N 012 | |
| #define ESCAPE_R 015 | |
| #define ESCAPE_T 011 | |
| #define ESCAPE_V 013 | |
| /* Convert an ASCII string to a unicode string. */ | |
| extern void unicode_from_ascii (rc_uint_type *, unichar **, const char *); | |
| /* Convert an unicode string to an ASCII string. */ | |
| extern void ascii_from_unicode (rc_uint_type *, const unichar *, char **); | |
| /* Duplicate a unicode string by using res_alloc. */ | |
| extern unichar *unichar_dup (const unichar *); | |
| /* Duplicate a unicode string by using res_alloc and make it uppercase. */ | |
| extern unichar *unichar_dup_uppercase (const unichar *); | |
| /* The count of unichar elements. */ | |
| extern rc_uint_type unichar_len (const unichar *); | |
| /* Print a unicode string to a file. */ | |
| extern void unicode_print (FILE *, const unichar *, rc_uint_type); | |
| /* Print a ascii string to a file. */ | |
| extern void ascii_print (FILE *, const char *, rc_uint_type); | |
| /* Print a quoted unicode string to a file. */ | |
| extern void unicode_print_quoted (FILE *, const unichar *, rc_uint_type); | |
| #ifndef CP_UTF8 | |
| #define CP_UTF7 65000 /* UTF-7 translation. */ | |
| #define CP_UTF8 65001 /* UTF-8 translation. */ | |
| #endif | |
| #ifndef CP_UTF16 | |
| #define CP_UTF16 65002 /* UTF-16 translation. */ | |
| #endif | |
| #ifndef CP_ACP | |
| #define CP_ACP 0 /* Default to ANSI code page. */ | |
| #endif | |
| #ifndef CP_OEM | |
| #define CP_OEM 1 /* Default OEM code page. */ | |
| #endif | |
| /* Specifies the default codepage to be used for unicode | |
| transformations. By default this is CP_ACP. */ | |
| extern rc_uint_type wind_default_codepage; | |
| /* Specifies the currently used codepage for unicode | |
| transformations. By default this is CP_ACP. */ | |
| extern rc_uint_type wind_current_codepage; | |
| typedef struct wind_language_t | |
| { | |
| unsigned id; | |
| unsigned doscp; | |
| unsigned wincp; | |
| const char *name; | |
| const char *country; | |
| } wind_language_t; | |
| extern const wind_language_t *wind_find_language_by_id (unsigned); | |
| extern int unicode_is_valid_codepage (rc_uint_type); | |
| typedef struct local_iconv_map | |
| { | |
| rc_uint_type codepage; | |
| const char * iconv_name; | |
| } local_iconv_map; | |
| extern const local_iconv_map *wind_find_codepage_info (unsigned); | |
| /* Convert an Codepage string to a unicode string. */ | |
| extern void unicode_from_codepage (rc_uint_type *, unichar **, const char *, rc_uint_type); | |
| extern void unicode_from_ascii_len (rc_uint_type *, unichar **, const char *, rc_uint_type ); | |
| /* Convert an unicode string to an codepage string. */ | |
| extern void codepage_from_unicode (rc_uint_type *, const unichar *, char **, rc_uint_type); | |
| /* Windres support routine called by unicode_from_ascii. This is both | |
| here and in windres.h. It should probably be in a separate header | |
| file, but it hardly seems worth it for one function. */ | |
| extern void * res_alloc (rc_uint_type); | |
| #endif |