Blame intl/gettextP.h

Packit bbfece
/* Header describing internals of libintl library.
Packit bbfece
   Copyright (C) 1995-1999, 2000-2003 Free Software Foundation, Inc.
Packit bbfece
   Written by Ulrich Drepper <drepper@cygnus.com>, 1995.
Packit bbfece
Packit bbfece
   This program is free software; you can redistribute it and/or modify it
Packit bbfece
   under the terms of the GNU Library General Public License as published
Packit bbfece
   by the Free Software Foundation; either version 2, or (at your option)
Packit bbfece
   any later version.
Packit bbfece
Packit bbfece
   This program is distributed in the hope that it will be useful,
Packit bbfece
   but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit bbfece
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Packit bbfece
   Library General Public License for more details.
Packit bbfece
Packit bbfece
   You should have received a copy of the GNU Library General Public
Packit bbfece
   License along with this program; if not, write to the Free Software
Packit bbfece
   Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301,
Packit bbfece
   USA.  */
Packit bbfece
Packit bbfece
#ifndef _GETTEXTP_H
Packit bbfece
#define _GETTEXTP_H
Packit bbfece
Packit bbfece
#include <stddef.h>		/* Get size_t.  */
Packit bbfece
Packit bbfece
#ifdef _LIBC
Packit bbfece
# include "../iconv/gconv_int.h"
Packit bbfece
#else
Packit bbfece
# if HAVE_ICONV
Packit bbfece
#  include <iconv.h>
Packit bbfece
# endif
Packit bbfece
#endif
Packit bbfece
Packit bbfece
#include "loadinfo.h"
Packit bbfece
Packit bbfece
#include "gmo.h"		/* Get nls_uint32.  */
Packit bbfece
Packit bbfece
/* @@ end of prolog @@ */
Packit bbfece
Packit bbfece
#ifndef PARAMS
Packit bbfece
# if __STDC__ || defined __GNUC__ || defined __SUNPRO_C || defined __cplusplus || __PROTOTYPES
Packit bbfece
#  define PARAMS(args) args
Packit bbfece
# else
Packit bbfece
#  define PARAMS(args) ()
Packit bbfece
# endif
Packit bbfece
#endif
Packit bbfece
Packit bbfece
#ifndef internal_function
Packit bbfece
# define internal_function
Packit bbfece
#endif
Packit bbfece
Packit bbfece
#ifndef attribute_hidden
Packit bbfece
# define attribute_hidden
Packit bbfece
#endif
Packit bbfece
Packit bbfece
/* Tell the compiler when a conditional or integer expression is
Packit bbfece
   almost always true or almost always false.  */
Packit bbfece
#ifndef HAVE_BUILTIN_EXPECT
Packit bbfece
# define __builtin_expect(expr, val) (expr)
Packit bbfece
#endif
Packit bbfece
Packit bbfece
#ifndef W
Packit bbfece
# define W(flag, data) ((flag) ? SWAP (data) : (data))
Packit bbfece
#endif
Packit bbfece
Packit bbfece
Packit bbfece
#ifdef _LIBC
Packit bbfece
# include <byteswap.h>
Packit bbfece
# define SWAP(i) bswap_32 (i)
Packit bbfece
#else
Packit bbfece
static inline nls_uint32
Packit bbfece
SWAP (i)
Packit bbfece
     nls_uint32 i;
