re PR libstdc++/12854 (libstdc++ vs. -Weffc++)
2004-05-22 Benjamin Kosnik <bkoz@redhat.com> PR libstdc++/12854 Fixups for -Weffc++. * include/bits/basic_string.h (basic_string::operator=): Return pointer to this instead of result of assign. Although redundant, this doesn't impact resultant codegen. * include/bits/locale_facets.h (__numpunct_cache): Declare assignment opxserator and copy constructor private. (__timepunct_cache): Same. (__moneypunct_cache): Same. (collate): Use member initialization list for _M_c_locale_collate. * config/locale/gnu/messages_members.h: Same. * config/locale/gnu/time_members.h (__timepunct): Same. * src/codecvt.cc: Use member initialization list to initialize _M_c_locale_codecvt. * src/ctype.cc: Same, with _M_c_locale_ctype and _M_narrow_ok. * config/os/gnu-linux/ctype_noninline.h: Same. * src/locale.cc (_Impl): Same. * src/locale_init.cc: Same. * src/localename.cc: Same. * include/bits/basic_ios.h (basic_ios): Complete member initialization list. * include/bits/istream.tcc (basic_istream::sentry): Same. * include/bits/ostream.tcc (basic_ostream::sentry): Same. * include/bits/fstream.tcc (basic_filebuf): Add _M_lock and _M_pback to member initialization list. * include/std/std_streambuf.h: Same. * include/std/std_sstream.h: Same, for _M_mode. * src/ios.cc (ios_base): Same. * include/ext/rope: Make derived classes match exception specifications. Add copy constructors and assignment operators. * include/debug/safe_base.h (_Safe_sequence_base): Declare copy constructor and assignment operator protected. (_Safe_iterator_base): Same. * include/debug/formatter.h (_Error_formatter): Define copy constructor and assignment operator. * include/backward/strstream: Declare assignment operator and copy constructor private. From-SVN: r82153
This commit is contained in:
parent
d6dc556b31
commit
26c691a88b
24 changed files with 283 additions and 154 deletions
|
@ -1,3 +1,49 @@
|
|||
2004-05-22 Benjamin Kosnik <bkoz@redhat.com>
|
||||
|
||||
PR libstdc++/12854
|
||||
Fixups for -Weffc++.
|
||||
* include/bits/basic_string.h (basic_string::operator=): Return
|
||||
pointer to this instead of result of assign. Although redundant,
|
||||
this doesn't impact resultant codegen.
|
||||
|
||||
* include/bits/locale_facets.h (__numpunct_cache): Declare
|
||||
assignment opxserator and copy constructor private.
|
||||
(__timepunct_cache): Same.
|
||||
(__moneypunct_cache): Same.
|
||||
(collate): Use member initialization list for _M_c_locale_collate.
|
||||
* config/locale/gnu/messages_members.h: Same.
|
||||
* config/locale/gnu/time_members.h (__timepunct): Same.
|
||||
* src/codecvt.cc: Use member initialization list to initialize
|
||||
_M_c_locale_codecvt.
|
||||
* src/ctype.cc: Same, with _M_c_locale_ctype and _M_narrow_ok.
|
||||
* config/os/gnu-linux/ctype_noninline.h: Same.
|
||||
* src/locale.cc (_Impl): Same.
|
||||
* src/locale_init.cc: Same.
|
||||
* src/localename.cc: Same.
|
||||
|
||||
* include/bits/basic_ios.h (basic_ios): Complete member
|
||||
initialization list.
|
||||
* include/bits/istream.tcc (basic_istream::sentry): Same.
|
||||
* include/bits/ostream.tcc (basic_ostream::sentry): Same.
|
||||
* include/bits/fstream.tcc (basic_filebuf): Add _M_lock and
|
||||
_M_pback to member initialization list.
|
||||
* include/std/std_streambuf.h: Same.
|
||||
* include/std/std_sstream.h: Same, for _M_mode.
|
||||
* src/ios.cc (ios_base): Same.
|
||||
|
||||
* include/ext/rope: Make derived classes match exception
|
||||
|
||||
specifications. Add copy constructors and assignment operators.
|
||||
|
||||
* include/debug/safe_base.h (_Safe_sequence_base): Declare copy
|
||||
constructor and assignment operator protected.
|
||||
(_Safe_iterator_base): Same.
|
||||
* include/debug/formatter.h (_Error_formatter): Define copy
|
||||
constructor and assignment operator.
|
||||
|
||||
* include/backward/strstream: Declare assignment operator and copy
|
||||
constructor private.
|
||||
|
||||
2004-05-22 Benjamin Kosnik <bkoz@redhat.com>
|
||||
|
||||
* testsuite/testsuite_hooks.h (func_callback): Declare copy
|
||||
|
|
|
@ -36,26 +36,19 @@
|
|||
// Non-virtual member functions.
|
||||
template<typename _CharT>
|
||||
messages<_CharT>::messages(size_t __refs)
|
||||
: facet(__refs)
|
||||
{
|
||||
#if !(__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2))
|
||||
_M_name_messages = _S_get_c_name();
|
||||
#endif
|
||||
_M_c_locale_messages = _S_get_c_locale();
|
||||
}
|
||||
: facet(__refs), _M_c_locale_messages(_S_get_c_locale()),
|
||||
_M_name_messages(_S_get_c_name())
|
||||
{ }
|
||||
|
||||
template<typename _CharT>
|
||||
messages<_CharT>::messages(__c_locale __cloc,
|
||||
const char* __s __attribute__ ((__unused__)),
|
||||
messages<_CharT>::messages(__c_locale __cloc, const char* __s,
|
||||
size_t __refs)
|
||||
: facet(__refs)
|
||||
: facet(__refs), _M_c_locale_messages(_S_clone_c_locale(__cloc)),
|
||||
_M_name_messages(__s)
|
||||
{
|
||||
#if !(__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2))
|
||||
char* __tmp = new char[std::strlen(__s) + 1];
|
||||
std::strcpy(__tmp, __s);
|
||||
_M_name_messages = __tmp;
|
||||
#endif
|
||||
_M_c_locale_messages = _S_clone_c_locale(__cloc);
|
||||
}
|
||||
|
||||
template<typename _CharT>
|
||||
|
@ -71,10 +64,8 @@
|
|||
template<typename _CharT>
|
||||
messages<_CharT>::~messages()
|
||||
{
|
||||
#if !(__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2))
|
||||
if (_M_name_messages != _S_get_c_name())
|
||||
delete [] _M_name_messages;
|
||||
#endif
|
||||
_S_destroy_c_locale(_M_c_locale_messages);
|
||||
}
|
||||
|
||||
|
@ -99,16 +90,15 @@
|
|||
messages_byname<_CharT>::messages_byname(const char* __s, size_t __refs)
|
||||
: messages<_CharT>(__refs)
|
||||
{
|
||||
#if !(__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2))
|
||||
if (this->_M_name_messages != locale::facet::_S_get_c_name())
|
||||
delete [] this->_M_name_messages;
|
||||
char* __tmp = new char[std::strlen(__s) + 1];
|
||||
std::strcpy(__tmp, __s);
|
||||
this->_M_name_messages = __tmp;
|
||||
#endif
|
||||
if (std::strcmp(__s, "C") != 0 && std::strcmp(__s, "POSIX") != 0)
|
||||
{
|
||||
this->_S_destroy_c_locale(this->_M_c_locale_messages);
|
||||
this->_S_create_c_locale(this->_M_c_locale_messages, __s);
|
||||
}
|
||||
|
||||
if (std::strcmp(__s, "C") != 0 && std::strcmp(__s, "POSIX") != 0)
|
||||
{
|
||||
this->_S_destroy_c_locale(this->_M_c_locale_messages);
|
||||
this->_S_create_c_locale(this->_M_c_locale_messages, __s);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
// std::time_get, std::time_put implementation, GNU version -*- C++ -*-
|
||||
|
||||
// Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
|
||||
// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
|
||||
//
|
||||
// This file is part of the GNU ISO C++ Library. This library is free
|
||||
// software; you can redistribute it and/or modify it under the
|
||||
|
@ -36,45 +36,33 @@
|
|||
|
||||
template<typename _CharT>
|
||||
__timepunct<_CharT>::__timepunct(size_t __refs)
|
||||
: facet(__refs), _M_data(NULL)
|
||||
{
|
||||
#if !(__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2))
|
||||
_M_name_timepunct = _S_get_c_name();
|
||||
#endif
|
||||
_M_initialize_timepunct();
|
||||
}
|
||||
: facet(__refs), _M_data(NULL), _M_c_locale_timepunct(NULL),
|
||||
_M_name_timepunct(_S_get_c_name())
|
||||
{ _M_initialize_timepunct(); }
|
||||
|
||||
template<typename _CharT>
|
||||
__timepunct<_CharT>::__timepunct(__cache_type* __cache, size_t __refs)
|
||||
: facet(__refs), _M_data(__cache)
|
||||
{
|
||||
#if !(__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2))
|
||||
_M_name_timepunct = _S_get_c_name();
|
||||
#endif
|
||||
_M_initialize_timepunct();
|
||||
}
|
||||
: facet(__refs), _M_data(__cache), _M_c_locale_timepunct(NULL),
|
||||
_M_name_timepunct(_S_get_c_name())
|
||||
{ _M_initialize_timepunct(); }
|
||||
|
||||
template<typename _CharT>
|
||||
__timepunct<_CharT>::__timepunct(__c_locale __cloc,
|
||||
const char* __s __attribute__ ((__unused__)),
|
||||
__timepunct<_CharT>::__timepunct(__c_locale __cloc, const char* __s,
|
||||
size_t __refs)
|
||||
: facet(__refs), _M_data(NULL)
|
||||
: facet(__refs), _M_data(NULL), _M_c_locale_timepunct(NULL),
|
||||
_M_name_timepunct(__s)
|
||||
{
|
||||
#if !(__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2))
|
||||
char* __tmp = new char[std::strlen(__s) + 1];
|
||||
std::strcpy(__tmp, __s);
|
||||
_M_name_timepunct = __tmp;
|
||||
#endif
|
||||
_M_initialize_timepunct(__cloc);
|
||||
}
|
||||
|
||||
template<typename _CharT>
|
||||
__timepunct<_CharT>::~__timepunct()
|
||||
{
|
||||
#if !(__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2))
|
||||
if (_M_name_timepunct != _S_get_c_name())
|
||||
delete [] _M_name_timepunct;
|
||||
#endif
|
||||
delete _M_data;
|
||||
_S_destroy_c_locale(_M_c_locale_timepunct);
|
||||
}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
// Locale support -*- C++ -*-
|
||||
|
||||
// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002
|
||||
// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2004
|
||||
// Free Software Foundation, Inc.
|
||||
//
|
||||
// This file is part of the GNU ISO C++ Library. This library is free
|
||||
|
@ -59,21 +59,21 @@
|
|||
#if _GLIBCXX_C_LOCALE_GNU
|
||||
ctype<char>::ctype(__c_locale __cloc, const mask* __table, bool __del,
|
||||
size_t __refs)
|
||||
: facet(__refs), _M_del(__table != 0 && __del)
|
||||
: facet(__refs), _M_c_locale_ctype(_S_clone_c_locale(__cloc)),
|
||||
_M_del(__table != 0 && __del),
|
||||
_M_toupper(_M_c_locale_ctype->__ctype_toupper),
|
||||
_M_tolower(_M_c_locale_ctype->__ctype_tolower),
|
||||
_M_table(__table ? __table : _M_c_locale_ctype->__ctype_b),
|
||||
_M_widen_ok(0), _M_narrow_ok(0)
|
||||
{
|
||||
_M_c_locale_ctype = _S_clone_c_locale(__cloc);
|
||||
_M_toupper = _M_c_locale_ctype->__ctype_toupper;
|
||||
_M_tolower = _M_c_locale_ctype->__ctype_tolower;
|
||||
_M_table = __table ? __table : _M_c_locale_ctype->__ctype_b;
|
||||
memset(_M_widen, 0, sizeof(_M_widen));
|
||||
_M_widen_ok = 0;
|
||||
memset(_M_narrow, 0, sizeof(_M_narrow));
|
||||
_M_narrow_ok = 0;
|
||||
}
|
||||
#else
|
||||
ctype<char>::ctype(__c_locale, const mask* __table, bool __del,
|
||||
size_t __refs)
|
||||
: facet(__refs), _M_del(__table != 0 && __del)
|
||||
: facet(__refs), _M_c_locale_ctype(_S_get_c_locale()),
|
||||
_M_del(__table != 0 && __del), _M_widen_ok(0), _M_narrow_ok(0)
|
||||
{
|
||||
char* __old=strdup(setlocale(LC_CTYPE, NULL));
|
||||
setlocale(LC_CTYPE, "C");
|
||||
|
@ -88,30 +88,27 @@
|
|||
#endif
|
||||
setlocale(LC_CTYPE, __old);
|
||||
free(__old);
|
||||
_M_c_locale_ctype = _S_get_c_locale();
|
||||
memset(_M_widen, 0, sizeof(_M_widen));
|
||||
_M_widen_ok = 0;
|
||||
memset(_M_narrow, 0, sizeof(_M_narrow));
|
||||
_M_narrow_ok = 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
#if _GLIBCXX_C_LOCALE_GNU
|
||||
ctype<char>::ctype(const mask* __table, bool __del, size_t __refs)
|
||||
: facet(__refs), _M_del(__table != 0 && __del)
|
||||
: facet(__refs), _M_c_locale_ctype(_S_get_c_locale()),
|
||||
_M_del(__table != 0 && __del),
|
||||
_M_toupper(_M_c_locale_ctype->__ctype_toupper),
|
||||
_M_tolower(_M_c_locale_ctype->__ctype_tolower),
|
||||
_M_table(__table ? __table : _M_c_locale_ctype->__ctype_b),
|
||||
_M_widen_ok(0), _M_narrow_ok(0)
|
||||
{
|
||||
_M_c_locale_ctype = _S_get_c_locale();
|
||||
_M_toupper = _M_c_locale_ctype->__ctype_toupper;
|
||||
_M_tolower = _M_c_locale_ctype->__ctype_tolower;
|
||||
_M_table = __table ? __table : _M_c_locale_ctype->__ctype_b;
|
||||
memset(_M_widen, 0, sizeof(_M_widen));
|
||||
_M_widen_ok = 0;
|
||||
memset(_M_narrow, 0, sizeof(_M_narrow));
|
||||
_M_narrow_ok = 0;
|
||||
}
|
||||
#else
|
||||
ctype<char>::ctype(const mask* __table, bool __del, size_t __refs)
|
||||
: facet(__refs), _M_del(__table != 0 && __del)
|
||||
: facet(__refs), _M_c_locale_ctype(_S_get_c_locale()),
|
||||
_M_del(__table != 0 && __del), _M_widen_ok(0), _M_narrow_ok(0)
|
||||
{
|
||||
char* __old=strdup(setlocale(LC_CTYPE, NULL));
|
||||
setlocale(LC_CTYPE, "C");
|
||||
|
@ -126,11 +123,8 @@
|
|||
#endif
|
||||
setlocale(LC_CTYPE, __old);
|
||||
free(__old);
|
||||
_M_c_locale_ctype = _S_get_c_locale();
|
||||
memset(_M_widen, 0, sizeof(_M_widen));
|
||||
_M_widen_ok = 0;
|
||||
memset(_M_narrow, 0, sizeof(_M_narrow));
|
||||
_M_narrow_ok = 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
// Backward-compat support -*- C++ -*-
|
||||
|
||||
// Copyright (C) 2001, 2002 Free Software Foundation, Inc.
|
||||
// Copyright (C) 2001, 2002, 2004 Free Software Foundation, Inc.
|
||||
//
|
||||
// This file is part of the GNU ISO C++ Library. This library is free
|
||||
// software; you can redistribute it and/or modify it under the
|
||||
|
@ -98,6 +98,11 @@ namespace std
|
|||
= ios_base::in | ios_base::out);
|
||||
|
||||
private:
|
||||
strstreambuf&
|
||||
operator=(const strstreambuf&);
|
||||
|
||||
strstreambuf(const strstreambuf&);
|
||||
|
||||
// Dynamic allocation, possibly using _M_alloc_fun and _M_free_fun.
|
||||
char* _M_alloc(size_t);
|
||||
void _M_free(char*);
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
// Iostreams base classes -*- C++ -*-
|
||||
|
||||
// Copyright (C) 1997, 1998, 1999, 2001, 2002, 2003
|
||||
// Copyright (C) 1997, 1998, 1999, 2001, 2002, 2003, 2004
|
||||
// Free Software Foundation, Inc.
|
||||
//
|
||||
// This file is part of the GNU ISO C++ Library. This library is free
|
||||
|
@ -254,7 +254,8 @@ namespace std
|
|||
*/
|
||||
explicit
|
||||
basic_ios(basic_streambuf<_CharT, _Traits>* __sb)
|
||||
: ios_base(), _M_ctype(0), _M_num_put(0), _M_num_get(0)
|
||||
: ios_base(), _M_tie(0), _M_fill(), _M_fill_init(false), _M_streambuf(0),
|
||||
_M_ctype(0), _M_num_put(0), _M_num_get(0)
|
||||
{ this->init(__sb); }
|
||||
|
||||
/**
|
||||
|
@ -440,7 +441,9 @@ namespace std
|
|||
* The default constructor does nothing and is not normally
|
||||
* accessible to users.
|
||||
*/
|
||||
basic_ios() : ios_base(), _M_ctype(0), _M_num_put(0), _M_num_get(0)
|
||||
basic_ios()
|
||||
: ios_base(), _M_tie(0), _M_fill(char_type()), _M_fill_init(false),
|
||||
_M_streambuf(0), _M_ctype(0), _M_num_put(0), _M_num_get(0)
|
||||
{ }
|
||||
|
||||
/**
|
||||
|
|
|
@ -418,14 +418,22 @@ namespace std
|
|||
* @param str Source string.
|
||||
*/
|
||||
basic_string&
|
||||
operator=(const basic_string& __str) { return this->assign(__str); }
|
||||
operator=(const basic_string& __str)
|
||||
{
|
||||
this->assign(__str);
|
||||
return *this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Copy contents of @a s into this string.
|
||||
* @param s Source null-terminated string.
|
||||
*/
|
||||
basic_string&
|
||||
operator=(const _CharT* __s) { return this->assign(__s); }
|
||||
operator=(const _CharT* __s)
|
||||
{
|
||||
this->assign(__s);
|
||||
return *this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Set value to string of length 1.
|
||||
|
@ -435,7 +443,11 @@ namespace std
|
|||
* (*this)[0] == @a c.
|
||||
*/
|
||||
basic_string&
|
||||
operator=(_CharT __c) { return this->assign(1, __c); }
|
||||
operator=(_CharT __c)
|
||||
{
|
||||
this->assign(1, __c);
|
||||
return *this;
|
||||
}
|
||||
|
||||
// Iterators:
|
||||
/**
|
||||
|
|
|
@ -73,10 +73,10 @@ namespace std
|
|||
|
||||
template<typename _CharT, typename _Traits>
|
||||
basic_filebuf<_CharT, _Traits>::
|
||||
basic_filebuf() : __streambuf_type(), _M_file(&_M_lock),
|
||||
basic_filebuf() : __streambuf_type(), _M_lock(), _M_file(&_M_lock),
|
||||
_M_mode(ios_base::openmode(0)), _M_state_beg(), _M_state_cur(),
|
||||
_M_state_last(), _M_buf(NULL), _M_buf_size(BUFSIZ),
|
||||
_M_buf_allocated(false), _M_reading(false), _M_writing(false),
|
||||
_M_buf_allocated(false), _M_reading(false), _M_writing(false), _M_pback(),
|
||||
_M_pback_cur_save(0), _M_pback_end_save(0), _M_pback_init(false),
|
||||
_M_codecvt(0), _M_ext_buf(0), _M_ext_buf_size(0), _M_ext_next(0),
|
||||
_M_ext_end(0)
|
||||
|
|
|
@ -44,14 +44,14 @@ namespace std
|
|||
{
|
||||
template<typename _CharT, typename _Traits>
|
||||
basic_istream<_CharT, _Traits>::sentry::
|
||||
sentry(basic_istream<_CharT, _Traits>& __in, bool __noskipws)
|
||||
sentry(basic_istream<_CharT, _Traits>& __in, bool __noskip) : _M_ok(false)
|
||||
{
|
||||
ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);
|
||||
if (__in.good())
|
||||
{
|
||||
if (__in.tie())
|
||||
__in.tie()->flush();
|
||||
if (!__noskipws && (__in.flags() & ios_base::skipws))
|
||||
if (!__noskip && (__in.flags() & ios_base::skipws))
|
||||
{
|
||||
const __int_type __eof = traits_type::eof();
|
||||
__streambuf_type* __sb = __in.rdbuf();
|
||||
|
@ -59,7 +59,7 @@ namespace std
|
|||
|
||||
const __ctype_type& __ct = __check_facet(__in._M_ctype);
|
||||
while (!traits_type::eq_int_type(__c, __eof)
|
||||
&& __ct.is(ctype_base::space,
|
||||
&& __ct.is(ctype_base::space,
|
||||
traits_type::to_char_type(__c)))
|
||||
__c = __sb->snextc();
|
||||
|
||||
|
@ -75,7 +75,6 @@ namespace std
|
|||
_M_ok = true;
|
||||
else
|
||||
{
|
||||
_M_ok = false;
|
||||
__err |= ios_base::failbit;
|
||||
__in.setstate(__err);
|
||||
}
|
||||
|
|
|
@ -416,7 +416,7 @@ namespace std
|
|||
|
||||
facet(const facet&); // Not defined.
|
||||
|
||||
void
|
||||
facet&
|
||||
operator=(const facet&); // Not defined.
|
||||
};
|
||||
|
||||
|
|
|
@ -1624,6 +1624,13 @@ namespace std
|
|||
|
||||
void
|
||||
_M_cache(const locale& __loc);
|
||||
|
||||
private:
|
||||
__numpunct_cache&
|
||||
operator=(const __numpunct_cache&);
|
||||
|
||||
explicit
|
||||
__numpunct_cache(const __numpunct_cache&);
|
||||
};
|
||||
|
||||
template<typename _CharT>
|
||||
|
@ -2487,8 +2494,8 @@ namespace std
|
|||
*/
|
||||
explicit
|
||||
collate(size_t __refs = 0)
|
||||
: facet(__refs)
|
||||
{ _M_c_locale_collate = _S_get_c_locale(); }
|
||||
: facet(__refs), _M_c_locale_collate(_S_get_c_locale())
|
||||
{ }
|
||||
|
||||
/**
|
||||
* @brief Internal constructor. Not for general use.
|
||||
|
@ -2501,8 +2508,8 @@ namespace std
|
|||
*/
|
||||
explicit
|
||||
collate(__c_locale __cloc, size_t __refs = 0)
|
||||
: facet(__refs)
|
||||
{ _M_c_locale_collate = _S_clone_c_locale(__cloc); }
|
||||
: facet(__refs), _M_c_locale_collate(_S_clone_c_locale(__cloc))
|
||||
{ }
|
||||
|
||||
/**
|
||||
* @brief Compare two strings.
|
||||
|
@ -2757,6 +2764,13 @@ namespace std
|
|||
|
||||
void
|
||||
_M_cache(const locale& __loc);
|
||||
|
||||
private:
|
||||
__timepunct_cache&
|
||||
operator=(const __timepunct_cache&);
|
||||
|
||||
explicit
|
||||
__timepunct_cache(const __timepunct_cache&);
|
||||
};
|
||||
|
||||
template<typename _CharT>
|
||||
|
@ -3493,6 +3507,13 @@ namespace std
|
|||
|
||||
void
|
||||
_M_cache(const locale& __loc);
|
||||
|
||||
private:
|
||||
__moneypunct_cache&
|
||||
operator=(const __moneypunct_cache&);
|
||||
|
||||
explicit
|
||||
__moneypunct_cache(const __moneypunct_cache&);
|
||||
};
|
||||
|
||||
template<typename _CharT, bool _Intl>
|
||||
|
|
|
@ -44,7 +44,7 @@ namespace std
|
|||
template<typename _CharT, typename _Traits>
|
||||
basic_ostream<_CharT, _Traits>::sentry::
|
||||
sentry(basic_ostream<_CharT, _Traits>& __os)
|
||||
: _M_os(__os)
|
||||
: _M_ok(false), _M_os(__os)
|
||||
{
|
||||
// XXX MT
|
||||
if (__os.tie() && __os.good())
|
||||
|
@ -53,10 +53,7 @@ namespace std
|
|||
if (__os.good())
|
||||
_M_ok = true;
|
||||
else
|
||||
{
|
||||
_M_ok = false;
|
||||
__os.setstate(ios_base::failbit);
|
||||
}
|
||||
__os.setstate(ios_base::failbit);
|
||||
}
|
||||
|
||||
template<typename _CharT, typename _Traits>
|
||||
|
|
|
@ -189,15 +189,17 @@ namespace __gnu_debug
|
|||
} _M_string;
|
||||
} _M_variant;
|
||||
|
||||
_Parameter() : _M_kind(__unused_param) { }
|
||||
_Parameter() : _M_kind(__unused_param), _M_variant() { }
|
||||
|
||||
_Parameter(long __value, const char* __name) : _M_kind(__integer)
|
||||
_Parameter(long __value, const char* __name)
|
||||
: _M_kind(__integer), _M_variant()
|
||||
{
|
||||
_M_variant._M_integer._M_name = __name;
|
||||
_M_variant._M_integer._M_value = __value;
|
||||
}
|
||||
|
||||
_Parameter(const char* __value, const char* __name) : _M_kind(__string)
|
||||
_Parameter(const char* __value, const char* __name)
|
||||
: _M_kind(__string), _M_variant()
|
||||
{
|
||||
_M_variant._M_string._M_name = __name;
|
||||
_M_variant._M_string._M_value = __value;
|
||||
|
@ -206,7 +208,7 @@ namespace __gnu_debug
|
|||
template<typename _Iterator, typename _Sequence>
|
||||
_Parameter(const _Safe_iterator<_Iterator, _Sequence>& __it,
|
||||
const char* __name, _Is_iterator)
|
||||
: _M_kind(__iterator)
|
||||
: _M_kind(__iterator), _M_variant()
|
||||
{
|
||||
_M_variant._M_iterator._M_name = __name;
|
||||
_M_variant._M_iterator._M_address = &__it;
|
||||
|
@ -235,7 +237,7 @@ namespace __gnu_debug
|
|||
|
||||
template<typename _Type>
|
||||
_Parameter(const _Type*& __it, const char* __name, _Is_iterator)
|
||||
: _M_kind(__iterator)
|
||||
: _M_kind(__iterator), _M_variant()
|
||||
{
|
||||
_M_variant._M_iterator._M_name = __name;
|
||||
_M_variant._M_iterator._M_address = &__it;
|
||||
|
@ -248,7 +250,7 @@ namespace __gnu_debug
|
|||
|
||||
template<typename _Type>
|
||||
_Parameter(_Type*& __it, const char* __name, _Is_iterator)
|
||||
: _M_kind(__iterator)
|
||||
: _M_kind(__iterator), _M_variant()
|
||||
{
|
||||
_M_variant._M_iterator._M_name = __name;
|
||||
_M_variant._M_iterator._M_address = &__it;
|
||||
|
@ -261,7 +263,7 @@ namespace __gnu_debug
|
|||
|
||||
template<typename _Iterator>
|
||||
_Parameter(const _Iterator& __it, const char* __name, _Is_iterator)
|
||||
: _M_kind(__iterator)
|
||||
: _M_kind(__iterator), _M_variant()
|
||||
{
|
||||
_M_variant._M_iterator._M_name = __name;
|
||||
_M_variant._M_iterator._M_address = &__it;
|
||||
|
@ -276,7 +278,7 @@ namespace __gnu_debug
|
|||
template<typename _Sequence>
|
||||
_Parameter(const _Safe_sequence<_Sequence>& __seq,
|
||||
const char* __name, _Is_sequence)
|
||||
: _M_kind(__sequence)
|
||||
: _M_kind(__sequence), _M_variant()
|
||||
{
|
||||
_M_variant._M_sequence._M_name = __name;
|
||||
_M_variant._M_sequence._M_address =
|
||||
|
@ -286,7 +288,7 @@ namespace __gnu_debug
|
|||
|
||||
template<typename _Sequence>
|
||||
_Parameter(const _Sequence& __seq, const char* __name, _Is_sequence)
|
||||
: _M_kind(__sequence)
|
||||
: _M_kind(__sequence), _M_variant()
|
||||
{
|
||||
_M_variant._M_sequence._M_name = __name;
|
||||
_M_variant._M_sequence._M_address = &__seq;
|
||||
|
@ -356,6 +358,30 @@ namespace __gnu_debug
|
|||
_M_max_length(78), _M_column(1), _M_first_line(true), _M_wordwrap(false)
|
||||
{ }
|
||||
|
||||
_Error_formatter(const _Error_formatter& __o)
|
||||
: _M_file(__o._M_file), _M_line(__o._M_line),
|
||||
_M_num_parameters(__o._M_num_parameters), _M_text(__o._M_text),
|
||||
_M_max_length(__o._M_max_length), _M_column(__o._M_column),
|
||||
_M_first_line(__o._M_first_line), _M_wordwrap(__o._M_wordwrap)
|
||||
{ }
|
||||
|
||||
_Error_formatter&
|
||||
operator=(const _Error_formatter& __o)
|
||||
{
|
||||
if (&__o != this)
|
||||
{
|
||||
_M_file = __o._M_file;
|
||||
_M_line = __o._M_line;
|
||||
_M_num_parameters = __o._M_num_parameters;
|
||||
_M_text = __o._M_text;
|
||||
_M_max_length = __o._M_max_length;
|
||||
_M_column = __o._M_column;
|
||||
_M_first_line = __o._M_first_line;
|
||||
_M_wordwrap = __o._M_wordwrap;
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
|
||||
template<typename _Tp>
|
||||
void
|
||||
_M_format_word(char*, int, const char*, _Tp) const;
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
// Safe sequence/iterator base implementation -*- C++ -*-
|
||||
|
||||
// Copyright (C) 2003
|
||||
// Copyright (C) 2003, 2004
|
||||
// Free Software Foundation, Inc.
|
||||
//
|
||||
// This file is part of the GNU ISO C++ Library. This library is free
|
||||
|
@ -95,6 +95,12 @@ namespace __gnu_debug
|
|||
: _M_sequence(0), _M_version(0), _M_prior(0), _M_next(0)
|
||||
{ this->_M_attach(__x._M_sequence, __constant); }
|
||||
|
||||
_Safe_iterator_base&
|
||||
operator=(const _Safe_iterator_base&);
|
||||
|
||||
explicit
|
||||
_Safe_iterator_base(const _Safe_iterator_base&);
|
||||
|
||||
~_Safe_iterator_base() { this->_M_detach(); }
|
||||
|
||||
public:
|
||||
|
@ -158,6 +164,12 @@ namespace __gnu_debug
|
|||
: _M_iterators(0), _M_const_iterators(0), _M_version(1)
|
||||
{ }
|
||||
|
||||
explicit
|
||||
_Safe_sequence_base(const _Safe_sequence_base&);
|
||||
|
||||
_Safe_sequence_base&
|
||||
operator=(const _Safe_sequence_base&);
|
||||
|
||||
/** Notify all iterators that reference this sequence that the
|
||||
sequence is being destroyed. */
|
||||
~_Safe_sequence_base()
|
||||
|
|
|
@ -215,7 +215,7 @@ class sequence_buffer : public iterator<std::output_iterator_tag,void,void,void,
|
|||
}
|
||||
sequence_buffer& operator*() { return *this; }
|
||||
sequence_buffer& operator++() { return *this; }
|
||||
sequence_buffer& operator++(int) { return *this; }
|
||||
sequence_buffer operator++(int) { return *this; }
|
||||
};
|
||||
|
||||
// The following should be treated as private, at least for now.
|
||||
|
@ -359,7 +359,7 @@ identity_element(_Rope_Concat_fn<_CharT, _Alloc>)
|
|||
// Constructor
|
||||
__gthread_mutex_t _M_ref_count_lock;
|
||||
|
||||
_Refcount_Base(_RC_t __n) : _M_ref_count(__n)
|
||||
_Refcount_Base(_RC_t __n) : _M_ref_count(__n), _M_ref_count_lock()
|
||||
{
|
||||
#ifdef __GTHREAD_MUTEX_INIT
|
||||
__gthread_mutex_t __tmp = __GTHREAD_MUTEX_INIT;
|
||||
|
@ -547,7 +547,11 @@ struct _Rope_RopeRep : public _Rope_rep_base<_CharT,_Alloc>
|
|||
static void _S_ref(_Rope_RopeRep*) {}
|
||||
static void _S_free_if_unref(_Rope_RopeRep*) {}
|
||||
# endif
|
||||
protected:
|
||||
_Rope_RopeRep&
|
||||
operator=(const _Rope_RopeRep&);
|
||||
|
||||
_Rope_RopeRep(const _Rope_RopeRep&);
|
||||
};
|
||||
|
||||
template<class _CharT, class _Alloc>
|
||||
|
@ -593,13 +597,18 @@ struct _Rope_RopeLeaf : public _Rope_RopeRep<_CharT,_Alloc> {
|
|||
// the proper allocator and the properly padded size.
|
||||
// In contrast, the destructor deallocates the data:
|
||||
# ifndef __GC
|
||||
~_Rope_RopeLeaf() {
|
||||
~_Rope_RopeLeaf() throw() {
|
||||
if (_M_data != this->_M_c_string) {
|
||||
this->_M_free_c_string();
|
||||
}
|
||||
__STL_FREE_STRING(_M_data, this->_M_size, this->get_allocator());
|
||||
}
|
||||
# endif
|
||||
protected:
|
||||
_Rope_RopeLeaf&
|
||||
operator=(const _Rope_RopeLeaf&);
|
||||
|
||||
_Rope_RopeLeaf(const _Rope_RopeLeaf&);
|
||||
};
|
||||
|
||||
template<class _CharT, class _Alloc>
|
||||
|
@ -620,12 +629,17 @@ struct _Rope_RopeConcatenation : public _Rope_RopeRep<_CharT,_Alloc> {
|
|||
_M_left(__l), _M_right(__r)
|
||||
{}
|
||||
# ifndef __GC
|
||||
~_Rope_RopeConcatenation() {
|
||||
~_Rope_RopeConcatenation() throw() {
|
||||
this->_M_free_c_string();
|
||||
_M_left->_M_unref_nonnil();
|
||||
_M_right->_M_unref_nonnil();
|
||||
}
|
||||
# endif
|
||||
protected:
|
||||
_Rope_RopeConcatenation&
|
||||
operator=(const _Rope_RopeConcatenation&);
|
||||
|
||||
_Rope_RopeConcatenation(const _Rope_RopeConcatenation&);
|
||||
};
|
||||
|
||||
template<class _CharT, class _Alloc>
|
||||
|
@ -666,13 +680,18 @@ struct _Rope_RopeFunction : public _Rope_RopeRep<_CharT,_Alloc> {
|
|||
# endif
|
||||
}
|
||||
# ifndef __GC
|
||||
~_Rope_RopeFunction() {
|
||||
~_Rope_RopeFunction() throw() {
|
||||
this->_M_free_c_string();
|
||||
if (_M_delete_when_done) {
|
||||
delete _M_fn;
|
||||
}
|
||||
}
|
||||
# endif
|
||||
protected:
|
||||
_Rope_RopeFunction&
|
||||
operator=(const _Rope_RopeFunction&);
|
||||
|
||||
_Rope_RopeFunction(const _Rope_RopeFunction&);
|
||||
};
|
||||
// Substring results are usually represented using just
|
||||
// concatenation nodes. But in the case of very long flat ropes
|
||||
|
@ -725,7 +744,7 @@ struct _Rope_RopeSubstring : public _Rope_RopeFunction<_CharT,_Alloc>,
|
|||
# endif
|
||||
this->_M_tag = _Rope_constants::_S_substringfn;
|
||||
}
|
||||
virtual ~_Rope_RopeSubstring()
|
||||
virtual ~_Rope_RopeSubstring() throw()
|
||||
{
|
||||
# ifndef __GC
|
||||
_M_base->_M_unref_nonnil();
|
||||
|
@ -787,13 +806,16 @@ class _Rope_char_ref_proxy {
|
|||
_My_rope* _M_root; // The whole rope.
|
||||
public:
|
||||
_Rope_char_ref_proxy(_My_rope* __r, size_t __p)
|
||||
: _M_pos(__p), _M_current_valid(false), _M_root(__r) {}
|
||||
: _M_pos(__p), _M_current(), _M_current_valid(false), _M_root(__r) {}
|
||||
|
||||
_Rope_char_ref_proxy(const _Rope_char_ref_proxy& __x)
|
||||
: _M_pos(__x._M_pos), _M_current_valid(false), _M_root(__x._M_root) {}
|
||||
// Don't preserve cache if the reference can outlive the
|
||||
// expression. We claim that's not possible without calling
|
||||
// a copy constructor or generating reference to a proxy
|
||||
// reference. We declare the latter to have undefined semantics.
|
||||
: _M_pos(__x._M_pos), _M_current(__x._M_current), _M_current_valid(false),
|
||||
_M_root(__x._M_root) {}
|
||||
|
||||
// Don't preserve cache if the reference can outlive the
|
||||
// expression. We claim that's not possible without calling
|
||||
// a copy constructor or generating reference to a proxy
|
||||
// reference. We declare the latter to have undefined semantics.
|
||||
_Rope_char_ref_proxy(_My_rope* __r, size_t __p, _CharT __c)
|
||||
: _M_pos(__p), _M_current(__c), _M_current_valid(true), _M_root(__r) {}
|
||||
inline operator _CharT () const;
|
||||
|
@ -1194,6 +1216,12 @@ struct _Rope_base
|
|||
{ __name##Alloc().deallocate(__p, __n); }
|
||||
__ROPE_DEFINE_ALLOCS(_Alloc)
|
||||
# undef __ROPE_DEFINE_ALLOC
|
||||
|
||||
protected:
|
||||
_Rope_base&
|
||||
operator=(const _Rope_base&);
|
||||
|
||||
_Rope_base(const _Rope_base&);
|
||||
};
|
||||
|
||||
|
||||
|
@ -1546,10 +1574,8 @@ class rope : public _Rope_base<_CharT,_Alloc> {
|
|||
_S_ref(this->_M_tree_ptr);
|
||||
}
|
||||
|
||||
~rope()
|
||||
{
|
||||
_S_unref(this->_M_tree_ptr);
|
||||
}
|
||||
~rope() throw()
|
||||
{ _S_unref(this->_M_tree_ptr); }
|
||||
|
||||
rope& operator=(const rope& __x)
|
||||
{
|
||||
|
@ -1557,7 +1583,7 @@ class rope : public _Rope_base<_CharT,_Alloc> {
|
|||
this->_M_tree_ptr = __x._M_tree_ptr;
|
||||
_S_ref(this->_M_tree_ptr);
|
||||
_S_unref(__old);
|
||||
return(*this);
|
||||
return *this;
|
||||
}
|
||||
|
||||
void clear()
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
// String based streams -*- C++ -*-
|
||||
|
||||
// Copyright (C) 1997, 1998, 1999, 2002, 2003 Free Software Foundation, Inc.
|
||||
// Copyright (C) 1997, 1998, 1999, 2002, 2003, 2004
|
||||
// Free Software Foundation, Inc.
|
||||
//
|
||||
// This file is part of the GNU ISO C++ Library. This library is free
|
||||
// software; you can redistribute it and/or modify it under the
|
||||
|
@ -110,7 +111,7 @@ namespace std
|
|||
*/
|
||||
explicit
|
||||
basic_stringbuf(ios_base::openmode __mode = ios_base::in | ios_base::out)
|
||||
: __streambuf_type(), _M_string()
|
||||
: __streambuf_type(), _M_mode(), _M_string()
|
||||
{ _M_stringbuf_init(__mode); }
|
||||
|
||||
/**
|
||||
|
@ -124,7 +125,7 @@ namespace std
|
|||
explicit
|
||||
basic_stringbuf(const __string_type& __str,
|
||||
ios_base::openmode __mode = ios_base::in | ios_base::out)
|
||||
: __streambuf_type(), _M_string(__str.data(), __str.size())
|
||||
: __streambuf_type(), _M_mode(), _M_string(__str.data(), __str.size())
|
||||
{ _M_stringbuf_init(__mode); }
|
||||
|
||||
// Get and set:
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
// Stream buffer classes -*- C++ -*-
|
||||
|
||||
// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003
|
||||
// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
|
||||
// Free Software Foundation, Inc.
|
||||
//
|
||||
// This file is part of the GNU ISO C++ Library. This library is free
|
||||
|
@ -762,10 +762,15 @@ namespace std
|
|||
}
|
||||
#endif
|
||||
|
||||
// _GLIBCXX_RESOLVE_LIB_DEFECTS
|
||||
// Side effect of DR 50.
|
||||
private:
|
||||
basic_streambuf(const __streambuf_type&) { };
|
||||
// _GLIBCXX_RESOLVE_LIB_DEFECTS
|
||||
// Side effect of DR 50.
|
||||
basic_streambuf(const __streambuf_type& __sb)
|
||||
: _M_in_beg(__sb._M_in_beg), _M_in_cur(__sb._M_in_cur),
|
||||
_M_in_end(__sb._M_in_end), _M_out_beg(__sb._M_out_beg),
|
||||
_M_out_cur(__sb._M_out_cur), _M_out_end(__sb._M_out_cur),
|
||||
_M_buf_locale(__sb._M_buf_locale)
|
||||
{ }
|
||||
|
||||
__streambuf_type&
|
||||
operator=(const __streambuf_type&) { return *this; };
|
||||
|
|
|
@ -45,13 +45,15 @@ namespace std
|
|||
|
||||
codecvt<char, char, mbstate_t>::
|
||||
codecvt(size_t __refs)
|
||||
: __codecvt_abstract_base<char, char, mbstate_t>(__refs)
|
||||
{ _M_c_locale_codecvt = _S_get_c_locale(); }
|
||||
: __codecvt_abstract_base<char, char, mbstate_t>(__refs),
|
||||
_M_c_locale_codecvt(_S_get_c_locale())
|
||||
{ }
|
||||
|
||||
codecvt<char, char, mbstate_t>::
|
||||
codecvt(__c_locale __cloc, size_t __refs)
|
||||
: __codecvt_abstract_base<char, char, mbstate_t>(__refs)
|
||||
{ _M_c_locale_codecvt = _S_clone_c_locale(__cloc); }
|
||||
: __codecvt_abstract_base<char, char, mbstate_t>(__refs),
|
||||
_M_c_locale_codecvt(_S_clone_c_locale(__cloc))
|
||||
{ }
|
||||
|
||||
codecvt<char, char, mbstate_t>::
|
||||
~codecvt()
|
||||
|
@ -123,13 +125,15 @@ namespace std
|
|||
// codecvt<wchar_t, char, mbstate_t> required specialization
|
||||
codecvt<wchar_t, char, mbstate_t>::
|
||||
codecvt(size_t __refs)
|
||||
: __codecvt_abstract_base<wchar_t, char, mbstate_t>(__refs)
|
||||
{ _M_c_locale_codecvt = _S_get_c_locale(); }
|
||||
: __codecvt_abstract_base<wchar_t, char, mbstate_t>(__refs),
|
||||
_M_c_locale_codecvt(_S_get_c_locale())
|
||||
{ }
|
||||
|
||||
codecvt<wchar_t, char, mbstate_t>::
|
||||
codecvt(__c_locale __cloc, size_t __refs)
|
||||
: __codecvt_abstract_base<wchar_t, char, mbstate_t>(__refs)
|
||||
{ _M_c_locale_codecvt = _S_clone_c_locale(__cloc); }
|
||||
: __codecvt_abstract_base<wchar_t, char, mbstate_t>(__refs),
|
||||
_M_c_locale_codecvt(_S_clone_c_locale(__cloc))
|
||||
{ }
|
||||
|
||||
codecvt<wchar_t, char, mbstate_t>::
|
||||
~codecvt()
|
||||
|
|
|
@ -86,18 +86,14 @@ namespace std
|
|||
|
||||
#ifdef _GLIBCXX_USE_WCHAR_T
|
||||
ctype<wchar_t>::ctype(size_t __refs)
|
||||
: __ctype_abstract_base<wchar_t>(__refs)
|
||||
{
|
||||
_M_c_locale_ctype = _S_get_c_locale();
|
||||
_M_initialize_ctype();
|
||||
}
|
||||
: __ctype_abstract_base<wchar_t>(__refs),
|
||||
_M_c_locale_ctype(_S_get_c_locale()), _M_narrow_ok(false)
|
||||
{ _M_initialize_ctype(); }
|
||||
|
||||
ctype<wchar_t>::ctype(__c_locale __cloc, size_t __refs)
|
||||
: __ctype_abstract_base<wchar_t>(__refs)
|
||||
{
|
||||
_M_c_locale_ctype = _S_clone_c_locale(__cloc);
|
||||
_M_initialize_ctype();
|
||||
}
|
||||
: __ctype_abstract_base<wchar_t>(__refs),
|
||||
_M_c_locale_ctype(_S_clone_c_locale(__cloc)), _M_narrow_ok(false)
|
||||
{ _M_initialize_ctype(); }
|
||||
|
||||
ctype<wchar_t>::~ctype()
|
||||
{ _S_destroy_c_locale(_M_c_locale_ctype); }
|
||||
|
|
|
@ -112,7 +112,9 @@ namespace std
|
|||
bool ios_base::Init::_S_synced_with_stdio = true;
|
||||
|
||||
ios_base::ios_base()
|
||||
: _M_callbacks(0), _M_word_size(_S_local_word_size), _M_word(_M_local_word)
|
||||
: _M_precision(), _M_width(), _M_flags(), _M_exception(),
|
||||
_M_streambuf_state(), _M_callbacks(0), _M_word_zero(),
|
||||
_M_word_size(_S_local_word_size), _M_word(_M_local_word), _M_ios_locale()
|
||||
{
|
||||
// Do nothing: basic_ios::init() does it.
|
||||
// NB: _M_callbacks and _M_word must be zero for non-initialized
|
||||
|
|
|
@ -56,7 +56,8 @@ namespace std
|
|||
#endif
|
||||
|
||||
locale::locale(const locale& __other) throw()
|
||||
{ (_M_impl = __other._M_impl)->_M_add_reference(); }
|
||||
: _M_impl(__other._M_impl)
|
||||
{ _M_impl->_M_add_reference(); }
|
||||
|
||||
// This is used to initialize global and classic locales, and
|
||||
// assumes that the _Impl objects are constructed correctly.
|
||||
|
@ -227,10 +228,9 @@ namespace std
|
|||
// Clone existing _Impl object.
|
||||
locale::_Impl::
|
||||
_Impl(const _Impl& __imp, size_t __refs)
|
||||
: _M_refcount(__refs), _M_facets_size(__imp._M_facets_size)
|
||||
: _M_refcount(__refs), _M_facets(0), _M_facets_size(__imp._M_facets_size),
|
||||
_M_caches(0), _M_names(0)
|
||||
{
|
||||
_M_facets = _M_caches = 0;
|
||||
_M_names = 0;
|
||||
try
|
||||
{
|
||||
_M_facets = new const facet*[_M_facets_size];
|
||||
|
|
|
@ -98,7 +98,7 @@ namespace std
|
|||
{
|
||||
using namespace __gnu_internal;
|
||||
|
||||
locale::locale() throw()
|
||||
locale::locale() throw() : _M_impl(0)
|
||||
{
|
||||
_S_initialize();
|
||||
__glibcxx_mutex_lock(__gnu_internal::locale_cons_mutex);
|
||||
|
@ -249,7 +249,8 @@ namespace std
|
|||
// Construct "C" _Impl.
|
||||
locale::_Impl::
|
||||
_Impl(size_t __refs) throw()
|
||||
: _M_refcount(__refs), _M_facets_size(_GLIBCXX_NUM_FACETS)
|
||||
: _M_refcount(__refs), _M_facets(0), _M_facets_size(_GLIBCXX_NUM_FACETS),
|
||||
_M_caches(0), _M_names(0)
|
||||
{
|
||||
_M_facets = new (&facet_vec) const facet*[_M_facets_size];
|
||||
_M_caches = new (&cache_vec) const facet*[_M_facets_size];
|
||||
|
|
|
@ -34,7 +34,7 @@ namespace std
|
|||
{
|
||||
using namespace __gnu_cxx;
|
||||
|
||||
locale::locale(const char* __s)
|
||||
locale::locale(const char* __s) : _M_impl(0)
|
||||
{
|
||||
if (__s)
|
||||
{
|
||||
|
@ -148,6 +148,7 @@ namespace std
|
|||
}
|
||||
|
||||
locale::locale(const locale& __base, const char* __s, category __cat)
|
||||
: _M_impl(0)
|
||||
{
|
||||
// NB: There are complicated, yet more efficient ways to do
|
||||
// this. Building up locales on a per-category way is tedious, so
|
||||
|
@ -157,6 +158,7 @@ namespace std
|
|||
}
|
||||
|
||||
locale::locale(const locale& __base, const locale& __add, category __cat)
|
||||
: _M_impl(0)
|
||||
{ _M_coalesce(__base, __add, __cat); }
|
||||
|
||||
void
|
||||
|
@ -178,15 +180,14 @@ namespace std
|
|||
// Construct named _Impl.
|
||||
locale::_Impl::
|
||||
_Impl(const char* __s, size_t __refs)
|
||||
: _M_refcount(__refs), _M_facets_size(_GLIBCXX_NUM_FACETS)
|
||||
: _M_refcount(__refs), _M_facets(0), _M_facets_size(_GLIBCXX_NUM_FACETS),
|
||||
_M_caches(0), _M_names(0)
|
||||
{
|
||||
// Initialize the underlying locale model, which also checks to
|
||||
// see if the given name is valid.
|
||||
__c_locale __cloc;
|
||||
locale::facet::_S_create_c_locale(__cloc, __s);
|
||||
|
||||
_M_facets = _M_caches = 0;
|
||||
_M_names = 0;
|
||||
try
|
||||
{
|
||||
_M_facets = new const facet*[_M_facets_size];
|
||||
|
|
|
@ -53,7 +53,7 @@ void test01()
|
|||
iterator_type is_it01(iss);
|
||||
string result1;
|
||||
ios_base::iostate err01 = ios_base::goodbit;
|
||||
mon_get.get(is_it01, end, true, iss, err01, result1);
|
||||
mon_get.get(is_it01, end, true, iss, err01, result1); // xxx
|
||||
VERIFY( result1 == digits1 );
|
||||
VERIFY( err01 == ios_base::eofbit );
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue