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

Subversion Repositories scarts

[/] [scarts/] [trunk/] [toolchain/] [scarts-gcc/] [gcc-4.1.1/] [libstdc++-v3/] [config/] [locale/] [gnu/] [messages_members.h] - Blame information for rev 20

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 20 jlechner
// std::messages implementation details, GNU version -*- C++ -*-
2
 
3
// Copyright (C) 2001, 2002, 2003, 2004, 2005 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, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
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.2.7.1.2  messages functions
32
//
33
 
34
// Written by Benjamin Kosnik <bkoz@redhat.com>
35
 
36
  // Non-virtual member functions.
37
  template<typename _CharT>
38
     messages<_CharT>::messages(size_t __refs)
39
     : facet(__refs), _M_c_locale_messages(_S_get_c_locale()),
40
       _M_name_messages(_S_get_c_name())
41
     { }
42
 
43
  template<typename _CharT>
44
     messages<_CharT>::messages(__c_locale __cloc, const char* __s,
45
                                size_t __refs)
46
     : facet(__refs), _M_c_locale_messages(NULL), _M_name_messages(NULL)
47
     {
48
       const size_t __len = std::strlen(__s) + 1;
49
       char* __tmp = new char[__len];
50
       std::memcpy(__tmp, __s, __len);
51
       _M_name_messages = __tmp;
52
 
53
       // Last to avoid leaking memory if new throws.
54
       _M_c_locale_messages = _S_clone_c_locale(__cloc);
55
     }
56
 
57
  template<typename _CharT>
58
    typename messages<_CharT>::catalog
59
    messages<_CharT>::open(const basic_string<char>& __s, const locale& __loc,
60
                           const char* __dir) const
61
    {
62
      bindtextdomain(__s.c_str(), __dir);
63
      return this->do_open(__s, __loc);
64
    }
65
 
66
  // Virtual member functions.
67
  template<typename _CharT>
68
    messages<_CharT>::~messages()
69
    {
70
      if (_M_name_messages != _S_get_c_name())
71
        delete [] _M_name_messages;
72
      _S_destroy_c_locale(_M_c_locale_messages);
73
    }
74
 
75
  template<typename _CharT>
76
    typename messages<_CharT>::catalog
77
    messages<_CharT>::do_open(const basic_string<char>& __s,
78
                              const locale&) const
79
    {
80
      // No error checking is done, assume the catalog exists and can
81
      // be used.
82
      textdomain(__s.c_str());
83
      return 0;
84
    }
85
 
86
  template<typename _CharT>
87
    void
88
    messages<_CharT>::do_close(catalog) const
89
    { }
90
 
91
   // messages_byname
92
   template<typename _CharT>
93
     messages_byname<_CharT>::messages_byname(const char* __s, size_t __refs)
94
     : messages<_CharT>(__refs)
95
     {
96
       if (this->_M_name_messages != locale::facet::_S_get_c_name())
97
         delete [] this->_M_name_messages;
98
       char* __tmp = new char[std::strlen(__s) + 1];
99
       std::strcpy(__tmp, __s);
100
       this->_M_name_messages = __tmp;
101
 
102
       if (std::strcmp(__s, "C") != 0 && std::strcmp(__s, "POSIX") != 0)
103
         {
104
           this->_S_destroy_c_locale(this->_M_c_locale_messages);
105
           this->_S_create_c_locale(this->_M_c_locale_messages, __s);
106
         }
107
     }

powered by: WebSVN 2.1.0

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