Packit bbfece
{
Packit bbfece
  return (i << 24) | ((i & 0xff00) << 8) | ((i >> 8) & 0xff00) | (i >> 24);
Packit bbfece
}
Packit bbfece
#endif
Packit bbfece
Packit bbfece
Packit bbfece
/* In-memory representation of system dependent string.  */
Packit bbfece
struct sysdep_string_desc
Packit bbfece
{
Packit bbfece
  /* Length of addressed string, including the trailing NUL.  */
Packit bbfece
  size_t length;
Packit bbfece
  /* Pointer to addressed string.  */
Packit bbfece
  const char *pointer;
Packit bbfece
};
Packit bbfece
Packit bbfece
/* The representation of an opened message catalog.  */
Packit bbfece
struct loaded_domain
Packit bbfece
{
Packit bbfece
  /* Pointer to memory containing the .mo file.  */
Packit bbfece
  const char *data;
Packit bbfece
  /* 1 if the memory is mmap()ed, 0 if the memory is malloc()ed.  */
Packit bbfece
  int use_mmap;
Packit bbfece
  /* Size of mmap()ed memory.  */
Packit bbfece
  size_t mmap_size;
Packit bbfece
  /* 1 if the .mo file uses a different endianness than this machine.  */
Packit bbfece
  int must_swap;
Packit bbfece
  /* Pointer to additional malloc()ed memory.  */
Packit bbfece
  void *malloced;
Packit bbfece
Packit bbfece
  /* Number of static strings pairs.  */
Packit bbfece
  nls_uint32 nstrings;
Packit bbfece
  /* Pointer to descriptors of original strings in the file.  */
Packit bbfece
  const struct string_desc *orig_tab;
Packit bbfece
  /* Pointer to descriptors of translated strings in the file.  */
Packit bbfece
  const struct string_desc *trans_tab;
Packit bbfece
Packit bbfece
  /* Number of system dependent strings pairs.  */
Packit bbfece
  nls_uint32 n_sysdep_strings;
Packit bbfece
  /* Pointer to descriptors of original sysdep strings.  */
Packit bbfece
  const struct sysdep_string_desc *orig_sysdep_tab;
Packit bbfece
  /* Pointer to descriptors of translated sysdep strings.  */
Packit bbfece
  const struct sysdep_string_desc *trans_sysdep_tab;
Packit bbfece
Packit bbfece
  /* Size of hash table.  */
Packit bbfece
  nls_uint32 hash_size;
Packit bbfece
  /* Pointer to hash table.  */
Packit bbfece
  const nls_uint32 *hash_tab;
Packit bbfece
  /* 1 if the hash table uses a different endianness than this machine.  */
Packit bbfece
  int must_swap_hash_tab;
Packit bbfece
Packit bbfece
  int codeset_cntr;
Packit bbfece
#ifdef _LIBC
Packit bbfece
  __gconv_t conv;
Packit bbfece
#else
Packit bbfece
# if HAVE_ICONV
Packit bbfece
  iconv_t conv;
Packit bbfece
# endif
Packit bbfece
#endif
Packit bbfece
  char **conv_tab;
Packit bbfece
Packit bbfece
  struct expression *plural;
Packit bbfece
  unsigned long int nplurals;
Packit bbfece
};
Packit bbfece
Packit bbfece
/* We want to allocate a string at the end of the struct.  But ISO C
Packit bbfece
   doesn't allow zero sized arrays.  */
Packit bbfece
#ifdef __GNUC__
Packit bbfece
# define ZERO 0
Packit bbfece
#else
Packit bbfece
# define ZERO 1
Packit bbfece
#endif
Packit bbfece
Packit bbfece
/* A set of settings bound to a message domain.  Used to store settings
Packit bbfece
   from bindtextdomain() and bind_textdomain_codeset().  */
Packit bbfece
struct binding
Packit bbfece
{
Packit bbfece
  struct binding *next;
Packit bbfece
  char *dirname;
Packit bbfece
  int codeset_cntr;	/* Incremented each time codeset changes.  */
Packit bbfece
  char *codeset;
Packit bbfece
  char domainname[ZERO];
Packit bbfece
};
Packit bbfece
Packit bbfece
/* A counter which is incremented each time some previous translations
Packit bbfece
   become invalid.
Packit bbfece
   This variable is part of the external ABI of the GNU libintl.  */
