zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

ctype.h (4682B) - Raw


      1 /*-
      2  * SPDX-License-Identifier: BSD-3-Clause
      3  *
      4  * Copyright (c) 1989, 1993
      5  *	The Regents of the University of California.  All rights reserved.
      6  * (c) UNIX System Laboratories, Inc.
      7  * All or some portions of this file are derived from material licensed
      8  * to the University of California by American Telephone and Telegraph
      9  * Co. or Unix System Laboratories, Inc. and are reproduced herein with
     10  * the permission of UNIX System Laboratories, Inc.
     11  *
     12  * This code is derived from software contributed to Berkeley by
     13  * Paul Borman at Krystal Technologies.
     14  *
     15  * Redistribution and use in source and binary forms, with or without
     16  * modification, are permitted provided that the following conditions
     17  * are met:
     18  * 1. Redistributions of source code must retain the above copyright
     19  *    notice, this list of conditions and the following disclaimer.
     20  * 2. Redistributions in binary form must reproduce the above copyright
     21  *    notice, this list of conditions and the following disclaimer in the
     22  *    documentation and/or other materials provided with the distribution.
     23  * 3. Neither the name of the University nor the names of its contributors
     24  *    may be used to endorse or promote products derived from this software
     25  *    without specific prior written permission.
     26  *
     27  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
     28  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
     29  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
     30  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
     31  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
     32  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
     33  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
     34  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
     35  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
     36  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
     37  * SUCH DAMAGE.
     38  *
     39  *	@(#)ctype.h	8.4 (Berkeley) 1/21/94
     40  */
     41 
     42 #ifndef _CTYPE_H_
     43 #define	_CTYPE_H_
     44 
     45 #include <sys/cdefs.h>
     46 #include <sys/_types.h>
     47 #include <_ctype.h>
     48 
     49 __BEGIN_DECLS
     50 int	isalnum(int);
     51 int	isalpha(int);
     52 int	iscntrl(int);
     53 int	isdigit(int);
     54 int	isgraph(int);
     55 int	islower(int);
     56 int	isprint(int);
     57 int	ispunct(int);
     58 int	isspace(int);
     59 int	isupper(int);
     60 int	isxdigit(int);
     61 int	tolower(int);
     62 int	toupper(int);
     63 
     64 #if __XSI_VISIBLE
     65 int	isascii(int);
     66 int	toascii(int);
     67 #endif
     68 
     69 #if __ISO_C_VISIBLE >= 1999
     70 int	isblank(int);
     71 #endif
     72 
     73 #if __BSD_VISIBLE
     74 int	digittoint(int);
     75 int	ishexnumber(int);
     76 int	isideogram(int);
     77 int	isnumber(int);
     78 int	isphonogram(int);
     79 int	isrune(int);
     80 int	isspecial(int);
     81 #endif
     82 
     83 #if __POSIX_VISIBLE >= 200809 || defined(_XLOCALE_H_)
     84 #include <xlocale/_ctype.h>
     85 #endif
     86 __END_DECLS
     87 
     88 #ifndef __cplusplus
     89 #define	isalnum(c)	__sbistype((c), _CTYPE_A|_CTYPE_D|_CTYPE_N)
     90 #define	isalpha(c)	__sbistype((c), _CTYPE_A)
     91 #define	iscntrl(c)	__sbistype((c), _CTYPE_C)
     92 #define	isdigit(c)	__sbistype((c), _CTYPE_D)
     93 #define	isgraph(c)	__sbistype((c), _CTYPE_G)
     94 #define	islower(c)	__sbistype((c), _CTYPE_L)
     95 #define	isprint(c)	__sbistype((c), _CTYPE_R)
     96 #define	ispunct(c)	__sbistype((c), _CTYPE_P)
     97 #define	isspace(c)	__sbistype((c), _CTYPE_S)
     98 #define	isupper(c)	__sbistype((c), _CTYPE_U)
     99 #define	isxdigit(c)	__sbistype((c), _CTYPE_X)
    100 #define	tolower(c)	__sbtolower(c)
    101 #define	toupper(c)	__sbtoupper(c)
    102 #endif /* !__cplusplus */
    103 
    104 #if __XSI_VISIBLE
    105 /*
    106  * POSIX.1-2001 specifies _tolower() and _toupper() to be macros equivalent to
    107  * tolower() and toupper() respectively, minus extra checking to ensure that
    108  * the argument is a lower or uppercase letter respectively.  We've chosen to
    109  * implement these macros with the same error checking as tolower() and
    110  * toupper() since this doesn't violate the specification itself, only its
    111  * intent.  We purposely leave _tolower() and _toupper() undocumented to
    112  * discourage their use.
    113  *
    114  * XXX isascii() and toascii() should similarly be undocumented.
    115  */
    116 #define	_tolower(c)	__sbtolower(c)
    117 #define	_toupper(c)	__sbtoupper(c)
    118 #define	isascii(c)	(((c) & ~0x7F) == 0)
    119 #define	toascii(c)	((c) & 0x7F)
    120 #endif
    121 
    122 #if __ISO_C_VISIBLE >= 1999 && !defined(__cplusplus)
    123 #define	isblank(c)	__sbistype((c), _CTYPE_B)
    124 #endif
    125 
    126 #if __BSD_VISIBLE
    127 #define	digittoint(c)	__sbmaskrune((c), 0xFF)
    128 #define	ishexnumber(c)	__sbistype((c), _CTYPE_X)
    129 #define	isideogram(c)	__sbistype((c), _CTYPE_I)
    130 #define	isnumber(c)	__sbistype((c), _CTYPE_D|_CTYPE_N)
    131 #define	isphonogram(c)	__sbistype((c), _CTYPE_Q)
    132 #define	isrune(c)	__sbistype((c), 0xFFFFFF00L)
    133 #define	isspecial(c)	__sbistype((c), _CTYPE_T)
    134 #endif
    135 
    136 #endif /* !_CTYPE_H_ */