"Fossies" - the Fresh Open Source Software Archive

Member "tin-2.6.2/intl/gettextP.h" (23 Aug 2021, 7686 Bytes) of package /linux/misc/tin-2.6.2.tar.xz:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) C and C++ source code syntax highlighting (style: standard) with prefixed line numbers and code folding option. Alternatively you can here view or download the uninterpreted source code file.

    1 /* Header describing internals of libintl library.
    2    Copyright (C) 1995-1999, 2000, 2001 Free Software Foundation, Inc.
    3    Written by Ulrich Drepper <drepper@cygnus.com>, 1995.
    4 
    5    This program is free software; you can redistribute it and/or modify it
    6    under the terms of the GNU Library General Public License as published
    7    by the Free Software Foundation; either version 2, or (at your option)
    8    any later version.
    9 
   10    This program is distributed in the hope that it will be useful,
   11    but WITHOUT ANY WARRANTY; without even the implied warranty of
   12    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   13    Library General Public License for more details.
   14 
   15    You should have received a copy of the GNU Library General Public
   16    License along with this program; if not, write to the Free Software
   17    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
   18    USA.  */
   19 
   20 #ifndef _GETTEXTP_H
   21 #define _GETTEXTP_H
   22 
   23 #include <stddef.h>     /* Get size_t.  */
   24 
   25 #ifdef _LIBC
   26 # include "../iconv/gconv_int.h"
   27 #else
   28 # ifdef HAVE_ICONV
   29 #  include <iconv.h>
   30 # endif
   31 #endif
   32 
   33 #include "loadinfo.h"
   34 
   35 #include "gettext.h"        /* Get nls_uint32.  */
   36 
   37 /* @@ end of prolog @@ */
   38 
   39 #ifndef PARAMS
   40 # if __STDC__
   41 #  define PARAMS(args) args
   42 # else
   43 #  define PARAMS(args) ()
   44 # endif
   45 #endif
   46 
   47 #ifndef internal_function
   48 # define internal_function
   49 #endif
   50 
   51 /* Tell the compiler when a conditional or integer expression is
   52    almost always true or almost always false.  */
   53 #ifndef HAVE_BUILTIN_EXPECT
   54 # define __builtin_expect(expr, val) (expr)
   55 #endif
   56 
   57 #ifndef W
   58 # define W(flag, data) ((flag) ? SWAP (data) : (data))
   59 #endif
   60 
   61 
   62 #ifdef _LIBC
   63 # include <byteswap.h>
   64 # define SWAP(i) bswap_32 (i)
   65 #else
   66 static inline nls_uint32
   67 SWAP (nls_uint32 i)
   68 {
   69   return (i << 24) | ((i & 0xff00) << 8) | ((i >> 8) & 0xff00) | (i >> 24);
   70 }
   71 #endif
   72 
   73 
   74 /* This is the representation of the expressions to determine the
   75    plural form.  */
   76 struct expression
   77 {
   78   int nargs;            /* Number of arguments.  */
   79   enum operator
   80   {
   81     /* Without arguments:  */
   82     var,            /* The variable "n".  */
   83     num,            /* Decimal number.  */
   84     /* Unary operators:  */
   85     lnot,           /* Logical NOT.  */
   86     /* Binary operators:  */
   87     mult,           /* Multiplication.  */
   88     divide,         /* Division.  */
   89     module,         /* Module operation.  */
   90     plus,           /* Addition.  */
   91     minus,          /* Subtraction.  */
   92     less_than,          /* Comparison.  */
   93     greater_than,       /* Comparison.  */
   94     less_or_equal,      /* Comparison.  */
   95     greater_or_equal,       /* Comparison.  */
   96     equal,          /* Comparision for equality.  */
   97     not_equal,          /* Comparision for inequality.  */
   98     land,           /* Logical AND.  */
   99     lor,            /* Logical OR.  */
  100     /* Ternary operators:  */
  101     qmop            /* Question mark operator.  */
  102   } operation;
  103   union
  104   {
  105     unsigned long int num;  /* Number value for `num'.  */
  106     struct expression *args[3]; /* Up to three arguments.  */
  107   } val;
  108 };
  109 
  110 /* This is the data structure to pass information to the parser and get
  111    the result in a thread-safe way.  */
  112 struct parse_args
  113 {
  114   const char *cp;
  115   struct expression *res;
  116 };
  117 
  118 
  119 /* The representation of an opened message catalog.  */
  120 struct loaded_domain
  121 {
  122   const char *data;
  123   int use_mmap;
  124   size_t mmap_size;
  125   int must_swap;
  126   nls_uint32 nstrings;
  127   struct string_desc *orig_tab;
  128   struct string_desc *trans_tab;
  129   nls_uint32 hash_size;
  130   nls_uint32 *hash_tab;
  131   int codeset_cntr;
  132 #ifdef _LIBC
  133   __gconv_t conv;
  134 #else
  135 # ifdef HAVE_ICONV
  136   iconv_t conv;
  137 # endif
  138 #endif
  139   char **conv_tab;
  140 
  141   struct expression *plural;
  142   unsigned long int nplurals;
  143 };
  144 
  145 /* We want to allocate a string at the end of the struct.  But ISO C
  146    doesn't allow zero sized arrays.  */
  147 #ifdef __GNUC__
  148 # define ZERO 0
  149 #else
  150 # define ZERO 1
  151 #endif
  152 
  153 /* A set of settings bound to a message domain.  Used to store settings
  154    from bindtextdomain() and bind_textdomain_codeset().  */
  155 struct binding
  156 {
  157   struct binding *next;
  158   char *dirname;
  159   int codeset_cntr; /* Incremented each time codeset changes.  */
  160   char *codeset;
  161   char domainname[ZERO];
  162 };
  163 
  164 /* A counter which is incremented each time some previous translations
  165    become invalid.
  166    This variable is part of the external ABI of the GNU libintl.  */
  167 extern int _nl_msg_cat_cntr;
  168 
  169 struct loaded_l10nfile *_nl_find_domain PARAMS ((const char *__dirname,
  170                          char *__locale,
  171                          const char *__domainname,
  172                           struct binding *__domainbinding))
  173      internal_function;
  174 void _nl_load_domain PARAMS ((struct loaded_l10nfile *__domain,
  175                   struct binding *__domainbinding))
  176      internal_function;
  177 void _nl_unload_domain PARAMS ((struct loaded_domain *__domain))
  178      internal_function;
  179 const char *_nl_init_domain_conv PARAMS ((struct loaded_l10nfile *__domain_file,
  180                       struct loaded_domain *__domain,
  181                       struct binding *__domainbinding))
  182      internal_function;
  183 void _nl_free_domain_conv PARAMS ((struct loaded_domain *__domain))
  184      internal_function;
  185 
  186 char *_nl_find_msg PARAMS ((struct loaded_l10nfile *domain_file,
  187                 struct binding *domainbinding,
  188                 const char *msgid, size_t *lengthp))
  189      internal_function;
  190 
  191 #ifdef _LIBC
  192 extern char *__gettext PARAMS ((const char *__msgid));
  193 extern char *__dgettext PARAMS ((const char *__domainname,
  194                  const char *__msgid));
  195 extern char *__dcgettext PARAMS ((const char *__domainname,
  196                   const char *__msgid, int __category));
  197 extern char *__ngettext PARAMS ((const char *__msgid1, const char *__msgid2,
  198                  unsigned long int __n));
  199 extern char *__dngettext PARAMS ((const char *__domainname,
  200                   const char *__msgid1, const char *__msgid2,
  201                   unsigned long int n));
  202 extern char *__dcngettext PARAMS ((const char *__domainname,
  203                    const char *__msgid1, const char *__msgid2,
  204                    unsigned long int __n, int __category));
  205 extern char *__dcigettext PARAMS ((const char *__domainname,
  206                    const char *__msgid1, const char *__msgid2,
  207                    int __plural, unsigned long int __n,
  208                    int __category));
  209 extern char *__textdomain PARAMS ((const char *__domainname));
  210 extern char *__bindtextdomain PARAMS ((const char *__domainname,
  211                        const char *__dirname));
  212 extern char *__bind_textdomain_codeset PARAMS ((const char *__domainname,
  213                         const char *__codeset));
  214 #else
  215 extern char *gettext__ PARAMS ((const char *__msgid));
  216 extern char *dgettext__ PARAMS ((const char *__domainname,
  217                  const char *__msgid));
  218 extern char *dcgettext__ PARAMS ((const char *__domainname,
  219                   const char *__msgid, int __category));
  220 extern char *ngettext__ PARAMS ((const char *__msgid1, const char *__msgid2,
  221                  unsigned long int __n));
  222 extern char *dngettext__ PARAMS ((const char *__domainname,
  223                   const char *__msgid1, const char *__msgid2,
  224                   unsigned long int __n));
  225 extern char *dcngettext__ PARAMS ((const char *__domainname,
  226                    const char *__msgid1, const char *__msgid2,
  227                    unsigned long int __n, int __category));
  228 extern char *dcigettext__ PARAMS ((const char *__domainname,
  229                    const char *__msgid1, const char *__msgid2,
  230                    int __plural, unsigned long int __n,
  231                    int __category));
  232 extern char *textdomain__ PARAMS ((const char *__domainname));
  233 extern char *bindtextdomain__ PARAMS ((const char *__domainname,
  234                        const char *__dirname));
  235 extern char *bind_textdomain_codeset__ PARAMS ((const char *__domainname,
  236                         const char *__codeset));
  237 #endif
  238 
  239 #ifdef _LIBC
  240 extern void __gettext_free_exp PARAMS ((struct expression *_exp))
  241      internal_function;
  242 extern int __gettextparse PARAMS ((void *arg));
  243 #else
  244 extern void gettext_free_exp__ PARAMS ((struct expression *_exp))
  245      internal_function;
  246 extern int gettextparse__ PARAMS ((void *arg));
  247 #endif
  248 
  249 /* @@ begin of epilog @@ */
  250 
  251 #endif /* gettextP.h  */