home *** CD-ROM | disk | FTP | other *** search
/ GEMini Atari / GEMini_Atari_CD-ROM_Walnut_Creek_December_1993.iso / zip / gnu / mntlib16.lzh / MNTLIB16 / CTYPE.C < prev    next >
C/C++ Source or Header  |  1993-07-29  |  3KB  |  81 lines

  1. /* originally from dLibs, by Dale Schumacher */
  2.  
  3. /*
  4.  *  CTYPE.C    Character classification and conversion
  5.  */
  6.  
  7. #include <ctype.h>
  8. #include <limits.h>
  9.  
  10. #undef    toupper /* note that in gcc we have a safe version of these, */
  11. #undef  tolower    /* but its better to leave these as routines in case */
  12.         /* some code uses these as function pointers --  i   */
  13.         /* have seen code that does.                 */
  14.  
  15. static unsigned char _myctype[UCHAR_MAX+2] =
  16.     {
  17.        0,                    /* isXXX(EOF) caught here */
  18.     _CTc, _CTc, _CTc, _CTc,                /* 0x00..0x03 */
  19.     _CTc, _CTc, _CTc, _CTc,                /* 0x04..0x07 */
  20.     _CTc, _CTc|_CTs, _CTc|_CTs, _CTc|_CTs,        /* 0x08..0x0B */
  21.     _CTc|_CTs, _CTc|_CTs, _CTc, _CTc,        /* 0x0C..0x0F */
  22.  
  23.     _CTc, _CTc, _CTc, _CTc,                /* 0x10..0x13 */
  24.     _CTc, _CTc, _CTc, _CTc,                /* 0x14..0x17 */
  25.     _CTc, _CTc, _CTc, _CTc,                /* 0x18..0x1B */
  26.     _CTc, _CTc, _CTc, _CTc,                /* 0x1C..0x1F */
  27.  
  28.     _CTs, _CTp, _CTp, _CTp,                /* 0x20..0x23 */
  29.     _CTp, _CTp, _CTp, _CTp,                /* 0x24..0x27 */
  30.     _CTp, _CTp, _CTp, _CTp,                /* 0x28..0x2B */
  31.     _CTp, _CTp, _CTp, _CTp,                /* 0x2C..0x2F */
  32.  
  33.     _CTd|_CTx, _CTd|_CTx, _CTd|_CTx, _CTd|_CTx,    /* 0x30..0x33 */
  34.     _CTd|_CTx, _CTd|_CTx, _CTd|_CTx, _CTd|_CTx,    /* 0x34..0x37 */
  35.     _CTd|_CTx, _CTd|_CTx, _CTp, _CTp,        /* 0x38..0x3B */
  36.     _CTp, _CTp, _CTp, _CTp,                /* 0x3C..0x3F */
  37.  
  38.     _CTp, _CTu|_CTx, _CTu|_CTx, _CTu|_CTx,        /* 0x40..0x43 */
  39.     _CTu|_CTx, _CTu|_CTx, _CTu|_CTx, _CTu,        /* 0x44..0x47 */
  40.     _CTu, _CTu, _CTu, _CTu,                /* 0x48..0x4B */
  41.     _CTu, _CTu, _CTu, _CTu,                /* 0x4C..0x4F */
  42.  
  43.     _CTu, _CTu, _CTu, _CTu,                /* 0x50..0x53 */
  44.     _CTu, _CTu, _CTu, _CTu,                /* 0x54..0x57 */
  45.     _CTu, _CTu, _CTu, _CTp,                /* 0x58..0x5B */
  46.     _CTp, _CTp, _CTp, _CTp,                /* 0x5C..0x5F */
  47.  
  48.     _CTp, _CTl|_CTx, _CTl|_CTx, _CTl|_CTx,        /* 0x60..0x63 */
  49.     _CTl|_CTx, _CTl|_CTx, _CTl|_CTx, _CTl,        /* 0x64..0x67 */
  50.     _CTl, _CTl, _CTl, _CTl,                /* 0x68..0x6B */
  51.     _CTl, _CTl, _CTl, _CTl,                /* 0x6C..0x6F */
  52.  
  53.     _CTl, _CTl, _CTl, _CTl,                /* 0x70..0x73 */
  54.     _CTl, _CTl, _CTl, _CTl,                /* 0x74..0x77 */
  55.     _CTl, _CTl, _CTl, _CTp,                /* 0x78..0x7B */
  56.     _CTp, _CTp, _CTp, _CTc,                /* 0x7C..0x7F */
  57.  
  58.     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x80..0x8F */
  59.     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x90..0x9F */
  60.     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0xA0..0xAF */
  61.     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0xB0..0xBF */
  62.     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0xC0..0xCF */
  63.     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0xD0..0xDF */
  64.     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0xE0..0xEF */
  65.     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0  /* 0xF0..0xFF */
  66.     };
  67.  
  68. unsigned char *_ctype = &(_myctype[1]);
  69.  
  70. int toupper(c)
  71.     int c;
  72.     {
  73.     return(islower(c) ? (c ^ 0x20) : (c));
  74.     }
  75.  
  76. int tolower(c)
  77.     int c;
  78.     {
  79.     return(isupper(c) ? (c ^ 0x20) : (c));
  80.     }
  81.