Viewing file:      gconv.h (5.19 KB)      -rw-r--r-- Select action/file-type:    (+) |   (+) |   (+) | Code (+) | Session (+) |   (+) | SDB (+) |   (+) |   (+) |   (+) |   (+) |   (+) |
 
/* Copyright (C) 1997-1999, 2000-2002 Free Software Foundation, Inc.    This file is part of the GNU C Library.
     The GNU C Library is free software; you can redistribute it and/or    modify it under the terms of the GNU Lesser General Public    License as published by the Free Software Foundation; either    version 2.1 of the License, or (at your option) any later version.
     The GNU C Library is distributed in the hope that it will be useful,    but WITHOUT ANY WARRANTY; without even the implied warranty of    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU    Lesser General Public License for more details.
     You should have received a copy of the GNU Lesser General Public    License along with the GNU C Library; if not, write to the Free    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA    02111-1307 USA.  */
  /* This header provides no interface for a user to the internals of    the gconv implementation in the libc.  Therefore there is no use    for these definitions beside for writing additional gconv modules.  */
  #ifndef _GCONV_H #define _GCONV_H    1
  #include <features.h> #define __need_mbstate_t #include <wchar.h> #define __need_size_t #define __need_wchar_t #include <stddef.h>
  /* ISO 10646 value used to signal invalid value.  */ #define __UNKNOWN_10646_CHAR    ((wchar_t) 0xfffd)
  /* Error codes for gconv functions.  */ enum {   __GCONV_OK = 0,   __GCONV_NOCONV,   __GCONV_NODB,   __GCONV_NOMEM,
    __GCONV_EMPTY_INPUT,   __GCONV_FULL_OUTPUT,   __GCONV_ILLEGAL_INPUT,   __GCONV_INCOMPLETE_INPUT,
    __GCONV_ILLEGAL_DESCRIPTOR,   __GCONV_INTERNAL_ERROR };
 
  /* Flags the `__gconv_open' function can set.  */ enum {   __GCONV_IS_LAST = 0x0001,   __GCONV_IGNORE_ERRORS = 0x0002 };
 
  /* Forward declarations.  */ struct __gconv_step; struct __gconv_step_data; struct __gconv_loaded_object; struct __gconv_trans_data;
 
  /* Type of a conversion function.  */ typedef int (*__gconv_fct) (struct __gconv_step *, struct __gconv_step_data *,                 __const unsigned char **, __const unsigned char *,                 unsigned char **, size_t *, int, int);
  /* Type of a specialized conversion function for a single byte to INTERNAL.  */ typedef wint_t (*__gconv_btowc_fct) (struct __gconv_step *, unsigned char);
  /* Constructor and destructor for local data for conversion step.  */ typedef int (*__gconv_init_fct) (struct __gconv_step *); typedef void (*__gconv_end_fct) (struct __gconv_step *);
 
  /* Type of a transliteration/transscription function.  */ typedef int (*__gconv_trans_fct) (struct __gconv_step *,                   struct __gconv_step_data *, void *,                   __const unsigned char *,                   __const unsigned char **,                   __const unsigned char *, unsigned char **,                   size_t *);
  /* Function to call to provide transliteration module with context.  */ typedef int (*__gconv_trans_context_fct) (void *, __const unsigned char *,                       __const unsigned char *,                       unsigned char *, unsigned char *);
  /* Function to query module about supported encoded character sets.  */ typedef int (*__gconv_trans_query_fct) (__const char *, __const char ***,                     size_t *);
  /* Constructor and destructor for local data for transliteration.  */ typedef int (*__gconv_trans_init_fct) (void **, const char *); typedef void (*__gconv_trans_end_fct) (void *);
  struct __gconv_trans_data {   /* Transliteration/Transscription function.  */   __gconv_trans_fct __trans_fct;   __gconv_trans_context_fct __trans_context_fct;   __gconv_trans_end_fct __trans_end_fct;   void *__data;   struct __gconv_trans_data *__next; };
 
  /* Description of a conversion step.  */ struct __gconv_step {   struct __gconv_loaded_object *__shlib_handle;   __const char *__modname;
    int __counter;
    char *__from_name;   char *__to_name;
    __gconv_fct __fct;   __gconv_btowc_fct __btowc_fct;   __gconv_init_fct __init_fct;   __gconv_end_fct __end_fct;
    /* Information about the number of bytes needed or produced in this      step.  This helps optimizing the buffer sizes.  */   int __min_needed_from;   int __max_needed_from;   int __min_needed_to;   int __max_needed_to;
    /* Flag whether this is a stateful encoding or not.  */   int __stateful;
    void *__data;        /* Pointer to step-local data.  */ };
  /* Additional data for steps in use of conversion descriptor.  This is    allocated by the `init' function.  */ struct __gconv_step_data {   unsigned char *__outbuf;    /* Output buffer for this step.  */   unsigned char *__outbufend; /* Address of first byte after the output                  buffer.  */
    /* Is this the last module in the chain.  */   int __flags;
    /* Counter for number of invocations of the module function for this      descriptor.  */   int __invocation_counter;
    /* Flag whether this is an internal use of the module (in the mb*towc*      and wc*tomb* functions) or regular with iconv(3).  */   int __internal_use;
    __mbstate_t *__statep;   __mbstate_t __state;    /* This element must not be used directly by                any module; always use STATEP!  */
    /* Transliteration information.  */   struct __gconv_trans_data *__trans; };
 
  /* Combine conversion step description with data.  */ typedef struct __gconv_info {   size_t __nsteps;   struct __gconv_step *__steps;   __extension__ struct __gconv_step_data __data __flexarr; } *__gconv_t;
  #endif /* gconv.h */ 
  |