LCOV - code coverage report
Current view: top level - usr/include - runetype.h (source / functions) Hit Total Coverage
Test: rapport Lines: 4 5 80.0 %
Date: 2021-12-10 16:22:55 Functions: 1 1 100.0 %
Branches: 1 2 50.0 %

           Branch data     Line data    Source code
       1                 :            : /*-
       2                 :            :  * SPDX-License-Identifier: BSD-3-Clause
       3                 :            :  *
       4                 :            :  * Copyright (c) 1993
       5                 :            :  *      The Regents of the University of California.  All rights reserved.
       6                 :            :  *
       7                 :            :  * This code is derived from software contributed to Berkeley by
       8                 :            :  * Paul Borman at Krystal Technologies.
       9                 :            :  *
      10                 :            :  * Redistribution and use in source and binary forms, with or without
      11                 :            :  * modification, are permitted provided that the following conditions
      12                 :            :  * are met:
      13                 :            :  * 1. Redistributions of source code must retain the above copyright
      14                 :            :  *    notice, this list of conditions and the following disclaimer.
      15                 :            :  * 2. Redistributions in binary form must reproduce the above copyright
      16                 :            :  *    notice, this list of conditions and the following disclaimer in the
      17                 :            :  *    documentation and/or other materials provided with the distribution.
      18                 :            :  * 3. Neither the name of the University nor the names of its contributors
      19                 :            :  *    may be used to endorse or promote products derived from this software
      20                 :            :  *    without specific prior written permission.
      21                 :            :  *
      22                 :            :  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
      23                 :            :  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
      24                 :            :  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
      25                 :            :  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
      26                 :            :  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
      27                 :            :  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
      28                 :            :  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
      29                 :            :  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
      30                 :            :  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
      31                 :            :  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
      32                 :            :  * SUCH DAMAGE.
      33                 :            :  *
      34                 :            :  *      @(#)runetype.h  8.1 (Berkeley) 6/2/93
      35                 :            :  * $FreeBSD$
      36                 :            :  */
      37                 :            : 
      38                 :            : #ifndef _RUNETYPE_H_
      39                 :            : #define _RUNETYPE_H_
      40                 :            : 
      41                 :            : #include <sys/cdefs.h>
      42                 :            : #include <sys/_types.h>
      43                 :            : 
      44                 :            : #define _CACHED_RUNES   (1 <<8 )  /* Must be a power of 2 */
      45                 :            : #define _CRMASK         (~(_CACHED_RUNES - 1))
      46                 :            : 
      47                 :            : /*
      48                 :            :  * The lower 8 bits of runetype[] contain the digit value of the rune.
      49                 :            :  */
      50                 :            : typedef struct {
      51                 :            :         __rune_t        __min;          /* First rune of the range */
      52                 :            :         __rune_t        __max;          /* Last rune (inclusive) of the range */
      53                 :            :         __rune_t        __map;          /* What first maps to in maps */
      54                 :            :         unsigned long   *__types;       /* Array of types in range */
      55                 :            : } _RuneEntry;
      56                 :            : 
      57                 :            : typedef struct {
      58                 :            :         int             __nranges;      /* Number of ranges stored */
      59                 :            :         _RuneEntry      *__ranges;      /* Pointer to the ranges */
      60                 :            : } _RuneRange;
      61                 :            : 
      62                 :            : typedef struct {
      63                 :            :         char            __magic[8];     /* Magic saying what version we are */
      64                 :            :         char            __encoding[32]; /* ASCII name of this encoding */
      65                 :            : 
      66                 :            :         __rune_t        (*__sgetrune)(const char *, __size_t, char const **);
      67                 :            :         int             (*__sputrune)(__rune_t, char *, __size_t, char **);
      68                 :            :         __rune_t        __invalid_rune;
      69                 :            : 
      70                 :            :         unsigned long   __runetype[_CACHED_RUNES];
      71                 :            :         __rune_t        __maplower[_CACHED_RUNES];
      72                 :            :         __rune_t        __mapupper[_CACHED_RUNES];
      73                 :            : 
      74                 :            :         /*
      75                 :            :          * The following are to deal with Runes larger than _CACHED_RUNES - 1.
      76                 :            :          * Their data is actually contiguous with this structure so as to make
      77                 :            :          * it easier to read/write from/to disk.
      78                 :            :          */
      79                 :            :         _RuneRange      __runetype_ext;
      80                 :            :         _RuneRange      __maplower_ext;
      81                 :            :         _RuneRange      __mapupper_ext;
      82                 :            : 
      83                 :            :         void            *__variable;    /* Data which depends on the encoding */
      84                 :            :         int             __variable_len; /* how long that data is */
      85                 :            : } _RuneLocale;
      86                 :            : 
      87                 :            : #define _RUNE_MAGIC_1   "RuneMagi"    /* Indicates version 0 of RuneLocale */
      88                 :            : __BEGIN_DECLS
      89                 :            : extern const _RuneLocale _DefaultRuneLocale;
      90                 :            : extern const _RuneLocale *_CurrentRuneLocale;
      91                 :            : #ifdef __RUNETYPE_INTERNAL
      92                 :            : extern const _RuneLocale *__getCurrentRuneLocale(void);
      93                 :            : #else
      94                 :            : extern _Thread_local const _RuneLocale *_ThreadRuneLocale;
      95                 :   21020808 : static __inline const _RuneLocale *__getCurrentRuneLocale(void)
      96                 :            : {
      97                 :            : 
      98         [ -  + ]:   21020808 :         if (_ThreadRuneLocale) 
      99                 :          0 :                 return _ThreadRuneLocale;
     100                 :   21020808 :         return _CurrentRuneLocale;
     101                 :   21020808 : }
     102                 :            : #endif /*__RUNETYPE_INTERNAL */
     103                 :            : #define _CurrentRuneLocale (__getCurrentRuneLocale())
     104                 :            : __END_DECLS
     105                 :            : 
     106                 :            : #endif  /* !_RUNETYPE_H_ */

Generated by: LCOV version 1.15