ff4ff35918
Red Bear OS is a full fork. All sources must be available from git clone with zero network access. Removed gitignore rules that excluded fetched source trees under recipes/*/source/, local/recipes/kde/*/source/, local/recipes/qt/*/source/, and vendor source trees. Build artifacts (target/, build/, source.tar, *.o, *.so) remain excluded. 127291 files added — kernel, relibc, base, bootloader, pkgar, all KDE/Qt frameworks, mesa, wayland, DRM drivers, and every other recipe source.
195 lines
9.1 KiB
C++
195 lines
9.1 KiB
C++
/* Reading PO files.
|
|
Copyright (C) 1995-1998, 2000-2003, 2005-2006, 2008-2009, 2014-2015 Free
|
|
Software Foundation, Inc.
|
|
This file was written by Bruno Haible <haible@clisp.cons.org>.
|
|
|
|
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 _READ_CATALOG_H
|
|
#define _READ_CATALOG_H
|
|
|
|
#include "message.h"
|
|
#include "read-catalog-abstract.h"
|
|
|
|
#include <stdbool.h>
|
|
#include <stdio.h>
|
|
|
|
|
|
/* For including this file in C++ mode. */
|
|
#ifdef __cplusplus
|
|
# define this thiss
|
|
#endif
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
|
|
/* The following pair of structures cooperate to create a derived class from
|
|
class abstract_catalog_reader_ty. (See read-catalog-abstract.h for an
|
|
explanation.) It implements the default behaviour of reading a PO file
|
|
and converting it to an 'msgdomain_list_ty *'. */
|
|
|
|
/* Forward declaration. */
|
|
struct default_catalog_reader_ty;
|
|
|
|
|
|
typedef struct default_catalog_reader_class_ty default_catalog_reader_class_ty;
|
|
struct default_catalog_reader_class_ty
|
|
{
|
|
/* Methods inherited from superclass. */
|
|
struct abstract_catalog_reader_class_ty super;
|
|
|
|
/* How to change the current domain. */
|
|
void (*set_domain) (struct default_catalog_reader_ty *pop, char *name);
|
|
|
|
/* How to add a message to the list. */
|
|
void (*add_message) (struct default_catalog_reader_ty *pop,
|
|
char *msgctxt,
|
|
char *msgid, lex_pos_ty *msgid_pos, char *msgid_plural,
|
|
char *msgstr, size_t msgstr_len, lex_pos_ty *msgstr_pos,
|
|
char *prev_msgctxt,
|
|
char *prev_msgid,
|
|
char *prev_msgid_plural,
|
|
bool force_fuzzy, bool obsolete);
|
|
|
|
/* How to modify a new message before adding it to the list. */
|
|
void (*frob_new_message) (struct default_catalog_reader_ty *pop,
|
|
message_ty *mp,
|
|
const lex_pos_ty *msgid_pos,
|
|
const lex_pos_ty *msgstr_pos);
|
|
};
|
|
|
|
|
|
#define DEFAULT_CATALOG_READER_TY \
|
|
ABSTRACT_CATALOG_READER_TY \
|
|
\
|
|
/* If true, pay attention to comments and filepos comments. */ \
|
|
bool handle_comments; \
|
|
\
|
|
/* If false, domain directives lead to an error messsage. */ \
|
|
bool allow_domain_directives; \
|
|
\
|
|
/* If false, duplicate msgids in the same domain and file generate an \
|
|
error. If true, such msgids are allowed; the caller should treat \
|
|
them appropriately. */ \
|
|
bool allow_duplicates; \
|
|
\
|
|
/* If true, allow duplicates if they have the same translation. */ \
|
|
bool allow_duplicates_if_same_msgstr; \
|
|
\
|
|
/* File name used in error messages. */ \
|
|
const char *file_name; \
|
|
\
|
|
/* List of messages already appeared in the current file. */ \
|
|
msgdomain_list_ty *mdlp; \
|
|
\
|
|
/* Name of domain we are currently examining. */ \
|
|
const char *domain; \
|
|
\
|
|
/* List of messages belonging to the current domain. */ \
|
|
message_list_ty *mlp; \
|
|
\
|
|
/* Accumulate comments for next message directive. */ \
|
|
string_list_ty *comment; \
|
|
string_list_ty *comment_dot; \
|
|
\
|
|
/* Accumulate filepos comments for the next message directive. */ \
|
|
size_t filepos_count; \
|
|
lex_pos_ty *filepos; \
|
|
\
|
|
/* Flags transported in special comments. */ \
|
|
bool is_fuzzy; \
|
|
enum is_format is_format[NFORMATS]; \
|
|
struct argument_range range; \
|
|
enum is_wrap do_wrap; \
|
|
enum is_syntax_check do_syntax_check[NSYNTAXCHECKS]; \
|
|
|
|
typedef struct default_catalog_reader_ty default_catalog_reader_ty;
|
|
struct default_catalog_reader_ty
|
|
{
|
|
DEFAULT_CATALOG_READER_TY
|
|
};
|
|
|
|
extern void default_constructor (abstract_catalog_reader_ty *that);
|
|
extern void default_destructor (abstract_catalog_reader_ty *that);
|
|
extern void default_parse_brief (abstract_catalog_reader_ty *that);
|
|
extern void default_parse_debrief (abstract_catalog_reader_ty *that);
|
|
extern void default_directive_domain (abstract_catalog_reader_ty *that,
|
|
char *name);
|
|
extern void default_directive_message (abstract_catalog_reader_ty *that,
|
|
char *msgctxt,
|
|
char *msgid,
|
|
lex_pos_ty *msgid_pos,
|
|
char *msgid_plural,
|
|
char *msgstr, size_t msgstr_len,
|
|
lex_pos_ty *msgstr_pos,
|
|
char *prev_msgctxt,
|
|
char *prev_msgid,
|
|
char *prev_msgid_plural,
|
|
bool force_fuzzy, bool obsolete);
|
|
extern void default_comment (abstract_catalog_reader_ty *that, const char *s);
|
|
extern void default_comment_dot (abstract_catalog_reader_ty *that,
|
|
const char *s);
|
|
extern void default_comment_filepos (abstract_catalog_reader_ty *that,
|
|
const char *name, size_t line);
|
|
extern void default_comment_special (abstract_catalog_reader_ty *that,
|
|
const char *s);
|
|
extern void default_set_domain (default_catalog_reader_ty *this, char *name);
|
|
extern void default_add_message (default_catalog_reader_ty *this,
|
|
char *msgctxt,
|
|
char *msgid,
|
|
lex_pos_ty *msgid_pos,
|
|
char *msgid_plural,
|
|
char *msgstr, size_t msgstr_len,
|
|
lex_pos_ty *msgstr_pos,
|
|
char *prev_msgctxt,
|
|
char *prev_msgid,
|
|
char *prev_msgid_plural,
|
|
bool force_fuzzy, bool obsolete);
|
|
|
|
/* Allocate a fresh default_catalog_reader_ty (or derived class) instance and
|
|
call its constructor. */
|
|
extern default_catalog_reader_ty *
|
|
default_catalog_reader_alloc (default_catalog_reader_class_ty *method_table);
|
|
|
|
|
|
/* If false, duplicate msgids in the same domain and file generate an error.
|
|
If true, such msgids are allowed; the caller should treat them
|
|
appropriately. Defaults to false. */
|
|
extern DLL_VARIABLE bool allow_duplicates;
|
|
|
|
/* Read the input file from a stream. Returns a list of messages. */
|
|
extern msgdomain_list_ty *
|
|
read_catalog_stream (FILE *fp,
|
|
const char *real_filename,
|
|
const char *logical_filename,
|
|
catalog_input_format_ty input_syntax);
|
|
|
|
/* Read the input file with the name INPUT_NAME. The ending .po is added
|
|
if necessary. If INPUT_NAME is not an absolute file name and the file is
|
|
not found, the list of directories in "dir-list.h" is searched. Returns
|
|
a list of messages. */
|
|
extern msgdomain_list_ty *
|
|
read_catalog_file (const char *input_name,
|
|
catalog_input_format_ty input_syntax);
|
|
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
|
|
#endif /* _READ_CATALOG_H */
|