/* Generated by gen-tabs.scm */
static struct conv_support_rec conv_supports[] = {
    { "ascii"        , JCODE_ASCII     },
    { "usascii"      , JCODE_ASCII     },
    { "isoir6"       , JCODE_ASCII     },
    { "iso646us"     , JCODE_ASCII     },
    { "us"           , JCODE_ASCII     },
    { "ibm367"       , JCODE_ASCII     },
    { "cp367"        , JCODE_ASCII     },
    { "csascii"      , JCODE_ASCII     },
    { "eucjp"        , JCODE_EUCJ      },
    { "eucj"         , JCODE_EUCJ      },
    { "eucjisx0213"  , JCODE_EUCJ      },
    { "sjis"         , JCODE_SJIS      },
    { "shiftjis"     , JCODE_SJIS      },
    { "utf8"         , JCODE_UTF8      },
    { "utf16"        , JCODE_UTF16     },
    { "utf16be"      , JCODE_UTF16BE   },
    { "utf16le"      , JCODE_UTF16LE   },
    { "utf32"        , JCODE_UTF32     },
    { "utf32be"      , JCODE_UTF32BE   },
    { "utf32le"      , JCODE_UTF32LE   },
    { "iso2022jp"    , JCODE_ISO2022JP },
    { "csiso2022jp"  , JCODE_ISO2022JP },
    { "iso2022jp1"   , JCODE_ISO2022JP },
    { "iso2022jp2"   , JCODE_ISO2022JP },
    { "iso2022jp3"   , JCODE_ISO2022JP },
    { "iso88591"     , JCODE_ISO8859_1 },
    { "latin1"       , JCODE_ISO8859_1 },
    { "iso88592"     , JCODE_ISO8859_2 },
    { "latin2"       , JCODE_ISO8859_2 },
    { "iso88593"     , JCODE_ISO8859_3 },
    { "latin3"       , JCODE_ISO8859_3 },
    { "iso88594"     , JCODE_ISO8859_4 },
    { "latin4"       , JCODE_ISO8859_4 },
    { "iso88595"     , JCODE_ISO8859_5 },
    { "latin5"       , JCODE_ISO8859_5 },
    { "iso88596"     , JCODE_ISO8859_6 },
    { "latin6"       , JCODE_ISO8859_6 },
    { "iso88597"     , JCODE_ISO8859_7 },
    { "latin7"       , JCODE_ISO8859_7 },
    { "iso88598"     , JCODE_ISO8859_8 },
    { "latin8"       , JCODE_ISO8859_8 },
    { "iso88599"     , JCODE_ISO8859_9 },
    { "latin9"       , JCODE_ISO8859_9 },
    { "iso885910"    , JCODE_ISO8859_10 },
    { "latin10"      , JCODE_ISO8859_10 },
    { "iso885911"    , JCODE_ISO8859_11 },
    { "latin11"      , JCODE_ISO8859_11 },
    { "iso885913"    , JCODE_ISO8859_13 },
    { "latin13"      , JCODE_ISO8859_13 },
    { "iso885914"    , JCODE_ISO8859_14 },
    { "latin14"      , JCODE_ISO8859_14 },
    { "iso885915"    , JCODE_ISO8859_15 },
    { "latin15"      , JCODE_ISO8859_15 },
    { "iso885916"    , JCODE_ISO8859_16 },
    { "latin16"      , JCODE_ISO8859_16 },
    { "none"         , JCODE_NONE      },
    { NULL, 0 }
};
static struct conv_converter_rec
 conv_converter[NUM_JCODES][NUM_JCODES] = {
  /* ascii => */
  {
    { ident, NULL, 0, 0 },                                   /* ascii */
    { ascii_x, NULL, 0, 0 },                                 /* eucj */
    { ascii_x, NULL, 0, 0 },                                 /* sjis */
    { ascii_x, NULL, 0, 0 },                                 /* utf8 */
    { utf8_utf16, NULL, 0, UTF_DEFAULT },                    /* utf16 */
    { utf8_utf16, NULL, 0, UTF_BE },                         /* utf16be */
    { utf8_utf16, NULL, 0, UTF_LE },                         /* utf16le */
    { utf8_utf32, NULL, 0, UTF_DEFAULT },                    /* utf32 */
    { utf8_utf32, NULL, 0, UTF_BE },                         /* utf32be */
    { utf8_utf32, NULL, 0, UTF_LE },                         /* utf32le */
    { ascii_x, jis_reset, 0, JIS_ASCII },                    /* iso2022jp */
    { ascii_x, NULL, 0, 0 },                                 /* iso8859-1 */
    { ascii_lat2, NULL, 0, 0 },                              /* iso8859-2 */
    { ascii_lat3, NULL, 0, 0 },                              /* iso8859-3 */
    { ascii_lat4, NULL, 0, 0 },                              /* iso8859-4 */
    { ascii_lat5, NULL, 0, 0 },                              /* iso8859-5 */
    { ascii_lat6, NULL, 0, 0 },                              /* iso8859-6 */
    { ascii_lat7, NULL, 0, 0 },                              /* iso8859-7 */
    { ascii_lat8, NULL, 0, 0 },                              /* iso8859-8 */
    { ascii_lat9, NULL, 0, 0 },                              /* iso8859-9 */
    { ascii_lat10, NULL, 0, 0 },                             /* iso8859-10 */
    { ascii_lat11, NULL, 0, 0 },                             /* iso8859-11 */
    { ascii_lat13, NULL, 0, 0 },                             /* iso8859-13 */
    { ascii_lat14, NULL, 0, 0 },                             /* iso8859-14 */
    { ascii_lat15, NULL, 0, 0 },                             /* iso8859-15 */
    { ascii_lat16, NULL, 0, 0 },                             /* iso8859-16 */
    { ident, NULL, 0, 0 },                                   /* none */
  },
  /* eucj => */
  {
    { eucj_ascii, NULL, 0, 0 },                              /* ascii */
    { ident, NULL, 0, 0 },                                   /* eucj */
    { eucj_sjis, NULL, 0, 0 },                               /* sjis */
    { eucj_utf8, NULL, 0, 0 },                               /* utf8 */
    { eucj_utf16, NULL, 0, UTF_DEFAULT },                    /* utf16 */
    { eucj_utf16, NULL, 0, UTF_BE },                         /* utf16be */
    { eucj_utf16, NULL, 0, UTF_LE },                         /* utf16le */
    { eucj_utf32, NULL, 0, UTF_DEFAULT },                    /* utf32 */
    { eucj_utf32, NULL, 0, UTF_BE },                         /* utf32be */
    { eucj_utf32, NULL, 0, UTF_LE },                         /* utf32le */
    { eucj_jis, jis_reset, 0, JIS_ASCII },                   /* iso2022jp */
    { eucj_lat1, NULL, 0, 0 },                               /* iso8859-1 */
    { eucj_lat2, NULL, 0, 0 },                               /* iso8859-2 */
    { eucj_lat3, NULL, 0, 0 },                               /* iso8859-3 */
    { eucj_lat4, NULL, 0, 0 },                               /* iso8859-4 */
    { eucj_lat5, NULL, 0, 0 },                               /* iso8859-5 */
    { eucj_lat6, NULL, 0, 0 },                               /* iso8859-6 */
    { eucj_lat7, NULL, 0, 0 },                               /* iso8859-7 */
    { eucj_lat8, NULL, 0, 0 },                               /* iso8859-8 */
    { eucj_lat9, NULL, 0, 0 },                               /* iso8859-9 */
    { eucj_lat10, NULL, 0, 0 },                              /* iso8859-10 */
    { eucj_lat11, NULL, 0, 0 },                              /* iso8859-11 */
    { eucj_lat13, NULL, 0, 0 },                              /* iso8859-13 */
    { eucj_lat14, NULL, 0, 0 },                              /* iso8859-14 */
    { eucj_lat15, NULL, 0, 0 },                              /* iso8859-15 */
    { eucj_lat16, NULL, 0, 0 },                              /* iso8859-16 */
    { ident, NULL, 0, 0 },                                   /* none */
  },
  /* sjis => */
  {
    { sjis_ascii, NULL, 0, 0 },                              /* ascii */
    { sjis_eucj, NULL, 0, 0 },                               /* eucj */
    { ident, NULL, 0, 0 },                                   /* sjis */
    { sjis_utf8, NULL, 0, 0 },                               /* utf8 */
    { sjis_utf16, NULL, 0, UTF_DEFAULT },                    /* utf16 */
    { sjis_utf16, NULL, 0, UTF_BE },                         /* utf16be */
    { sjis_utf16, NULL, 0, UTF_LE },                         /* utf16le */
    { sjis_utf32, NULL, 0, UTF_DEFAULT },                    /* utf32 */
    { sjis_utf32, NULL, 0, UTF_BE },                         /* utf32be */
    { sjis_utf32, NULL, 0, UTF_LE },                         /* utf32le */
    { sjis_jis, jis_reset, 0, JIS_ASCII },                   /* iso2022jp */
    { sjis_lat1, NULL, 0, 0 },                               /* iso8859-1 */
    { sjis_lat2, NULL, 0, 0 },                               /* iso8859-2 */
    { sjis_lat3, NULL, 0, 0 },                               /* iso8859-3 */
    { sjis_lat4, NULL, 0, 0 },                               /* iso8859-4 */
    { sjis_lat5, NULL, 0, 0 },                               /* iso8859-5 */
    { sjis_lat6, NULL, 0, 0 },                               /* iso8859-6 */
    { sjis_lat7, NULL, 0, 0 },                               /* iso8859-7 */
    { sjis_lat8, NULL, 0, 0 },                               /* iso8859-8 */
    { sjis_lat9, NULL, 0, 0 },                               /* iso8859-9 */
    { sjis_lat10, NULL, 0, 0 },                              /* iso8859-10 */
    { sjis_lat11, NULL, 0, 0 },                              /* iso8859-11 */
    { sjis_lat13, NULL, 0, 0 },                              /* iso8859-13 */
    { sjis_lat14, NULL, 0, 0 },                              /* iso8859-14 */
    { sjis_lat15, NULL, 0, 0 },                              /* iso8859-15 */
    { sjis_lat16, NULL, 0, 0 },                              /* iso8859-16 */
    { ident, NULL, 0, 0 },                                   /* none */
  },
  /* utf8 => */
  {
    { utf8_ascii, NULL, 0, 0 },                              /* ascii */
    { utf8_eucj, NULL, 0, 0 },                               /* eucj */
    { utf8_sjis, NULL, 0, 0 },                               /* sjis */
    { ident, NULL, 0, 0 },                                   /* utf8 */
    { utf8_utf16, NULL, 0, UTF_DEFAULT },                    /* utf16 */
    { utf8_utf16, NULL, 0, UTF_BE },                         /* utf16be */
    { utf8_utf16, NULL, 0, UTF_LE },                         /* utf16le */
    { utf8_utf32, NULL, 0, UTF_DEFAULT },                    /* utf32 */
    { utf8_utf32, NULL, 0, UTF_BE },                         /* utf32be */
    { utf8_utf32, NULL, 0, UTF_LE },                         /* utf32le */
    { utf8_jis, jis_reset, 0, JIS_ASCII },                   /* iso2022jp */
    { utf8_lat1, NULL, 0, 0 },                               /* iso8859-1 */
    { utf8_lat2, NULL, 0, 0 },                               /* iso8859-2 */
    { utf8_lat3, NULL, 0, 0 },                               /* iso8859-3 */
    { utf8_lat4, NULL, 0, 0 },                               /* iso8859-4 */
    { utf8_lat5, NULL, 0, 0 },                               /* iso8859-5 */
    { utf8_lat6, NULL, 0, 0 },                               /* iso8859-6 */
    { utf8_lat7, NULL, 0, 0 },                               /* iso8859-7 */
    { utf8_lat8, NULL, 0, 0 },                               /* iso8859-8 */
    { utf8_lat9, NULL, 0, 0 },                               /* iso8859-9 */
    { utf8_lat10, NULL, 0, 0 },                              /* iso8859-10 */
    { utf8_lat11, NULL, 0, 0 },                              /* iso8859-11 */
    { utf8_lat13, NULL, 0, 0 },                              /* iso8859-13 */
    { utf8_lat14, NULL, 0, 0 },                              /* iso8859-14 */
    { utf8_lat15, NULL, 0, 0 },                              /* iso8859-15 */
    { utf8_lat16, NULL, 0, 0 },                              /* iso8859-16 */
    { ident, NULL, 0, 0 },                                   /* none */
  },
  /* utf16 => */
  {
    { utf16_ascii, NULL, UTF_DEFAULT, 0 },                   /* ascii */
    { utf16_eucj, NULL, UTF_DEFAULT, 0 },                    /* eucj */
    { utf16_sjis, NULL, UTF_DEFAULT, 0 },                    /* sjis */
    { utf16_utf8, NULL, UTF_DEFAULT, 0 },                    /* utf8 */
    { utf16_utf16, NULL, UTF_DEFAULT, UTF_DEFAULT },         /* utf16 */
    { utf16_utf16, NULL, UTF_DEFAULT, UTF_BE },              /* utf16be */
    { utf16_utf16, NULL, UTF_DEFAULT, UTF_LE },              /* utf16le */
    { utf16_utf32, NULL, UTF_DEFAULT, UTF_DEFAULT },         /* utf32 */
    { utf16_utf32, NULL, UTF_DEFAULT, UTF_BE },              /* utf32be */
    { utf16_utf32, NULL, UTF_DEFAULT, UTF_LE },              /* utf32le */
    { utf16_jis, jis_reset, UTF_DEFAULT, JIS_ASCII },        /* iso2022jp */
    { utf16_lat1, NULL, UTF_DEFAULT, 0 },                    /* iso8859-1 */
    { utf16_lat2, NULL, UTF_DEFAULT, 0 },                    /* iso8859-2 */
    { utf16_lat3, NULL, UTF_DEFAULT, 0 },                    /* iso8859-3 */
    { utf16_lat4, NULL, UTF_DEFAULT, 0 },                    /* iso8859-4 */
    { utf16_lat5, NULL, UTF_DEFAULT, 0 },                    /* iso8859-5 */
    { utf16_lat6, NULL, UTF_DEFAULT, 0 },                    /* iso8859-6 */
    { utf16_lat7, NULL, UTF_DEFAULT, 0 },                    /* iso8859-7 */
    { utf16_lat8, NULL, UTF_DEFAULT, 0 },                    /* iso8859-8 */
    { utf16_lat9, NULL, UTF_DEFAULT, 0 },                    /* iso8859-9 */
    { utf16_lat10, NULL, UTF_DEFAULT, 0 },                   /* iso8859-10 */
    { utf16_lat11, NULL, UTF_DEFAULT, 0 },                   /* iso8859-11 */
    { utf16_lat13, NULL, UTF_DEFAULT, 0 },                   /* iso8859-13 */
    { utf16_lat14, NULL, UTF_DEFAULT, 0 },                   /* iso8859-14 */
    { utf16_lat15, NULL, UTF_DEFAULT, 0 },                   /* iso8859-15 */
    { utf16_lat16, NULL, UTF_DEFAULT, 0 },                   /* iso8859-16 */
    { ident, NULL, 0, 0 },                                   /* none */
  },
  /* utf16be => */
  {
    { utf16_ascii, NULL, UTF_BE, 0 },                        /* ascii */
    { utf16_eucj, NULL, UTF_BE, 0 },                         /* eucj */
    { utf16_sjis, NULL, UTF_BE, 0 },                         /* sjis */
    { utf16_utf8, NULL, UTF_BE, 0 },                         /* utf8 */
    { utf16_utf16, NULL, UTF_BE, UTF_DEFAULT },              /* utf16 */
    { utf16_utf16, NULL, UTF_BE, UTF_BE },                   /* utf16be */
    { utf16_utf16, NULL, UTF_BE, UTF_LE },                   /* utf16le */
    { utf16_utf32, NULL, UTF_BE, UTF_DEFAULT },              /* utf32 */
    { utf16_utf32, NULL, UTF_BE, UTF_BE },                   /* utf32be */
    { utf16_utf32, NULL, UTF_BE, UTF_LE },                   /* utf32le */
    { utf16_jis, jis_reset, UTF_BE, JIS_ASCII },             /* iso2022jp */
    { utf16_lat1, NULL, UTF_BE, 0 },                         /* iso8859-1 */
    { utf16_lat2, NULL, UTF_BE, 0 },                         /* iso8859-2 */
    { utf16_lat3, NULL, UTF_BE, 0 },                         /* iso8859-3 */
    { utf16_lat4, NULL, UTF_BE, 0 },                         /* iso8859-4 */
    { utf16_lat5, NULL, UTF_BE, 0 },                         /* iso8859-5 */
    { utf16_lat6, NULL, UTF_BE, 0 },                         /* iso8859-6 */
    { utf16_lat7, NULL, UTF_BE, 0 },                         /* iso8859-7 */
    { utf16_lat8, NULL, UTF_BE, 0 },                         /* iso8859-8 */
    { utf16_lat9, NULL, UTF_BE, 0 },                         /* iso8859-9 */
    { utf16_lat10, NULL, UTF_BE, 0 },                        /* iso8859-10 */
    { utf16_lat11, NULL, UTF_BE, 0 },                        /* iso8859-11 */
    { utf16_lat13, NULL, UTF_BE, 0 },                        /* iso8859-13 */
    { utf16_lat14, NULL, UTF_BE, 0 },                        /* iso8859-14 */
    { utf16_lat15, NULL, UTF_BE, 0 },                        /* iso8859-15 */
    { utf16_lat16, NULL, UTF_BE, 0 },                        /* iso8859-16 */
    { ident, NULL, 0, 0 },                                   /* none */
  },
  /* utf16le => */
  {
    { utf16_ascii, NULL, UTF_LE, 0 },                        /* ascii */
    { utf16_eucj, NULL, UTF_LE, 0 },                         /* eucj */
    { utf16_sjis, NULL, UTF_LE, 0 },                         /* sjis */
    { utf16_utf8, NULL, UTF_LE, 0 },                         /* utf8 */
    { utf16_utf16, NULL, UTF_LE, UTF_DEFAULT },              /* utf16 */
    { utf16_utf16, NULL, UTF_LE, UTF_BE },                   /* utf16be */
    { utf16_utf16, NULL, UTF_LE, UTF_LE },                   /* utf16le */
    { utf16_utf32, NULL, UTF_LE, UTF_DEFAULT },              /* utf32 */
    { utf16_utf32, NULL, UTF_LE, UTF_BE },                   /* utf32be */
    { utf16_utf32, NULL, UTF_LE, UTF_LE },                   /* utf32le */
    { utf16_jis, jis_reset, UTF_LE, JIS_ASCII },             /* iso2022jp */
    { utf16_lat1, NULL, UTF_LE, 0 },                         /* iso8859-1 */
    { utf16_lat2, NULL, UTF_LE, 0 },                         /* iso8859-2 */
    { utf16_lat3, NULL, UTF_LE, 0 },                         /* iso8859-3 */
    { utf16_lat4, NULL, UTF_LE, 0 },                         /* iso8859-4 */
    { utf16_lat5, NULL, UTF_LE, 0 },                         /* iso8859-5 */
    { utf16_lat6, NULL, UTF_LE, 0 },                         /* iso8859-6 */
    { utf16_lat7, NULL, UTF_LE, 0 },                         /* iso8859-7 */
    { utf16_lat8, NULL, UTF_LE, 0 },                         /* iso8859-8 */
    { utf16_lat9, NULL, UTF_LE, 0 },                         /* iso8859-9 */
    { utf16_lat10, NULL, UTF_LE, 0 },                        /* iso8859-10 */
    { utf16_lat11, NULL, UTF_LE, 0 },                        /* iso8859-11 */
    { utf16_lat13, NULL, UTF_LE, 0 },                        /* iso8859-13 */
    { utf16_lat14, NULL, UTF_LE, 0 },                        /* iso8859-14 */
    { utf16_lat15, NULL, UTF_LE, 0 },                        /* iso8859-15 */
    { utf16_lat16, NULL, UTF_LE, 0 },                        /* iso8859-16 */
    { ident, NULL, 0, 0 },                                   /* none */
  },
  /* utf32 => */
  {
    { utf32_ascii, NULL, UTF_DEFAULT, 0 },                   /* ascii */
    { utf32_eucj, NULL, UTF_DEFAULT, 0 },                    /* eucj */
    { utf32_sjis, NULL, UTF_DEFAULT, 0 },                    /* sjis */
    { utf32_utf8, NULL, UTF_DEFAULT, 0 },                    /* utf8 */
    { utf32_utf16, NULL, UTF_DEFAULT, UTF_DEFAULT },         /* utf16 */
    { utf32_utf16, NULL, UTF_DEFAULT, UTF_BE },              /* utf16be */
    { utf32_utf16, NULL, UTF_DEFAULT, UTF_LE },              /* utf16le */
    { utf32_utf32, NULL, UTF_DEFAULT, UTF_DEFAULT },         /* utf32 */
    { utf32_utf32, NULL, UTF_DEFAULT, UTF_BE },              /* utf32be */
    { utf32_utf32, NULL, UTF_DEFAULT, UTF_LE },              /* utf32le */
    { utf32_jis, jis_reset, UTF_DEFAULT, JIS_ASCII },        /* iso2022jp */
    { utf32_lat1, NULL, UTF_DEFAULT, 0 },                    /* iso8859-1 */
    { utf32_lat2, NULL, UTF_DEFAULT, 0 },                    /* iso8859-2 */
    { utf32_lat3, NULL, UTF_DEFAULT, 0 },                    /* iso8859-3 */
    { utf32_lat4, NULL, UTF_DEFAULT, 0 },                    /* iso8859-4 */
    { utf32_lat5, NULL, UTF_DEFAULT, 0 },                    /* iso8859-5 */
    { utf32_lat6, NULL, UTF_DEFAULT, 0 },                    /* iso8859-6 */
    { utf32_lat7, NULL, UTF_DEFAULT, 0 },                    /* iso8859-7 */
    { utf32_lat8, NULL, UTF_DEFAULT, 0 },                    /* iso8859-8 */
    { utf32_lat9, NULL, UTF_DEFAULT, 0 },                    /* iso8859-9 */
    { utf32_lat10, NULL, UTF_DEFAULT, 0 },                   /* iso8859-10 */
    { utf32_lat11, NULL, UTF_DEFAULT, 0 },                   /* iso8859-11 */
    { utf32_lat13, NULL, UTF_DEFAULT, 0 },                   /* iso8859-13 */
    { utf32_lat14, NULL, UTF_DEFAULT, 0 },                   /* iso8859-14 */
    { utf32_lat15, NULL, UTF_DEFAULT, 0 },                   /* iso8859-15 */
    { utf32_lat16, NULL, UTF_DEFAULT, 0 },                   /* iso8859-16 */
    { ident, NULL, 0, 0 },                                   /* none */
  },
  /* utf32be => */
  {
    { utf32_ascii, NULL, UTF_BE, 0 },                        /* ascii */
    { utf32_eucj, NULL, UTF_BE, 0 },                         /* eucj */
    { utf32_sjis, NULL, UTF_BE, 0 },                         /* sjis */
    { utf32_utf8, NULL, UTF_BE, 0 },                         /* utf8 */
    { utf32_utf16, NULL, UTF_BE, UTF_DEFAULT },              /* utf16 */
    { utf32_utf16, NULL, UTF_BE, UTF_BE },                   /* utf16be */
    { utf32_utf16, NULL, UTF_BE, UTF_LE },                   /* utf16le */
    { utf32_utf32, NULL, UTF_BE, UTF_DEFAULT },              /* utf32 */
    { utf32_utf32, NULL, UTF_BE, UTF_BE },                   /* utf32be */
    { utf32_utf32, NULL, UTF_BE, UTF_LE },                   /* utf32le */
    { utf32_jis, jis_reset, UTF_BE, JIS_ASCII },             /* iso2022jp */
    { utf32_lat1, NULL, UTF_BE, 0 },                         /* iso8859-1 */
    { utf32_lat2, NULL, UTF_BE, 0 },                         /* iso8859-2 */
    { utf32_lat3, NULL, UTF_BE, 0 },                         /* iso8859-3 */
    { utf32_lat4, NULL, UTF_BE, 0 },                         /* iso8859-4 */
    { utf32_lat5, NULL, UTF_BE, 0 },                         /* iso8859-5 */
    { utf32_lat6, NULL, UTF_BE, 0 },                         /* iso8859-6 */
    { utf32_lat7, NULL, UTF_BE, 0 },                         /* iso8859-7 */
    { utf32_lat8, NULL, UTF_BE, 0 },                         /* iso8859-8 */
    { utf32_lat9, NULL, UTF_BE, 0 },                         /* iso8859-9 */
    { utf32_lat10, NULL, UTF_BE, 0 },                        /* iso8859-10 */
    { utf32_lat11, NULL, UTF_BE, 0 },                        /* iso8859-11 */
    { utf32_lat13, NULL, UTF_BE, 0 },                        /* iso8859-13 */
    { utf32_lat14, NULL, UTF_BE, 0 },                        /* iso8859-14 */
    { utf32_lat15, NULL, UTF_BE, 0 },                        /* iso8859-15 */
    { utf32_lat16, NULL, UTF_BE, 0 },                        /* iso8859-16 */
    { ident, NULL, 0, 0 },                                   /* none */
  },
  /* utf32le => */
  {
    { utf32_ascii, NULL, UTF_LE, 0 },                        /* ascii */
    { utf32_eucj, NULL, UTF_LE, 0 },                         /* eucj */
    { utf32_sjis, NULL, UTF_LE, 0 },                         /* sjis */
    { utf32_utf8, NULL, UTF_LE, 0 },                         /* utf8 */
    { utf32_utf16, NULL, UTF_LE, UTF_DEFAULT },              /* utf16 */
    { utf32_utf16, NULL, UTF_LE, UTF_BE },                   /* utf16be */
    { utf32_utf16, NULL, UTF_LE, UTF_LE },                   /* utf16le */
    { utf32_utf32, NULL, UTF_LE, UTF_DEFAULT },              /* utf32 */
    { utf32_utf32, NULL, UTF_LE, UTF_BE },                   /* utf32be */
    { utf32_utf32, NULL, UTF_LE, UTF_LE },                   /* utf32le */
    { utf32_jis, jis_reset, UTF_LE, JIS_ASCII },             /* iso2022jp */
    { utf32_lat1, NULL, UTF_LE, 0 },                         /* iso8859-1 */
    { utf32_lat2, NULL, UTF_LE, 0 },                         /* iso8859-2 */
    { utf32_lat3, NULL, UTF_LE, 0 },                         /* iso8859-3 */
    { utf32_lat4, NULL, UTF_LE, 0 },                         /* iso8859-4 */
    { utf32_lat5, NULL, UTF_LE, 0 },                         /* iso8859-5 */
    { utf32_lat6, NULL, UTF_LE, 0 },                         /* iso8859-6 */
    { utf32_lat7, NULL, UTF_LE, 0 },                         /* iso8859-7 */
    { utf32_lat8, NULL, UTF_LE, 0 },                         /* iso8859-8 */
    { utf32_lat9, NULL, UTF_LE, 0 },                         /* iso8859-9 */
    { utf32_lat10, NULL, UTF_LE, 0 },                        /* iso8859-10 */
    { utf32_lat11, NULL, UTF_LE, 0 },                        /* iso8859-11 */
    { utf32_lat13, NULL, UTF_LE, 0 },                        /* iso8859-13 */
    { utf32_lat14, NULL, UTF_LE, 0 },                        /* iso8859-14 */
    { utf32_lat15, NULL, UTF_LE, 0 },                        /* iso8859-15 */
    { utf32_lat16, NULL, UTF_LE, 0 },                        /* iso8859-16 */
    { ident, NULL, 0, 0 },                                   /* none */
  },
  /* iso2022jp => */
  {
    { jis_ascii, NULL, JIS_ASCII, 0 },                       /* ascii */
    { jis_eucj, NULL, JIS_ASCII, 0 },                        /* eucj */
    { jis_sjis, NULL, JIS_ASCII, 0 },                        /* sjis */
    { jis_utf8, NULL, JIS_ASCII, 0 },                        /* utf8 */
    { jis_utf16, NULL, JIS_ASCII, UTF_DEFAULT },             /* utf16 */
    { jis_utf16, NULL, JIS_ASCII, UTF_BE },                  /* utf16be */
    { jis_utf16, NULL, JIS_ASCII, UTF_LE },                  /* utf16le */
    { jis_utf32, NULL, JIS_ASCII, UTF_DEFAULT },             /* utf32 */
    { jis_utf32, NULL, JIS_ASCII, UTF_BE },                  /* utf32be */
    { jis_utf32, NULL, JIS_ASCII, UTF_LE },                  /* utf32le */
    { ident, NULL, 0, 0 },                                   /* iso2022jp */
    { jis_lat1, NULL, JIS_ASCII, 0 },                        /* iso8859-1 */
    { jis_lat2, NULL, JIS_ASCII, 0 },                        /* iso8859-2 */
    { jis_lat3, NULL, JIS_ASCII, 0 },                        /* iso8859-3 */
    { jis_lat4, NULL, JIS_ASCII, 0 },                        /* iso8859-4 */
    { jis_lat5, NULL, JIS_ASCII, 0 },                        /* iso8859-5 */
    { jis_lat6, NULL, JIS_ASCII, 0 },                        /* iso8859-6 */
    { jis_lat7, NULL, JIS_ASCII, 0 },                        /* iso8859-7 */
    { jis_lat8, NULL, JIS_ASCII, 0 },                        /* iso8859-8 */
    { jis_lat9, NULL, JIS_ASCII, 0 },                        /* iso8859-9 */
    { jis_lat10, NULL, JIS_ASCII, 0 },                       /* iso8859-10 */
    { jis_lat11, NULL, JIS_ASCII, 0 },                       /* iso8859-11 */
    { jis_lat13, NULL, JIS_ASCII, 0 },                       /* iso8859-13 */
    { jis_lat14, NULL, JIS_ASCII, 0 },                       /* iso8859-14 */
    { jis_lat15, NULL, JIS_ASCII, 0 },                       /* iso8859-15 */
    { jis_lat16, NULL, JIS_ASCII, 0 },                       /* iso8859-16 */
    { ident, NULL, 0, 0 },                                   /* none */
  },
  /* iso8859-1 => */
  {
    { lat1_ascii, NULL, 0, 0 },                              /* ascii */
    { lat1_eucj, NULL, 0, 0 },                               /* eucj */
    { lat1_sjis, NULL, 0, 0 },                               /* sjis */
    { lat1_utf8, NULL, 0, 0 },                               /* utf8 */
    { lat1_utf16, NULL, 0, UTF_DEFAULT },                    /* utf16 */
    { lat1_utf16, NULL, 0, UTF_BE },                         /* utf16be */
    { lat1_utf16, NULL, 0, UTF_LE },                         /* utf16le */
    { lat1_utf32, NULL, 0, UTF_DEFAULT },                    /* utf32 */
    { lat1_utf32, NULL, 0, UTF_BE },                         /* utf32be */
    { lat1_utf32, NULL, 0, UTF_LE },                         /* utf32le */
    { lat1_jis, jis_reset, 0, JIS_ASCII },                   /* iso2022jp */
    { ident, NULL, 0, 0 },                                   /* iso8859-1 */
    { lat1_lat2, NULL, 0, 0 },                               /* iso8859-2 */
    { lat1_lat3, NULL, 0, 0 },                               /* iso8859-3 */
    { lat1_lat4, NULL, 0, 0 },                               /* iso8859-4 */
    { lat1_lat5, NULL, 0, 0 },                               /* iso8859-5 */
    { lat1_lat6, NULL, 0, 0 },                               /* iso8859-6 */
    { lat1_lat7, NULL, 0, 0 },                               /* iso8859-7 */
    { lat1_lat8, NULL, 0, 0 },                               /* iso8859-8 */
    { lat1_lat9, NULL, 0, 0 },                               /* iso8859-9 */
    { lat1_lat10, NULL, 0, 0 },                              /* iso8859-10 */
    { lat1_lat11, NULL, 0, 0 },                              /* iso8859-11 */
    { lat1_lat13, NULL, 0, 0 },                              /* iso8859-13 */
    { lat1_lat14, NULL, 0, 0 },                              /* iso8859-14 */
    { lat1_lat15, NULL, 0, 0 },                              /* iso8859-15 */
    { lat1_lat16, NULL, 0, 0 },                              /* iso8859-16 */
    { ident, NULL, 0, 0 },                                   /* none */
  },
  /* iso8859-2 => */
  {
    { lat2_ascii, NULL, 0, 0 },                              /* ascii */
    { lat2_eucj, NULL, 0, 0 },                               /* eucj */
    { lat2_sjis, NULL, 0, 0 },                               /* sjis */
    { lat2_utf8, NULL, 0, 0 },                               /* utf8 */
    { lat2_utf16, NULL, 0, UTF_DEFAULT },                    /* utf16 */
    { lat2_utf16, NULL, 0, UTF_BE },                         /* utf16be */
    { lat2_utf16, NULL, 0, UTF_LE },                         /* utf16le */
    { lat2_utf32, NULL, 0, UTF_DEFAULT },                    /* utf32 */
    { lat2_utf32, NULL, 0, UTF_BE },                         /* utf32be */
    { lat2_utf32, NULL, 0, UTF_LE },                         /* utf32le */
    { lat2_jis, jis_reset, 0, JIS_ASCII },                   /* iso2022jp */
    { lat2_lat1, NULL, 0, 0 },                               /* iso8859-1 */
    { ident, NULL, 0, 0 },                                   /* iso8859-2 */
    { lat2_lat3, NULL, 0, 0 },                               /* iso8859-3 */
    { lat2_lat4, NULL, 0, 0 },                               /* iso8859-4 */
    { lat2_lat5, NULL, 0, 0 },                               /* iso8859-5 */
    { lat2_lat6, NULL, 0, 0 },                               /* iso8859-6 */
    { lat2_lat7, NULL, 0, 0 },                               /* iso8859-7 */
    { lat2_lat8, NULL, 0, 0 },                               /* iso8859-8 */
    { lat2_lat9, NULL, 0, 0 },                               /* iso8859-9 */
    { lat2_lat10, NULL, 0, 0 },                              /* iso8859-10 */
    { lat2_lat11, NULL, 0, 0 },                              /* iso8859-11 */
    { lat2_lat13, NULL, 0, 0 },                              /* iso8859-13 */
    { lat2_lat14, NULL, 0, 0 },                              /* iso8859-14 */
    { lat2_lat15, NULL, 0, 0 },                              /* iso8859-15 */
    { lat2_lat16, NULL, 0, 0 },                              /* iso8859-16 */
    { ident, NULL, 0, 0 },                                   /* none */
  },
  /* iso8859-3 => */
  {
    { lat3_ascii, NULL, 0, 0 },                              /* ascii */
    { lat3_eucj, NULL, 0, 0 },                               /* eucj */
    { lat3_sjis, NULL, 0, 0 },                               /* sjis */
    { lat3_utf8, NULL, 0, 0 },                               /* utf8 */
    { lat3_utf16, NULL, 0, UTF_DEFAULT },                    /* utf16 */
    { lat3_utf16, NULL, 0, UTF_BE },                         /* utf16be */
    { lat3_utf16, NULL, 0, UTF_LE },                         /* utf16le */
    { lat3_utf32, NULL, 0, UTF_DEFAULT },                    /* utf32 */
    { lat3_utf32, NULL, 0, UTF_BE },                         /* utf32be */
    { lat3_utf32, NULL, 0, UTF_LE },                         /* utf32le */
    { lat3_jis, jis_reset, 0, JIS_ASCII },                   /* iso2022jp */
    { lat3_lat1, NULL, 0, 0 },                               /* iso8859-1 */
    { lat3_lat2, NULL, 0, 0 },                               /* iso8859-2 */
    { ident, NULL, 0, 0 },                                   /* iso8859-3 */
    { lat3_lat4, NULL, 0, 0 },                               /* iso8859-4 */
    { lat3_lat5, NULL, 0, 0 },                               /* iso8859-5 */
    { lat3_lat6, NULL, 0, 0 },                               /* iso8859-6 */
    { lat3_lat7, NULL, 0, 0 },                               /* iso8859-7 */
    { lat3_lat8, NULL, 0, 0 },                               /* iso8859-8 */
    { lat3_lat9, NULL, 0, 0 },                               /* iso8859-9 */
    { lat3_lat10, NULL, 0, 0 },                              /* iso8859-10 */
    { lat3_lat11, NULL, 0, 0 },                              /* iso8859-11 */
    { lat3_lat13, NULL, 0, 0 },                              /* iso8859-13 */
    { lat3_lat14, NULL, 0, 0 },                              /* iso8859-14 */
    { lat3_lat15, NULL, 0, 0 },                              /* iso8859-15 */
    { lat3_lat16, NULL, 0, 0 },                              /* iso8859-16 */
    { ident, NULL, 0, 0 },                                   /* none */
  },
  /* iso8859-4 => */
  {
    { lat4_ascii, NULL, 0, 0 },                              /* ascii */
    { lat4_eucj, NULL, 0, 0 },                               /* eucj */
    { lat4_sjis, NULL, 0, 0 },                               /* sjis */
    { lat4_utf8, NULL, 0, 0 },                               /* utf8 */
    { lat4_utf16, NULL, 0, UTF_DEFAULT },                    /* utf16 */
    { lat4_utf16, NULL, 0, UTF_BE },                         /* utf16be */
    { lat4_utf16, NULL, 0, UTF_LE },                         /* utf16le */
    { lat4_utf32, NULL, 0, UTF_DEFAULT },                    /* utf32 */
    { lat4_utf32, NULL, 0, UTF_BE },                         /* utf32be */
    { lat4_utf32, NULL, 0, UTF_LE },                         /* utf32le */
    { lat4_jis, jis_reset, 0, JIS_ASCII },                   /* iso2022jp */
    { lat4_lat1, NULL, 0, 0 },                               /* iso8859-1 */
    { lat4_lat2, NULL, 0, 0 },                               /* iso8859-2 */
    { lat4_lat3, NULL, 0, 0 },                               /* iso8859-3 */
    { ident, NULL, 0, 0 },                                   /* iso8859-4 */
    { lat4_lat5, NULL, 0, 0 },                               /* iso8859-5 */
    { lat4_lat6, NULL, 0, 0 },                               /* iso8859-6 */
    { lat4_lat7, NULL, 0, 0 },                               /* iso8859-7 */
    { lat4_lat8, NULL, 0, 0 },                               /* iso8859-8 */
    { lat4_lat9, NULL, 0, 0 },                               /* iso8859-9 */
    { lat4_lat10, NULL, 0, 0 },                              /* iso8859-10 */
    { lat4_lat11, NULL, 0, 0 },                              /* iso8859-11 */
    { lat4_lat13, NULL, 0, 0 },                              /* iso8859-13 */
    { lat4_lat14, NULL, 0, 0 },                              /* iso8859-14 */
    { lat4_lat15, NULL, 0, 0 },                              /* iso8859-15 */
    { lat4_lat16, NULL, 0, 0 },                              /* iso8859-16 */
    { ident, NULL, 0, 0 },                                   /* none */
  },
  /* iso8859-5 => */
  {
    { lat5_ascii, NULL, 0, 0 },                              /* ascii */
    { lat5_eucj, NULL, 0, 0 },                               /* eucj */
    { lat5_sjis, NULL, 0, 0 },                               /* sjis */
    { lat5_utf8, NULL, 0, 0 },                               /* utf8 */
    { lat5_utf16, NULL, 0, UTF_DEFAULT },                    /* utf16 */
    { lat5_utf16, NULL, 0, UTF_BE },                         /* utf16be */
    { lat5_utf16, NULL, 0, UTF_LE },                         /* utf16le */
    { lat5_utf32, NULL, 0, UTF_DEFAULT },                    /* utf32 */
    { lat5_utf32, NULL, 0, UTF_BE },                         /* utf32be */
    { lat5_utf32, NULL, 0, UTF_LE },                         /* utf32le */
    { lat5_jis, jis_reset, 0, JIS_ASCII },                   /* iso2022jp */
    { lat5_lat1, NULL, 0, 0 },                               /* iso8859-1 */
    { lat5_lat2, NULL, 0, 0 },                               /* iso8859-2 */
    { lat5_lat3, NULL, 0, 0 },                               /* iso8859-3 */
    { lat5_lat4, NULL, 0, 0 },                               /* iso8859-4 */
    { ident, NULL, 0, 0 },                                   /* iso8859-5 */
    { lat5_lat6, NULL, 0, 0 },                               /* iso8859-6 */
    { lat5_lat7, NULL, 0, 0 },                               /* iso8859-7 */
    { lat5_lat8, NULL, 0, 0 },                               /* iso8859-8 */
    { lat5_lat9, NULL, 0, 0 },                               /* iso8859-9 */
    { lat5_lat10, NULL, 0, 0 },                              /* iso8859-10 */
    { lat5_lat11, NULL, 0, 0 },                              /* iso8859-11 */
    { lat5_lat13, NULL, 0, 0 },                              /* iso8859-13 */
    { lat5_lat14, NULL, 0, 0 },                              /* iso8859-14 */
    { lat5_lat15, NULL, 0, 0 },                              /* iso8859-15 */
    { lat5_lat16, NULL, 0, 0 },                              /* iso8859-16 */
    { ident, NULL, 0, 0 },                                   /* none */
  },
  /* iso8859-6 => */
  {
    { lat6_ascii, NULL, 0, 0 },                              /* ascii */
    { lat6_eucj, NULL, 0, 0 },                               /* eucj */
    { lat6_sjis, NULL, 0, 0 },                               /* sjis */
    { lat6_utf8, NULL, 0, 0 },                               /* utf8 */
    { lat6_utf16, NULL, 0, UTF_DEFAULT },                    /* utf16 */
    { lat6_utf16, NULL, 0, UTF_BE },                         /* utf16be */
    { lat6_utf16, NULL, 0, UTF_LE },                         /* utf16le */
    { lat6_utf32, NULL, 0, UTF_DEFAULT },                    /* utf32 */
    { lat6_utf32, NULL, 0, UTF_BE },                         /* utf32be */
    { lat6_utf32, NULL, 0, UTF_LE },                         /* utf32le */
    { lat6_jis, jis_reset, 0, JIS_ASCII },                   /* iso2022jp */
    { lat6_lat1, NULL, 0, 0 },                               /* iso8859-1 */
    { lat6_lat2, NULL, 0, 0 },                               /* iso8859-2 */
    { lat6_lat3, NULL, 0, 0 },                               /* iso8859-3 */
    { lat6_lat4, NULL, 0, 0 },                               /* iso8859-4 */
    { lat6_lat5, NULL, 0, 0 },                               /* iso8859-5 */
    { ident, NULL, 0, 0 },                                   /* iso8859-6 */
    { lat6_lat7, NULL, 0, 0 },                               /* iso8859-7 */
    { lat6_lat8, NULL, 0, 0 },                               /* iso8859-8 */
    { lat6_lat9, NULL, 0, 0 },                               /* iso8859-9 */
    { lat6_lat10, NULL, 0, 0 },                              /* iso8859-10 */
    { lat6_lat11, NULL, 0, 0 },                              /* iso8859-11 */
    { lat6_lat13, NULL, 0, 0 },                              /* iso8859-13 */
    { lat6_lat14, NULL, 0, 0 },                              /* iso8859-14 */
    { lat6_lat15, NULL, 0, 0 },                              /* iso8859-15 */
    { lat6_lat16, NULL, 0, 0 },                              /* iso8859-16 */
    { ident, NULL, 0, 0 },                                   /* none */
  },
  /* iso8859-7 => */
  {
    { lat7_ascii, NULL, 0, 0 },                              /* ascii */
    { lat7_eucj, NULL, 0, 0 },                               /* eucj */
    { lat7_sjis, NULL, 0, 0 },                               /* sjis */
    { lat7_utf8, NULL, 0, 0 },                               /* utf8 */
    { lat7_utf16, NULL, 0, UTF_DEFAULT },                    /* utf16 */
    { lat7_utf16, NULL, 0, UTF_BE },                         /* utf16be */
    { lat7_utf16, NULL, 0, UTF_LE },                         /* utf16le */
    { lat7_utf32, NULL, 0, UTF_DEFAULT },                    /* utf32 */
    { lat7_utf32, NULL, 0, UTF_BE },                         /* utf32be */
    { lat7_utf32, NULL, 0, UTF_LE },                         /* utf32le */
    { lat7_jis, jis_reset, 0, JIS_ASCII },                   /* iso2022jp */
    { lat7_lat1, NULL, 0, 0 },                               /* iso8859-1 */
    { lat7_lat2, NULL, 0, 0 },                               /* iso8859-2 */
    { lat7_lat3, NULL, 0, 0 },                               /* iso8859-3 */
    { lat7_lat4, NULL, 0, 0 },                               /* iso8859-4 */
    { lat7_lat5, NULL, 0, 0 },                               /* iso8859-5 */
    { lat7_lat6, NULL, 0, 0 },                               /* iso8859-6 */
    { ident, NULL, 0, 0 },                                   /* iso8859-7 */
    { lat7_lat8, NULL, 0, 0 },                               /* iso8859-8 */
    { lat7_lat9, NULL, 0, 0 },                               /* iso8859-9 */
    { lat7_lat10, NULL, 0, 0 },                              /* iso8859-10 */
    { lat7_lat11, NULL, 0, 0 },                              /* iso8859-11 */
    { lat7_lat13, NULL, 0, 0 },                              /* iso8859-13 */
    { lat7_lat14, NULL, 0, 0 },                              /* iso8859-14 */
    { lat7_lat15, NULL, 0, 0 },                              /* iso8859-15 */
    { lat7_lat16, NULL, 0, 0 },                              /* iso8859-16 */
    { ident, NULL, 0, 0 },                                   /* none */
  },
  /* iso8859-8 => */
  {
    { lat8_ascii, NULL, 0, 0 },                              /* ascii */
    { lat8_eucj, NULL, 0, 0 },                               /* eucj */
    { lat8_sjis, NULL, 0, 0 },                               /* sjis */
    { lat8_utf8, NULL, 0, 0 },                               /* utf8 */
    { lat8_utf16, NULL, 0, UTF_DEFAULT },                    /* utf16 */
    { lat8_utf16, NULL, 0, UTF_BE },                         /* utf16be */
    { lat8_utf16, NULL, 0, UTF_LE },                         /* utf16le */
    { lat8_utf32, NULL, 0, UTF_DEFAULT },                    /* utf32 */
    { lat8_utf32, NULL, 0, UTF_BE },                         /* utf32be */
    { lat8_utf32, NULL, 0, UTF_LE },                         /* utf32le */
    { lat8_jis, jis_reset, 0, JIS_ASCII },                   /* iso2022jp */
    { lat8_lat1, NULL, 0, 0 },                               /* iso8859-1 */
    { lat8_lat2, NULL, 0, 0 },                               /* iso8859-2 */
    { lat8_lat3, NULL, 0, 0 },                               /* iso8859-3 */
    { lat8_lat4, NULL, 0, 0 },                               /* iso8859-4 */
    { lat8_lat5, NULL, 0, 0 },                               /* iso8859-5 */
    { lat8_lat6, NULL, 0, 0 },                               /* iso8859-6 */
    { lat8_lat7, NULL, 0, 0 },                               /* iso8859-7 */
    { ident, NULL, 0, 0 },                                   /* iso8859-8 */
    { lat8_lat9, NULL, 0, 0 },                               /* iso8859-9 */
    { lat8_lat10, NULL, 0, 0 },                              /* iso8859-10 */
    { lat8_lat11, NULL, 0, 0 },                              /* iso8859-11 */
    { lat8_lat13, NULL, 0, 0 },                              /* iso8859-13 */
    { lat8_lat14, NULL, 0, 0 },                              /* iso8859-14 */
    { lat8_lat15, NULL, 0, 0 },                              /* iso8859-15 */
    { lat8_lat16, NULL, 0, 0 },                              /* iso8859-16 */
    { ident, NULL, 0, 0 },                                   /* none */
  },
  /* iso8859-9 => */
  {
    { lat9_ascii, NULL, 0, 0 },                              /* ascii */
    { lat9_eucj, NULL, 0, 0 },                               /* eucj */
    { lat9_sjis, NULL, 0, 0 },                               /* sjis */
    { lat9_utf8, NULL, 0, 0 },                               /* utf8 */
    { lat9_utf16, NULL, 0, UTF_DEFAULT },                    /* utf16 */
    { lat9_utf16, NULL, 0, UTF_BE },                         /* utf16be */
    { lat9_utf16, NULL, 0, UTF_LE },                         /* utf16le */
    { lat9_utf32, NULL, 0, UTF_DEFAULT },                    /* utf32 */
    { lat9_utf32, NULL, 0, UTF_BE },                         /* utf32be */
    { lat9_utf32, NULL, 0, UTF_LE },                         /* utf32le */
    { lat9_jis, jis_reset, 0, JIS_ASCII },                   /* iso2022jp */
    { lat9_lat1, NULL, 0, 0 },                               /* iso8859-1 */
    { lat9_lat2, NULL, 0, 0 },                               /* iso8859-2 */
    { lat9_lat3, NULL, 0, 0 },                               /* iso8859-3 */
    { lat9_lat4, NULL, 0, 0 },                               /* iso8859-4 */
    { lat9_lat5, NULL, 0, 0 },                               /* iso8859-5 */
    { lat9_lat6, NULL, 0, 0 },                               /* iso8859-6 */
    { lat9_lat7, NULL, 0, 0 },                               /* iso8859-7 */
    { lat9_lat8, NULL, 0, 0 },                               /* iso8859-8 */
    { ident, NULL, 0, 0 },                                   /* iso8859-9 */
    { lat9_lat10, NULL, 0, 0 },                              /* iso8859-10 */
    { lat9_lat11, NULL, 0, 0 },                              /* iso8859-11 */
    { lat9_lat13, NULL, 0, 0 },                              /* iso8859-13 */
    { lat9_lat14, NULL, 0, 0 },                              /* iso8859-14 */
    { lat9_lat15, NULL, 0, 0 },                              /* iso8859-15 */
    { lat9_lat16, NULL, 0, 0 },                              /* iso8859-16 */
    { ident, NULL, 0, 0 },                                   /* none */
  },
  /* iso8859-10 => */
  {
    { lat10_ascii, NULL, 0, 0 },                             /* ascii */
    { lat10_eucj, NULL, 0, 0 },                              /* eucj */
    { lat10_sjis, NULL, 0, 0 },                              /* sjis */
    { lat10_utf8, NULL, 0, 0 },                              /* utf8 */
    { lat10_utf16, NULL, 0, UTF_DEFAULT },                   /* utf16 */
    { lat10_utf16, NULL, 0, UTF_BE },                        /* utf16be */
    { lat10_utf16, NULL, 0, UTF_LE },                        /* utf16le */
    { lat10_utf32, NULL, 0, UTF_DEFAULT },                   /* utf32 */
    { lat10_utf32, NULL, 0, UTF_BE },                        /* utf32be */
    { lat10_utf32, NULL, 0, UTF_LE },                        /* utf32le */
    { lat10_jis, jis_reset, 0, JIS_ASCII },                  /* iso2022jp */
    { lat10_lat1, NULL, 0, 0 },                              /* iso8859-1 */
    { lat10_lat2, NULL, 0, 0 },                              /* iso8859-2 */
    { lat10_lat3, NULL, 0, 0 },                              /* iso8859-3 */
    { lat10_lat4, NULL, 0, 0 },                              /* iso8859-4 */
    { lat10_lat5, NULL, 0, 0 },                              /* iso8859-5 */
    { lat10_lat6, NULL, 0, 0 },                              /* iso8859-6 */
    { lat10_lat7, NULL, 0, 0 },                              /* iso8859-7 */
    { lat10_lat8, NULL, 0, 0 },                              /* iso8859-8 */
    { lat10_lat9, NULL, 0, 0 },                              /* iso8859-9 */
    { ident, NULL, 0, 0 },                                   /* iso8859-10 */
    { lat10_lat11, NULL, 0, 0 },                             /* iso8859-11 */
    { lat10_lat13, NULL, 0, 0 },                             /* iso8859-13 */
    { lat10_lat14, NULL, 0, 0 },                             /* iso8859-14 */
    { lat10_lat15, NULL, 0, 0 },                             /* iso8859-15 */
    { lat10_lat16, NULL, 0, 0 },                             /* iso8859-16 */
    { ident, NULL, 0, 0 },                                   /* none */
  },
  /* iso8859-11 => */
  {
    { lat11_ascii, NULL, 0, 0 },                             /* ascii */
    { lat11_eucj, NULL, 0, 0 },                              /* eucj */
    { lat11_sjis, NULL, 0, 0 },                              /* sjis */
    { lat11_utf8, NULL, 0, 0 },                              /* utf8 */
    { lat11_utf16, NULL, 0, UTF_DEFAULT },                   /* utf16 */
    { lat11_utf16, NULL, 0, UTF_BE },                        /* utf16be */
    { lat11_utf16, NULL, 0, UTF_LE },                        /* utf16le */
    { lat11_utf32, NULL, 0, UTF_DEFAULT },                   /* utf32 */
    { lat11_utf32, NULL, 0, UTF_BE },                        /* utf32be */
    { lat11_utf32, NULL, 0, UTF_LE },                        /* utf32le */
    { lat11_jis, jis_reset, 0, JIS_ASCII },                  /* iso2022jp */
    { lat11_lat1, NULL, 0, 0 },                              /* iso8859-1 */
    { lat11_lat2, NULL, 0, 0 },                              /* iso8859-2 */
    { lat11_lat3, NULL, 0, 0 },                              /* iso8859-3 */
    { lat11_lat4, NULL, 0, 0 },                              /* iso8859-4 */
    { lat11_lat5, NULL, 0, 0 },                              /* iso8859-5 */
    { lat11_lat6, NULL, 0, 0 },                              /* iso8859-6 */
    { lat11_lat7, NULL, 0, 0 },                              /* iso8859-7 */
    { lat11_lat8, NULL, 0, 0 },                              /* iso8859-8 */
    { lat11_lat9, NULL, 0, 0 },                              /* iso8859-9 */
    { lat11_lat10, NULL, 0, 0 },                             /* iso8859-10 */
    { ident, NULL, 0, 0 },                                   /* iso8859-11 */
    { lat11_lat13, NULL, 0, 0 },                             /* iso8859-13 */
    { lat11_lat14, NULL, 0, 0 },                             /* iso8859-14 */
    { lat11_lat15, NULL, 0, 0 },                             /* iso8859-15 */
    { lat11_lat16, NULL, 0, 0 },                             /* iso8859-16 */
    { ident, NULL, 0, 0 },                                   /* none */
  },
  /* iso8859-13 => */
  {
    { lat13_ascii, NULL, 0, 0 },                             /* ascii */
    { lat13_eucj, NULL, 0, 0 },                              /* eucj */
    { lat13_sjis, NULL, 0, 0 },                              /* sjis */
    { lat13_utf8, NULL, 0, 0 },                              /* utf8 */
    { lat13_utf16, NULL, 0, UTF_DEFAULT },                   /* utf16 */
    { lat13_utf16, NULL, 0, UTF_BE },                        /* utf16be */
    { lat13_utf16, NULL, 0, UTF_LE },                        /* utf16le */
    { lat13_utf32, NULL, 0, UTF_DEFAULT },                   /* utf32 */
    { lat13_utf32, NULL, 0, UTF_BE },                        /* utf32be */
    { lat13_utf32, NULL, 0, UTF_LE },                        /* utf32le */
    { lat13_jis, jis_reset, 0, JIS_ASCII },                  /* iso2022jp */
    { lat13_lat1, NULL, 0, 0 },                              /* iso8859-1 */
    { lat13_lat2, NULL, 0, 0 },                              /* iso8859-2 */
    { lat13_lat3, NULL, 0, 0 },                              /* iso8859-3 */
    { lat13_lat4, NULL, 0, 0 },                              /* iso8859-4 */
    { lat13_lat5, NULL, 0, 0 },                              /* iso8859-5 */
    { lat13_lat6, NULL, 0, 0 },                              /* iso8859-6 */
    { lat13_lat7, NULL, 0, 0 },                              /* iso8859-7 */
    { lat13_lat8, NULL, 0, 0 },                              /* iso8859-8 */
    { lat13_lat9, NULL, 0, 0 },                              /* iso8859-9 */
    { lat13_lat10, NULL, 0, 0 },                             /* iso8859-10 */
    { lat13_lat11, NULL, 0, 0 },                             /* iso8859-11 */
    { ident, NULL, 0, 0 },                                   /* iso8859-13 */
    { lat13_lat14, NULL, 0, 0 },                             /* iso8859-14 */
    { lat13_lat15, NULL, 0, 0 },                             /* iso8859-15 */
    { lat13_lat16, NULL, 0, 0 },                             /* iso8859-16 */
    { ident, NULL, 0, 0 },                                   /* none */
  },
  /* iso8859-14 => */
  {
    { lat14_ascii, NULL, 0, 0 },                             /* ascii */
    { lat14_eucj, NULL, 0, 0 },                              /* eucj */
    { lat14_sjis, NULL, 0, 0 },                              /* sjis */
    { lat14_utf8, NULL, 0, 0 },                              /* utf8 */
    { lat14_utf16, NULL, 0, UTF_DEFAULT },                   /* utf16 */
    { lat14_utf16, NULL, 0, UTF_BE },                        /* utf16be */
    { lat14_utf16, NULL, 0, UTF_LE },                        /* utf16le */
    { lat14_utf32, NULL, 0, UTF_DEFAULT },                   /* utf32 */
    { lat14_utf32, NULL, 0, UTF_BE },                        /* utf32be */
    { lat14_utf32, NULL, 0, UTF_LE },                        /* utf32le */
    { lat14_jis, jis_reset, 0, JIS_ASCII },                  /* iso2022jp */
    { lat14_lat1, NULL, 0, 0 },                              /* iso8859-1 */
    { lat14_lat2, NULL, 0, 0 },                              /* iso8859-2 */
    { lat14_lat3, NULL, 0, 0 },                              /* iso8859-3 */
    { lat14_lat4, NULL, 0, 0 },                              /* iso8859-4 */
    { lat14_lat5, NULL, 0, 0 },                              /* iso8859-5 */
    { lat14_lat6, NULL, 0, 0 },                              /* iso8859-6 */
    { lat14_lat7, NULL, 0, 0 },                              /* iso8859-7 */
    { lat14_lat8, NULL, 0, 0 },                              /* iso8859-8 */
    { lat14_lat9, NULL, 0, 0 },                              /* iso8859-9 */
    { lat14_lat10, NULL, 0, 0 },                             /* iso8859-10 */
    { lat14_lat11, NULL, 0, 0 },                             /* iso8859-11 */
    { lat14_lat13, NULL, 0, 0 },                             /* iso8859-13 */
    { ident, NULL, 0, 0 },                                   /* iso8859-14 */
    { lat14_lat15, NULL, 0, 0 },                             /* iso8859-15 */
    { lat14_lat16, NULL, 0, 0 },                             /* iso8859-16 */
    { ident, NULL, 0, 0 },                                   /* none */
  },
  /* iso8859-15 => */
  {
    { lat15_ascii, NULL, 0, 0 },                             /* ascii */
    { lat15_eucj, NULL, 0, 0 },                              /* eucj */
    { lat15_sjis, NULL, 0, 0 },                              /* sjis */
    { lat15_utf8, NULL, 0, 0 },                              /* utf8 */
    { lat15_utf16, NULL, 0, UTF_DEFAULT },                   /* utf16 */
    { lat15_utf16, NULL, 0, UTF_BE },                        /* utf16be */
    { lat15_utf16, NULL, 0, UTF_LE },                        /* utf16le */
    { lat15_utf32, NULL, 0, UTF_DEFAULT },                   /* utf32 */
    { lat15_utf32, NULL, 0, UTF_BE },                        /* utf32be */
    { lat15_utf32, NULL, 0, UTF_LE },                        /* utf32le */
    { lat15_jis, jis_reset, 0, JIS_ASCII },                  /* iso2022jp */
    { lat15_lat1, NULL, 0, 0 },                              /* iso8859-1 */
    { lat15_lat2, NULL, 0, 0 },                              /* iso8859-2 */
    { lat15_lat3, NULL, 0, 0 },                              /* iso8859-3 */
    { lat15_lat4, NULL, 0, 0 },                              /* iso8859-4 */
    { lat15_lat5, NULL, 0, 0 },                              /* iso8859-5 */
    { lat15_lat6, NULL, 0, 0 },                              /* iso8859-6 */
    { lat15_lat7, NULL, 0, 0 },                              /* iso8859-7 */
    { lat15_lat8, NULL, 0, 0 },                              /* iso8859-8 */
    { lat15_lat9, NULL, 0, 0 },                              /* iso8859-9 */
    { lat15_lat10, NULL, 0, 0 },                             /* iso8859-10 */
    { lat15_lat11, NULL, 0, 0 },                             /* iso8859-11 */
    { lat15_lat13, NULL, 0, 0 },                             /* iso8859-13 */
    { lat15_lat14, NULL, 0, 0 },                             /* iso8859-14 */
    { ident, NULL, 0, 0 },                                   /* iso8859-15 */
    { lat15_lat16, NULL, 0, 0 },                             /* iso8859-16 */
    { ident, NULL, 0, 0 },                                   /* none */
  },
  /* iso8859-16 => */
  {
    { lat16_ascii, NULL, 0, 0 },                             /* ascii */
    { lat16_eucj, NULL, 0, 0 },                              /* eucj */
    { lat16_sjis, NULL, 0, 0 },                              /* sjis */
    { lat16_utf8, NULL, 0, 0 },                              /* utf8 */
    { lat16_utf16, NULL, 0, UTF_DEFAULT },                   /* utf16 */
    { lat16_utf16, NULL, 0, UTF_BE },                        /* utf16be */
    { lat16_utf16, NULL, 0, UTF_LE },                        /* utf16le */
    { lat16_utf32, NULL, 0, UTF_DEFAULT },                   /* utf32 */
    { lat16_utf32, NULL, 0, UTF_BE },                        /* utf32be */
    { lat16_utf32, NULL, 0, UTF_LE },                        /* utf32le */
    { lat16_jis, jis_reset, 0, JIS_ASCII },                  /* iso2022jp */
    { lat16_lat1, NULL, 0, 0 },                              /* iso8859-1 */
    { lat16_lat2, NULL, 0, 0 },                              /* iso8859-2 */
    { lat16_lat3, NULL, 0, 0 },                              /* iso8859-3 */
    { lat16_lat4, NULL, 0, 0 },                              /* iso8859-4 */
    { lat16_lat5, NULL, 0, 0 },                              /* iso8859-5 */
    { lat16_lat6, NULL, 0, 0 },                              /* iso8859-6 */
    { lat16_lat7, NULL, 0, 0 },                              /* iso8859-7 */
    { lat16_lat8, NULL, 0, 0 },                              /* iso8859-8 */
    { lat16_lat9, NULL, 0, 0 },                              /* iso8859-9 */
    { lat16_lat10, NULL, 0, 0 },                             /* iso8859-10 */
    { lat16_lat11, NULL, 0, 0 },                             /* iso8859-11 */
    { lat16_lat13, NULL, 0, 0 },                             /* iso8859-13 */
    { lat16_lat14, NULL, 0, 0 },                             /* iso8859-14 */
    { lat16_lat15, NULL, 0, 0 },                             /* iso8859-15 */
    { ident, NULL, 0, 0 },                                   /* iso8859-16 */
    { ident, NULL, 0, 0 },                                   /* none */
  },
  /* none => */
  {
    { ident, NULL, 0, 0 },                                   /* ascii */
    { ident, NULL, 0, 0 },                                   /* eucj */
    { ident, NULL, 0, 0 },                                   /* sjis */
    { ident, NULL, 0, 0 },                                   /* utf8 */
    { ident, NULL, 0, 0 },                                   /* utf16 */
    { ident, NULL, 0, 0 },                                   /* utf16be */
    { ident, NULL, 0, 0 },                                   /* utf16le */
    { ident, NULL, 0, 0 },                                   /* utf32 */
    { ident, NULL, 0, 0 },                                   /* utf32be */
    { ident, NULL, 0, 0 },                                   /* utf32le */
    { ident, NULL, 0, 0 },                                   /* iso2022jp */
    { ident, NULL, 0, 0 },                                   /* iso8859-1 */
    { ident, NULL, 0, 0 },                                   /* iso8859-2 */
    { ident, NULL, 0, 0 },                                   /* iso8859-3 */
    { ident, NULL, 0, 0 },                                   /* iso8859-4 */
    { ident, NULL, 0, 0 },                                   /* iso8859-5 */
    { ident, NULL, 0, 0 },                                   /* iso8859-6 */
    { ident, NULL, 0, 0 },                                   /* iso8859-7 */
    { ident, NULL, 0, 0 },                                   /* iso8859-8 */
    { ident, NULL, 0, 0 },                                   /* iso8859-9 */
    { ident, NULL, 0, 0 },                                   /* iso8859-10 */
    { ident, NULL, 0, 0 },                                   /* iso8859-11 */
    { ident, NULL, 0, 0 },                                   /* iso8859-13 */
    { ident, NULL, 0, 0 },                                   /* iso8859-14 */
    { ident, NULL, 0, 0 },                                   /* iso8859-15 */
    { ident, NULL, 0, 0 },                                   /* iso8859-16 */
    { ident, NULL, 0, 0 },                                   /* none */
  },
};

