/******************************************************************************
 *                                                                            *
 *      stype.c                                                               *
 *                                                                            *
 *      E񏈗֐                                                *
 *                                                                            *
 ******************************************************************************/

  XV

  2005/06/12 Version 1.02 ENɃG[ƂȂĂ̂ŏCB

  2005/06/03 Version 1.00 Emischar, misrange, misxrange, sischar, sisrange,
                            sisxrange, ttostr, strtot, strltrim, strrtrim,
                            strtrim, strleft, strmid, strright ǉB

  ֐ꗗ

 +-----------------------------+------+------+--------------------------------+
 |           ֐            | ǉ | C |              l              |
 +-----------------------------+------+------+--------------------------------+
 | mischar                     | 1.00 |      |                                |
 | misrange                    | 1.00 |      |                                |
 | misxrange                   | 1.00 |      |                                |
 | sischar                     | 1.00 |      |                                |
 | sisrange                    | 1.00 |      |                                |
 | sisxrange                   | 1.00 |      |                                |
 | ttostr                      | 1.00 |      |                                |
 | strtot                      | 1.00 |      |                                |
 | strltrim                    | 1.00 |      |                                |
 | strrtrim                    | 1.00 |      |                                |
 | strtrim                     | 1.00 |      |                                |
 | strleft                     | 1.00 |      |                                |
 | strmid                      | 1.00 |      |                                |
 | strright                    | 1.00 |      |                                |
 +-----------------------------+------+------+--------------------------------+

/******************************************************************************
 *
 *   Fmischar / w蕶ǂ̔iubNj
 *
 * ďo`F#include "stype.h"
 *           void *mischar(const void *mem, size_t size, long mode, long
 *           except);
 *
 *     FmemŎ郁sizeoCg̃ubNmodeɎw肳ꂽ[
 *           hexceptɎw肳ꂽȊOΏۂw蕶ǂ𒲂ׂ܂Bmode
 *           ɂ<stype.h>ɒ`Ă鎟̒萔w肵܂B
 *           
 *           y_z
 *           ------------------------------------------------------------------
 *           mode                          Ӗ
 *           ------------------------------------------------------------------
 *           ISL_OR                        S̘_a
 *           ISL_AND                       S̘_
 *           ISL_ORNOT                     S̘_a̔ے
 *           ISL_ANDNOT                    S̘_ς̔ے
 *           ------------------------------------------------------------------
 *           _͔Ώۂ𓯎w肷ꍇɂǂꂩPORœw肵܂B
 *           
 *           yΏہz
 *           ------------------------------------------------------------------
 *           mode                          Ӗ
 *           ------------------------------------------------------------------
 *           ISJ_SPACE                     Ԋu
 *           ISJ_DIGIT                     
 *           ISJ_UPPER                     p啶
 *           ISJ_LOWER                     p
 *           ISJ_XDIGIT                    16i\L
 *           ISJ_CNTRL                     䕶
 *           ISJ_PUNCT                     ؂蕶
 *           ISJ_BLANK                     󔒕
 *           ISJ_KMOJI                     Ǔ_ȊO̔pJi
 *           ISJ_KPUN                      pJi̋Ǔ_
 *           ISJ_JJIS                      JISR[h
 *           ISJ_JSJIS                     VtgJISR[h
 *           ISJ_JKUTEN                    _R[h
 *           ISJ_JL0                       VtgJIS̊ȊO̕
 *           ISJ_JL1                       VtgJISꐅ
 *           ISJ_JL2                       VtgJIS񐅏
 *           ISJ_JALPHA                    VtgJIS̉p
 *           ISJ_JUPPER                    VtgJIS̉p啶
 *           ISJ_JLOWER                    VtgJIS̉p
 *           ISJ_JDIGIT                    VtgJIS̐
 *           ISJ_JKANA                     VtgJIS̃J^Ji
 *           ISJ_JHIRA                     VtgJIŜЂ炪
 *           ISJ_JKIGOU                    VtgJIS̋L
 *           ISJ_JSPACE                    VtgJIS̃Xy[X
 *           ------------------------------------------------------------------
 *           ISJ_ALPHA                     p
 *           ISJ_ALNUM                     pƐ
 *           ISJ_GRAPH                     󔒈ȊO̕\\
 *           ISJ_PRINT                     \\
 *           ISJ_ASCII                     ASCII
 *           ISJ_KANA                      p̃Ji
 *           ISJ_ALKANA                    pƃJi
 *           ISJ_PNKANA                    p̋Ǔ_ƃJi̋Ǔ_
 *           ISJ_ALNMKANA                  pƐƃJi
 *           ISJ_PRKANA                    \\ƃJi
 *           ISJ_GRKANA                    󔒈ȊO̕\\ƃJi
 *           ISJ_PRKASJ                    \\ƃJiƃVtgJIS
 *           ------------------------------------------------------------------
 *           w萔
 *               ISJ_ALPHA    = ISJ_UPPER | ISJ_LOWER
 *               ISJ_ALNUM    = ISJ_DIGIT | ISJ_ALPHA
 *               ISJ_GRAPH    = ISJ_ALNUM | ISJ_PUNCT
 *               ISJ_PRINT    = ISJ_GRAPH | ISJ_BLANK
 *               ISJ_ASCII    = ISJ_PRINT | ISJ_CNTRL
 *               ISJ_KANA     = ISJ_KMOJI | ISJ_KPUN
 *               ISJ_ALKANA   = ISJ_ALPHA | ISJ_KMOJI
 *               ISJ_PNKANA   = ISJ_PUNCT | ISJ_KPUN
 *               ISJ_ALNMKANA = ISJ_ALNUM | ISJ_KMOJI
 *               ISJ_PRKANA   = ISJ_PRINT | ISJ_KANA
 *               ISJ_GRKANA   = ISJ_GRAPH | ISJ_KANA
 *               ISJ_PRKASJ   = ISJ_PRKANA | ISJ_JSJIS
 *           ------------------------------------------------------------------
 *           ΏۂORœwł܂B
 *           
 *           exceptɂ<stype.h>ɒ`Ă鎟̒萔w肵܂B
 *           
 *           yȊOΏہz
 *           ------------------------------------------------------------------
 *           except                        Ӗ
 *           ------------------------------------------------------------------
 *           ISE_NONE                      Ȃ
 *           ISE_SPACE                     Ԋu
 *           ISE_DIGIT                     
 *           ISE_UPPER                     p啶
 *           ISE_LOWER                     p
 *           ISE_XDIGIT                    16i\L
 *           ISE_CNTRL                     䕶
 *           ISE_PUNCT                     ؂蕶
 *           ISE_BLANK                     󔒕
 *           ISE_KMOJI                     Ǔ_ȊO̔pJi
 *           ISE_KPUN                      pJi̋Ǔ_
 *           ISE_JJIS                      JISR[h
 *           ISE_JSJIS                     VtgJISR[h
 *           ISE_JKUTEN                    _R[h
 *           ISE_JL0                       VtgJIS̊ȊO̕
 *           ISE_JL1                       VtgJISꐅ
 *           ISE_JL2                       VtgJIS񐅏
 *           ISE_JALPHA                    VtgJIS̉p
 *           ISE_JUPPER                    VtgJIS̉p啶
 *           ISE_JLOWER                    VtgJIS̉p
 *           ISE_JDIGIT                    VtgJIS̐
 *           ISE_JKANA                     VtgJIS̃J^Ji
 *           ISE_JHIRA                     VtgJIŜЂ炪
 *           ISE_JKIGOU                    VtgJIS̋L
 *           ISE_JSPACE                    VtgJIS̃Xy[X
 *           ISE_ALL                       S
 *           ------------------------------------------------------------------
 *           ISE_ALPHA                     p
 *           ISE_ALNUM                     pƐ
 *           ISE_GRAPH                     󔒈ȊO̕\\
 *           ISE_PRINT                     \\
 *           ISE_ASCII                     ASCII
 *           ISE_KANA                      p̃Ji
 *           ISE_ALKANA                    pƃJi
 *           ISE_PNKANA                    p̋Ǔ_ƃJi̋Ǔ_
 *           ISE_ALNMKANA                  pƐƃJi
 *           ISE_PRKANA                    \\ƃJi
 *           ISE_GRKANA                    󔒈ȊO̕\\ƃJi
 *           ISE_PRKASJ                    \\ƃJiƃVtgJIS
 *           ------------------------------------------------------------------
 *           w萔
 *               ISE_ALPHA    = ISE_UPPER | ISE_LOWER
 *               ISE_ALNUM    = ISE_DIGIT | ISE_ALPHA
 *               ISE_GRAPH    = ISE_ALNUM | ISE_PUNCT
 *               ISE_PRINT    = ISE_GRAPH | ISE_BLANK
 *               ISE_ASCII    = ISE_PRINT | ISE_CNTRL
 *               ISE_KANA     = ISE_KMOJI | ISE_KPUN
 *               ISE_ALKANA   = ISE_ALPHA | ISE_KMOJI
 *               ISE_PNKANA   = ISE_PUNCT | ISE_KPUN
 *               ISE_ALNMKANA = ISE_ALNUM | ISE_KMOJI
 *               ISE_PRKANA   = ISE_PRINT | ISE_KANA
 *               ISE_GRKANA   = ISE_GRAPH | ISE_KANA
 *               ISE_PRKASJ   = ISE_PRKANA | ISE_JSJIS
 *           ------------------------------------------------------------------
 *           ȊOΏۂORœwł܂B
 *
 *   lFubNmemw蕶Ȃ画In_imem{sizej
 *           ܂BȊȌ̕ꍇNULLԂ܂B
 *
 ******************************************************************************/

/******************************************************************************
 *
 *   Fmisrange / ͈͓̐ǂ̔iubNj
 *
 * ďo`F#include "stype.h"
 *           void *misrange(const void *mem, size_t size, unsigned long min,
 *           unsigned long max);
 *
 *     FmemŎ郁sizeoCg̃ubNi'0'`'9'j
 *           𒲂ׁAłꍇ͐lɕϊminɎw肳ꂽŏl
 *           AmaxɎw肳ꂽőlȉǂ𒲂ׂ܂B
 *
 *   lFubNmem͈͓̐Ȃ画In_imem{sizej
 *           Ԃ܂BȊȌ̕ꍇNULLԂ܂B
 *
 ******************************************************************************/

/******************************************************************************
 *
 *   Fmisxrange / ͈͓16i\Lǂ̔iubNj
 *
 * ďo`F#include "stype.h"
 *           void *misxrange(const void *mem, size_t size, unsigned long min,
 *           unsigned long max);
 *
 *     FmemŎ郁sizeoCg̃ubN16i\Li'0'`
 *           '9' ܂ 'A'`'F'A܂ 'a'`'f'jǂ𒲂ׁA16i\L
 *           łꍇ͐lɕϊminɎw肳ꂽŏlȏAmaxɎw肳
 *           őlȉǂ𒲂ׂ܂B
 *
 *   lFubNmem͈͓16i\LȂ画In_
 *           imem{sizejԂ܂BȊȌ̕ꍇNULLԂ܂B
 *
 ******************************************************************************/

/******************************************************************************
 *
 *   Fsischar / w蕶ǂ̔ij
 *
 * ďo`F#include "stype.h"
 *           int sischar(const char *str, long mode, long except);
 *
 *     FstrŎ镶modeɎw肳ꂽ[hexceptɎw肳ꂽ
 *           OΏۂw蕶ǂ𒲂ׂ܂Bmodeexcept̎w@
 *           @\mischarƓłBmodeexcept̎wɂĂmischarQ
 *           ĉB
 *
 *   lFstrw蕶Ȃ0ȊOԂ܂BȊȌ̕ꍇ0
 *           Ԃ܂B
 *
 ******************************************************************************/

/******************************************************************************
 *
 *   Fsisrange / ͈͓̐ǂ̔ij
 *
 * ďo`F#include "stype.h"
 *           int sisrange(const char *str, unsigned long min, unsigned long
 *           max);
 *
 *     FstrŎ镶񂪐i'0'`'9'jǂ𒲂ׁAł
 *           ͐lɕϊminɎw肳ꂽŏlȏAmaxɎw肳ꂽől
 *           ȉǂ𒲂ׂ܂B
 *
 *   lFstr͈͓̐Ȃ0ȊOԂ܂BȊȌ̕ꍇ
 *           0Ԃ܂B
 *
 ******************************************************************************/

/******************************************************************************
 *
 *   Fsisxrange / ͈͓16i\Lǂ̔ij
 *
 * ďo`F#include "stype.h"
 *           int sisxrange(const char *str, unsigned long min, unsigned long
 *           max);
 *
 *     FstrŎ镶16i\Li'0'`'9' ܂'A'`'F'A܂
 *           'a'`'f'jǂ𒲂ׁA16i\Lłꍇ͐lɕϊ
 *           minɎw肳ꂽŏlȏAmaxɎw肳ꂽőlȉǂ𒲂
 *           ܂B
 *
 *   lFstr͈͓16i\LȂ0ȊOԂ܂BȊO̕
 *           ̏ꍇ0Ԃ܂B
 *
 ******************************************************************************/

/******************************************************************************
 *
 *   Fttostr / ^ϊ
 *
 * ďo`F#include "stype.h"
 *           int ttostr(char *str, const char *mode, const void *value);
 *
 *     FvalueŎlmodeɎw肳ꂽ[hɏ]Č^ϊAϊ
 *           ̕strɎobt@Ɋi[܂B
 *           
 *           y[hwɂāz
 *           
 *           @[hẘetB[hɂ
 *           [hw͈ȉ̂悤ȊetB[hɂč\Ă܂B
 *           
 *           [flags][width][size]type
 *           
 *           []łĂtB[h̓IvVtB[hłBKvɉ
 *           Ďw肵܂Btype͕Kw肷K{tB[hłBȉɃtB[
 *           ḧꗗ܂B
 *           ------------------------------------------------------------------
 *           tB[h    Ӗ
 *           ------------------------------------------------------------------
 *           type          lϊɕEEl̂Ŋi[̂
 *                         w肵܂B
 *           flags         i[̉El/lߎwAl̕A󔒂Ƃ
 *                         dlݒ肵܂B
 *           width         i[Œ̕w肵܂B
 *           size          ϊl̃TCỶ߂w肵܂B
 *           ------------------------------------------------------------------
 *           
 *           Atypewɂ
 *           type̓[hw̕K{tB[hłBl𕶎EEl̂
 *           ɕϊ̂w肵܂B
 *           
 *           ylz
 *           ------------------------------------------------------------------
 *           type          ľ^              i[`
 *           ------------------------------------------------------------------
 *           d             int                 t10i
 *           u             int                 Ȃ10i
 *           x             int                 Ȃ16iiabcdefgpj
 *           X             int                 Ȃ16iiABCDEFgpj
 *           ------------------------------------------------------------------
 *           
 *           yz
 *           ------------------------------------------------------------------
 *           type          ľ^              i[`
 *           ------------------------------------------------------------------
 *           c             int                 1̕
 *           s             ̃AhX    k(\0)ɒB܂ŕ\
 *                                             镶
 *           ------------------------------------------------------------------
 *           
 *           Bflagswɂ
 *           flags̓[hw̐擪̃IvVtB[hŁAi[̉El/l
 *           ߎwAl̕A󔒂Ƃϊdlw肵܂B
 *           ------------------------------------------------------------------
 *           flags         Ӗ
 *           ------------------------------------------------------------------
 *           -             l߂Ŋi[AEɂ͋󔒂\BiftHg
 *                         ł͉El߁j
 *           +             typeŕtlw肳ĂꍇAɕ
 *                         i'+' ܂ '-'jtBiftHgł͕̐l
 *                         ɂ̂ '-' ̕tBj
 *                     ̐l\ƂɁAl̑Oɋ󔒂\B
 *                         ̐l̏ꍇ '-' \B '+' w
 *                         ꂽƂ͖B
 *           ------------------------------------------------------------------
 *           
 *           Cwidthwɂ
 *           widthflagsɑIvVtB[hŁAi[Œ̕
 *           Ŏw肵܂Bϊ̌ʁAi[镶widthŎw肵
 *           菭Ȃꍇɂ͋󔒂߂A܂widthŎw肷l̑O
 *           '0' tƁA'0' Ŗ߂܂BwidthwɂĒl؂̂
 *           邱Ƃ͂܂Bϊ̌ʁAi[镶widthŎw肵
 *           ꍇɂ́Aϊʂ̂܂܊i[܂B
 *           
 *           Dsizewɂ
 *           sizewidthɑIvVtB[hŁAϊl̃TCỶ
 *           w肵܂Bsizeɂ͈ȉɎw肷邱Ƃł܂B
 *           ------------------------------------------------------------------
 *           size          Ӗ
 *           ------------------------------------------------------------------
 *           b             ϊ̑ΏۂƂȂ鐮ityped, u, x ܂ Xw肵
 *                         ꍇj̃TCYcharł邱ƂB
 *           w             ϊ̑ΏۂƂȂ鐮ityped, u, x ܂ Xw肵
 *                         ꍇj̃TCYshortł邱ƂB
 *           i             ϊ̑ΏۂƂȂ鐮ityped, u, x ܂ Xw肵
 *                         ꍇj̃TCYintł邱ƂB
 *           l             ϊ̑ΏۂƂȂ鐮ityped, u, x ܂ Xw肵
 *                         ꍇj̃TCYlongł邱ƂB
 *           ------------------------------------------------------------------
 *
 *   lFϊԂ܂B
 *
 ******************************************************************************/

/******************************************************************************
 *
 *   Fstrtot / 񁨌^ϊ
 *
 * ďo`F#include "stype.h"
 *           int strtot(const char *str, const char *mode, void *value);
 *
 *     FstrŎ镶modeɎw肳ꂽ[hɏ]Č^ϊA
 *           ̒lvalueɎlɊi[܂B
 *           
 *           y[hwɂāz
 *           
 *           @[hẘetB[hɂ
 *           [hw͈ȉ̂悤ȊetB[hɂč\Ă܂B
 *           
 *           [width][size]type
 *           
 *           []łĂtB[h̓IvVtB[hłBKvɉ
 *           Ďw肵܂Btype͕Kw肷K{tB[hłBȉɃtB[
 *           ḧꗗ܂B
 *           ------------------------------------------------------------------
 *           type          ϊɕEEl̂Ŋi[
 *                         ̂w肵܂B
 *           width         ǂݍ܂镶10iŎw肵܂B
 *           size          ǂݍ܂IuWFNg̃TCYw肵܂B
 *           ------------------------------------------------------------------
 *           
 *           Atypewɂ
 *           type̓[hw̕K{tB[hłB𕶎EEl
 *           ɕϊ̂w肵܂B
 *           
 *           ylz
 *           ------------------------------------------------------------------
 *           type                        i[`
 *           ------------------------------------------------------------------
 *           d             t10i    intւ̃|C^
 *           u             Ȃ10i    intւ̃|C^
 *           x             Ȃ16i    intւ̃|C^
 *           X             Ȃ16i    intւ̃|C^
 *           ------------------------------------------------------------------
 *           
 *           yijz
 *           ------------------------------------------------------------------
 *           type          ľ^              i[`
 *           ------------------------------------------------------------------
 *           c             ij          charւ̃|C^A܂char[]
 *                                             ̃|C^
 *           s                           char[]ւ̃|C^
 *           ------------------------------------------------------------------
 *           
 *           Bwidthwɂ
 *           width̓[hw̐擪̃IvVtB[hŁAǂݍ܂镶
 *           𐮐Ŏw肵܂B
 *           
 *           Csizewɂ
 *           sizewidthɑIvVtB[hŁAIuWFNgɊi
 *           [ۂɁAǂ̌^ɕϊ̂w肵܂Bsizeɂ͈ȉɎ
 *           w肷邱Ƃł܂B
 *           ------------------------------------------------------------------
 *           size          Ӗ
 *           ------------------------------------------------------------------
 *           b             typed, u, x ܂ Xw肵ꍇAchar
 *                         ϊAchar^̃IuWFNgɊi[B
 *           w             typed, u, x ܂ Xw肵ꍇAshort
 *                         ɕϊAshort^̃IuWFNgɊi[B
 *           i             typed, u, x ܂ Xw肵ꍇAint
 *                         ϊAint^̃IuWFNgɊi[B
 *           l             typed, u, x ܂ Xw肵ꍇAlong
 *                         ϊAlong^̃IuWFNgɊi[B
 *           ------------------------------------------------------------------
 *
 *   lFϊԂ܂B
 *
 ******************************************************************************/

/******************************************************************************
 *
 *   Fstrltrim / ̐擪̋󔒁E䕶폜
 *
 * ďo`F#include "stype.h"
 *           void strltrim(char *str);
 *
 *     FstrŎ镶̐擪̋󔒂Ɛ䕶菜܂B󔒂͔
 *           pƑSp̗ɑΉĂ܂B
 *
 *   lF܂B
 *
 ******************************************************************************/

/******************************************************************************
 *
 *   Fstrrtrim / ̖̋󔒁E䕶폜
 *
 * ďo`F#include "stype.h"
 *           void strrtrim(char *str);
 *
 *     FstrŎ镶̖̋󔒂Ɛ䕶菜܂B󔒂͔
 *           pƑSp̗ɑΉĂ܂B
 *
 *   lF܂B
 *
 ******************************************************************************/

/******************************************************************************
 *
 *   Fstrtrim / ̐擪E̋󔒁E䕶폜
 *
 * ďo`F#include "stype.h"
 *           void strtrim(char *str);
 *
 *     FstrŎ镶̐擪Ɩ̋󔒂Ɛ䕶菜܂B
 *           ͔pƑSp̗ɑΉĂ܂B
 *
 *   lF܂B
 *
 ******************************************************************************/

/******************************************************************************
 *
 *   Fstrleft / [̕
 *
 * ďo`F#include "stype.h"
 *           void strleft(char *dest, const char *src, size_t len);
 *
 *     FsrcŎ镶̍[len̕destɎw肳ꂽobt
 *           @Ɋi[܂B
 *
 *   lF܂B
 *
 ******************************************************************************/

/******************************************************************************
 *
 *   Fstrmid / Ԃ̕
 *
 * ďo`F#include "stype.h"
 *           void strmid(char *dest, const char *src, int start, size_t len);
 *
 *     FsrcŎ镶startɎw肳ꂽJnʒulen̕
 *           destɎw肳ꂽobt@Ɋi[܂B
 *
 *   lF܂B
 *
 ******************************************************************************/

/******************************************************************************
 *
 *   Fstrright / E[̕
 *
 * ďo`F#include "stype.h"
 *           void strright(char *dest, const char *src, size_t len);
 *
 *     FsrcŎ镶̉E[len̕destɎw肳ꂽobt
 *           @Ɋi[܂B
 *
 *   lF܂B
 *
 ******************************************************************************/

