Blame readline/chardefs.h

Packit Service 706eca
/* chardefs.h -- Character definitions for readline. */
Packit Service 706eca
Packit Service 706eca
/* Copyright (C) 1994-2009 Free Software Foundation, Inc.
Packit Service 706eca
Packit Service 706eca
   This file is part of the GNU Readline Library (Readline), a library
Packit Service 706eca
   for reading lines of text with interactive input and history editing.
Packit Service 706eca
Packit Service 706eca
   Readline is free software: you can redistribute it and/or modify
Packit Service 706eca
   it under the terms of the GNU General Public License as published by
Packit Service 706eca
   the Free Software Foundation, either version 3 of the License, or
Packit Service 706eca
   (at your option) any later version.
Packit Service 706eca
Packit Service 706eca
   Readline is distributed in the hope that it will be useful,
Packit Service 706eca
   but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit Service 706eca
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
Packit Service 706eca
   GNU General Public License for more details.
Packit Service 706eca
Packit Service 706eca
   You should have received a copy of the GNU General Public License
Packit Service 706eca
   along with Readline.  If not, see <http://www.gnu.org/licenses/>.
Packit Service 706eca
*/
Packit Service 706eca
Packit Service 706eca
#ifndef _CHARDEFS_H_
Packit Service 706eca
#define _CHARDEFS_H_
Packit Service 706eca
Packit Service 706eca
#include <ctype.h>
Packit Service 706eca
Packit Service 706eca
#if defined (HAVE_CONFIG_H)
Packit Service 706eca
#  if defined (HAVE_STRING_H)
Packit Service 706eca
#    if ! defined (STDC_HEADERS) && defined (HAVE_MEMORY_H)
Packit Service 706eca
#      include <memory.h>
Packit Service 706eca
#    endif
Packit Service 706eca
#    include <string.h>
Packit Service 706eca
#  endif /* HAVE_STRING_H */
Packit Service 706eca
#  if defined (HAVE_STRINGS_H)
Packit Service 706eca
#    include <strings.h>
Packit Service 706eca
#  endif /* HAVE_STRINGS_H */
Packit Service 706eca
#else
Packit Service 706eca
#  include <string.h>
Packit Service 706eca
#endif /* !HAVE_CONFIG_H */
Packit Service 706eca
Packit Service 706eca
#ifndef whitespace
Packit Service 706eca
#define whitespace(c) (((c) == ' ') || ((c) == '\t'))
Packit Service 706eca
#endif
Packit Service 706eca
Packit Service 706eca
#ifdef CTRL
Packit Service 706eca
#  undef CTRL
Packit Service 706eca
#endif
Packit Service 706eca
#ifdef UNCTRL
Packit Service 706eca
#  undef UNCTRL
Packit Service 706eca
#endif
Packit Service 706eca
Packit Service 706eca
/* Some character stuff. */
Packit Service 706eca
#define control_character_threshold 0x020   /* Smaller than this is control. */
Packit Service 706eca
#define control_character_mask 0x1f	    /* 0x20 - 1 */
Packit Service 706eca
#define meta_character_threshold 0x07f	    /* Larger than this is Meta. */
Packit Service 706eca
#define control_character_bit 0x40	    /* 0x000000, must be off. */
Packit Service 706eca
#define meta_character_bit 0x080	    /* x0000000, must be on. */
Packit Service 706eca
#define largest_char 255		    /* Largest character value. */
Packit Service 706eca
Packit Service 706eca
#define CTRL_CHAR(c) ((c) < control_character_threshold && (((c) & 0x80) == 0))
Packit Service 706eca
#define META_CHAR(c) ((c) > meta_character_threshold && (c) <= largest_char)
Packit Service 706eca
Packit Service 706eca
#define CTRL(c) ((c) & control_character_mask)
Packit Service 706eca
#define META(c) ((c) | meta_character_bit)
Packit Service 706eca
Packit Service 706eca
#define UNMETA(c) ((c) & (~meta_character_bit))
Packit Service 706eca
#define UNCTRL(c) _rl_to_upper(((c)|control_character_bit))
Packit Service 706eca
Packit Service 706eca
#if defined STDC_HEADERS || (!defined (isascii) && !defined (HAVE_ISASCII))
Packit Service 706eca
#  define IN_CTYPE_DOMAIN(c) 1
Packit Service 706eca
#else
Packit Service 706eca
#  define IN_CTYPE_DOMAIN(c) isascii(c)
Packit Service 706eca
#endif
Packit Service 706eca
Packit Service 706eca
#if !defined (isxdigit) && !defined (HAVE_ISXDIGIT)
Packit Service 706eca
#  define isxdigit(c)   (isdigit((c)) || ((c) >= 'a' && (c) <= 'f') || ((c) >= 'A' && (c) <= 'F'))
Packit Service 706eca
#endif
Packit Service 706eca
Packit Service 706eca
#if defined (CTYPE_NON_ASCII)
Packit Service 706eca
#  define NON_NEGATIVE(c) 1
Packit Service 706eca
#else
Packit Service 706eca
#  define NON_NEGATIVE(c) ((unsigned char)(c) == (c))
Packit Service 706eca
#endif
Packit Service 706eca
Packit Service 706eca
/* Some systems define these; we want our definitions. */
Packit Service 706eca
#undef ISPRINT
Packit Service 706eca
Packit Service 706eca
/* Beware:  these only work with single-byte ASCII characters. */
Packit Service 706eca
Packit Service 706eca
#define ISALNUM(c)	(IN_CTYPE_DOMAIN (c) && isalnum (c))
Packit Service 706eca
#define ISALPHA(c)	(IN_CTYPE_DOMAIN (c) && isalpha (c))
Packit Service 706eca
#define ISDIGIT(c)	(IN_CTYPE_DOMAIN (c) && isdigit (c))
Packit Service 706eca
#define ISLOWER(c)	(IN_CTYPE_DOMAIN (c) && islower (c))
Packit Service 706eca
#define ISPRINT(c)	(IN_CTYPE_DOMAIN (c) && isprint (c))
Packit Service 706eca
#define ISUPPER(c)	(IN_CTYPE_DOMAIN (c) && isupper (c))
Packit Service 706eca
#define ISXDIGIT(c)	(IN_CTYPE_DOMAIN (c) && isxdigit (c))
Packit Service 706eca
Packit Service 706eca
#define _rl_lowercase_p(c)	(NON_NEGATIVE(c) && ISLOWER(c))
Packit Service 706eca
#define _rl_uppercase_p(c)	(NON_NEGATIVE(c) && ISUPPER(c))
Packit Service 706eca
#define _rl_digit_p(c)		((c) >= '0' && (c) <= '9')
Packit Service 706eca
Packit Service 706eca
#define _rl_pure_alphabetic(c)	(NON_NEGATIVE(c) && ISALPHA(c))
Packit Service 706eca
#define ALPHABETIC(c)		(NON_NEGATIVE(c) && ISALNUM(c))
Packit Service 706eca
Packit Service 706eca
#ifndef _rl_to_upper
Packit Service 706eca
#  define _rl_to_upper(c) (_rl_lowercase_p(c) ? toupper((unsigned char)c) : (c))
Packit Service 706eca
#  define _rl_to_lower(c) (_rl_uppercase_p(c) ? tolower((unsigned char)c) : (c))
Packit Service 706eca
#endif
Packit Service 706eca
Packit Service 706eca
#ifndef _rl_digit_value
Packit Service 706eca
#  define _rl_digit_value(x) ((x) - '0')
Packit Service 706eca
#endif
Packit Service 706eca
Packit Service 706eca
#ifndef _rl_isident
Packit Service 706eca
#  define _rl_isident(c) (ISALNUM(c) || (c) == '_')
Packit Service 706eca
#endif
Packit Service 706eca
Packit Service 706eca
#ifndef ISOCTAL
Packit Service 706eca
#  define ISOCTAL(c)	((c) >= '0' && (c) <= '7')
Packit Service 706eca
#endif
Packit Service 706eca
#define OCTVALUE(c)	((c) - '0')
Packit Service 706eca
Packit Service 706eca
#define HEXVALUE(c) \
Packit Service 706eca
  (((c) >= 'a' && (c) <= 'f') \
Packit Service 706eca
  	? (c)-'a'+10 \
Packit Service 706eca
  	: (c) >= 'A' && (c) <= 'F' ? (c)-'A'+10 : (c)-'0')
