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 */ 27 28/* 29 * Common header for wctype.h and wchar.h 30 * 31 * Contains everything required by wctype.h except: 32 * 33 * #include <_types/_wctrans_t.h> 34 * int iswblank(wint_t); 35 * wint_t towctrans(wint_t, wctrans_t); 36 * wctrans_t wctrans(const char *); 37 */ 38 39#ifndef __WCTYPE_H_ 40#define __WCTYPE_H_ 41 42#include <sys/cdefs.h> 43#include <_types.h> 44 45#include <sys/_types/_wint_t.h> 46#include <sys/_types/_wint_t.h> 47#include <_types/_wctype_t.h> 48 49#ifndef WEOF 50#define WEOF __DARWIN_WEOF 51#endif 52 53#ifndef __DARWIN_WCTYPE_TOP_inline 54#define __DARWIN_WCTYPE_TOP_inline __header_inline 55#endif 56 57#include <ctype.h> 58 59/* 60 * Use inline functions if we are allowed to and the compiler supports them. 61 */ 62#if !defined(_DONT_USE_CTYPE_INLINE_) && \ 63 (defined(_USE_CTYPE_INLINE_) || defined(__GNUC__) || defined(__cplusplus)) 64 65__DARWIN_WCTYPE_TOP_inline int 66iswalnum(wint_t _wc) 67{ 68 return (__istype(_wc, _CTYPE_A|_CTYPE_D)); 69} 70 71__DARWIN_WCTYPE_TOP_inline int 72iswalpha(wint_t _wc) 73{ 74 return (__istype(_wc, _CTYPE_A)); 75} 76 77__DARWIN_WCTYPE_TOP_inline int 78iswcntrl(wint_t _wc) 79{ 80 return (__istype(_wc, _CTYPE_C)); 81} 82 83__DARWIN_WCTYPE_TOP_inline int 84iswctype(wint_t _wc, wctype_t _charclass) 85{ 86 return (__istype(_wc, _charclass)); 87} 88 89__DARWIN_WCTYPE_TOP_inline int 90iswdigit(wint_t _wc) 91{ 92 return (__isctype(_wc, _CTYPE_D)); 93} 94 95__DARWIN_WCTYPE_TOP_inline int 96iswgraph(wint_t _wc) 97{ 98 return (__istype(_wc, _CTYPE_G)); 99} 100 101__DARWIN_WCTYPE_TOP_inline int 102iswlower(wint_t _wc) 103{ 104 return (__istype(_wc, _CTYPE_L)); 105} 106 107__DARWIN_WCTYPE_TOP_inline int 108iswprint(wint_t _wc) 109{ 110 return (__istype(_wc, _CTYPE_R)); 111} 112 113__DARWIN_WCTYPE_TOP_inline int 114iswpunct(wint_t _wc) 115{ 116 return (__istype(_wc, _CTYPE_P)); 117} 118 119__DARWIN_WCTYPE_TOP_inline int 120iswspace(wint_t _wc) 121{ 122 return (__istype(_wc, _CTYPE_S)); 123} 124 125__DARWIN_WCTYPE_TOP_inline int 126iswupper(wint_t _wc) 127{ 128 return (__istype(_wc, _CTYPE_U)); 129} 130 131__DARWIN_WCTYPE_TOP_inline int 132iswxdigit(wint_t _wc) 133{ 134 return (__isctype(_wc, _CTYPE_X)); 135} 136 137__DARWIN_WCTYPE_TOP_inline wint_t 138towlower(wint_t _wc) 139{ 140 return (__tolower(_wc)); 141} 142 143__DARWIN_WCTYPE_TOP_inline wint_t 144towupper(wint_t _wc) 145{ 146 return (__toupper(_wc)); 147} 148 149#else /* not using inlines */ 150 151__BEGIN_DECLS 152int iswalnum(wint_t); 153int iswalpha(wint_t); 154int iswcntrl(wint_t); 155int iswctype(wint_t, wctype_t); 156int iswdigit(wint_t); 157int iswgraph(wint_t); 158int iswlower(wint_t); 159int iswprint(wint_t); 160int iswpunct(wint_t); 161int iswspace(wint_t); 162int iswupper(wint_t); 163int iswxdigit(wint_t); 164wint_t towlower(wint_t); 165wint_t towupper(wint_t); 166__END_DECLS 167 168#endif /* using inlines */ 169 170__BEGIN_DECLS 171wctype_t 172 wctype(const char *); 173__END_DECLS 174 175#ifdef _USE_EXTENDED_LOCALES_ 176#include <xlocale/__wctype.h> 177#endif /* _USE_EXTENDED_LOCALES_ */ 178 179#endif /* __WCTYPE_H_ */ 180