Fix two encoding issues
[gpgol.git] / src / w32-gettext.h
1 /* w32-gettext.h - A simple gettext implementation for Windows targets.
2    Copyright (C) 2005 g10 Code GmbH
3
4    This file is part of libgpg-error.
5  
6    libgpg-error is free software; you can redistribute it and/or
7    modify it under the terms of the GNU Lesser General Public License
8    as published by the Free Software Foundation; either version 2.1 of
9    the License, or (at your option) any later version.
10  
11    libgpg-error is distributed in the hope that it will be useful, but
12    WITHOUT ANY WARRANTY; without even the implied warranty of
13    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14    Lesser General Public License for more details.
15  
16    You should have received a copy of the GNU Lesser General Public
17    License along with libgpg-error; if not, write to the Free
18    Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
19    02111-1307, USA.  */
20
21 #if ENABLE_NLS
22
23 #include <locale.h>
24 #if !defined LC_MESSAGES && !(defined __LOCALE_H || (defined _LOCALE_H && defined __sun))
25 # define LC_MESSAGES 1729
26 #endif
27
28 #ifdef __cplusplus
29 extern "C" {
30 #if 0
31 }
32 #endif
33 #endif
34
35 /* Specify that the DOMAINNAME message catalog will be found
36    in DIRNAME rather than in the system locale data base.  */
37 char *bindtextdomain (const char *domainname, const char *dirname);
38
39 const char *gettext (const char *msgid);
40 const char *utf8_gettext (const char *msgid);
41
42 char *textdomain (const char *domainname);
43
44 char *dgettext (const char *domainname, const char *msgid);
45
46 /* Return the localname as used by gettext.  The return value will
47    never be NULL. */
48 const char *gettext_localename (void);
49
50 /* A pseudo function call that serves as a marker for the automated
51    extraction of messages, but does not call gettext().  The run-time
52    translation is done at a different place in the code.
53    The argument, String, should be a literal string.  Concatenated strings
54    and other string expressions won't work.
55    The macro's expansion is not parenthesized, so that it is suitable as
56    initializer for static 'char[]' or 'const char[]' variables.  */
57 #define gettext_noop(String) String
58
59
60 #else   /* ENABLE_NLS */
61
62 static inline const char *gettext_localename (void) { return ""; }
63
64
65 #endif  /* !ENABLE_NLS */
66
67
68 /* Conversion function. */
69 char *_wchar_to_utf8 (const wchar_t *string);
70 wchar_t *_utf8_to_wchar (const char *string);
71 char *utf8_to_native (const char *string);
72 char *native_to_utf8 (const char *string);
73
74 #define utf8_to_wchar(VAR1) ({wchar_t *retval; \
75   retval = _utf8_to_wchar (VAR1); \
76   if ((opt.enable_debug & (DBG_TRACE & DBG_DATA & DBG_MEMORY))) \
77   { \
78     log_debug ("%s:%s:%i wchar_t alloc %p:%S", \
79                SRCNAME, __func__, __LINE__, retval, retval); \
80   } \
81 retval;})
82
83 #define wchar_to_utf8(VAR1) ({char *retval; \
84   retval = _wchar_to_utf8 (VAR1); \
85   if ((opt.enable_debug & (DBG_TRACE & DBG_DATA & DBG_MEMORY))) \
86   { \
87     log_debug ("%s:%s:%i char utf8 alloc %p:%s", \
88                SRCNAME, __func__, __LINE__, retval, retval); \
89   } \
90 retval;})
91
92 #ifdef __cplusplus
93 }
94 #include <string>
95 std::string wchar_to_utf8_string (const wchar_t *string);
96 #endif