Packit bbfece
extern int _nl_msg_cat_cntr;
Packit bbfece
Packit bbfece
#ifndef _LIBC
Packit bbfece
const char *_nl_locale_name PARAMS ((int category, const char *categoryname));
Packit bbfece
#endif
Packit bbfece
Packit bbfece
struct loaded_l10nfile *_nl_find_domain PARAMS ((const char *__dirname,
Packit bbfece
						 char *__locale,
Packit bbfece
						 const char *__domainname,
Packit bbfece
					      struct binding *__domainbinding))
Packit bbfece
     internal_function;
Packit bbfece
void _nl_load_domain PARAMS ((struct loaded_l10nfile *__domain,
Packit bbfece
			      struct binding *__domainbinding))
Packit bbfece
     internal_function;
Packit bbfece
void _nl_unload_domain PARAMS ((struct loaded_domain *__domain))
Packit bbfece
     internal_function;
Packit bbfece
const char *_nl_init_domain_conv PARAMS ((struct loaded_l10nfile *__domain_file,
Packit bbfece
					  struct loaded_domain *__domain,
Packit bbfece
					  struct binding *__domainbinding))
Packit bbfece
     internal_function;
Packit bbfece
void _nl_free_domain_conv PARAMS ((struct loaded_domain *__domain))
Packit bbfece
     internal_function;
Packit bbfece
Packit bbfece
char *_nl_find_msg PARAMS ((struct loaded_l10nfile *domain_file,
Packit bbfece
			    struct binding *domainbinding,
Packit bbfece
			    const char *msgid, size_t *lengthp))
Packit bbfece
     internal_function;
Packit bbfece
Packit bbfece
#ifdef _LIBC
Packit bbfece
extern char *__gettext PARAMS ((const char *__msgid));
Packit bbfece
extern char *__dgettext PARAMS ((const char *__domainname,
Packit bbfece
				 const char *__msgid));
Packit bbfece
extern char *__dcgettext PARAMS ((const char *__domainname,
Packit bbfece
				  const char *__msgid, int __category));
Packit bbfece
extern char *__ngettext PARAMS ((const char *__msgid1, const char *__msgid2,
Packit bbfece
				 unsigned long int __n));
Packit bbfece
extern char *__dngettext PARAMS ((const char *__domainname,
Packit bbfece
				  const char *__msgid1, const char *__msgid2,
Packit bbfece
				  unsigned long int n));
Packit bbfece
extern char *__dcngettext PARAMS ((const char *__domainname,
Packit bbfece
				   const char *__msgid1, const char *__msgid2,
Packit bbfece
				   unsigned long int __n, int __category));
Packit bbfece
extern char *__dcigettext PARAMS ((const char *__domainname,
Packit bbfece
				   const char *__msgid1, const char *__msgid2,
Packit bbfece
				   int __plural, unsigned long int __n,
Packit bbfece
				   int __category));
Packit bbfece
extern char *__textdomain PARAMS ((const char *__domainname));
Packit bbfece
extern char *__bindtextdomain PARAMS ((const char *__domainname,
Packit bbfece
				       const char *__dirname));
Packit bbfece
extern char *__bind_textdomain_codeset PARAMS ((const char *__domainname,
Packit bbfece
						const char *__codeset));
Packit bbfece
#else
Packit bbfece
/* Declare the exported libintl_* functions, in a way that allows us to
Packit bbfece
   call them under their real name.  */
Packit bbfece
# define _INTL_REDIRECT_MACROS
Packit bbfece
# include "libintl.h"
Packit bbfece
extern char *libintl_dcigettext PARAMS ((const char *__domainname,
Packit bbfece
					 const char *__msgid1,
Packit bbfece
					 const char *__msgid2,
Packit bbfece
					 int __plural, unsigned long int __n,
Packit bbfece
					 int __category));
Packit bbfece
#endif
Packit bbfece
Packit bbfece
/* @@ begin of epilog @@ */
Packit bbfece
Packit bbfece
#endif /* gettextP.h  */