/* Keeping track of the encoding of strings to be extracted. Copyright (C) 2001-2019 Free Software Foundation, Inc. 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, see . */ #ifndef _XGETTEXT_ENCODING_H #define _XGETTEXT_ENCODING_H #include #if HAVE_ICONV #include #endif #ifdef __cplusplus extern "C" { #endif /* Context while building up lexical tokens. */ typedef enum { lc_outside, /* Initial context: outside of comments and strings. */ lc_comment, /* Inside a comment. */ lc_string, /* Inside a string literal. */ /* For embedded XML in programming code, like E4X in JavaScript. */ lc_xml_open_tag, /* Inside an opening tag of an XML element. */ lc_xml_close_tag, /* Inside a closing tag of an XML element. */ lc_xml_content /* Inside an XML text node. */ } lexical_context_ty; /* Error message about non-ASCII character in a specific lexical context. */ extern char *non_ascii_error_message (lexical_context_ty lcontext, const char *file_name, size_t line_number); /* Canonicalized encoding name for all input files. It can be NULL when the --from-code option has not been specified. In this case, the default (ASCII or UTF-8) depends on the programming language. */ extern const char *xgettext_global_source_encoding; #if HAVE_ICONV /* Converter from xgettext_global_source_encoding to UTF-8 (except from ASCII or UTF-8, when this conversion is a no-op). */ extern iconv_t xgettext_global_source_iconv; #endif /* Canonicalized encoding name for the current input file. */ extern const char *xgettext_current_source_encoding; #if HAVE_ICONV /* Converter from xgettext_current_source_encoding to UTF-8 (except from ASCII or UTF-8, when this conversion is a no-op). */ extern iconv_t xgettext_current_source_iconv; #endif /* Convert the given string from xgettext_current_source_encoding to the output file encoding (i.e. ASCII or UTF-8). The resulting string is either the argument string, or freshly allocated. The lcontext, file_name and line_number are only used for error message purposes. */ extern char *from_current_source_encoding (const char *string, lexical_context_ty lcontext, const char *file_name, size_t line_number); #ifdef __cplusplus } #endif #endif /* _XGETTEXT_ENCODING_H */