LCOV - code coverage report
Current view: top level - usr/include - ctype.h (source / functions) Hit Total Coverage
Test: coverage.info Lines: 5 12 41.7 %
Date: 2016-06-14 17:26:59 Functions: 4 10 40.0 %

          Line data    Source code
       1             : /*
       2             :  * Copyright (c) 2000, 2005, 2008 Apple Inc. All rights reserved.
       3             :  *
       4             :  * @APPLE_LICENSE_HEADER_START@
       5             :  * 
       6             :  * This file contains Original Code and/or Modifications of Original Code
       7             :  * as defined in and that are subject to the Apple Public Source License
       8             :  * Version 2.0 (the 'License'). You may not use this file except in
       9             :  * compliance with the License. Please obtain a copy of the License at
      10             :  * http://www.opensource.apple.com/apsl/ and read it before using this
      11             :  * file.
      12             :  * 
      13             :  * The Original Code and all software distributed under the License are
      14             :  * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
      15             :  * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
      16             :  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
      17             :  * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
      18             :  * Please see the License for the specific language governing rights and
      19             :  * limitations under the License.
      20             :  * 
      21             :  * @APPLE_LICENSE_HEADER_END@
      22             :  */
      23             : /*
      24             :  * Copyright (c) 1989, 1993
      25             :  *      The Regents of the University of California.  All rights reserved.
      26             :  * (c) UNIX System Laboratories, Inc.
      27             :  * All or some portions of this file are derived from material licensed
      28             :  * to the University of California by American Telephone and Telegraph
      29             :  * Co. or Unix System Laboratories, Inc. and are reproduced herein with
      30             :  * the permission of UNIX System Laboratories, Inc.
      31             :  *
      32             :  * This code is derived from software contributed to Berkeley by
      33             :  * Paul Borman at Krystal Technologies.
      34             :  *
      35             :  * Redistribution and use in source and binary forms, with or without
      36             :  * modification, are permitted provided that the following conditions
      37             :  * are met:
      38             :  * 1. Redistributions of source code must retain the above copyright
      39             :  *    notice, this list of conditions and the following disclaimer.
      40             :  * 2. Redistributions in binary form must reproduce the above copyright
      41             :  *    notice, this list of conditions and the following disclaimer in the
      42             :  *    documentation and/or other materials provided with the distribution.
      43             :  * 3. All advertising materials mentioning features or use of this software
      44             :  *    must display the following acknowledgement:
      45             :  *      This product includes software developed by the University of
      46             :  *      California, Berkeley and its contributors.
      47             :  * 4. Neither the name of the University nor the names of its contributors
      48             :  *    may be used to endorse or promote products derived from this software
      49             :  *    without specific prior written permission.
      50             :  *
      51             :  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
      52             :  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
      53             :  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
      54             :  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
      55             :  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
      56             :  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
      57             :  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
      58             :  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
      59             :  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
      60             :  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
      61             :  * SUCH DAMAGE.
      62             :  *
      63             :  *      @(#)ctype.h     8.4 (Berkeley) 1/21/94
      64             :  */
      65             : 
      66             : #ifndef _CTYPE_H_
      67             : #define _CTYPE_H_
      68             : 
      69             : #include <sys/cdefs.h>
      70             : #include <runetype.h>
      71             : 
      72             : #define _CTYPE_A        0x00000100L             /* Alpha */
      73             : #define _CTYPE_C        0x00000200L             /* Control */
      74             : #define _CTYPE_D        0x00000400L             /* Digit */
      75             : #define _CTYPE_G        0x00000800L             /* Graph */
      76             : #define _CTYPE_L        0x00001000L             /* Lower */
      77             : #define _CTYPE_P        0x00002000L             /* Punct */
      78             : #define _CTYPE_S        0x00004000L             /* Space */
      79             : #define _CTYPE_U        0x00008000L             /* Upper */
      80             : #define _CTYPE_X        0x00010000L             /* X digit */
      81             : #define _CTYPE_B        0x00020000L             /* Blank */
      82             : #define _CTYPE_R        0x00040000L             /* Print */
      83             : #define _CTYPE_I        0x00080000L             /* Ideogram */
      84             : #define _CTYPE_T        0x00100000L             /* Special */
      85             : #define _CTYPE_Q        0x00200000L             /* Phonogram */
      86             : #define _CTYPE_SW0      0x20000000L             /* 0 width character */
      87             : #define _CTYPE_SW1      0x40000000L             /* 1 width character */
      88             : #define _CTYPE_SW2      0x80000000L             /* 2 width character */
      89             : #define _CTYPE_SW3      0xc0000000L             /* 3 width character */
      90             : #define _CTYPE_SWM      0xe0000000L             /* Mask for screen width data */
      91             : #define _CTYPE_SWS      30                      /* Bits to shift to get width */
      92             : 
      93             : #ifdef _NONSTD_SOURCE
      94             : /*
      95             :  * Backward compatibility
      96             :  */
      97             : #define _A              _CTYPE_A                /* Alpha */
      98             : #define _C              _CTYPE_C                /* Control */
      99             : #define _D              _CTYPE_D                /* Digit */
     100             : #define _G              _CTYPE_G                /* Graph */
     101             : #define _L              _CTYPE_L                /* Lower */
     102             : #define _P              _CTYPE_P                /* Punct */
     103             : #define _S              _CTYPE_S                /* Space */
     104             : #define _U              _CTYPE_U                /* Upper */
     105             : #define _X              _CTYPE_X                /* X digit */
     106             : #define _B              _CTYPE_B                /* Blank */
     107             : #define _R              _CTYPE_R                /* Print */
     108             : #define _I              _CTYPE_I                /* Ideogram */
     109             : #define _T              _CTYPE_T                /* Special */
     110             : #define _Q              _CTYPE_Q                /* Phonogram */
     111             : #define _SW0            _CTYPE_SW0              /* 0 width character */
     112             : #define _SW1            _CTYPE_SW1              /* 1 width character */
     113             : #define _SW2            _CTYPE_SW2              /* 2 width character */
     114             : #define _SW3            _CTYPE_SW3              /* 3 width character */
     115             : #endif /* _NONSTD_SOURCE */
     116             : 
     117             : #define __DARWIN_CTYPE_inline           __header_inline
     118             : 
     119             : #define __DARWIN_CTYPE_TOP_inline       __header_inline
     120             : 
     121             : /*
     122             :  * Use inline functions if we are allowed to and the compiler supports them.
     123             :  */
     124             : #if !defined(_DONT_USE_CTYPE_INLINE_) && \
     125             :     (defined(_USE_CTYPE_INLINE_) || defined(__GNUC__) || defined(__cplusplus))
     126             : 
     127             : /* See comments in <machine/_type.h> about __darwin_ct_rune_t. */
     128             : __BEGIN_DECLS
     129             : unsigned long           ___runetype(__darwin_ct_rune_t);
     130             : __darwin_ct_rune_t      ___tolower(__darwin_ct_rune_t);
     131             : __darwin_ct_rune_t      ___toupper(__darwin_ct_rune_t);
     132             : __END_DECLS
     133             : 
     134             : __DARWIN_CTYPE_TOP_inline int
     135             : isascii(int _c)
     136             : {
     137      221160 :         return ((_c & ~0x7F) == 0);
     138             : }
     139             : 
     140             : #ifdef USE_ASCII
     141             : __DARWIN_CTYPE_inline int
     142             : __maskrune(__darwin_ct_rune_t _c, unsigned long _f)
     143             : {
     144             :         return (int)_DefaultRuneLocale.__runetype[_c & 0xff] & (__uint32_t)_f;
     145             : }
     146             : #else /* !USE_ASCII */
     147             : __BEGIN_DECLS
     148             : int                     __maskrune(__darwin_ct_rune_t, unsigned long);
     149             : __END_DECLS
     150             : #endif /* USE_ASCII */
     151             : 
     152             : __DARWIN_CTYPE_inline int
     153             : __istype(__darwin_ct_rune_t _c, unsigned long _f)
     154             : {
     155             : #ifdef USE_ASCII
     156             :         return !!(__maskrune(_c, _f));
     157             : #else /* USE_ASCII */
     158           0 :         return (isascii(_c) ? !!(_DefaultRuneLocale.__runetype[_c] & _f)
     159           0 :                 : !!__maskrune(_c, _f));
     160             : #endif /* USE_ASCII */
     161             : }
     162             : 
     163             : __DARWIN_CTYPE_inline __darwin_ct_rune_t
     164             : __isctype(__darwin_ct_rune_t _c, unsigned long _f)
     165             : {
     166             : #ifdef USE_ASCII
     167             :         return !!(__maskrune(_c, _f));
     168             : #else /* USE_ASCII */
     169        1152 :         return (_c < 0 || _c >= _CACHED_RUNES) ? 0 :
     170         288 :                 !!(_DefaultRuneLocale.__runetype[_c] & _f);
     171             : #endif /* USE_ASCII */
     172             : }
     173             : 
     174             : #ifdef USE_ASCII
     175             : __DARWIN_CTYPE_inline __darwin_ct_rune_t
     176             : __toupper(__darwin_ct_rune_t _c)
     177             : {
     178             :         return _DefaultRuneLocale.__mapupper[_c & 0xff];
     179             : }
     180             : 
     181             : __DARWIN_CTYPE_inline __darwin_ct_rune_t
     182             : __tolower(__darwin_ct_rune_t _c)
     183             : {
     184             :         return _DefaultRuneLocale.__maplower[_c & 0xff];
     185             : }
     186             : #else /* !USE_ASCII */
     187             : __BEGIN_DECLS
     188             : __darwin_ct_rune_t      __toupper(__darwin_ct_rune_t);
     189             : __darwin_ct_rune_t      __tolower(__darwin_ct_rune_t);
     190             : __END_DECLS
     191             : #endif /* USE_ASCII */
     192             : 
     193             : __DARWIN_CTYPE_inline int
     194             : __wcwidth(__darwin_ct_rune_t _c)
     195             : {
     196             :         unsigned int _x;
     197             : 
     198             :         if (_c == 0)
     199             :                 return (0);
     200             :         _x = (unsigned int)__maskrune(_c, _CTYPE_SWM|_CTYPE_R);
     201             :         if ((_x & _CTYPE_SWM) != 0)
     202             :                 return ((_x & _CTYPE_SWM) >> _CTYPE_SWS);
     203             :         return ((_x & _CTYPE_R) != 0 ? 1 : -1);
     204             : }
     205             : 
     206             : #ifndef _EXTERNALIZE_CTYPE_INLINES_
     207             : 
     208             : #define _tolower(c)     __tolower(c)
     209             : #define _toupper(c)     __toupper(c)
     210             : 
     211             : __DARWIN_CTYPE_TOP_inline int
     212             : isalnum(int _c)
     213             : {
     214           0 :         return (__istype(_c, _CTYPE_A|_CTYPE_D));
     215             : }
     216             : 
     217             : __DARWIN_CTYPE_TOP_inline int
     218             : isalpha(int _c)
     219             : {
     220           0 :         return (__istype(_c, _CTYPE_A));
     221             : }
     222             : 
     223             : __DARWIN_CTYPE_TOP_inline int
     224             : isblank(int _c)
     225             : {
     226             :         return (__istype(_c, _CTYPE_B));
     227             : }
     228             : 
     229             : __DARWIN_CTYPE_TOP_inline int
     230             : iscntrl(int _c)
     231             : {
     232             :         return (__istype(_c, _CTYPE_C));
     233             : }
     234             : 
     235             : /* ANSI -- locale independent */
     236             : __DARWIN_CTYPE_TOP_inline int
     237             : isdigit(int _c)
     238             : {
     239         576 :         return (__isctype(_c, _CTYPE_D));
     240             : }
     241             : 
     242             : __DARWIN_CTYPE_TOP_inline int
     243             : isgraph(int _c)
     244             : {
     245             :         return (__istype(_c, _CTYPE_G));
     246             : }
     247             : 
     248             : __DARWIN_CTYPE_TOP_inline int
     249             : islower(int _c)
     250             : {
     251             :         return (__istype(_c, _CTYPE_L));
     252             : }
     253             : 
     254             : __DARWIN_CTYPE_TOP_inline int
     255             : isprint(int _c)
     256             : {
     257           0 :         return (__istype(_c, _CTYPE_R));
     258             : }
     259             : 
     260             : __DARWIN_CTYPE_TOP_inline int
     261             : ispunct(int _c)
     262             : {
     263             :         return (__istype(_c, _CTYPE_P));
     264             : }
     265             : 
     266             : __DARWIN_CTYPE_TOP_inline int
     267             : isspace(int _c)
     268             : {
     269             :         return (__istype(_c, _CTYPE_S));
     270             : }
     271             : 
     272             : __DARWIN_CTYPE_TOP_inline int
     273             : isupper(int _c)
     274             : {
     275           0 :         return (__istype(_c, _CTYPE_U));
     276             : }
     277             : 
     278             : /* ANSI -- locale independent */
     279             : __DARWIN_CTYPE_TOP_inline int
     280             : isxdigit(int _c)
     281             : {
     282             :         return (__isctype(_c, _CTYPE_X));
     283             : }
     284             : 
     285             : __DARWIN_CTYPE_TOP_inline int
     286             : toascii(int _c)
     287             : {
     288             :         return (_c & 0x7F);
     289             : }
     290             : 
     291             : __DARWIN_CTYPE_TOP_inline int
     292             : tolower(int _c)
     293             : {
     294           0 :         return (__tolower(_c));
     295             : }
     296             : 
     297             : __DARWIN_CTYPE_TOP_inline int
     298             : toupper(int _c)
     299             : {
     300           4 :         return (__toupper(_c));
     301             : }
     302             : 
     303             : #if !defined(_ANSI_SOURCE) && (!defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE))
     304             : __DARWIN_CTYPE_TOP_inline int
     305             : digittoint(int _c)
     306             : {
     307             :         return (__maskrune(_c, 0x0F));
     308             : }
     309             : 
     310             : __DARWIN_CTYPE_TOP_inline int
     311             : ishexnumber(int _c)
     312             : {
     313             :         return (__istype(_c, _CTYPE_X));
     314             : }
     315             : 
     316             : __DARWIN_CTYPE_TOP_inline int
     317             : isideogram(int _c)
     318             : {
     319             :         return (__istype(_c, _CTYPE_I));
     320             : }
     321             : 
     322             : __DARWIN_CTYPE_TOP_inline int
     323             : isnumber(int _c)
     324             : {
     325             :         return (__istype(_c, _CTYPE_D));
     326             : }
     327             : 
     328             : __DARWIN_CTYPE_TOP_inline int
     329             : isphonogram(int _c)
     330             : {
     331             :         return (__istype(_c, _CTYPE_Q));
     332             : }
     333             : 
     334             : __DARWIN_CTYPE_TOP_inline int
     335             : isrune(int _c)
     336             : {
     337             :         return (__istype(_c, 0xFFFFFFF0L));
     338             : }
     339             : 
     340             : __DARWIN_CTYPE_TOP_inline int
     341             : isspecial(int _c)
     342             : {
     343             :         return (__istype(_c, _CTYPE_T));
     344             : }
     345             : #endif /* !_ANSI_SOURCE && (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */
     346             : #endif /* _EXTERNALIZE_CTYPE_INLINES_ */
     347             : 
     348             : #else /* not using inlines */
     349             : 
     350             : __BEGIN_DECLS
     351             : int     isalnum(int);
     352             : int     isalpha(int);
     353             : int     isblank(int);
     354             : int     iscntrl(int);
     355             : int     isdigit(int);
     356             : int     isgraph(int);
     357             : int     islower(int);
     358             : int     isprint(int);
     359             : int     ispunct(int);
     360             : int     isspace(int);
     361             : int     isupper(int);
     362             : int     isxdigit(int);
     363             : int     tolower(int);
     364             : int     toupper(int);
     365             : int     isascii(int);
     366             : int     toascii(int);
     367             : 
     368             : #if !defined(_ANSI_SOURCE) && (!defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE))
     369             : int     _tolower(int);
     370             : int     _toupper(int);
     371             : int     digittoint(int);
     372             : int     ishexnumber(int);
     373             : int     isideogram(int);
     374             : int     isnumber(int);
     375             : int     isphonogram(int);
     376             : int     isrune(int);
     377             : int     isspecial(int);
     378             : #endif
     379             : __END_DECLS
     380             : 
     381             : #endif /* using inlines */
     382             : 
     383             : #ifdef _USE_EXTENDED_LOCALES_
     384             : #include <xlocale/_ctype.h>
     385             : #endif /* _USE_EXTENDED_LOCALES_ */
     386             : 
     387             : #endif /* !_CTYPE_H_ */

Generated by: LCOV version 1.11