Packit Service 706eca
Packit Service 706eca
#ifndef NEWLINE
Packit Service 706eca
#define NEWLINE '\n'
Packit Service 706eca
#endif
Packit Service 706eca
Packit Service 706eca
#ifndef RETURN
Packit Service 706eca
#define RETURN CTRL('M')
Packit Service 706eca
#endif
Packit Service 706eca
Packit Service 706eca
#ifndef RUBOUT
Packit Service 706eca
#define RUBOUT 0x7f
Packit Service 706eca
#endif
Packit Service 706eca
Packit Service 706eca
#ifndef TAB
Packit Service 706eca
#define TAB '\t'
Packit Service 706eca
#endif
Packit Service 706eca
Packit Service 706eca
#ifdef ABORT_CHAR
Packit Service 706eca
#undef ABORT_CHAR
Packit Service 706eca
#endif
Packit Service 706eca
#define ABORT_CHAR CTRL('G')
Packit Service 706eca
Packit Service 706eca
#ifdef PAGE
Packit Service 706eca
#undef PAGE
Packit Service 706eca
#endif
Packit Service 706eca
#define PAGE CTRL('L')
Packit Service 706eca
Packit Service 706eca
#ifdef SPACE
Packit Service 706eca
#undef SPACE
Packit Service 706eca
#endif
Packit Service 706eca
#define SPACE ' '	/* XXX - was 0x20 */
Packit Service 706eca
Packit Service 706eca
#ifdef ESC
Packit Service 706eca
#undef ESC
Packit Service 706eca
#endif
Packit Service 706eca
#define ESC CTRL('[')
Packit Service 706eca
Packit Service 706eca
#endif  /* _CHARDEFS_H_ */