/* List of exported symbols of libgettextsrc on Cygwin.
   Copyright (C) 2006-2007, 2009-2011, 2013-2015, 2019, 2021 Free Software Foundation,
   Inc.
   Written by Bruno Haible <bruno@clisp.org>, 2006.

   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 <https://www.gnu.org/licenses/>.  */

#ifdef HAVE_CONFIG_H
# include "config.h"
#endif

#include "woe32dll/export.h"

VARIABLE(allow_duplicates)
VARIABLE(format_language)
VARIABLE(format_language_pretty)
VARIABLE(formatstring_awk)
VARIABLE(formatstring_boost)
VARIABLE(formatstring_c)
VARIABLE(formatstring_csharp)
VARIABLE(formatstring_elisp)
VARIABLE(formatstring_gcc_internal)
VARIABLE(formatstring_gfc_internal)
VARIABLE(formatstring_java)
VARIABLE(formatstring_java_printf)
VARIABLE(formatstring_javascript)
VARIABLE(formatstring_kde)
VARIABLE(formatstring_kde_kuit)
VARIABLE(formatstring_librep)
VARIABLE(formatstring_lisp)
VARIABLE(formatstring_lua)
VARIABLE(formatstring_objc)
VARIABLE(formatstring_parsers)
VARIABLE(formatstring_pascal)
VARIABLE(formatstring_perl)
VARIABLE(formatstring_perl_brace)
VARIABLE(formatstring_php)
VARIABLE(formatstring_python)
VARIABLE(formatstring_python_brace)
VARIABLE(formatstring_qt)
VARIABLE(formatstring_qt_plural)
VARIABLE(formatstring_ruby)
VARIABLE(formatstring_scheme)
VARIABLE(formatstring_sh)
VARIABLE(formatstring_smalltalk)
VARIABLE(formatstring_tcl)
VARIABLE(formatstring_ycp)
VARIABLE(gram_max_allowed_errors)
VARIABLE(gram_pos)
VARIABLE(input_format_po)
VARIABLE(input_format_properties)
VARIABLE(input_format_stringtable)
VARIABLE(less_than)
VARIABLE(more_than)
VARIABLE(msgcomm_mode)
VARIABLE(omit_header)
VARIABLE(output_format_po)
VARIABLE(output_format_properties)
VARIABLE(output_format_stringtable)
VARIABLE(pass_obsolete_entries)
VARIABLE(plural_table)
VARIABLE(plural_table_size)
VARIABLE(po_charset_ascii)
VARIABLE(po_charset_utf8)
VARIABLE(po_error)
VARIABLE(po_error_at_line)
VARIABLE(po_gram_lval)
VARIABLE(po_lex_charset)
VARIABLE(po_lex_isolate_start)
VARIABLE(po_lex_isolate_end)
#if HAVE_ICONV
VARIABLE(po_lex_iconv)
#endif
VARIABLE(po_lex_weird_cjk)
VARIABLE(po_multiline_error)
VARIABLE(po_multiline_warning)
VARIABLE(po_xerror)
VARIABLE(po_xerror2)
VARIABLE(syntax_check_name)
VARIABLE(use_first)
