root/maint/gnulib/lib/localeinfo.h

/* [previous][next][first][last][top][bottom][index][help] */

INCLUDED FROM


   1 /* locale information
   2 
   3    Copyright 2016-2021 Free Software Foundation, Inc.
   4 
   5    This program is free software; you can redistribute it and/or modify
   6    it under the terms of the GNU General Public License as published by
   7    the Free Software Foundation; either version 3, 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
  13    GNU General Public License for more details.
  14 
  15    You should have received a copy of the GNU General Public License
  16    along with this program; if not, write to the Free Software
  17    Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
  18    02110-1301, USA.  */
  19 
  20 /* Written by Paul Eggert.  */
  21 
  22 #include <limits.h>
  23 #include <stdbool.h>
  24 #include <wchar.h>
  25 
  26 struct localeinfo
  27 {
  28   /* MB_CUR_MAX > 1.  */
  29   bool multibyte;
  30 
  31   /* The locale is simple, like the C locale.  These locales can be
  32      processed more efficiently, as they are single-byte, their native
  33      character set is in collating-sequence order, and they do not
  34      have multi-character collating elements.  */
  35   bool simple;
  36 
  37   /* The locale uses UTF-8.  */
  38   bool using_utf8;
  39 
  40   /* An array indexed by byte values B that contains 1 if B is a
  41      single-byte character, -1 if B is an encoding error, and -2 if B
  42      is the leading byte of a multibyte character that contains more
  43      than one byte.  */
  44   signed char sbclen[UCHAR_MAX + 1];
  45 
  46   /* An array indexed by byte values B that contains the corresponding
  47      wide character (if any) for B if sbclen[B] == 1.  WEOF means the
  48      byte is not a valid single-byte character, i.e., sbclen[B] == -1
  49      or -2.  */
  50   wint_t sbctowc[UCHAR_MAX + 1];
  51 };
  52 
  53 extern void init_localeinfo (struct localeinfo *);
  54 
  55 /* Maximum number of characters that can be the case-folded
  56    counterparts of a single character, not counting the character
  57    itself.  This is a generous upper bound.  */
  58 enum { CASE_FOLDED_BUFSIZE = 32 };
  59 
  60 extern int case_folded_counterparts (wint_t, wchar_t[CASE_FOLDED_BUFSIZE]);

/* [previous][next][first][last][top][bottom][index][help] */