(linenum→info "unix/slp.c:2238")

glibc/2.7/iconv/gconv_builtin.c

    1: /* Table for builtin transformation mapping.
    2:    Copyright (C) 1997-1999, 2000-2002, 2005 Free Software Foundation, Inc.
    3:    This file is part of the GNU C Library.
    4:    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
    5: 
    6:    The GNU C Library is free software; you can redistribute it and/or
    7:    modify it under the terms of the GNU Lesser General Public
    8:    License as published by the Free Software Foundation; either
    9:    version 2.1 of the License, or (at your option) any later version.
   10: 
   11:    The GNU C Library 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 GNU
   14:    Lesser General Public License for more details.
   15: 
   16:    You should have received a copy of the GNU Lesser General Public
   17:    License along with the GNU C Library; if not, write to the Free
   18:    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
   19:    02111-1307 USA.  */
   20: 
   21: #include <endian.h>
   22: #include <limits.h>
   23: #include <stdint.h>
   24: #include <string.h>
   25: 
   26: #include <gconv_int.h>
   27: 
   28: #include <assert.h>
   29: 
   30: 
   31: static const struct builtin_map
   32: {
   33:   const char *name;
   34:   __gconv_fct fct;
   35:   __gconv_btowc_fct btowc_fct;
   36: 
   37:   int8_t min_needed_from;
   38:   int8_t max_needed_from;
   39:   int8_t min_needed_to;
   40:   int8_t max_needed_to;
   41: 
   42: } map[] =
   43: {
   44: #define BUILTIN_TRANSFORMATION(From, To, Cost, Name, Fct, BtowcFct, \
   45:                                MinF, MaxF, MinT, MaxT) \
   46:   {                                                                           \
   47:     .name = Name,                                                             \
   48:     .fct = Fct,                                                               \
   49:     .btowc_fct = BtowcFct,                                                    \
   50:                                                                               \
   51:     .min_needed_from = MinF,                                                  \
   52:     .max_needed_from = MaxF,                                                  \
   53:     .min_needed_to = MinT,                                                    \
   54:     .max_needed_to = MaxT                                                     \
   55:   },
   56: #define BUILTIN_ALIAS(From, To)
   57: 
   58: #include <gconv_builtin.h>
   59: };
   60: 
   61: 
   62: void
   63: internal_function
   64: __gconv_get_builtin_trans (const char *name, struct __gconv_step *step)
   65: {
   66:   size_t cnt;
   67: 
   68:   for (cnt = 0; cnt < sizeof (map) / sizeof (map[0]); ++cnt)
   69:     if (strcmp (name, map[cnt].name) == 0)
   70:       break;
   71: 
   72:   assert (cnt < sizeof (map) / sizeof (map[0]));
   73: 
   74:   step->__fct = map[cnt].fct;
   75:   step->__btowc_fct = map[cnt].btowc_fct;
   76:   step->__init_fct = NULL;
   77:   step->__end_fct = NULL;
   78:   step->__shlib_handle = NULL;
   79:   step->__modname = NULL;
   80: 
   81:   step->__min_needed_from = map[cnt].min_needed_from;
   82:   step->__max_needed_from = map[cnt].max_needed_from;
   83:   step->__min_needed_to = map[cnt].min_needed_to;
   84:   step->__max_needed_to = map[cnt].max_needed_to;
   85: 
   86:   /* None of the builtin converters handles stateful encoding.  */
   87:   step->__stateful = 0;
   88: }
Syntax (Markdown)