blob: c6c98da558b52b8a395da3e61b2812d74c8f3860 [file] [log] [blame]
/* xgettext common functions.
Copyright (C) 2001-2003, 2005-2006, 2008-2009, 2011, 2013-2014, 2018, 2020 Free Software Foundation, Inc.
Written by Peter Miller <millerp@canb.auug.org.au>
and Bruno Haible <haible@clisp.cons.org>, 2001.
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/>. */
#ifndef _XGETTEXT_H
#define _XGETTEXT_H
#include <stdbool.h>
#include <stddef.h>
#include "message.h"
#include "rc-str-list.h"
#ifdef __cplusplus
extern "C" {
#endif
/* If true, add all comments immediately preceding one of the keywords. */
extern bool add_all_comments;
/* Tag used in comment of prevailing domain. */
extern char *comment_tag;
/* List of messages whose msgids must not be extracted, or NULL.
Used by remember_a_message(). */
extern message_list_ty *exclude;
/* String used as prefix for msgstr. */
extern const char *msgstr_prefix;
/* String used as suffix for msgstr. */
extern const char *msgstr_suffix;
/* If true, omit the header entry.
If false, keep the header entry present in the input. */
extern int xgettext_omit_header;
/* Be more verbose. */
extern int verbose;
extern enum is_syntax_check default_syntax_check[NSYNTAXCHECKS];
/* Language dependent format string parser.
NULL if the language has no notion of format strings. */
extern struct formatstring_parser *current_formatstring_parser1;
extern struct formatstring_parser *current_formatstring_parser2;
extern struct formatstring_parser *current_formatstring_parser3;
/* Record a flag in the appropriate backend's table. */
extern void xgettext_record_flag (const char *optionstring);
extern const char * xgettext_comment (size_t n);
extern void xgettext_comment_reset (void);
/* Comment handling for backends which support combining adjacent strings
even across lines.
In these backends we cannot use the xgettext_comment* functions directly,
because in multiline string expressions like
"string1" +
"string2"
the newline between "string1" and "string2" would cause a call to
xgettext_comment_reset(), thus destroying the accumulated comments
that we need a little later, when we have concatenated the two strings
and pass them to remember_a_message().
Instead, we do the bookkeeping of the accumulated comments directly,
and save a pointer to the accumulated comments when we read "string1".
In order to avoid excessive copying of strings, we use reference
counting. */
extern refcounted_string_list_ty *savable_comment;
extern void savable_comment_add (const char *str);
extern void savable_comment_reset (void);
extern void
savable_comment_to_xgettext_comment (refcounted_string_list_ty *rslp);
extern bool recognize_qt_formatstrings (void);
#ifdef __cplusplus
}
#endif
#endif /* _XGETTEXT_H */