/*
 * This file was automatically generated mkdeps.pl script. Don't edit.
 */

#include <_ansi.h>
#include "ccsbi.h"

/*
 * The following array contains the list of built-in CCS tables.
 */
_CONST iconv_ccs_t *
_iconv_ccs[] =
{
#if defined (ICONV_TO_UCS_CCS_CP775) \
 || defined (ICONV_FROM_UCS_CCS_CP775)
  &_iconv_ccs_cp775,
#endif
#if defined (ICONV_TO_UCS_CCS_ISO_IR_111) \
 || defined (ICONV_FROM_UCS_CCS_ISO_IR_111)
  &_iconv_ccs_iso_ir_111,
#endif
#if defined (ICONV_TO_UCS_CCS_CP866) \
 || defined (ICONV_FROM_UCS_CCS_CP866)
  &_iconv_ccs_cp866,
#endif
#if defined (ICONV_TO_UCS_CCS_KOI8_UNI) \
 || defined (ICONV_FROM_UCS_CCS_KOI8_UNI)
  &_iconv_ccs_koi8_uni,
#endif
#if defined (ICONV_TO_UCS_CCS_WIN_1250) \
 || defined (ICONV_FROM_UCS_CCS_WIN_1250)
  &_iconv_ccs_win_1250,
#endif
#if defined (ICONV_TO_UCS_CCS_JIS_X0201_1976) \
 || defined (ICONV_FROM_UCS_CCS_JIS_X0201_1976)
  &_iconv_ccs_jis_x0201_1976,
#endif
#if defined (ICONV_TO_UCS_CCS_WIN_1251) \
 || defined (ICONV_FROM_UCS_CCS_WIN_1251)
  &_iconv_ccs_win_1251,
#endif
#if defined (ICONV_TO_UCS_CCS_WIN_1252) \
 || defined (ICONV_FROM_UCS_CCS_WIN_1252)
  &_iconv_ccs_win_1252,
#endif
#if defined (ICONV_TO_UCS_CCS_WIN_1253) \
 || defined (ICONV_FROM_UCS_CCS_WIN_1253)
  &_iconv_ccs_win_1253,
#endif
#if defined (ICONV_TO_UCS_CCS_BIG5) \
 || defined (ICONV_FROM_UCS_CCS_BIG5)
  &_iconv_ccs_big5,
#endif
#if defined (ICONV_TO_UCS_CCS_WIN_1254) \
 || defined (ICONV_FROM_UCS_CCS_WIN_1254)
  &_iconv_ccs_win_1254,
#endif
#if defined (ICONV_TO_UCS_CCS_WIN_1255) \
 || defined (ICONV_FROM_UCS_CCS_WIN_1255)
  &_iconv_ccs_win_1255,
#endif
#if defined (ICONV_TO_UCS_CCS_WIN_1256) \
 || defined (ICONV_FROM_UCS_CCS_WIN_1256)
  &_iconv_ccs_win_1256,
#endif
#if defined (ICONV_TO_UCS_CCS_CNS11643_PLANE14) \
 || defined (ICONV_FROM_UCS_CCS_CNS11643_PLANE14)
  &_iconv_ccs_cns11643_plane14,
#endif
#if defined (ICONV_TO_UCS_CCS_WIN_1257) \
 || defined (ICONV_FROM_UCS_CCS_WIN_1257)
  &_iconv_ccs_win_1257,
#endif
#if defined (ICONV_TO_UCS_CCS_WIN_1258) \
 || defined (ICONV_FROM_UCS_CCS_WIN_1258)
  &_iconv_ccs_win_1258,
#endif
#if defined (ICONV_TO_UCS_CCS_JIS_X0208_1990) \
 || defined (ICONV_FROM_UCS_CCS_JIS_X0208_1990)
  &_iconv_ccs_jis_x0208_1990,
#endif
#if defined (ICONV_TO_UCS_CCS_JIS_X0212_1990) \
 || defined (ICONV_FROM_UCS_CCS_JIS_X0212_1990)
  &_iconv_ccs_jis_x0212_1990,
#endif
#if defined (ICONV_TO_UCS_CCS_CNS11643_PLANE1) \
 || defined (ICONV_FROM_UCS_CCS_CNS11643_PLANE1)
  &_iconv_ccs_cns11643_plane1,
#endif
#if defined (ICONV_TO_UCS_CCS_CP850) \
 || defined (ICONV_FROM_UCS_CCS_CP850)
  &_iconv_ccs_cp850,
#endif
#if defined (ICONV_TO_UCS_CCS_CNS11643_PLANE2) \
 || defined (ICONV_FROM_UCS_CCS_CNS11643_PLANE2)
  &_iconv_ccs_cns11643_plane2,
#endif
#if defined (ICONV_TO_UCS_CCS_CP852) \
 || defined (ICONV_FROM_UCS_CCS_CP852)
  &_iconv_ccs_cp852,
#endif
#if defined (ICONV_TO_UCS_CCS_KOI8_RU) \
 || defined (ICONV_FROM_UCS_CCS_KOI8_RU)
  &_iconv_ccs_koi8_ru,
#endif
#if defined (ICONV_TO_UCS_CCS_CP855) \
 || defined (ICONV_FROM_UCS_CCS_CP855)
  &_iconv_ccs_cp855,
#endif
#if defined (ICONV_TO_UCS_CCS_ISO_8859_1) \
 || defined (ICONV_FROM_UCS_CCS_ISO_8859_1)
  &_iconv_ccs_iso_8859_1,
#endif
#if defined (ICONV_TO_UCS_CCS_ISO_8859_2) \
 || defined (ICONV_FROM_UCS_CCS_ISO_8859_2)
  &_iconv_ccs_iso_8859_2,
#endif
#if defined (ICONV_TO_UCS_CCS_ISO_8859_3) \
 || defined (ICONV_FROM_UCS_CCS_ISO_8859_3)
  &_iconv_ccs_iso_8859_3,
#endif
#if defined (ICONV_TO_UCS_CCS_ISO_8859_4) \
 || defined (ICONV_FROM_UCS_CCS_ISO_8859_4)
  &_iconv_ccs_iso_8859_4,
#endif
#if defined (ICONV_TO_UCS_CCS_ISO_8859_5) \
 || defined (ICONV_FROM_UCS_CCS_ISO_8859_5)
  &_iconv_ccs_iso_8859_5,
#endif
#if defined (ICONV_TO_UCS_CCS_ISO_8859_6) \
 || defined (ICONV_FROM_UCS_CCS_ISO_8859_6)
  &_iconv_ccs_iso_8859_6,
#endif
#if defined (ICONV_TO_UCS_CCS_ISO_8859_7) \
 || defined (ICONV_FROM_UCS_CCS_ISO_8859_7)
  &_iconv_ccs_iso_8859_7,
#endif
#if defined (ICONV_TO_UCS_CCS_ISO_8859_8) \
 || defined (ICONV_FROM_UCS_CCS_ISO_8859_8)
  &_iconv_ccs_iso_8859_8,
#endif
#if defined (ICONV_TO_UCS_CCS_KSX1001) \
 || defined (ICONV_FROM_UCS_CCS_KSX1001)
  &_iconv_ccs_ksx1001,
#endif
#if defined (ICONV_TO_UCS_CCS_ISO_8859_9) \
 || defined (ICONV_FROM_UCS_CCS_ISO_8859_9)
  &_iconv_ccs_iso_8859_9,
#endif
#if defined (ICONV_TO_UCS_CCS_ISO_8859_10) \
 || defined (ICONV_FROM_UCS_CCS_ISO_8859_10)
  &_iconv_ccs_iso_8859_10,
#endif
#if defined (ICONV_TO_UCS_CCS_ISO_8859_11) \
 || defined (ICONV_FROM_UCS_CCS_ISO_8859_11)
  &_iconv_ccs_iso_8859_11,
#endif
#if defined (ICONV_TO_UCS_CCS_ISO_8859_13) \
 || defined (ICONV_FROM_UCS_CCS_ISO_8859_13)
  &_iconv_ccs_iso_8859_13,
#endif
#if defined (ICONV_TO_UCS_CCS_ISO_8859_14) \
 || defined (ICONV_FROM_UCS_CCS_ISO_8859_14)
  &_iconv_ccs_iso_8859_14,
#endif
#if defined (ICONV_TO_UCS_CCS_ISO_8859_15) \
 || defined (ICONV_FROM_UCS_CCS_ISO_8859_15)
  &_iconv_ccs_iso_8859_15,
#endif
#if defined (ICONV_TO_UCS_CCS_KOI8_R) \
 || defined (ICONV_FROM_UCS_CCS_KOI8_R)
  &_iconv_ccs_koi8_r,
#endif
#if defined (ICONV_TO_UCS_CCS_KOI8_U) \
 || defined (ICONV_FROM_UCS_CCS_KOI8_U)
  &_iconv_ccs_koi8_u,
#endif
  NULL
};
