OpenCores
URL https://opencores.org/ocsvn/openrisc_me/openrisc_me/trunk

Subversion Repositories openrisc_me

[/] [openrisc/] [trunk/] [gnu-src/] [gcc-4.5.1/] [libstdc++-v3/] [config/] [os/] [bsd/] [darwin/] [ctype_inline.h] - Blame information for rev 424

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 424 jeremybenn
// Locale support -*- C++ -*-
2
 
3
// Copyright (C) 2000, 2003, 2004, 2009 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 3, 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
// Under Section 7 of GPL version 3, you are granted additional
17
// permissions described in the GCC Runtime Library Exception, version
18
// 3.1, as published by the Free Software Foundation.
19
 
20
// You should have received a copy of the GNU General Public License and
21
// a copy of the GCC Runtime Library Exception along with this program;
22
// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
23
// <http://www.gnu.org/licenses/>.
24
 
25
/** @file ctype_inline.h
26
 *  This is an internal header file, included by other library headers.
27
 *  You should not attempt to use it directly.
28
 */
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
_GLIBCXX_BEGIN_NAMESPACE(std)
38
 
39
  bool
40
  ctype<char>::
41
  is(mask __m, char __c) const
42
  {
43
    if (_M_table)
44
      return _M_table[static_cast<unsigned char>(__c)] & __m;
45
    else
46
      return __istype(__c, __m);
47
  }
48
 
49
  const char*
50
  ctype<char>::
51
  is(const char* __low, const char* __high, mask* __vec) const
52
  {
53
    if (_M_table)
54
      while (__low < __high)
55
        *__vec++ = _M_table[static_cast<unsigned char>(*__low++)];
56
    else
57
      for (;__low < __high; ++__vec, ++__low)
58
        {
59
#if defined (_CTYPE_S) || defined (__istype)
60
          *__vec = __maskrune (*__low, upper | lower | alpha | digit | xdigit
61
                               | space | print | graph | cntrl | punct | alnum);
62
#else
63
          mask __m = 0;
64
          if (this->is(upper, *__low)) __m |= upper;
65
          if (this->is(lower, *__low)) __m |= lower;
66
          if (this->is(alpha, *__low)) __m |= alpha;
67
          if (this->is(digit, *__low)) __m |= digit;
68
          if (this->is(xdigit, *__low)) __m |= xdigit;
69
          if (this->is(space, *__low)) __m |= space;
70
          if (this->is(print, *__low)) __m |= print;
71
          if (this->is(graph, *__low)) __m |= graph;
72
          if (this->is(cntrl, *__low)) __m |= cntrl;
73
          if (this->is(punct, *__low)) __m |= punct;
74
          // Do not include explicit line for alnum mask since it is a
75
          // pure composite of masks on FreeBSD.
76
          *__vec = __m;
77
#endif
78
        }
79
    return __high;
80
  }
81
 
82
  const char*
83
  ctype<char>::
84
  scan_is(mask __m, const char* __low, const char* __high) const
85
  {
86
    if (_M_table)
87
      while (__low < __high
88
             && !(_M_table[static_cast<unsigned char>(*__low)] & __m))
89
        ++__low;
90
    else
91
      while (__low < __high && !this->is(__m, *__low))
92
        ++__low;
93
    return __low;
94
  }
95
 
96
  const char*
97
  ctype<char>::
98
  scan_not(mask __m, const char* __low, const char* __high) const
99
  {
100
    if (_M_table)
101
      while (__low < __high
102
             && (_M_table[static_cast<unsigned char>(*__low)] & __m) != 0)
103
        ++__low;
104
    else
105
      while (__low < __high && this->is(__m, *__low) != 0)
106
        ++__low;
107
    return __low;
108
  }
109
 
110
#ifdef _GLIBCXX_USE_WCHAR_T  
111
  inline bool
112
  ctype<wchar_t>::
113
  do_is(mask __m, wchar_t __c) const
114
  {
115
    return __istype (__c, __m);
116
  }
117
 
118
  inline const wchar_t*
119
  ctype<wchar_t>::
120
  do_is(const wchar_t* __lo, const wchar_t* __hi, mask* __vec) const
121
  {
122
    for (; __lo < __hi; ++__vec, ++__lo)
123
      *__vec = __maskrune (*__lo, upper | lower | alpha | digit | xdigit
124
                           | space | print | graph | cntrl | punct | alnum);
125
    return __hi;
126
  }
127
 
128
  inline const wchar_t*
129
  ctype<wchar_t>::
130
  do_scan_is(mask __m, const wchar_t* __lo, const wchar_t* __hi) const
131
  {
132
    while (__lo < __hi && ! __istype (*__lo, __m))
133
      ++__lo;
134
    return __lo;
135
  }
136
 
137
  inline const wchar_t*
138
  ctype<wchar_t>::
139
  do_scan_not(mask __m, const char_type* __lo, const char_type* __hi) const
140
  {
141
    while (__lo < __hi && __istype (*__lo, __m))
142
      ++__lo;
143
    return __lo;
144
  }
145
#endif
146
 
147
_GLIBCXX_END_NAMESPACE

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.