wctype.h
1 /*- 2 * Copyright (c)1999 Citrus Project, 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 1. Redistributions of source code must retain the above copyright 9 * notice, this list of conditions and the following disclaimer. 10 * 2. Redistributions in binary form must reproduce the above copyright 11 * notice, this list of conditions and the following disclaimer in the 12 * documentation and/or other materials provided with the distribution. 13 * 14 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 15 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 16 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 17 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 18 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 19 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 20 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 21 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 22 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 23 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 24 * SUCH DAMAGE. 25 * 26 * citrus Id: wctype.h,v 1.4 2000/12/21 01:50:21 itojun Exp 27 * $NetBSD: wctype.h,v 1.3 2000/12/22 14:16:16 itojun Exp $ 28 * $FreeBSD: /repoman/r/ncvs/src/include/wctype.h,v 1.10 2002/08/21 16:19:55 mike Exp $ 29 */ 30 31 #ifndef _WCTYPE_H_ 32 #define _WCTYPE_H_ 33 34 #include <sys/cdefs.h> 35 #include <_types.h> 36 #include <_types/_wctrans_t.h> 37 38 #define __DARWIN_WCTYPE_TOP_inline __header_inline 39 40 #include <_wctype.h> 41 #include <ctype.h> 42 43 /* 44 * Use inline functions if we are allowed to and the compiler supports them. 45 */ 46 #if !defined(_DONT_USE_CTYPE_INLINE_) && \ 47 (defined(_USE_CTYPE_INLINE_) || defined(__GNUC__) || defined(__cplusplus)) 48 49 __DARWIN_WCTYPE_TOP_inline int 50 iswblank(wint_t _wc) 51 { 52 return (__istype(_wc, _CTYPE_B)); 53 } 54 55 #if !defined(_ANSI_SOURCE) 56 __DARWIN_WCTYPE_TOP_inline int 57 iswascii(wint_t _wc) 58 { 59 return ((_wc & ~0x7F) == 0); 60 } 61 62 __DARWIN_WCTYPE_TOP_inline int 63 iswhexnumber(wint_t _wc) 64 { 65 return (__istype(_wc, _CTYPE_X)); 66 } 67 68 __DARWIN_WCTYPE_TOP_inline int 69 iswideogram(wint_t _wc) 70 { 71 return (__istype(_wc, _CTYPE_I)); 72 } 73 74 __DARWIN_WCTYPE_TOP_inline int 75 iswnumber(wint_t _wc) 76 { 77 return (__istype(_wc, _CTYPE_D)); 78 } 79 80 __DARWIN_WCTYPE_TOP_inline int 81 iswphonogram(wint_t _wc) 82 { 83 return (__istype(_wc, _CTYPE_Q)); 84 } 85 86 __DARWIN_WCTYPE_TOP_inline int 87 iswrune(wint_t _wc) 88 { 89 return (__istype(_wc, 0xFFFFFFF0L)); 90 } 91 92 __DARWIN_WCTYPE_TOP_inline int 93 iswspecial(wint_t _wc) 94 { 95 return (__istype(_wc, _CTYPE_T)); 96 } 97 #endif /* !_ANSI_SOURCE */ 98 99 #else /* not using inlines */ 100 101 __BEGIN_DECLS 102 int iswblank(wint_t); 103 104 #if !defined(_ANSI_SOURCE) 105 wint_t iswascii(wint_t); 106 wint_t iswhexnumber(wint_t); 107 wint_t iswideogram(wint_t); 108 wint_t iswnumber(wint_t); 109 wint_t iswphonogram(wint_t); 110 wint_t iswrune(wint_t); 111 wint_t iswspecial(wint_t); 112 #endif 113 __END_DECLS 114 115 #endif /* using inlines */ 116 117 __BEGIN_DECLS 118 #if !defined(_ANSI_SOURCE) && (!defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)) 119 wint_t nextwctype(wint_t, wctype_t); 120 #endif 121 wint_t towctrans(wint_t, wctrans_t); 122 wctrans_t 123 wctrans(const char *); 124 __END_DECLS 125 126 #ifdef _USE_EXTENDED_LOCALES_ 127 #include <xlocale/_wctype.h> 128 #endif /* _USE_EXTENDED_LOCALES_ */ 129 130 #endif /* _WCTYPE_H_ */