"Fossies" - the Fresh Open Source Software Archive

Member "memcached-1.6.15/vendor/lua/src/lctype.h" (1 Oct 2021, 2115 Bytes) of package /linux/www/memcached-1.6.15.tar.gz:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) C and C++ source code syntax highlighting (style: standard) with prefixed line numbers and code folding option. Alternatively you can here view or download the uninterpreted source code file.

    1 /*
    2 ** $Id: lctype.h $
    3 ** 'ctype' functions for Lua
    4 ** See Copyright Notice in lua.h
    5 */
    6 
    7 #ifndef lctype_h
    8 #define lctype_h
    9 
   10 #include "lua.h"
   11 
   12 
   13 /*
   14 ** WARNING: the functions defined here do not necessarily correspond
   15 ** to the similar functions in the standard C ctype.h. They are
   16 ** optimized for the specific needs of Lua.
   17 */
   18 
   19 #if !defined(LUA_USE_CTYPE)
   20 
   21 #if 'A' == 65 && '0' == 48
   22 /* ASCII case: can use its own tables; faster and fixed */
   23 #define LUA_USE_CTYPE   0
   24 #else
   25 /* must use standard C ctype */
   26 #define LUA_USE_CTYPE   1
   27 #endif
   28 
   29 #endif
   30 
   31 
   32 #if !LUA_USE_CTYPE  /* { */
   33 
   34 #include <limits.h>
   35 
   36 #include "llimits.h"
   37 
   38 
   39 #define ALPHABIT    0
   40 #define DIGITBIT    1
   41 #define PRINTBIT    2
   42 #define SPACEBIT    3
   43 #define XDIGITBIT   4
   44 
   45 
   46 #define MASK(B)     (1 << (B))
   47 
   48 
   49 /*
   50 ** add 1 to char to allow index -1 (EOZ)
   51 */
   52 #define testprop(c,p)   (luai_ctype_[(c)+1] & (p))
   53 
   54 /*
   55 ** 'lalpha' (Lua alphabetic) and 'lalnum' (Lua alphanumeric) both include '_'
   56 */
   57 #define lislalpha(c)    testprop(c, MASK(ALPHABIT))
   58 #define lislalnum(c)    testprop(c, (MASK(ALPHABIT) | MASK(DIGITBIT)))
   59 #define lisdigit(c) testprop(c, MASK(DIGITBIT))
   60 #define lisspace(c) testprop(c, MASK(SPACEBIT))
   61 #define lisprint(c) testprop(c, MASK(PRINTBIT))
   62 #define lisxdigit(c)    testprop(c, MASK(XDIGITBIT))
   63 
   64 
   65 /*
   66 ** In ASCII, this 'ltolower' is correct for alphabetic characters and
   67 ** for '.'. That is enough for Lua needs. ('check_exp' ensures that
   68 ** the character either is an upper-case letter or is unchanged by
   69 ** the transformation, which holds for lower-case letters and '.'.)
   70 */
   71 #define ltolower(c)  \
   72   check_exp(('A' <= (c) && (c) <= 'Z') || (c) == ((c) | ('A' ^ 'a')),  \
   73             (c) | ('A' ^ 'a'))
   74 
   75 
   76 /* one entry for each character and for -1 (EOZ) */
   77 LUAI_DDEC(const lu_byte luai_ctype_[UCHAR_MAX + 2];)
   78 
   79 
   80 #else           /* }{ */
   81 
   82 /*
   83 ** use standard C ctypes
   84 */
   85 
   86 #include <ctype.h>
   87 
   88 
   89 #define lislalpha(c)    (isalpha(c) || (c) == '_')
   90 #define lislalnum(c)    (isalnum(c) || (c) == '_')
   91 #define lisdigit(c) (isdigit(c))
   92 #define lisspace(c) (isspace(c))
   93 #define lisprint(c) (isprint(c))
   94 #define lisxdigit(c)    (isxdigit(c))
   95 
   96 #define ltolower(c) (tolower(c))
   97 
   98 #endif          /* } */
   99 
  100 #endif
  101