diff options
-rw-r--r-- | libstdc++-v3/ChangeLog | 6 | ||||
-rw-r--r-- | libstdc++-v3/include/bits/locale_facets.tcc | 30 | ||||
-rw-r--r-- | libstdc++-v3/src/locale.cc | 32 |
3 files changed, 32 insertions, 36 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 731de31..7b5eea6 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,9 @@ +2003-06-27 Jerry Quinn <jlquinn@optonline.net> + + * src/locale.cc (__use_cache<numpunct>): Move from here ... + * include/bits/locale_facets.tcc (__use_cache<numpunct>): To + here. + 2003-06-30 Paolo Carlini <pcarlini@unitus.it> * include/bits/stl_algobase.h: Fully qualify standard diff --git a/libstdc++-v3/include/bits/locale_facets.tcc b/libstdc++-v3/include/bits/locale_facets.tcc index aca0e05..6a38816 100644 --- a/libstdc++-v3/include/bits/locale_facets.tcc +++ b/libstdc++-v3/include/bits/locale_facets.tcc @@ -93,13 +93,35 @@ namespace std __use_cache(const locale& __loc); template<> - const __numpunct_cache<char>& - __use_cache(const locale& __loc); + inline const __numpunct_cache<char>& + __use_cache(const locale& __loc) + { + size_t __i = numpunct<char>::id._M_id(); + const locale::facet** __caches = __loc._M_impl->_M_caches; + if (!__caches[__i]) + { + __numpunct_cache<char>* __tmp = new __numpunct_cache<char>; + __tmp->_M_cache(__loc); + __loc._M_impl->_M_install_cache(__tmp, __i); + } + return static_cast<const __numpunct_cache<char>&>(*__caches[__i]); + } #ifdef _GLIBCPP_USE_WCHAR_T template<> - const __numpunct_cache<wchar_t>& - __use_cache(const locale& __loc); + inline const __numpunct_cache<wchar_t>& + __use_cache(const locale& __loc) + { + size_t __i = numpunct<wchar_t>::id._M_id(); + const locale::facet** __caches = __loc._M_impl->_M_caches; + if (!__caches[__i]) + { + __numpunct_cache<wchar_t>* __tmp = new __numpunct_cache<wchar_t>; + __tmp->_M_cache(__loc); + __loc._M_impl->_M_install_cache(__tmp, __i); + } + return static_cast<const __numpunct_cache<wchar_t>&>(*__caches[__i]); + } #endif // Stage 1: Determine a conversion specifier. diff --git a/libstdc++-v3/src/locale.cc b/libstdc++-v3/src/locale.cc index 7788a58..8cb89e5 100644 --- a/libstdc++-v3/src/locale.cc +++ b/libstdc++-v3/src/locale.cc @@ -449,38 +449,6 @@ namespace std locale::facet:: ~facet() { } - template<> - const __numpunct_cache<char>& - __use_cache(const locale& __loc) - { - size_t __i = numpunct<char>::id._M_id(); - const locale::facet** __caches = __loc._M_impl->_M_caches; - if (!__caches[__i]) - { - __numpunct_cache<char>* __tmp = new __numpunct_cache<char>; - __tmp->_M_cache(__loc); - __loc._M_impl->_M_install_cache(__tmp, __i); - } - return static_cast<const __numpunct_cache<char>&>(*__caches[__i]); - } - -#ifdef _GLIBCPP_USE_WCHAR_T - template<> - const __numpunct_cache<wchar_t>& - __use_cache(const locale& __loc) - { - size_t __i = numpunct<wchar_t>::id._M_id(); - const locale::facet** __caches = __loc._M_impl->_M_caches; - if (!__caches[__i]) - { - __numpunct_cache<wchar_t>* __tmp = new __numpunct_cache<wchar_t>; - __tmp->_M_cache(__loc); - __loc._M_impl->_M_install_cache(__tmp, __i); - } - return static_cast<const __numpunct_cache<wchar_t>&>(*__caches[__i]); - } -#endif - // Definitions for static const data members of time_base template<> const char* |