/* ascii_lat2 : ascii_x + utf8_lat2 */
static ScmSize ascii_lat2(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = ascii_x(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat2(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* ascii_lat3 : ascii_x + utf8_lat3 */
static ScmSize ascii_lat3(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = ascii_x(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat3(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* ascii_lat4 : ascii_x + utf8_lat4 */
static ScmSize ascii_lat4(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = ascii_x(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat4(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* ascii_lat5 : ascii_x + utf8_lat5 */
static ScmSize ascii_lat5(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = ascii_x(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat5(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* ascii_lat6 : ascii_x + utf8_lat6 */
static ScmSize ascii_lat6(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = ascii_x(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat6(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* ascii_lat7 : ascii_x + utf8_lat7 */
static ScmSize ascii_lat7(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = ascii_x(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat7(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* ascii_lat8 : ascii_x + utf8_lat8 */
static ScmSize ascii_lat8(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = ascii_x(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat8(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* ascii_lat9 : ascii_x + utf8_lat9 */
static ScmSize ascii_lat9(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = ascii_x(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat9(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* ascii_lat10 : ascii_x + utf8_lat10 */
static ScmSize ascii_lat10(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = ascii_x(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat10(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* ascii_lat11 : ascii_x + utf8_lat11 */
static ScmSize ascii_lat11(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = ascii_x(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat11(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* ascii_lat13 : ascii_x + utf8_lat13 */
static ScmSize ascii_lat13(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = ascii_x(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat13(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* ascii_lat14 : ascii_x + utf8_lat14 */
static ScmSize ascii_lat14(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = ascii_x(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat14(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* ascii_lat15 : ascii_x + utf8_lat15 */
static ScmSize ascii_lat15(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = ascii_x(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat15(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* ascii_lat16 : ascii_x + utf8_lat16 */
static ScmSize ascii_lat16(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = ascii_x(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat16(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* eucj_utf16 : eucj_utf8 + utf8_utf16 */
static ScmSize eucj_utf16(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = eucj_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_utf16(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* eucj_utf32 : eucj_utf8 + utf8_utf32 */
static ScmSize eucj_utf32(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = eucj_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_utf32(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* eucj_lat2 : eucj_utf8 + utf8_lat2 */
static ScmSize eucj_lat2(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = eucj_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat2(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* eucj_lat3 : eucj_utf8 + utf8_lat3 */
static ScmSize eucj_lat3(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = eucj_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat3(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* eucj_lat4 : eucj_utf8 + utf8_lat4 */
static ScmSize eucj_lat4(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = eucj_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat4(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* eucj_lat5 : eucj_utf8 + utf8_lat5 */
static ScmSize eucj_lat5(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = eucj_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat5(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* eucj_lat6 : eucj_utf8 + utf8_lat6 */
static ScmSize eucj_lat6(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = eucj_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat6(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* eucj_lat7 : eucj_utf8 + utf8_lat7 */
static ScmSize eucj_lat7(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = eucj_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat7(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* eucj_lat8 : eucj_utf8 + utf8_lat8 */
static ScmSize eucj_lat8(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = eucj_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat8(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* eucj_lat9 : eucj_utf8 + utf8_lat9 */
static ScmSize eucj_lat9(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = eucj_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat9(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* eucj_lat10 : eucj_utf8 + utf8_lat10 */
static ScmSize eucj_lat10(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = eucj_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat10(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* eucj_lat11 : eucj_utf8 + utf8_lat11 */
static ScmSize eucj_lat11(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = eucj_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat11(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* eucj_lat13 : eucj_utf8 + utf8_lat13 */
static ScmSize eucj_lat13(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = eucj_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat13(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* eucj_lat14 : eucj_utf8 + utf8_lat14 */
static ScmSize eucj_lat14(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = eucj_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat14(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* eucj_lat15 : eucj_utf8 + utf8_lat15 */
static ScmSize eucj_lat15(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = eucj_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat15(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* eucj_lat16 : eucj_utf8 + utf8_lat16 */
static ScmSize eucj_lat16(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = eucj_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat16(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* sjis_utf8 : sjis_eucj + eucj_utf8 */
static ScmSize sjis_utf8(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = sjis_eucj(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = eucj_utf8(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* sjis_utf16 : sjis_eucj + eucj_utf16 */
static ScmSize sjis_utf16(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = sjis_eucj(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = eucj_utf16(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* sjis_utf32 : sjis_eucj + eucj_utf32 */
static ScmSize sjis_utf32(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = sjis_eucj(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = eucj_utf32(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* sjis_jis : sjis_eucj + eucj_jis */
static ScmSize sjis_jis(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = sjis_eucj(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = eucj_jis(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* sjis_lat1 : sjis_eucj + eucj_lat1 */
static ScmSize sjis_lat1(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = sjis_eucj(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = eucj_lat1(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* sjis_lat2 : sjis_eucj + eucj_lat2 */
static ScmSize sjis_lat2(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = sjis_eucj(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = eucj_lat2(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* sjis_lat3 : sjis_eucj + eucj_lat3 */
static ScmSize sjis_lat3(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = sjis_eucj(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = eucj_lat3(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* sjis_lat4 : sjis_eucj + eucj_lat4 */
static ScmSize sjis_lat4(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = sjis_eucj(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = eucj_lat4(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* sjis_lat5 : sjis_eucj + eucj_lat5 */
static ScmSize sjis_lat5(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = sjis_eucj(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = eucj_lat5(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* sjis_lat6 : sjis_eucj + eucj_lat6 */
static ScmSize sjis_lat6(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = sjis_eucj(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = eucj_lat6(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* sjis_lat7 : sjis_eucj + eucj_lat7 */
static ScmSize sjis_lat7(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = sjis_eucj(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = eucj_lat7(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* sjis_lat8 : sjis_eucj + eucj_lat8 */
static ScmSize sjis_lat8(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = sjis_eucj(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = eucj_lat8(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* sjis_lat9 : sjis_eucj + eucj_lat9 */
static ScmSize sjis_lat9(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = sjis_eucj(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = eucj_lat9(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* sjis_lat10 : sjis_eucj + eucj_lat10 */
static ScmSize sjis_lat10(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = sjis_eucj(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = eucj_lat10(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* sjis_lat11 : sjis_eucj + eucj_lat11 */
static ScmSize sjis_lat11(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = sjis_eucj(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = eucj_lat11(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* sjis_lat13 : sjis_eucj + eucj_lat13 */
static ScmSize sjis_lat13(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = sjis_eucj(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = eucj_lat13(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* sjis_lat14 : sjis_eucj + eucj_lat14 */
static ScmSize sjis_lat14(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = sjis_eucj(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = eucj_lat14(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* sjis_lat15 : sjis_eucj + eucj_lat15 */
static ScmSize sjis_lat15(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = sjis_eucj(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = eucj_lat15(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* sjis_lat16 : sjis_eucj + eucj_lat16 */
static ScmSize sjis_lat16(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = sjis_eucj(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = eucj_lat16(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* utf8_sjis : utf8_eucj + eucj_sjis */
static ScmSize utf8_sjis(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = utf8_eucj(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = eucj_sjis(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* utf8_jis : utf8_eucj + eucj_jis */
static ScmSize utf8_jis(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = utf8_eucj(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = eucj_jis(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* utf16_ascii : utf16_utf8 + utf8_ascii */
static ScmSize utf16_ascii(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = utf16_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_ascii(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* utf16_eucj : utf16_utf8 + utf8_eucj */
static ScmSize utf16_eucj(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = utf16_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_eucj(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* utf16_sjis : utf16_eucj + eucj_sjis */
static ScmSize utf16_sjis(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = utf16_eucj(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = eucj_sjis(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* utf16_utf32 : utf16_utf8 + utf8_utf32 */
static ScmSize utf16_utf32(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = utf16_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_utf32(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* utf16_jis : utf16_eucj + eucj_jis */
static ScmSize utf16_jis(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = utf16_eucj(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = eucj_jis(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* utf16_lat1 : utf16_utf8 + utf8_lat1 */
static ScmSize utf16_lat1(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = utf16_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat1(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* utf16_lat2 : utf16_utf8 + utf8_lat2 */
static ScmSize utf16_lat2(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = utf16_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat2(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* utf16_lat3 : utf16_utf8 + utf8_lat3 */
static ScmSize utf16_lat3(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = utf16_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat3(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* utf16_lat4 : utf16_utf8 + utf8_lat4 */
static ScmSize utf16_lat4(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = utf16_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat4(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* utf16_lat5 : utf16_utf8 + utf8_lat5 */
static ScmSize utf16_lat5(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = utf16_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat5(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* utf16_lat6 : utf16_utf8 + utf8_lat6 */
static ScmSize utf16_lat6(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = utf16_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat6(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* utf16_lat7 : utf16_utf8 + utf8_lat7 */
static ScmSize utf16_lat7(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = utf16_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat7(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* utf16_lat8 : utf16_utf8 + utf8_lat8 */
static ScmSize utf16_lat8(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = utf16_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat8(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* utf16_lat9 : utf16_utf8 + utf8_lat9 */
static ScmSize utf16_lat9(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = utf16_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat9(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* utf16_lat10 : utf16_utf8 + utf8_lat10 */
static ScmSize utf16_lat10(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = utf16_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat10(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* utf16_lat11 : utf16_utf8 + utf8_lat11 */
static ScmSize utf16_lat11(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = utf16_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat11(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* utf16_lat13 : utf16_utf8 + utf8_lat13 */
static ScmSize utf16_lat13(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = utf16_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat13(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* utf16_lat14 : utf16_utf8 + utf8_lat14 */
static ScmSize utf16_lat14(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = utf16_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat14(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* utf16_lat15 : utf16_utf8 + utf8_lat15 */
static ScmSize utf16_lat15(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = utf16_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat15(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* utf16_lat16 : utf16_utf8 + utf8_lat16 */
static ScmSize utf16_lat16(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = utf16_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat16(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* utf32_ascii : utf32_utf8 + utf8_ascii */
static ScmSize utf32_ascii(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = utf32_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_ascii(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* utf32_eucj : utf32_utf8 + utf8_eucj */
static ScmSize utf32_eucj(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = utf32_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_eucj(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* utf32_sjis : utf32_eucj + eucj_sjis */
static ScmSize utf32_sjis(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = utf32_eucj(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = eucj_sjis(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* utf32_utf16 : utf32_utf8 + utf8_utf16 */
static ScmSize utf32_utf16(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = utf32_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_utf16(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* utf32_jis : utf32_eucj + eucj_jis */
static ScmSize utf32_jis(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = utf32_eucj(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = eucj_jis(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* utf32_lat1 : utf32_utf8 + utf8_lat1 */
static ScmSize utf32_lat1(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = utf32_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat1(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* utf32_lat2 : utf32_utf8 + utf8_lat2 */
static ScmSize utf32_lat2(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = utf32_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat2(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* utf32_lat3 : utf32_utf8 + utf8_lat3 */
static ScmSize utf32_lat3(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = utf32_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat3(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* utf32_lat4 : utf32_utf8 + utf8_lat4 */
static ScmSize utf32_lat4(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = utf32_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat4(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* utf32_lat5 : utf32_utf8 + utf8_lat5 */
static ScmSize utf32_lat5(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = utf32_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat5(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* utf32_lat6 : utf32_utf8 + utf8_lat6 */
static ScmSize utf32_lat6(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = utf32_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat6(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* utf32_lat7 : utf32_utf8 + utf8_lat7 */
static ScmSize utf32_lat7(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = utf32_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat7(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* utf32_lat8 : utf32_utf8 + utf8_lat8 */
static ScmSize utf32_lat8(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = utf32_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat8(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* utf32_lat9 : utf32_utf8 + utf8_lat9 */
static ScmSize utf32_lat9(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = utf32_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat9(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* utf32_lat10 : utf32_utf8 + utf8_lat10 */
static ScmSize utf32_lat10(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = utf32_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat10(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* utf32_lat11 : utf32_utf8 + utf8_lat11 */
static ScmSize utf32_lat11(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = utf32_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat11(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* utf32_lat13 : utf32_utf8 + utf8_lat13 */
static ScmSize utf32_lat13(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = utf32_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat13(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* utf32_lat14 : utf32_utf8 + utf8_lat14 */
static ScmSize utf32_lat14(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = utf32_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat14(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* utf32_lat15 : utf32_utf8 + utf8_lat15 */
static ScmSize utf32_lat15(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = utf32_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat15(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* utf32_lat16 : utf32_utf8 + utf8_lat16 */
static ScmSize utf32_lat16(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = utf32_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat16(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* jis_ascii : jis_eucj + eucj_ascii */
static ScmSize jis_ascii(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = jis_eucj(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = eucj_ascii(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* jis_sjis : jis_eucj + eucj_sjis */
static ScmSize jis_sjis(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = jis_eucj(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = eucj_sjis(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* jis_utf8 : jis_eucj + eucj_utf8 */
static ScmSize jis_utf8(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = jis_eucj(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = eucj_utf8(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* jis_utf16 : jis_eucj + eucj_utf16 */
static ScmSize jis_utf16(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = jis_eucj(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = eucj_utf16(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* jis_utf32 : jis_eucj + eucj_utf32 */
static ScmSize jis_utf32(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = jis_eucj(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = eucj_utf32(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* jis_lat1 : jis_eucj + eucj_lat1 */
static ScmSize jis_lat1(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = jis_eucj(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = eucj_lat1(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* jis_lat2 : jis_eucj + eucj_lat2 */
static ScmSize jis_lat2(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = jis_eucj(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = eucj_lat2(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* jis_lat3 : jis_eucj + eucj_lat3 */
static ScmSize jis_lat3(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = jis_eucj(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = eucj_lat3(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* jis_lat4 : jis_eucj + eucj_lat4 */
static ScmSize jis_lat4(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = jis_eucj(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = eucj_lat4(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* jis_lat5 : jis_eucj + eucj_lat5 */
static ScmSize jis_lat5(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = jis_eucj(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = eucj_lat5(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* jis_lat6 : jis_eucj + eucj_lat6 */
static ScmSize jis_lat6(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = jis_eucj(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = eucj_lat6(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* jis_lat7 : jis_eucj + eucj_lat7 */
static ScmSize jis_lat7(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = jis_eucj(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = eucj_lat7(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* jis_lat8 : jis_eucj + eucj_lat8 */
static ScmSize jis_lat8(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = jis_eucj(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = eucj_lat8(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* jis_lat9 : jis_eucj + eucj_lat9 */
static ScmSize jis_lat9(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = jis_eucj(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = eucj_lat9(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* jis_lat10 : jis_eucj + eucj_lat10 */
static ScmSize jis_lat10(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = jis_eucj(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = eucj_lat10(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* jis_lat11 : jis_eucj + eucj_lat11 */
static ScmSize jis_lat11(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = jis_eucj(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = eucj_lat11(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* jis_lat13 : jis_eucj + eucj_lat13 */
static ScmSize jis_lat13(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = jis_eucj(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = eucj_lat13(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* jis_lat14 : jis_eucj + eucj_lat14 */
static ScmSize jis_lat14(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = jis_eucj(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = eucj_lat14(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* jis_lat15 : jis_eucj + eucj_lat15 */
static ScmSize jis_lat15(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = jis_eucj(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = eucj_lat15(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* jis_lat16 : jis_eucj + eucj_lat16 */
static ScmSize jis_lat16(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = jis_eucj(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = eucj_lat16(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat1_eucj : lat1_utf8 + utf8_eucj */
static ScmSize lat1_eucj(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat1_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_eucj(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat1_sjis : lat1_eucj + eucj_sjis */
static ScmSize lat1_sjis(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat1_eucj(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = eucj_sjis(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat1_utf16 : lat1_utf8 + utf8_utf16 */
static ScmSize lat1_utf16(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat1_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_utf16(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat1_utf32 : lat1_utf8 + utf8_utf32 */
static ScmSize lat1_utf32(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat1_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_utf32(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat1_jis : lat1_eucj + eucj_jis */
static ScmSize lat1_jis(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat1_eucj(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = eucj_jis(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat1_lat2 : lat1_utf8 + utf8_lat2 */
static ScmSize lat1_lat2(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat1_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat2(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat1_lat3 : lat1_utf8 + utf8_lat3 */
static ScmSize lat1_lat3(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat1_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat3(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat1_lat4 : lat1_utf8 + utf8_lat4 */
static ScmSize lat1_lat4(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat1_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat4(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat1_lat5 : lat1_utf8 + utf8_lat5 */
static ScmSize lat1_lat5(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat1_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat5(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat1_lat6 : lat1_utf8 + utf8_lat6 */
static ScmSize lat1_lat6(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat1_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat6(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat1_lat7 : lat1_utf8 + utf8_lat7 */
static ScmSize lat1_lat7(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat1_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat7(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat1_lat8 : lat1_utf8 + utf8_lat8 */
static ScmSize lat1_lat8(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat1_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat8(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat1_lat9 : lat1_utf8 + utf8_lat9 */
static ScmSize lat1_lat9(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat1_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat9(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat1_lat10 : lat1_utf8 + utf8_lat10 */
static ScmSize lat1_lat10(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat1_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat10(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat1_lat11 : lat1_utf8 + utf8_lat11 */
static ScmSize lat1_lat11(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat1_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat11(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat1_lat13 : lat1_utf8 + utf8_lat13 */
static ScmSize lat1_lat13(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat1_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat13(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat1_lat14 : lat1_utf8 + utf8_lat14 */
static ScmSize lat1_lat14(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat1_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat14(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat1_lat15 : lat1_utf8 + utf8_lat15 */
static ScmSize lat1_lat15(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat1_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat15(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat1_lat16 : lat1_utf8 + utf8_lat16 */
static ScmSize lat1_lat16(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat1_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat16(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat2_ascii : lat2_utf8 + utf8_ascii */
static ScmSize lat2_ascii(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat2_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_ascii(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat2_eucj : lat2_utf8 + utf8_eucj */
static ScmSize lat2_eucj(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat2_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_eucj(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat2_sjis : lat2_eucj + eucj_sjis */
static ScmSize lat2_sjis(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat2_eucj(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = eucj_sjis(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat2_utf16 : lat2_utf8 + utf8_utf16 */
static ScmSize lat2_utf16(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat2_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_utf16(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat2_utf32 : lat2_utf8 + utf8_utf32 */
static ScmSize lat2_utf32(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat2_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_utf32(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat2_jis : lat2_eucj + eucj_jis */
static ScmSize lat2_jis(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat2_eucj(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = eucj_jis(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat2_lat1 : lat2_utf8 + utf8_lat1 */
static ScmSize lat2_lat1(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat2_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat1(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat2_lat3 : lat2_utf8 + utf8_lat3 */
static ScmSize lat2_lat3(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat2_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat3(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat2_lat4 : lat2_utf8 + utf8_lat4 */
static ScmSize lat2_lat4(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat2_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat4(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat2_lat5 : lat2_utf8 + utf8_lat5 */
static ScmSize lat2_lat5(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat2_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat5(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat2_lat6 : lat2_utf8 + utf8_lat6 */
static ScmSize lat2_lat6(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat2_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat6(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat2_lat7 : lat2_utf8 + utf8_lat7 */
static ScmSize lat2_lat7(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat2_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat7(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat2_lat8 : lat2_utf8 + utf8_lat8 */
static ScmSize lat2_lat8(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat2_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat8(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat2_lat9 : lat2_utf8 + utf8_lat9 */
static ScmSize lat2_lat9(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat2_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat9(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat2_lat10 : lat2_utf8 + utf8_lat10 */
static ScmSize lat2_lat10(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat2_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat10(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat2_lat11 : lat2_utf8 + utf8_lat11 */
static ScmSize lat2_lat11(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat2_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat11(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat2_lat13 : lat2_utf8 + utf8_lat13 */
static ScmSize lat2_lat13(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat2_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat13(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat2_lat14 : lat2_utf8 + utf8_lat14 */
static ScmSize lat2_lat14(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat2_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat14(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat2_lat15 : lat2_utf8 + utf8_lat15 */
static ScmSize lat2_lat15(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat2_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat15(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat2_lat16 : lat2_utf8 + utf8_lat16 */
static ScmSize lat2_lat16(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat2_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat16(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat3_ascii : lat3_utf8 + utf8_ascii */
static ScmSize lat3_ascii(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat3_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_ascii(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat3_eucj : lat3_utf8 + utf8_eucj */
static ScmSize lat3_eucj(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat3_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_eucj(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat3_sjis : lat3_eucj + eucj_sjis */
static ScmSize lat3_sjis(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat3_eucj(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = eucj_sjis(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat3_utf16 : lat3_utf8 + utf8_utf16 */
static ScmSize lat3_utf16(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat3_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_utf16(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat3_utf32 : lat3_utf8 + utf8_utf32 */
static ScmSize lat3_utf32(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat3_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_utf32(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat3_jis : lat3_eucj + eucj_jis */
static ScmSize lat3_jis(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat3_eucj(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = eucj_jis(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat3_lat1 : lat3_utf8 + utf8_lat1 */
static ScmSize lat3_lat1(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat3_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat1(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat3_lat2 : lat3_utf8 + utf8_lat2 */
static ScmSize lat3_lat2(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat3_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat2(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat3_lat4 : lat3_utf8 + utf8_lat4 */
static ScmSize lat3_lat4(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat3_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat4(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat3_lat5 : lat3_utf8 + utf8_lat5 */
static ScmSize lat3_lat5(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat3_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat5(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat3_lat6 : lat3_utf8 + utf8_lat6 */
static ScmSize lat3_lat6(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat3_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat6(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat3_lat7 : lat3_utf8 + utf8_lat7 */
static ScmSize lat3_lat7(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat3_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat7(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat3_lat8 : lat3_utf8 + utf8_lat8 */
static ScmSize lat3_lat8(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat3_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat8(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat3_lat9 : lat3_utf8 + utf8_lat9 */
static ScmSize lat3_lat9(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat3_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat9(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat3_lat10 : lat3_utf8 + utf8_lat10 */
static ScmSize lat3_lat10(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat3_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat10(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat3_lat11 : lat3_utf8 + utf8_lat11 */
static ScmSize lat3_lat11(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat3_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat11(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat3_lat13 : lat3_utf8 + utf8_lat13 */
static ScmSize lat3_lat13(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat3_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat13(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat3_lat14 : lat3_utf8 + utf8_lat14 */
static ScmSize lat3_lat14(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat3_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat14(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat3_lat15 : lat3_utf8 + utf8_lat15 */
static ScmSize lat3_lat15(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat3_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat15(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat3_lat16 : lat3_utf8 + utf8_lat16 */
static ScmSize lat3_lat16(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat3_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat16(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat4_ascii : lat4_utf8 + utf8_ascii */
static ScmSize lat4_ascii(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat4_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_ascii(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat4_eucj : lat4_utf8 + utf8_eucj */
static ScmSize lat4_eucj(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat4_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_eucj(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat4_sjis : lat4_eucj + eucj_sjis */
static ScmSize lat4_sjis(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat4_eucj(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = eucj_sjis(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat4_utf16 : lat4_utf8 + utf8_utf16 */
static ScmSize lat4_utf16(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat4_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_utf16(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat4_utf32 : lat4_utf8 + utf8_utf32 */
static ScmSize lat4_utf32(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat4_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_utf32(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat4_jis : lat4_eucj + eucj_jis */
static ScmSize lat4_jis(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat4_eucj(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = eucj_jis(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat4_lat1 : lat4_utf8 + utf8_lat1 */
static ScmSize lat4_lat1(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat4_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat1(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat4_lat2 : lat4_utf8 + utf8_lat2 */
static ScmSize lat4_lat2(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat4_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat2(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat4_lat3 : lat4_utf8 + utf8_lat3 */
static ScmSize lat4_lat3(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat4_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat3(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat4_lat5 : lat4_utf8 + utf8_lat5 */
static ScmSize lat4_lat5(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat4_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat5(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat4_lat6 : lat4_utf8 + utf8_lat6 */
static ScmSize lat4_lat6(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat4_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat6(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat4_lat7 : lat4_utf8 + utf8_lat7 */
static ScmSize lat4_lat7(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat4_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat7(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat4_lat8 : lat4_utf8 + utf8_lat8 */
static ScmSize lat4_lat8(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat4_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat8(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat4_lat9 : lat4_utf8 + utf8_lat9 */
static ScmSize lat4_lat9(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat4_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat9(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat4_lat10 : lat4_utf8 + utf8_lat10 */
static ScmSize lat4_lat10(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat4_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat10(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat4_lat11 : lat4_utf8 + utf8_lat11 */
static ScmSize lat4_lat11(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat4_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat11(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat4_lat13 : lat4_utf8 + utf8_lat13 */
static ScmSize lat4_lat13(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat4_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat13(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat4_lat14 : lat4_utf8 + utf8_lat14 */
static ScmSize lat4_lat14(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat4_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat14(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat4_lat15 : lat4_utf8 + utf8_lat15 */
static ScmSize lat4_lat15(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat4_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat15(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat4_lat16 : lat4_utf8 + utf8_lat16 */
static ScmSize lat4_lat16(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat4_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat16(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat5_ascii : lat5_utf8 + utf8_ascii */
static ScmSize lat5_ascii(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat5_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_ascii(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat5_eucj : lat5_utf8 + utf8_eucj */
static ScmSize lat5_eucj(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat5_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_eucj(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat5_sjis : lat5_eucj + eucj_sjis */
static ScmSize lat5_sjis(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat5_eucj(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = eucj_sjis(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat5_utf16 : lat5_utf8 + utf8_utf16 */
static ScmSize lat5_utf16(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat5_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_utf16(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat5_utf32 : lat5_utf8 + utf8_utf32 */
static ScmSize lat5_utf32(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat5_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_utf32(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat5_jis : lat5_eucj + eucj_jis */
static ScmSize lat5_jis(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat5_eucj(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = eucj_jis(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat5_lat1 : lat5_utf8 + utf8_lat1 */
static ScmSize lat5_lat1(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat5_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat1(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat5_lat2 : lat5_utf8 + utf8_lat2 */
static ScmSize lat5_lat2(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat5_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat2(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat5_lat3 : lat5_utf8 + utf8_lat3 */
static ScmSize lat5_lat3(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat5_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat3(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat5_lat4 : lat5_utf8 + utf8_lat4 */
static ScmSize lat5_lat4(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat5_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat4(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat5_lat6 : lat5_utf8 + utf8_lat6 */
static ScmSize lat5_lat6(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat5_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat6(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat5_lat7 : lat5_utf8 + utf8_lat7 */
static ScmSize lat5_lat7(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat5_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat7(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat5_lat8 : lat5_utf8 + utf8_lat8 */
static ScmSize lat5_lat8(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat5_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat8(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat5_lat9 : lat5_utf8 + utf8_lat9 */
static ScmSize lat5_lat9(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat5_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat9(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat5_lat10 : lat5_utf8 + utf8_lat10 */
static ScmSize lat5_lat10(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat5_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat10(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat5_lat11 : lat5_utf8 + utf8_lat11 */
static ScmSize lat5_lat11(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat5_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat11(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat5_lat13 : lat5_utf8 + utf8_lat13 */
static ScmSize lat5_lat13(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat5_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat13(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat5_lat14 : lat5_utf8 + utf8_lat14 */
static ScmSize lat5_lat14(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat5_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat14(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat5_lat15 : lat5_utf8 + utf8_lat15 */
static ScmSize lat5_lat15(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat5_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat15(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat5_lat16 : lat5_utf8 + utf8_lat16 */
static ScmSize lat5_lat16(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat5_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat16(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat6_ascii : lat6_utf8 + utf8_ascii */
static ScmSize lat6_ascii(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat6_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_ascii(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat6_eucj : lat6_utf8 + utf8_eucj */
static ScmSize lat6_eucj(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat6_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_eucj(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat6_sjis : lat6_eucj + eucj_sjis */
static ScmSize lat6_sjis(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat6_eucj(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = eucj_sjis(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat6_utf16 : lat6_utf8 + utf8_utf16 */
static ScmSize lat6_utf16(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat6_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_utf16(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat6_utf32 : lat6_utf8 + utf8_utf32 */
static ScmSize lat6_utf32(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat6_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_utf32(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat6_jis : lat6_eucj + eucj_jis */
static ScmSize lat6_jis(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat6_eucj(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = eucj_jis(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat6_lat1 : lat6_utf8 + utf8_lat1 */
static ScmSize lat6_lat1(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat6_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat1(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat6_lat2 : lat6_utf8 + utf8_lat2 */
static ScmSize lat6_lat2(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat6_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat2(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat6_lat3 : lat6_utf8 + utf8_lat3 */
static ScmSize lat6_lat3(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat6_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat3(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat6_lat4 : lat6_utf8 + utf8_lat4 */
static ScmSize lat6_lat4(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat6_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat4(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat6_lat5 : lat6_utf8 + utf8_lat5 */
static ScmSize lat6_lat5(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat6_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat5(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat6_lat7 : lat6_utf8 + utf8_lat7 */
static ScmSize lat6_lat7(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat6_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat7(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat6_lat8 : lat6_utf8 + utf8_lat8 */
static ScmSize lat6_lat8(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat6_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat8(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat6_lat9 : lat6_utf8 + utf8_lat9 */
static ScmSize lat6_lat9(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat6_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat9(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat6_lat10 : lat6_utf8 + utf8_lat10 */
static ScmSize lat6_lat10(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat6_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat10(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat6_lat11 : lat6_utf8 + utf8_lat11 */
static ScmSize lat6_lat11(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat6_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat11(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat6_lat13 : lat6_utf8 + utf8_lat13 */
static ScmSize lat6_lat13(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat6_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat13(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat6_lat14 : lat6_utf8 + utf8_lat14 */
static ScmSize lat6_lat14(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat6_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat14(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat6_lat15 : lat6_utf8 + utf8_lat15 */
static ScmSize lat6_lat15(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat6_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat15(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat6_lat16 : lat6_utf8 + utf8_lat16 */
static ScmSize lat6_lat16(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat6_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat16(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat7_ascii : lat7_utf8 + utf8_ascii */
static ScmSize lat7_ascii(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat7_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_ascii(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat7_eucj : lat7_utf8 + utf8_eucj */
static ScmSize lat7_eucj(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat7_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_eucj(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat7_sjis : lat7_eucj + eucj_sjis */
static ScmSize lat7_sjis(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat7_eucj(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = eucj_sjis(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat7_utf16 : lat7_utf8 + utf8_utf16 */
static ScmSize lat7_utf16(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat7_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_utf16(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat7_utf32 : lat7_utf8 + utf8_utf32 */
static ScmSize lat7_utf32(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat7_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_utf32(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat7_jis : lat7_eucj + eucj_jis */
static ScmSize lat7_jis(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat7_eucj(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = eucj_jis(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat7_lat1 : lat7_utf8 + utf8_lat1 */
static ScmSize lat7_lat1(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat7_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat1(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat7_lat2 : lat7_utf8 + utf8_lat2 */
static ScmSize lat7_lat2(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat7_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat2(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat7_lat3 : lat7_utf8 + utf8_lat3 */
static ScmSize lat7_lat3(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat7_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat3(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat7_lat4 : lat7_utf8 + utf8_lat4 */
static ScmSize lat7_lat4(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat7_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat4(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat7_lat5 : lat7_utf8 + utf8_lat5 */
static ScmSize lat7_lat5(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat7_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat5(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat7_lat6 : lat7_utf8 + utf8_lat6 */
static ScmSize lat7_lat6(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat7_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat6(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat7_lat8 : lat7_utf8 + utf8_lat8 */
static ScmSize lat7_lat8(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat7_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat8(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat7_lat9 : lat7_utf8 + utf8_lat9 */
static ScmSize lat7_lat9(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat7_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat9(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat7_lat10 : lat7_utf8 + utf8_lat10 */
static ScmSize lat7_lat10(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat7_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat10(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat7_lat11 : lat7_utf8 + utf8_lat11 */
static ScmSize lat7_lat11(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat7_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat11(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat7_lat13 : lat7_utf8 + utf8_lat13 */
static ScmSize lat7_lat13(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat7_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat13(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat7_lat14 : lat7_utf8 + utf8_lat14 */
static ScmSize lat7_lat14(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat7_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat14(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat7_lat15 : lat7_utf8 + utf8_lat15 */
static ScmSize lat7_lat15(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat7_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat15(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat7_lat16 : lat7_utf8 + utf8_lat16 */
static ScmSize lat7_lat16(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat7_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat16(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat8_ascii : lat8_utf8 + utf8_ascii */
static ScmSize lat8_ascii(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat8_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_ascii(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat8_eucj : lat8_utf8 + utf8_eucj */
static ScmSize lat8_eucj(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat8_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_eucj(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat8_sjis : lat8_eucj + eucj_sjis */
static ScmSize lat8_sjis(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat8_eucj(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = eucj_sjis(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat8_utf16 : lat8_utf8 + utf8_utf16 */
static ScmSize lat8_utf16(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat8_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_utf16(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat8_utf32 : lat8_utf8 + utf8_utf32 */
static ScmSize lat8_utf32(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat8_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_utf32(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat8_jis : lat8_eucj + eucj_jis */
static ScmSize lat8_jis(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat8_eucj(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = eucj_jis(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat8_lat1 : lat8_utf8 + utf8_lat1 */
static ScmSize lat8_lat1(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat8_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat1(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat8_lat2 : lat8_utf8 + utf8_lat2 */
static ScmSize lat8_lat2(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat8_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat2(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat8_lat3 : lat8_utf8 + utf8_lat3 */
static ScmSize lat8_lat3(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat8_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat3(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat8_lat4 : lat8_utf8 + utf8_lat4 */
static ScmSize lat8_lat4(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat8_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat4(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat8_lat5 : lat8_utf8 + utf8_lat5 */
static ScmSize lat8_lat5(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat8_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat5(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat8_lat6 : lat8_utf8 + utf8_lat6 */
static ScmSize lat8_lat6(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat8_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat6(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat8_lat7 : lat8_utf8 + utf8_lat7 */
static ScmSize lat8_lat7(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat8_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat7(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat8_lat9 : lat8_utf8 + utf8_lat9 */
static ScmSize lat8_lat9(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat8_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat9(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat8_lat10 : lat8_utf8 + utf8_lat10 */
static ScmSize lat8_lat10(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat8_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat10(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat8_lat11 : lat8_utf8 + utf8_lat11 */
static ScmSize lat8_lat11(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat8_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat11(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat8_lat13 : lat8_utf8 + utf8_lat13 */
static ScmSize lat8_lat13(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat8_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat13(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat8_lat14 : lat8_utf8 + utf8_lat14 */
static ScmSize lat8_lat14(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat8_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat14(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat8_lat15 : lat8_utf8 + utf8_lat15 */
static ScmSize lat8_lat15(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat8_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat15(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat8_lat16 : lat8_utf8 + utf8_lat16 */
static ScmSize lat8_lat16(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat8_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat16(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat9_ascii : lat9_utf8 + utf8_ascii */
static ScmSize lat9_ascii(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat9_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_ascii(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat9_eucj : lat9_utf8 + utf8_eucj */
static ScmSize lat9_eucj(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat9_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_eucj(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat9_sjis : lat9_eucj + eucj_sjis */
static ScmSize lat9_sjis(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat9_eucj(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = eucj_sjis(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat9_utf16 : lat9_utf8 + utf8_utf16 */
static ScmSize lat9_utf16(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat9_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_utf16(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat9_utf32 : lat9_utf8 + utf8_utf32 */
static ScmSize lat9_utf32(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat9_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_utf32(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat9_jis : lat9_eucj + eucj_jis */
static ScmSize lat9_jis(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat9_eucj(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = eucj_jis(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat9_lat1 : lat9_utf8 + utf8_lat1 */
static ScmSize lat9_lat1(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat9_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat1(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat9_lat2 : lat9_utf8 + utf8_lat2 */
static ScmSize lat9_lat2(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat9_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat2(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat9_lat3 : lat9_utf8 + utf8_lat3 */
static ScmSize lat9_lat3(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat9_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat3(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat9_lat4 : lat9_utf8 + utf8_lat4 */
static ScmSize lat9_lat4(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat9_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat4(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat9_lat5 : lat9_utf8 + utf8_lat5 */
static ScmSize lat9_lat5(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat9_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat5(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat9_lat6 : lat9_utf8 + utf8_lat6 */
static ScmSize lat9_lat6(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat9_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat6(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat9_lat7 : lat9_utf8 + utf8_lat7 */
static ScmSize lat9_lat7(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat9_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat7(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat9_lat8 : lat9_utf8 + utf8_lat8 */
static ScmSize lat9_lat8(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat9_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat8(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat9_lat10 : lat9_utf8 + utf8_lat10 */
static ScmSize lat9_lat10(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat9_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat10(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat9_lat11 : lat9_utf8 + utf8_lat11 */
static ScmSize lat9_lat11(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat9_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat11(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat9_lat13 : lat9_utf8 + utf8_lat13 */
static ScmSize lat9_lat13(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat9_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat13(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat9_lat14 : lat9_utf8 + utf8_lat14 */
static ScmSize lat9_lat14(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat9_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat14(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat9_lat15 : lat9_utf8 + utf8_lat15 */
static ScmSize lat9_lat15(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat9_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat15(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat9_lat16 : lat9_utf8 + utf8_lat16 */
static ScmSize lat9_lat16(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat9_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat16(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat10_ascii : lat10_utf8 + utf8_ascii */
static ScmSize lat10_ascii(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat10_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_ascii(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat10_eucj : lat10_utf8 + utf8_eucj */
static ScmSize lat10_eucj(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat10_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_eucj(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat10_sjis : lat10_eucj + eucj_sjis */
static ScmSize lat10_sjis(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat10_eucj(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = eucj_sjis(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat10_utf16 : lat10_utf8 + utf8_utf16 */
static ScmSize lat10_utf16(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat10_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_utf16(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat10_utf32 : lat10_utf8 + utf8_utf32 */
static ScmSize lat10_utf32(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat10_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_utf32(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat10_jis : lat10_eucj + eucj_jis */
static ScmSize lat10_jis(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat10_eucj(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = eucj_jis(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat10_lat1 : lat10_utf8 + utf8_lat1 */
static ScmSize lat10_lat1(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat10_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat1(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat10_lat2 : lat10_utf8 + utf8_lat2 */
static ScmSize lat10_lat2(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat10_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat2(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat10_lat3 : lat10_utf8 + utf8_lat3 */
static ScmSize lat10_lat3(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat10_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat3(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat10_lat4 : lat10_utf8 + utf8_lat4 */
static ScmSize lat10_lat4(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat10_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat4(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat10_lat5 : lat10_utf8 + utf8_lat5 */
static ScmSize lat10_lat5(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat10_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat5(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat10_lat6 : lat10_utf8 + utf8_lat6 */
static ScmSize lat10_lat6(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat10_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat6(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat10_lat7 : lat10_utf8 + utf8_lat7 */
static ScmSize lat10_lat7(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat10_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat7(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat10_lat8 : lat10_utf8 + utf8_lat8 */
static ScmSize lat10_lat8(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat10_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat8(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat10_lat9 : lat10_utf8 + utf8_lat9 */
static ScmSize lat10_lat9(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat10_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat9(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat10_lat11 : lat10_utf8 + utf8_lat11 */
static ScmSize lat10_lat11(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat10_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat11(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat10_lat13 : lat10_utf8 + utf8_lat13 */
static ScmSize lat10_lat13(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat10_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat13(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat10_lat14 : lat10_utf8 + utf8_lat14 */
static ScmSize lat10_lat14(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat10_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat14(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat10_lat15 : lat10_utf8 + utf8_lat15 */
static ScmSize lat10_lat15(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat10_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat15(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat10_lat16 : lat10_utf8 + utf8_lat16 */
static ScmSize lat10_lat16(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat10_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat16(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat11_ascii : lat11_utf8 + utf8_ascii */
static ScmSize lat11_ascii(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat11_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_ascii(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat11_eucj : lat11_utf8 + utf8_eucj */
static ScmSize lat11_eucj(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat11_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_eucj(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat11_sjis : lat11_eucj + eucj_sjis */
static ScmSize lat11_sjis(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat11_eucj(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = eucj_sjis(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat11_utf16 : lat11_utf8 + utf8_utf16 */
static ScmSize lat11_utf16(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat11_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_utf16(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat11_utf32 : lat11_utf8 + utf8_utf32 */
static ScmSize lat11_utf32(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat11_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_utf32(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat11_jis : lat11_eucj + eucj_jis */
static ScmSize lat11_jis(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat11_eucj(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = eucj_jis(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat11_lat1 : lat11_utf8 + utf8_lat1 */
static ScmSize lat11_lat1(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat11_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat1(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat11_lat2 : lat11_utf8 + utf8_lat2 */
static ScmSize lat11_lat2(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat11_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat2(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat11_lat3 : lat11_utf8 + utf8_lat3 */
static ScmSize lat11_lat3(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat11_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat3(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat11_lat4 : lat11_utf8 + utf8_lat4 */
static ScmSize lat11_lat4(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat11_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat4(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat11_lat5 : lat11_utf8 + utf8_lat5 */
static ScmSize lat11_lat5(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat11_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat5(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat11_lat6 : lat11_utf8 + utf8_lat6 */
static ScmSize lat11_lat6(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat11_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat6(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat11_lat7 : lat11_utf8 + utf8_lat7 */
static ScmSize lat11_lat7(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat11_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat7(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat11_lat8 : lat11_utf8 + utf8_lat8 */
static ScmSize lat11_lat8(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat11_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat8(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat11_lat9 : lat11_utf8 + utf8_lat9 */
static ScmSize lat11_lat9(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat11_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat9(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat11_lat10 : lat11_utf8 + utf8_lat10 */
static ScmSize lat11_lat10(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat11_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat10(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat11_lat13 : lat11_utf8 + utf8_lat13 */
static ScmSize lat11_lat13(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat11_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat13(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat11_lat14 : lat11_utf8 + utf8_lat14 */
static ScmSize lat11_lat14(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat11_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat14(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat11_lat15 : lat11_utf8 + utf8_lat15 */
static ScmSize lat11_lat15(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat11_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat15(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat11_lat16 : lat11_utf8 + utf8_lat16 */
static ScmSize lat11_lat16(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat11_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat16(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat13_ascii : lat13_utf8 + utf8_ascii */
static ScmSize lat13_ascii(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat13_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_ascii(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat13_eucj : lat13_utf8 + utf8_eucj */
static ScmSize lat13_eucj(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat13_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_eucj(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat13_sjis : lat13_eucj + eucj_sjis */
static ScmSize lat13_sjis(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat13_eucj(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = eucj_sjis(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat13_utf16 : lat13_utf8 + utf8_utf16 */
static ScmSize lat13_utf16(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat13_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_utf16(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat13_utf32 : lat13_utf8 + utf8_utf32 */
static ScmSize lat13_utf32(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat13_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_utf32(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat13_jis : lat13_eucj + eucj_jis */
static ScmSize lat13_jis(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat13_eucj(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = eucj_jis(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat13_lat1 : lat13_utf8 + utf8_lat1 */
static ScmSize lat13_lat1(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat13_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat1(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat13_lat2 : lat13_utf8 + utf8_lat2 */
static ScmSize lat13_lat2(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat13_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat2(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat13_lat3 : lat13_utf8 + utf8_lat3 */
static ScmSize lat13_lat3(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat13_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat3(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat13_lat4 : lat13_utf8 + utf8_lat4 */
static ScmSize lat13_lat4(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat13_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat4(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat13_lat5 : lat13_utf8 + utf8_lat5 */
static ScmSize lat13_lat5(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat13_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat5(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat13_lat6 : lat13_utf8 + utf8_lat6 */
static ScmSize lat13_lat6(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat13_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat6(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat13_lat7 : lat13_utf8 + utf8_lat7 */
static ScmSize lat13_lat7(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat13_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat7(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat13_lat8 : lat13_utf8 + utf8_lat8 */
static ScmSize lat13_lat8(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat13_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat8(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat13_lat9 : lat13_utf8 + utf8_lat9 */
static ScmSize lat13_lat9(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat13_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat9(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat13_lat10 : lat13_utf8 + utf8_lat10 */
static ScmSize lat13_lat10(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat13_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat10(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat13_lat11 : lat13_utf8 + utf8_lat11 */
static ScmSize lat13_lat11(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat13_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat11(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat13_lat14 : lat13_utf8 + utf8_lat14 */
static ScmSize lat13_lat14(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat13_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat14(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat13_lat15 : lat13_utf8 + utf8_lat15 */
static ScmSize lat13_lat15(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat13_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat15(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat13_lat16 : lat13_utf8 + utf8_lat16 */
static ScmSize lat13_lat16(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat13_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat16(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat14_ascii : lat14_utf8 + utf8_ascii */
static ScmSize lat14_ascii(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat14_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_ascii(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat14_eucj : lat14_utf8 + utf8_eucj */
static ScmSize lat14_eucj(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat14_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_eucj(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat14_sjis : lat14_eucj + eucj_sjis */
static ScmSize lat14_sjis(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat14_eucj(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = eucj_sjis(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat14_utf16 : lat14_utf8 + utf8_utf16 */
static ScmSize lat14_utf16(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat14_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_utf16(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat14_utf32 : lat14_utf8 + utf8_utf32 */
static ScmSize lat14_utf32(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat14_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_utf32(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat14_jis : lat14_eucj + eucj_jis */
static ScmSize lat14_jis(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat14_eucj(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = eucj_jis(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat14_lat1 : lat14_utf8 + utf8_lat1 */
static ScmSize lat14_lat1(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat14_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat1(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat14_lat2 : lat14_utf8 + utf8_lat2 */
static ScmSize lat14_lat2(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat14_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat2(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat14_lat3 : lat14_utf8 + utf8_lat3 */
static ScmSize lat14_lat3(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat14_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat3(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat14_lat4 : lat14_utf8 + utf8_lat4 */
static ScmSize lat14_lat4(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat14_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat4(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat14_lat5 : lat14_utf8 + utf8_lat5 */
static ScmSize lat14_lat5(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat14_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat5(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat14_lat6 : lat14_utf8 + utf8_lat6 */
static ScmSize lat14_lat6(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat14_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat6(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat14_lat7 : lat14_utf8 + utf8_lat7 */
static ScmSize lat14_lat7(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat14_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat7(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat14_lat8 : lat14_utf8 + utf8_lat8 */
static ScmSize lat14_lat8(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat14_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat8(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat14_lat9 : lat14_utf8 + utf8_lat9 */
static ScmSize lat14_lat9(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat14_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat9(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat14_lat10 : lat14_utf8 + utf8_lat10 */
static ScmSize lat14_lat10(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat14_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat10(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat14_lat11 : lat14_utf8 + utf8_lat11 */
static ScmSize lat14_lat11(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat14_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat11(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat14_lat13 : lat14_utf8 + utf8_lat13 */
static ScmSize lat14_lat13(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat14_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat13(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat14_lat15 : lat14_utf8 + utf8_lat15 */
static ScmSize lat14_lat15(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat14_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat15(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat14_lat16 : lat14_utf8 + utf8_lat16 */
static ScmSize lat14_lat16(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat14_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat16(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat15_ascii : lat15_utf8 + utf8_ascii */
static ScmSize lat15_ascii(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat15_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_ascii(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat15_eucj : lat15_utf8 + utf8_eucj */
static ScmSize lat15_eucj(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat15_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_eucj(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat15_sjis : lat15_eucj + eucj_sjis */
static ScmSize lat15_sjis(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat15_eucj(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = eucj_sjis(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat15_utf16 : lat15_utf8 + utf8_utf16 */
static ScmSize lat15_utf16(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat15_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_utf16(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat15_utf32 : lat15_utf8 + utf8_utf32 */
static ScmSize lat15_utf32(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat15_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_utf32(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat15_jis : lat15_eucj + eucj_jis */
static ScmSize lat15_jis(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat15_eucj(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = eucj_jis(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat15_lat1 : lat15_utf8 + utf8_lat1 */
static ScmSize lat15_lat1(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat15_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat1(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat15_lat2 : lat15_utf8 + utf8_lat2 */
static ScmSize lat15_lat2(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat15_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat2(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat15_lat3 : lat15_utf8 + utf8_lat3 */
static ScmSize lat15_lat3(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat15_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat3(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat15_lat4 : lat15_utf8 + utf8_lat4 */
static ScmSize lat15_lat4(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat15_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat4(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat15_lat5 : lat15_utf8 + utf8_lat5 */
static ScmSize lat15_lat5(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat15_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat5(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat15_lat6 : lat15_utf8 + utf8_lat6 */
static ScmSize lat15_lat6(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat15_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat6(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat15_lat7 : lat15_utf8 + utf8_lat7 */
static ScmSize lat15_lat7(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat15_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat7(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat15_lat8 : lat15_utf8 + utf8_lat8 */
static ScmSize lat15_lat8(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat15_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat8(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat15_lat9 : lat15_utf8 + utf8_lat9 */
static ScmSize lat15_lat9(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat15_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat9(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat15_lat10 : lat15_utf8 + utf8_lat10 */
static ScmSize lat15_lat10(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat15_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat10(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat15_lat11 : lat15_utf8 + utf8_lat11 */
static ScmSize lat15_lat11(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat15_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat11(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat15_lat13 : lat15_utf8 + utf8_lat13 */
static ScmSize lat15_lat13(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat15_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat13(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat15_lat14 : lat15_utf8 + utf8_lat14 */
static ScmSize lat15_lat14(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat15_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat14(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat15_lat16 : lat15_utf8 + utf8_lat16 */
static ScmSize lat15_lat16(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat15_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat16(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat16_ascii : lat16_utf8 + utf8_ascii */
static ScmSize lat16_ascii(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat16_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_ascii(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat16_eucj : lat16_utf8 + utf8_eucj */
static ScmSize lat16_eucj(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat16_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_eucj(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat16_sjis : lat16_eucj + eucj_sjis */
static ScmSize lat16_sjis(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat16_eucj(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = eucj_sjis(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat16_utf16 : lat16_utf8 + utf8_utf16 */
static ScmSize lat16_utf16(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat16_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_utf16(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat16_utf32 : lat16_utf8 + utf8_utf32 */
static ScmSize lat16_utf32(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat16_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_utf32(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat16_jis : lat16_eucj + eucj_jis */
static ScmSize lat16_jis(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat16_eucj(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = eucj_jis(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat16_lat1 : lat16_utf8 + utf8_lat1 */
static ScmSize lat16_lat1(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat16_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat1(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat16_lat2 : lat16_utf8 + utf8_lat2 */
static ScmSize lat16_lat2(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat16_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat2(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat16_lat3 : lat16_utf8 + utf8_lat3 */
static ScmSize lat16_lat3(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat16_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat3(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat16_lat4 : lat16_utf8 + utf8_lat4 */
static ScmSize lat16_lat4(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat16_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat4(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat16_lat5 : lat16_utf8 + utf8_lat5 */
static ScmSize lat16_lat5(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat16_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat5(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat16_lat6 : lat16_utf8 + utf8_lat6 */
static ScmSize lat16_lat6(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat16_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat6(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat16_lat7 : lat16_utf8 + utf8_lat7 */
static ScmSize lat16_lat7(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat16_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat7(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat16_lat8 : lat16_utf8 + utf8_lat8 */
static ScmSize lat16_lat8(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat16_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat8(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat16_lat9 : lat16_utf8 + utf8_lat9 */
static ScmSize lat16_lat9(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat16_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat9(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat16_lat10 : lat16_utf8 + utf8_lat10 */
static ScmSize lat16_lat10(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat16_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat10(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat16_lat11 : lat16_utf8 + utf8_lat11 */
static ScmSize lat16_lat11(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat16_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat11(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat16_lat13 : lat16_utf8 + utf8_lat13 */
static ScmSize lat16_lat13(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat16_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat13(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat16_lat14 : lat16_utf8 + utf8_lat14 */
static ScmSize lat16_lat14(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat16_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat14(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}

/* lat16_lat15 : lat16_utf8 + utf8_lat15 */
static ScmSize lat16_lat15(ScmConvInfo *cinfo,
    const char *inptr, ScmSize inroom,
    char *outptr, ScmSize outroom, ScmSize *outchars)
{
    char buf[INTERMEDIATE_BUF_SIZE];
    ScmSize bufcount;
    ScmSize r0 = lat16_utf8(cinfo, inptr, inroom,
       buf, INTERMEDIATE_BUF_SIZE, &bufcount);
    if (r0 < 0) return r0;
    if (bufcount == 0) { *outchars = 0; return r0; }
    ScmSize r1 = utf8_lat15(cinfo, buf, bufcount,
       outptr, outroom, outchars);
    if (r1 < 0) return r1;
    return r0;
}



