ctype.h

来自「基于组件方式开发操作系统的OSKIT源代码」· C头文件 代码 · 共 180 行

H
180
字号
/* * Copyright (c) 1989, 1993 *	The Regents of the University of California.  All rights reserved. * (c) UNIX System Laboratories, Inc. * All or some portions of this file are derived from material licensed * to the University of California by American Telephone and Telegraph * Co. or Unix System Laboratories, Inc. and are reproduced herein with * the permission of UNIX System Laboratories, Inc. * * This code is derived from software contributed to Berkeley by * Paul Borman at Krystal Technologies. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright *    notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright *    notice, this list of conditions and the following disclaimer in the *    documentation and/or other materials provided with the distribution. * 3. All advertising materials mentioning features or use of this software *    must display the following acknowledgement: *	This product includes software developed by the University of *	California, Berkeley and its contributors. * 4. Neither the name of the University nor the names of its contributors *    may be used to endorse or promote products derived from this software *    without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * *	@(#)ctype.h	8.4 (Berkeley) 1/21/94 */#ifndef _CTYPE_H_#define	_CTYPE_H_/* * XXX <runetype.h> brings massive namespace pollution (rune_t and struct * member names). */#include <runetype.h>#define	_A	0x00000100L		/* Alpha */#define	_C	0x00000200L		/* Control */#define	_D	0x00000400L		/* Digit */#define	_G	0x00000800L		/* Graph */#define	_L	0x00001000L		/* Lower */#define	_P	0x00002000L		/* Punct */#define	_S	0x00004000L		/* Space */#define	_U	0x00008000L		/* Upper */#define	_X	0x00010000L		/* X digit */#define	_B	0x00020000L		/* Blank */#define	_R	0x00040000L		/* Print */#define	_I	0x00080000L		/* Ideogram */#define	_T	0x00100000L		/* Special */#define	_Q	0x00200000L		/* Phonogram */__BEGIN_DECLSint	isalnum __P((int));int	isalpha __P((int));int	iscntrl __P((int));int	isdigit __P((int));int	isgraph __P((int));int	islower __P((int));int	isprint __P((int));int	ispunct __P((int));int	isspace __P((int));int	isupper __P((int));int	isxdigit __P((int));int	tolower __P((int));int	toupper __P((int));#if !defined(_ANSI_SOURCE) && !defined(_POSIX_SOURCE)int	isascii __P((int));int	isblank __P((int));int	toascii __P((int));#endif__END_DECLS#define	isalnum(c)      __istype((c), (_A|_D))#define	isalpha(c)      __istype((c),     _A)#define	iscntrl(c)      __istype((c),     _C)#define	isdigit(c)      __isctype((c),    _D)	/* ANSI -- locale independent */#define	isgraph(c)      __istype((c),     _G)#define	islower(c)      __istype((c),     _L)#define	isprint(c)      __istype((c),     _R)#define	ispunct(c)      __istype((c),     _P)#define	isspace(c)      __istype((c),     _S)#define	isupper(c)      __istype((c),     _U)#define	isxdigit(c)     __isctype((c),    _X)	/* ANSI -- locale independent */#define	tolower(c)	__tolower(c)#define	toupper(c)	__toupper(c)#if !defined(_ANSI_SOURCE) && !defined(_POSIX_SOURCE)#define	isascii(c)	(((c) & ~0x7F) == 0)#define	isblank(c)	__istype((c), _B)#define	toascii(c)	((c) & 0x7F)/* XXX the following macros are not backed up by functions. */#define	digittoint(c)	__istype((c), 0xFF)#define	ishexnumber(c)	__istype((c), _X)#define	isideogram(c)	__istype((c), _I)#define	isnumber(c)	__istype((c), _D)#define isphonogram(c)  __istype((c), _Q)#define	isrune(c)	__istype((c), 0xFFFFFF00L)#define isspecial(c)    __istype((c), _T)#endif/* See comments in <machine/ansi.h> about _BSD_CT_RUNE_T_. */__BEGIN_DECLSunsigned long	___runetype __P((_BSD_CT_RUNE_T_));_BSD_CT_RUNE_T_	___tolower __P((_BSD_CT_RUNE_T_));_BSD_CT_RUNE_T_	___toupper __P((_BSD_CT_RUNE_T_));__END_DECLS/* * _EXTERNALIZE_CTYPE_INLINES_ is defined in locale/nomacros.c to tell us * to generate code for extern versions of all our inline functions. */#ifdef _EXTERNALIZE_CTYPE_INLINES_#define	_USE_CTYPE_INLINE_#define	static#define	__inline#endif/* * Use inline functions if we are allowed to and the compiler supports them. */#if !defined(_DONT_USE_CTYPE_INLINE_) && \    (defined(_USE_CTYPE_INLINE_) || defined(__GNUC__) || defined(__cplusplus))static __inline int__istype(_BSD_CT_RUNE_T_ _c, unsigned long _f){	return (_c < 0 || _c >= _CACHED_RUNES) ? !!(___runetype(_c) & _f) :	       !!(_CurrentRuneLocale->runetype[_c] & _f);}static __inline int__isctype(_BSD_CT_RUNE_T_ _c, unsigned long _f){	return (_c < 0 || _c >= _CACHED_RUNES) ? 0 :	       !!(_DefaultRuneLocale.runetype[_c] & _f);}static __inline _BSD_CT_RUNE_T___toupper(_BSD_CT_RUNE_T_ _c){	return (_c < 0 || _c >= _CACHED_RUNES) ? ___toupper(_c) :	       _CurrentRuneLocale->mapupper[_c];}static __inline _BSD_CT_RUNE_T___tolower(_BSD_CT_RUNE_T_ _c){	return (_c < 0 || _c >= _CACHED_RUNES) ? ___tolower(_c) :	       _CurrentRuneLocale->maplower[_c];}#else /* not using inlines */__BEGIN_DECLSint		__istype __P((_BSD_CT_RUNE_T_, unsigned long));int		__isctype __P((_BSD_CT_RUNE_T_, unsigned long));_BSD_CT_RUNE_T_	__toupper __P((_BSD_CT_RUNE_T_));_BSD_CT_RUNE_T_	__tolower __P((_BSD_CT_RUNE_T_));__END_DECLS#endif /* using inlines */#endif /* !_CTYPE_H_ */

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?