Annotation of embedaddon/readline/chardefs.h, revision 1.1.1.1

1.1       misho       1: /* chardefs.h -- Character definitions for readline. */
                      2: 
                      3: /* Copyright (C) 1994-2009 Free Software Foundation, Inc.
                      4: 
                      5:    This file is part of the GNU Readline Library (Readline), a library
                      6:    for reading lines of text with interactive input and history editing.
                      7: 
                      8:    Readline is free software: you can redistribute it and/or modify
                      9:    it under the terms of the GNU General Public License as published by
                     10:    the Free Software Foundation, either version 3 of the License, or
                     11:    (at your option) any later version.
                     12: 
                     13:    Readline is distributed in the hope that it will be useful,
                     14:    but WITHOUT ANY WARRANTY; without even the implied warranty of
                     15:    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
                     16:    GNU General Public License for more details.
                     17: 
                     18:    You should have received a copy of the GNU General Public License
                     19:    along with Readline.  If not, see <http://www.gnu.org/licenses/>.
                     20: */
                     21: 
                     22: #ifndef _CHARDEFS_H_
                     23: #define _CHARDEFS_H_
                     24: 
                     25: #include <ctype.h>
                     26: 
                     27: #if defined (HAVE_CONFIG_H)
                     28: #  if defined (HAVE_STRING_H)
                     29: #    if ! defined (STDC_HEADERS) && defined (HAVE_MEMORY_H)
                     30: #      include <memory.h>
                     31: #    endif
                     32: #    include <string.h>
                     33: #  endif /* HAVE_STRING_H */
                     34: #  if defined (HAVE_STRINGS_H)
                     35: #    include <strings.h>
                     36: #  endif /* HAVE_STRINGS_H */
                     37: #else
                     38: #  include <string.h>
                     39: #endif /* !HAVE_CONFIG_H */
                     40: 
                     41: #ifndef whitespace
                     42: #define whitespace(c) (((c) == ' ') || ((c) == '\t'))
                     43: #endif
                     44: 
                     45: #ifdef CTRL
                     46: #  undef CTRL
                     47: #endif
                     48: #ifdef UNCTRL
                     49: #  undef UNCTRL
                     50: #endif
                     51: 
                     52: /* Some character stuff. */
                     53: #define control_character_threshold 0x020   /* Smaller than this is control. */
                     54: #define control_character_mask 0x1f        /* 0x20 - 1 */
                     55: #define meta_character_threshold 0x07f     /* Larger than this is Meta. */
                     56: #define control_character_bit 0x40         /* 0x000000, must be off. */
                     57: #define meta_character_bit 0x080           /* x0000000, must be on. */
                     58: #define largest_char 255                   /* Largest character value. */
                     59: 
                     60: #define CTRL_CHAR(c) ((c) < control_character_threshold && (((c) & 0x80) == 0))
                     61: #define META_CHAR(c) ((c) > meta_character_threshold && (c) <= largest_char)
                     62: 
                     63: #define CTRL(c) ((c) & control_character_mask)
                     64: #define META(c) ((c) | meta_character_bit)
                     65: 
                     66: #define UNMETA(c) ((c) & (~meta_character_bit))
                     67: #define UNCTRL(c) _rl_to_upper(((c)|control_character_bit))
                     68: 
                     69: #if defined STDC_HEADERS || (!defined (isascii) && !defined (HAVE_ISASCII))
                     70: #  define IN_CTYPE_DOMAIN(c) 1
                     71: #else
                     72: #  define IN_CTYPE_DOMAIN(c) isascii(c)
                     73: #endif
                     74: 
                     75: #if !defined (isxdigit) && !defined (HAVE_ISXDIGIT) && !defined (__cplusplus)
                     76: #  define isxdigit(c)   (isdigit((c)) || ((c) >= 'a' && (c) <= 'f') || ((c) >= 'A' && (c) <= 'F'))
                     77: #endif
                     78: 
                     79: #if defined (CTYPE_NON_ASCII)
                     80: #  define NON_NEGATIVE(c) 1
                     81: #else
                     82: #  define NON_NEGATIVE(c) ((unsigned char)(c) == (c))
                     83: #endif
                     84: 
                     85: /* Some systems define these; we want our definitions. */
                     86: #undef ISPRINT
                     87: 
                     88: /* Beware:  these only work with single-byte ASCII characters. */
                     89: 
                     90: #define ISALNUM(c)     (IN_CTYPE_DOMAIN (c) && isalnum (c))
                     91: #define ISALPHA(c)     (IN_CTYPE_DOMAIN (c) && isalpha (c))
                     92: #define ISDIGIT(c)     (IN_CTYPE_DOMAIN (c) && isdigit (c))
                     93: #define ISLOWER(c)     (IN_CTYPE_DOMAIN (c) && islower (c))
                     94: #define ISPRINT(c)     (IN_CTYPE_DOMAIN (c) && isprint (c))
                     95: #define ISUPPER(c)     (IN_CTYPE_DOMAIN (c) && isupper (c))
                     96: #define ISXDIGIT(c)    (IN_CTYPE_DOMAIN (c) && isxdigit (c))
                     97: 
                     98: #define _rl_lowercase_p(c)     (NON_NEGATIVE(c) && ISLOWER(c))
                     99: #define _rl_uppercase_p(c)     (NON_NEGATIVE(c) && ISUPPER(c))
                    100: #define _rl_digit_p(c)         ((c) >= '0' && (c) <= '9')
                    101: 
                    102: #define _rl_pure_alphabetic(c) (NON_NEGATIVE(c) && ISALPHA(c))
                    103: #define ALPHABETIC(c)          (NON_NEGATIVE(c) && ISALNUM(c))
                    104: 
                    105: #ifndef _rl_to_upper
                    106: #  define _rl_to_upper(c) (_rl_lowercase_p(c) ? toupper((unsigned char)c) : (c))
                    107: #  define _rl_to_lower(c) (_rl_uppercase_p(c) ? tolower((unsigned char)c) : (c))
                    108: #endif
                    109: 
                    110: #ifndef _rl_digit_value
                    111: #  define _rl_digit_value(x) ((x) - '0')
                    112: #endif
                    113: 
                    114: #ifndef _rl_isident
                    115: #  define _rl_isident(c) (ISALNUM(c) || (c) == '_')
                    116: #endif
                    117: 
                    118: #ifndef ISOCTAL
                    119: #  define ISOCTAL(c)   ((c) >= '0' && (c) <= '7')
                    120: #endif
                    121: #define OCTVALUE(c)    ((c) - '0')
                    122: 
                    123: #define HEXVALUE(c) \
                    124:   (((c) >= 'a' && (c) <= 'f') \
                    125:        ? (c)-'a'+10 \
                    126:        : (c) >= 'A' && (c) <= 'F' ? (c)-'A'+10 : (c)-'0')
                    127: 
                    128: #ifndef NEWLINE
                    129: #define NEWLINE '\n'
                    130: #endif
                    131: 
                    132: #ifndef RETURN
                    133: #define RETURN CTRL('M')
                    134: #endif
                    135: 
                    136: #ifndef RUBOUT
                    137: #define RUBOUT 0x7f
                    138: #endif
                    139: 
                    140: #ifndef TAB
                    141: #define TAB '\t'
                    142: #endif
                    143: 
                    144: #ifdef ABORT_CHAR
                    145: #undef ABORT_CHAR
                    146: #endif
                    147: #define ABORT_CHAR CTRL('G')
                    148: 
                    149: #ifdef PAGE
                    150: #undef PAGE
                    151: #endif
                    152: #define PAGE CTRL('L')
                    153: 
                    154: #ifdef SPACE
                    155: #undef SPACE
                    156: #endif
                    157: #define SPACE ' '      /* XXX - was 0x20 */
                    158: 
                    159: #ifdef ESC
                    160: #undef ESC
                    161: #endif
                    162: #define ESC CTRL('[')
                    163: 
                    164: #endif  /* _CHARDEFS_H_ */

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>