]> git.ipfire.org Git - thirdparty/gcc.git/blame - libstdc++-v3/config/os/newlib/bits/ctype_inline.h
* texinfo: Remove directory from GCC.
[thirdparty/gcc.git] / libstdc++-v3 / config / os / newlib / bits / ctype_inline.h
CommitLineData
c81a475f
BK
1// Locale support -*- C++ -*-
2
3// Copyright (C) 2000 Free Software Foundation, Inc.
4//
5// This file is part of the GNU ISO C++ Library. This library is free
6// software; you can redistribute it and/or modify it under the
7// terms of the GNU General Public License as published by the
8// Free Software Foundation; either version 2, or (at your option)
9// any later version.
10
11// This library is distributed in the hope that it will be useful,
12// but WITHOUT ANY WARRANTY; without even the implied warranty of
13// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14// GNU General Public License for more details.
15
16// You should have received a copy of the GNU General Public License along
17// with this library; see the file COPYING. If not, write to the Free
18// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
19// USA.
20
21// As a special exception, you may use this file as part of a free software
22// library without restriction. Specifically, if other files instantiate
23// templates or use macros or inline functions from this file, or you compile
24// this file and link it with other files to produce an executable, this
25// file does not by itself cause the resulting executable to be covered by
26// the GNU General Public License. This exception does not however
27// invalidate any other reasons why the executable file might be covered by
28// the GNU General Public License.
29
30//
31// ISO C++ 14882: 22.1 Locales
32//
33
34// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*)
35// functions go in ctype.cc
36
37 bool
38 ctype<char>::
0c3a231d 39 is(mask __m, char __c) const
c81a475f
BK
40 { return (_M_table + 1)[(unsigned char)(__c)] & __m; }
41
42 const char*
43 ctype<char>::
0c3a231d 44 is(const char* __low, const char* __high, mask* __vec) const
c81a475f 45 {
d9ab8adb
BK
46 const int __bitmasksize = sizeof(mask) * 8;
47 for (;__low < __high; ++__vec, ++__low)
48 {
49 mask __m = _M_table[*__low];
50 int __i = 0; // Lowest bitmask with newlib, 1 << 0 == 01
51 while (__i < __bitmasksize && !(__m & static_cast<mask>(1 << __i)))
52 ++__i;
53 *__vec = static_cast<mask>(1 << __i);
54 }
c81a475f
BK
55 return __high;
56 }
57
58 const char*
59 ctype<char>::
0c3a231d 60 scan_is(mask __m, const char* __low, const char* __high) const
c81a475f
BK
61 {
62 while (__low < __high && !((_M_table + 1)[(unsigned char)(*__low)] & __m))
63 ++__low;
64 return __low;
65 }
66
67 const char*
68 ctype<char>::
0c3a231d 69 scan_not(mask __m, const char* __low, const char* __high) const
c81a475f
BK
70 {
71 while (__low < __high
72 && ((_M_table + 1)[(unsigned char)(*__low)] & __m) != 0)
73 ++__low;
74 return __low;
75 }
76
77
78
79
80