diff options
author | Benjamin Kosnik <bkoz@cygnus.com> | 2000-09-01 08:58:07 +0000 |
---|---|---|
committer | Benjamin Kosnik <bkoz@gcc.gnu.org> | 2000-09-01 08:58:07 +0000 |
commit | 0479a46292a4ead8ef2be5a122603432c754cd3d (patch) | |
tree | e4ed0d31f3384d6e2b1b7df55f3613fa7d2c99f9 /libstdc++-v3/testsuite | |
parent | b3e45cb1dfc9d47a7d95c1b1dfc9daf9d5132b06 (diff) | |
download | gcc-0479a46292a4ead8ef2be5a122603432c754cd3d.zip gcc-0479a46292a4ead8ef2be5a122603432c754cd3d.tar.gz gcc-0479a46292a4ead8ef2be5a122603432c754cd3d.tar.bz2 |
locale_facets.tcc (_S_build_float_format): Move ...
2000-08-31 Benjamin Kosnik <bkoz@cygnus.com>
* bits/locale_facets.tcc (_S_build_float_format): Move ...
* src/locale.cc: Here.
* bits/locale_facets.tcc (num_get::_M_extract): Clean up generic
definition. Move specialization to ...
* src/locale.cc: Here.
* bits/locale_facets.tcc: Move _Format_cache specializations to ...
* src/locale.cc: Here.
* bits/locale_facets.tcc: Move use_facet<ctype> specializations to ...
* src/locale.cc: Here.
* bits/std_locale.h: Note that locale_facets.tcc should be
included here, for standards conformance. It may increase
compile times though. For the time being, enable.
* testsuite/22_locale/facet.cc: New file, some parts commented out
for the time being.
* mkcheck.in: Append total time to test summary file.
* bits/sbuf_iter.h : Formatting tweaks.
Clean up static const data member definitions.
* src/locale.cc: Add definitions for all missing locale,
locale::_Imp, and locale::id static data members.
(ctype<char>): Add table_size define.
(money_base): Add _S_default_pattern, uglify.
* bits/localefwd.h: Add definitions for static members of _Count_ones.
* bits/locale_facets.h: Tweaks.
* bits/locale_facets.tcc: Tweaks.
* bits/string.tcc: Add definition for npos.
* bits/ios_base.h: Tweaks.
* bits/ios_base.h (ios_base::Init::_M_ios_base_init): Change to
_S_ios_base_init.
* src/ios.cc: And here. Add _S_local_words definition.
Add definitions for __ios_flags const static data.
* src/codecvt.cc: Same for __enc_traits.
* src/locale-inst.cc: Remove money_base data member definition
here.
From-SVN: r36093
Diffstat (limited to 'libstdc++-v3/testsuite')
-rw-r--r-- | libstdc++-v3/testsuite/22_locale/facet.cc | 258 |
1 files changed, 258 insertions, 0 deletions
diff --git a/libstdc++-v3/testsuite/22_locale/facet.cc b/libstdc++-v3/testsuite/22_locale/facet.cc new file mode 100644 index 0000000..1930c50 --- /dev/null +++ b/libstdc++-v3/testsuite/22_locale/facet.cc @@ -0,0 +1,258 @@ +// 2000-08-31 Benjamin Kosnik <bkoz@redhat.com> + +// Copyright (C) 2000 Free Software Foundation +// +// 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 +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 2, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING. If not, write to the Free +// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, +// USA. + +// 22.1.1.1.2 - class locale::facet [lib.locale.facet] + +#include <locale> +#include <iterator> +#include <debug_assert.h> + +// 1 a class if a facet if it is publicly derived from another facet +class gnu_input_iterator: public std::iterator<std::input_iterator_tag, char> +{ + value_type it; +public: + gnu_input_iterator(value_type orig): it(orig) { } + + value_type + operator*() const { return it; } + + reference + operator++(){ return ++it; } + + reference + operator++(int){ ++it; return it; } +}; + +bool +operator==(const gnu_input_iterator& lhs, const gnu_input_iterator& rhs) +{ return true; } + +bool +operator!=(const gnu_input_iterator& lhs, const gnu_input_iterator& rhs) +{ return true; } + +class gnu_output_iterator: public std::iterator<std::output_iterator_tag, char> +{ + value_type it; +public: + gnu_output_iterator(value_type orig): it(orig) { } + + value_type + operator*(){ return it; } + + gnu_output_iterator& + operator=(value_type obj){ it = obj; return *this; } + + reference + operator++(){ return ++it; } + + reference + operator++(int){ ++it; return it; } + +}; + +class gnu_collate: public std::collate<char> { }; +class gnu_ctype: public std::ctype<char> { }; +class gnu_codecvt: public std::codecvt<char, char, mbstate_t> { }; +class gnu_moneypunct: public std::moneypunct<char> { }; +class gnu_moneypunct_true: public std::moneypunct<char, true> { }; +class gnu_money_get: public std::money_get<char> { }; +class gnu_money_put: public std::money_put<char> { }; +class gnu_numpunct: public std::numpunct<char> { }; +class gnu_num_get: public std::num_get<char> { }; +class gnu_num_put: public std::num_put<char> { }; +class gnu_time_get: public std::time_get<char> { }; +class gnu_time_put: public std::time_put<char> { }; +class gnu_messages: public std::messages<char> { }; + +class gnu_collate_byname: public std::collate_byname<char> +{ +public: + explicit + gnu_collate_byname(const char* c, size_t refs = 0) + : std::collate_byname<char>(c, refs) { } +}; + +class gnu_ctype_byname: public std::ctype_byname<char> +{ +public: + explicit + gnu_ctype_byname(const char* c, size_t refs = 0) + : std::ctype_byname<char>(c, refs) { } +}; + +class gnu_moneypunct_byname_true: public std::moneypunct_byname<char, true> +{ +public: + explicit + gnu_moneypunct_byname_true(const char* c, size_t refs = 0) + : std::moneypunct_byname<char, true>(c, refs) { } +}; + +class gnu_moneypunct_byname_false: public std::moneypunct_byname<char, false> +{ +public: + explicit + gnu_moneypunct_byname_false(const char* c, size_t refs = 0) + : std::moneypunct_byname<char, false>(c, refs) { } +}; + + +class gnu_money_get_in: public std::money_get<char, gnu_input_iterator> +{ +public: + explicit + gnu_money_get_in(size_t refs = 0) + : std::money_get<char, gnu_input_iterator>(refs) { } +}; + +class gnu_money_put_out: public std::money_put<char, gnu_output_iterator> +{ +public: + explicit + gnu_money_put_out(size_t refs = 0) + : std::money_put<char, gnu_output_iterator>(refs) { } +}; + +class gnu_numpunct_byname: public std::numpunct_byname<char> +{ +public: + explicit + gnu_numpunct_byname(const char* c, size_t refs = 0) + : std::numpunct_byname<char>(c, refs) { } +}; + +class gnu_num_get_in: public std::num_get<char, gnu_input_iterator> +{ +public: + explicit + gnu_num_get_in(size_t refs = 0) + : std::num_get<char, gnu_input_iterator>(refs) { } +}; + +class gnu_num_put_out: public std::num_put<char, gnu_output_iterator> +{ +public: + explicit + gnu_num_put_out(size_t refs = 0) + : std::num_put<char, gnu_output_iterator>(refs) { } +}; + +class gnu_time_get_byname: public std::time_get_byname<char> +{ +public: + explicit + gnu_time_get_byname(const char* c, size_t refs = 0) + : std::time_get_byname<char>(c, refs) { } +}; + +class gnu_time_get_in: public std::time_get<char, gnu_input_iterator> +{ +public: + explicit + gnu_time_get_in(size_t refs = 0) + : std::time_get<char, gnu_input_iterator>(refs) { } +}; + +class gnu_time_put_byname: public std::time_put_byname<char> +{ +public: + explicit + gnu_time_put_byname(const char* c, size_t refs = 0) + : std::time_put_byname<char>(c, refs) { } +}; + +class gnu_time_put_out: public std::time_put<char, gnu_output_iterator> +{ +public: + explicit + gnu_time_put_out(size_t refs = 0) + : std::time_put<char, gnu_output_iterator>(refs) { } +}; + +class gnu_messages_byname: public std::messages_byname<char> +{ +public: + explicit + gnu_messages_byname(const char* c, size_t refs = 0) + : std::messages_byname<char>(c, refs) { } +}; + + +// 2 or if it is a class deerived from locale:;facet and containing a +// publicly-accessible declaration as follows: +class gnu_facet: public std::locale::facet +{ +public: + static std::locale::id id; +}; + +std::locale::id gnu_facet::id; + +void test01() +{ + // 1 + gnu_collate obj01; + gnu_ctype obj02; + gnu_codecvt obj03; + gnu_moneypunct obj04; + gnu_moneypunct_true obj05; + gnu_money_get obj06; + gnu_money_put obj07; + gnu_numpunct obj08; + gnu_num_get obj09; + gnu_num_put obj10; + gnu_time_get obj11; + gnu_time_put obj12; + gnu_messages obj13; + gnu_time_put_out obj14(0); + gnu_time_put_byname obj15("gnu_message_byname", 0); + gnu_time_get_in obj16(0); + gnu_time_get_byname obj17("gnu_message_byname", 0); + // gnu_num_put_out obj18(0); + // gnu_num_get_in obj19(0); + gnu_numpunct_byname obj20("gnu_message_byname", 0); + gnu_money_put_out obj21(0); + gnu_money_get_in obj22(0); + gnu_moneypunct_byname_false obj23("gnu_message_byname", 0); + gnu_moneypunct_byname_true obj24("gnu_message_byname", 0); + gnu_ctype_byname obj25("gnu_message_byname", 0); + gnu_collate_byname obj26("gnu_message_byname", 0); + gnu_messages_byname obj27("gnu_message_byname", 0); + + // 2 + gnu_facet obj28; +} + +int main () +{ + test01(); + + return 0; +} + + + + + + + + |