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

Subversion Repositories scarts

[/] [scarts/] [trunk/] [toolchain/] [scarts-gcc/] [gcc-4.1.1/] [libstdc++-v3/] [src/] [ctype.cc] - Blame information for rev 20

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 18 jlechner
// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2004
2
// Free Software Foundation, Inc.
3
//
4
// This file is part of the GNU ISO C++ Library.  This library is free
5
// software; you can redistribute it and/or modify it under the
6
// terms of the GNU General Public License as published by the
7
// Free Software Foundation; either version 2, or (at your option)
8
// any later version.
9
 
10
// This library is distributed in the hope that it will be useful,
11
// but WITHOUT ANY WARRANTY; without even the implied warranty of
12
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
// GNU General Public License for more details.
14
 
15
// You should have received a copy of the GNU General Public License along
16
// with this library; see the file COPYING.  If not, write to the Free
17
// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
18
// USA.
19
 
20
// As a special exception, you may use this file as part of a free software
21
// library without restriction.  Specifically, if other files instantiate
22
// templates or use macros or inline functions from this file, or you compile
23
// this file and link it with other files to produce an executable, this
24
// file does not by itself cause the resulting executable to be covered by
25
// the GNU General Public License.  This exception does not however
26
// invalidate any other reasons why the executable file might be covered by
27
// the GNU General Public License.
28
 
29
#include <locale>
30
 
31
namespace std
32
{
33
  // Definitions for static const data members of ctype_base.
34
  const ctype_base::mask ctype_base::space;
35
  const ctype_base::mask ctype_base::print;
36
  const ctype_base::mask ctype_base::cntrl;
37
  const ctype_base::mask ctype_base::upper;
38
  const ctype_base::mask ctype_base::lower;
39
  const ctype_base::mask ctype_base::alpha;
40
  const ctype_base::mask ctype_base::digit;
41
  const ctype_base::mask ctype_base::punct;
42
  const ctype_base::mask ctype_base::xdigit;
43
  const ctype_base::mask ctype_base::alnum;
44
  const ctype_base::mask ctype_base::graph;
45
 
46
  // Definitions for locale::id of standard facets that are specialized.
47
  locale::id ctype<char>::id;
48
 
49
#ifdef _GLIBCXX_USE_WCHAR_T  
50
  locale::id ctype<wchar_t>::id;
51
#endif
52
 
53
  template<>
54
    const ctype<char>&
55
    use_facet<ctype<char> >(const locale& __loc)
56
    {
57
      size_t __i = ctype<char>::id._M_id();
58
      const locale::_Impl* __tmp = __loc._M_impl;
59
      return static_cast<const ctype<char>&>(*(__tmp->_M_facets[__i]));
60
    }
61
 
62
#ifdef _GLIBCXX_USE_WCHAR_T
63
  template<>
64
    const ctype<wchar_t>&
65
    use_facet<ctype<wchar_t> >(const locale& __loc)
66
    {
67
      size_t __i = ctype<wchar_t>::id._M_id();
68
      const locale::_Impl* __tmp = __loc._M_impl;
69
      return static_cast<const ctype<wchar_t>&>(*(__tmp->_M_facets[__i]));
70
    }
71
#endif
72
 
73
  // XXX At some point, just rename this file to ctype_configure_char.cc
74
  // and compile it as a separate file instead of including it here.
75
  // Platform-specific initialization code for ctype tables.
76
  #include <bits/ctype_noninline.h>
77
 
78
  const size_t ctype<char>::table_size;
79
 
80
  ctype<char>::~ctype()
81
  {
82
    _S_destroy_c_locale(_M_c_locale_ctype);
83
    if (_M_del)
84
      delete[] this->table();
85
  }
86
 
87
#ifdef _GLIBCXX_USE_WCHAR_T
88
  ctype<wchar_t>::ctype(size_t __refs)
89
  : __ctype_abstract_base<wchar_t>(__refs),
90
  _M_c_locale_ctype(_S_get_c_locale()), _M_narrow_ok(false)
91
  { _M_initialize_ctype(); }
92
 
93
  ctype<wchar_t>::ctype(__c_locale __cloc, size_t __refs)
94
  : __ctype_abstract_base<wchar_t>(__refs),
95
  _M_c_locale_ctype(_S_clone_c_locale(__cloc)), _M_narrow_ok(false)
96
  { _M_initialize_ctype(); }
97
 
98
  ctype<wchar_t>::~ctype()
99
  { _S_destroy_c_locale(_M_c_locale_ctype); }
100
 
101
  template<>
102
    ctype_byname<wchar_t>::ctype_byname(const char* __s, size_t __refs)
103
    : ctype<wchar_t>(__refs)
104
    {
105
      if (std::strcmp(__s, "C") != 0 && std::strcmp(__s, "POSIX") != 0)
106
        {
107
          this->_S_destroy_c_locale(this->_M_c_locale_ctype);
108
          this->_S_create_c_locale(this->_M_c_locale_ctype, __s);
109
          this->_M_initialize_ctype();
110
        }
111
    }
112
#endif
113
} // namespace std
114
 

powered by: WebSVN 2.1.0

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