1/* GNU gettext - internationalization aids 2 Copyright (C) 1995-1998, 2000-2006 Free Software Foundation, Inc. 3 4 This file was written by Peter Miller <millerp@canb.auug.org.au> 5 6 This program is free software; you can redistribute it and/or modify 7 it under the terms of the GNU General Public License as published by 8 the Free Software Foundation; either version 2, or (at your option) 9 any later version. 10 11 This program is distributed in the hope that it will be useful, 12 but WITHOUT ANY WARRANTY; without even the implied warranty of 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 GNU General Public License for more details. 15 16 You should have received a copy of the GNU General Public License 17 along with this program; if not, write to the Free Software Foundation, 18 Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ 19 20#ifndef _PO_LEX_H 21#define _PO_LEX_H 22 23#include <sys/types.h> 24#include <stdio.h> 25#include <stdbool.h> 26#include "error.h" 27#include "error-progname.h" 28#include "xerror.h" 29#include "pos.h" 30 31#ifndef __attribute__ 32/* This feature is available in gcc versions 2.5 and later. */ 33# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5) || __STRICT_ANSI__ 34# define __attribute__(Spec) /* empty */ 35# endif 36/* The __-protected variants of `format' and `printf' attributes 37 are accepted by gcc versions 2.6.4 (effectively 2.7) and later. */ 38# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 7) 39# define __format__ format 40# define __printf__ printf 41# endif 42#endif 43 44 45#ifdef __cplusplus 46extern "C" { 47#endif 48 49 50/* Lexical analyzer for reading PO files. */ 51 52 53/* Global variables from po-lex.c. */ 54 55/* Current position within the PO file. */ 56extern DLL_VARIABLE lex_pos_ty gram_pos; 57extern DLL_VARIABLE int gram_pos_column; 58 59/* Number of parse errors within a PO file that cause the program to 60 terminate. Cf. error_message_count, declared in <error.h>. */ 61extern DLL_VARIABLE unsigned int gram_max_allowed_errors; 62 63/* True if obsolete entries shall be considered as valid. */ 64extern DLL_VARIABLE bool pass_obsolete_entries; 65 66 67/* Prepare lexical analysis. */ 68extern void lex_start (FILE *fp, const char *real_filename, 69 const char *logical_filename); 70 71/* Terminate lexical analysis. */ 72extern void lex_end (void); 73 74/* Return the next token in the PO file. The return codes are defined 75 in "po-gram-gen2.h". Associated data is put in 'po_gram_lval. */ 76extern int po_gram_lex (void); 77 78/* po_gram_lex() can return comments as COMMENT. Switch this on or off. */ 79extern void po_lex_pass_comments (bool flag); 80 81/* po_gram_lex() can return obsolete entries as if they were normal entries. 82 Switch this on or off. */ 83extern void po_lex_pass_obsolete_entries (bool flag); 84 85extern void po_gram_error (const char *fmt, ...) 86 __attribute__ ((__format__ (__printf__, 1, 2))); 87extern void po_gram_error_at_line (const lex_pos_ty *pos, const char *fmt, ...) 88 __attribute__ ((__format__ (__printf__, 2, 3))); 89 90 91/* Contains information about the definition of one translation. */ 92struct msgstr_def 93{ 94 char *msgstr; 95 size_t msgstr_len; 96}; 97 98 99#ifdef __cplusplus 100} 101#endif 102 103 104#endif 105