/[zanavi_public1]/navit/intl/libgnuintl.h.in
ZANavi

Contents of /navit/intl/libgnuintl.h.in

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2 - (hide annotations) (download)
Fri Oct 28 21:19:04 2011 UTC (12 years, 5 months ago) by zoff99
File size: 12902 byte(s)
import files
1 zoff99 2 /* Message catalogs for internationalization.
2     Copyright (C) 1995-1997, 2000-2003 Free Software Foundation, Inc.
3    
4     This program is free software; you can redistribute it and/or modify it
5     under the terms of the GNU Library General Public License as published
6     by the Free Software Foundation; either version 2, or (at your option)
7     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 GNU
12     Library General Public License for more details.
13    
14     You should have received a copy of the GNU Library General Public
15     License along with this program; if not, write to the Free Software
16     Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
17     USA. */
18    
19     #ifndef _LIBINTL_H
20     #define _LIBINTL_H 1
21    
22     #include <locale.h>
23    
24     /* The LC_MESSAGES locale category is the category used by the functions
25     gettext() and dgettext(). It is specified in POSIX, but not in ANSI C.
26     On systems that don't define it, use an arbitrary value instead.
27     On Solaris, <locale.h> defines __LOCALE_H (or _LOCALE_H in Solaris 2.5)
28     then includes <libintl.h> (i.e. this file!) and then only defines
29     LC_MESSAGES. To avoid a redefinition warning, don't define LC_MESSAGES
30     in this case. */
31     #if !defined LC_MESSAGES && !(defined __LOCALE_H || (defined _LOCALE_H && defined __sun))
32     # define LC_MESSAGES 1729
33     #endif
34    
35     /* We define an additional symbol to signal that we use the GNU
36     implementation of gettext. */
37     #define __USE_GNU_GETTEXT 1
38    
39     /* Provide information about the supported file formats. Returns the
40     maximum minor revision number supported for a given major revision. */
41     #define __GNU_GETTEXT_SUPPORTED_REVISION(major) \
42     ((major) == 0 ? 1 : -1)
43    
44     /* Resolve a platform specific conflict on DJGPP. GNU gettext takes
45     precedence over _conio_gettext. */
46     #ifdef __DJGPP__
47     # undef gettext
48     #endif
49    
50     #ifdef __cplusplus
51     extern "C" {
52     #endif
53    
54    
55     /* We redirect the functions to those prefixed with "libintl_". This is
56     necessary, because some systems define gettext/textdomain/... in the C
57     library (namely, Solaris 2.4 and newer, and GNU libc 2.0 and newer).
58     If we used the unprefixed names, there would be cases where the
59     definition in the C library would override the one in the libintl.so
60     shared library. Recall that on ELF systems, the symbols are looked
61     up in the following order:
62     1. in the executable,
63     2. in the shared libraries specified on the link command line, in order,
64     3. in the dependencies of the shared libraries specified on the link
65     command line,
66     4. in the dlopen()ed shared libraries, in the order in which they were
67     dlopen()ed.
68     The definition in the C library would override the one in libintl.so if
69     either
70     * -lc is given on the link command line and -lintl isn't, or
71     * -lc is given on the link command line before -lintl, or
72     * libintl.so is a dependency of a dlopen()ed shared library but not
73     linked to the executable at link time.
74     Since Solaris gettext() behaves differently than GNU gettext(), this
75     would be unacceptable.
76    
77     The redirection happens by default through macros in C, so that &gettext
78     is independent of the compilation unit, but through inline functions in
79     C++, in order not to interfere with the name mangling of class fields or
80     class methods called 'gettext'. */
81    
82     /* The user can define _INTL_REDIRECT_INLINE or _INTL_REDIRECT_MACROS.
83     If he doesn't, we choose the method. A third possible method is
84     _INTL_REDIRECT_ASM, supported only by GCC. */
85     #if !(defined _INTL_REDIRECT_INLINE || defined _INTL_REDIRECT_MACROS)
86     # if __GNUC__ >= 2 && !defined __APPLE_CC__ && !defined __MINGW32__ && !(__GNUC__ == 2 && defined _AIX) && (defined __STDC__ || defined __cplusplus)
87     # define _INTL_REDIRECT_ASM
88     # else
89     # ifdef __cplusplus
90     # define _INTL_REDIRECT_INLINE
91     # else
92     # define _INTL_REDIRECT_MACROS
93     # endif
94     # endif
95     #endif
96     /* Auxiliary macros. */
97     #ifdef _INTL_REDIRECT_ASM
98     # define _INTL_ASM(cname) __asm__ (_INTL_ASMNAME (__USER_LABEL_PREFIX__, #cname))
99     # define _INTL_ASMNAME(prefix,cnamestring) _INTL_STRINGIFY (prefix) cnamestring
100     # define _INTL_STRINGIFY(prefix) #prefix
101     #else
102     # define _INTL_ASM(cname)
103     #endif
104    
105     /* Look up MSGID in the current default message catalog for the current
106     LC_MESSAGES locale. If not found, returns MSGID itself (the default
107     text). */
108     #ifdef _INTL_REDIRECT_INLINE
109     extern char *libintl_gettext (const char *__msgid);
110     static inline char *gettext (const char *__msgid)
111     {
112     return libintl_gettext (__msgid);
113     }
114     #else
115     #ifdef _INTL_REDIRECT_MACROS
116     # define gettext libintl_gettext
117     #endif
118     extern char *gettext (const char *__msgid)
119     _INTL_ASM (libintl_gettext);
120     #endif
121    
122     /* Look up MSGID in the DOMAINNAME message catalog for the current
123     LC_MESSAGES locale. */
124     #ifdef _INTL_REDIRECT_INLINE
125     extern char *libintl_dgettext (const char *__domainname, const char *__msgid);
126     static inline char *dgettext (const char *__domainname, const char *__msgid)
127     {
128     return libintl_dgettext (__domainname, __msgid);
129     }
130     #else
131     #ifdef _INTL_REDIRECT_MACROS
132     # define dgettext libintl_dgettext
133     #endif
134     extern char *dgettext (const char *__domainname, const char *__msgid)
135     _INTL_ASM (libintl_dgettext);
136     #endif
137    
138     /* Look up MSGID in the DOMAINNAME message catalog for the current CATEGORY
139     locale. */
140     #ifdef _INTL_REDIRECT_INLINE
141     extern char *libintl_dcgettext (const char *__domainname, const char *__msgid,
142     int __category);
143     static inline char *dcgettext (const char *__domainname, const char *__msgid,
144     int __category)
145     {
146     return libintl_dcgettext (__domainname, __msgid, __category);
147     }
148     #else
149     #ifdef _INTL_REDIRECT_MACROS
150     # define dcgettext libintl_dcgettext
151     #endif
152     extern char *dcgettext (const char *__domainname, const char *__msgid,
153     int __category)
154     _INTL_ASM (libintl_dcgettext);
155     #endif
156    
157    
158     /* Similar to `gettext' but select the plural form corresponding to the
159     number N. */
160     #ifdef _INTL_REDIRECT_INLINE
161     extern char *libintl_ngettext (const char *__msgid1, const char *__msgid2,
162     unsigned long int __n);
163     static inline char *ngettext (const char *__msgid1, const char *__msgid2,
164     unsigned long int __n)
165     {
166     return libintl_ngettext (__msgid1, __msgid2, __n);
167     }
168     #else
169     #ifdef _INTL_REDIRECT_MACROS
170     # define ngettext libintl_ngettext
171     #endif
172     extern char *ngettext (const char *__msgid1, const char *__msgid2,
173     unsigned long int __n)
174     _INTL_ASM (libintl_ngettext);
175     #endif
176    
177     /* Similar to `dgettext' but select the plural form corresponding to the
178     number N. */
179     #ifdef _INTL_REDIRECT_INLINE
180     extern char *libintl_dngettext (const char *__domainname, const char *__msgid1,
181     const char *__msgid2, unsigned long int __n);
182     static inline char *dngettext (const char *__domainname, const char *__msgid1,
183     const char *__msgid2, unsigned long int __n)
184     {
185     return libintl_dngettext (__domainname, __msgid1, __msgid2, __n);
186     }
187     #else
188     #ifdef _INTL_REDIRECT_MACROS
189     # define dngettext libintl_dngettext
190     #endif
191     extern char *dngettext (const char *__domainname,
192     const char *__msgid1, const char *__msgid2,
193     unsigned long int __n)
194     _INTL_ASM (libintl_dngettext);
195     #endif
196    
197     /* Similar to `dcgettext' but select the plural form corresponding to the
198     number N. */
199     #ifdef _INTL_REDIRECT_INLINE
200     extern char *libintl_dcngettext (const char *__domainname,
201     const char *__msgid1, const char *__msgid2,
202     unsigned long int __n, int __category);
203     static inline char *dcngettext (const char *__domainname,
204     const char *__msgid1, const char *__msgid2,
205     unsigned long int __n, int __category)
206     {
207     return libintl_dcngettext (__domainname, __msgid1, __msgid2, __n, __category);
208     }
209     #else
210     #ifdef _INTL_REDIRECT_MACROS
211     # define dcngettext libintl_dcngettext
212     #endif
213     extern char *dcngettext (const char *__domainname,
214     const char *__msgid1, const char *__msgid2,
215     unsigned long int __n, int __category)
216     _INTL_ASM (libintl_dcngettext);
217     #endif
218    
219    
220     /* Set the current default message catalog to DOMAINNAME.
221     If DOMAINNAME is null, return the current default.
222     If DOMAINNAME is "", reset to the default of "messages". */
223     #ifdef _INTL_REDIRECT_INLINE
224     extern char *libintl_textdomain (const char *__domainname);
225     static inline char *textdomain (const char *__domainname)
226     {
227     return libintl_textdomain (__domainname);
228     }
229     #else
230     #ifdef _INTL_REDIRECT_MACROS
231     # define textdomain libintl_textdomain
232     #endif
233     extern char *textdomain (const char *__domainname)
234     _INTL_ASM (libintl_textdomain);
235     #endif
236    
237     /* Specify that the DOMAINNAME message catalog will be found
238     in DIRNAME rather than in the system locale data base. */
239     #ifdef _INTL_REDIRECT_INLINE
240     extern char *libintl_bindtextdomain (const char *__domainname,
241     const char *__dirname);
242     static inline char *bindtextdomain (const char *__domainname,
243     const char *__dirname)
244     {
245     return libintl_bindtextdomain (__domainname, __dirname);
246     }
247     #else
248     #ifdef _INTL_REDIRECT_MACROS
249     # define bindtextdomain libintl_bindtextdomain
250     #endif
251     extern char *bindtextdomain (const char *__domainname, const char *__dirname)
252     _INTL_ASM (libintl_bindtextdomain);
253     #endif
254    
255     /* Specify the character encoding in which the messages from the
256     DOMAINNAME message catalog will be returned. */
257     #ifdef _INTL_REDIRECT_INLINE
258     extern char *libintl_bind_textdomain_codeset (const char *__domainname,
259     const char *__codeset);
260     static inline char *bind_textdomain_codeset (const char *__domainname,
261     const char *__codeset)
262     {
263     return libintl_bind_textdomain_codeset (__domainname, __codeset);
264     }
265     #else
266     #ifdef _INTL_REDIRECT_MACROS
267     # define bind_textdomain_codeset libintl_bind_textdomain_codeset
268     #endif
269     extern char *bind_textdomain_codeset (const char *__domainname,
270     const char *__codeset)
271     _INTL_ASM (libintl_bind_textdomain_codeset);
272     #endif
273    
274    
275     /* Support for format strings with positions in *printf(), following the
276     POSIX/XSI specification.
277     Note: These replacements for the *printf() functions are visible only
278     in source files that #include <libintl.h> or #include "gettext.h".
279     Packages that use *printf() in source files that don't refer to _()
280     or gettext() but for which the format string could be the return value
281     of _() or gettext() need to add this #include. Oh well. */
282    
283     #if !@HAVE_POSIX_PRINTF@
284    
285     #include <stdio.h>
286     #include <stddef.h>
287    
288     /* Get va_list. */
289     #if __STDC__ || defined __cplusplus || defined _MSC_VER
290     # include <stdarg.h>
291     #else
292     # include <varargs.h>
293     #endif
294    
295     #undef fprintf
296     #define fprintf libintl_fprintf
297     extern int fprintf (FILE *, const char *, ...);
298     #undef vfprintf
299     #define vfprintf libintl_vfprintf
300     extern int vfprintf (FILE *, const char *, va_list);
301    
302     #undef printf
303     #define printf libintl_printf
304     extern int printf (const char *, ...);
305     #undef vprintf
306     #define vprintf libintl_vprintf
307     extern int vprintf (const char *, va_list);
308    
309     #undef sprintf
310     #define sprintf libintl_sprintf
311     extern int sprintf (char *, const char *, ...);
312     #undef vsprintf
313     #define vsprintf libintl_vsprintf
314     extern int vsprintf (char *, const char *, va_list);
315    
316     #if @HAVE_SNPRINTF@
317    
318     #undef snprintf
319     #define snprintf libintl_snprintf
320     extern int snprintf (char *, size_t, const char *, ...);
321     #undef vsnprintf
322     #define vsnprintf libintl_vsnprintf
323     extern int vsnprintf (char *, size_t, const char *, va_list);
324    
325     #endif
326    
327     #if @HAVE_ASPRINTF@
328    
329     #undef asprintf
330     #define asprintf libintl_asprintf
331     extern int asprintf (char **, const char *, ...);
332     #undef vasprintf
333     #define vasprintf libintl_vasprintf
334     extern int vasprintf (char **, const char *, va_list);
335    
336     #endif
337    
338     #if @HAVE_WPRINTF@
339    
340     #undef fwprintf
341     #define fwprintf libintl_fwprintf
342     extern int fwprintf (FILE *, const wchar_t *, ...);
343     #undef vfwprintf
344     #define vfwprintf libintl_vfwprintf
345     extern int vfwprintf (FILE *, const wchar_t *, va_list);
346    
347     #undef wprintf
348     #define wprintf libintl_wprintf
349     extern int wprintf (const wchar_t *, ...);
350     #undef vwprintf
351     #define vwprintf libintl_vwprintf
352     extern int vwprintf (const wchar_t *, va_list);
353    
354     #undef swprintf
355     #define swprintf libintl_swprintf
356     extern int swprintf (wchar_t *, size_t, const wchar_t *, ...);
357     #undef vswprintf
358     #define vswprintf libintl_vswprintf
359     extern int vswprintf (wchar_t *, size_t, const wchar_t *, va_list);
360    
361     #endif
362    
363     #endif
364    
365    
366     /* Support for relocatable packages. */
367    
368     /* Sets the original and the current installation prefix of the package.
369     Relocation simply replaces a pathname starting with the original prefix
370     by the corresponding pathname with the current prefix instead. Both
371     prefixes should be directory names without trailing slash (i.e. use ""
372     instead of "/"). */
373     #define libintl_set_relocation_prefix libintl_set_relocation_prefix
374     extern void
375     libintl_set_relocation_prefix (const char *orig_prefix,
376     const char *curr_prefix);
377    
378    
379     #ifdef __cplusplus
380     }
381     #endif
382    
383     #endif /* libintl.h */

   
Visit the ZANavi Wiki