36 #ifndef _GLIBCXX_CXX_LOCALE_H 
   37 #define _GLIBCXX_CXX_LOCALE_H 1 
   39 #pragma GCC system_header 
   43 #define _GLIBCXX_C_LOCALE_GNU 1 
   45 #define _GLIBCXX_NUM_CATEGORIES 6 
   47 #if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2) 
   48 namespace __gnu_cxx _GLIBCXX_VISIBILITY(default)
 
   50 _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
   52   extern "C" __typeof(uselocale) __uselocale;
 
   54 _GLIBCXX_END_NAMESPACE_VERSION
 
   58 namespace std _GLIBCXX_VISIBILITY(default)
 
   60 _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
   62   typedef __locale_t        __c_locale;
 
   69   __convert_from_v(
const __c_locale& __cloc __attribute__ ((__unused__)),
 
   71            const int __size __attribute__ ((__unused__)),
 
   72            const char* __fmt, ...)
 
   74 #if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2) 
   75     __c_locale __old = __gnu_cxx::__uselocale(__cloc);
 
   77     char* __old = std::setlocale(LC_NUMERIC, 0);
 
   79     if (__builtin_strcmp(__old, 
"C"))
 
   81     const size_t __len = __builtin_strlen(__old) + 1;
 
   82     __sav = 
new char[__len];
 
   83     __builtin_memcpy(__sav, __old, __len);
 
   84     std::setlocale(LC_NUMERIC, 
"C");
 
   88     __builtin_va_list __args;
 
   89     __builtin_va_start(__args, __fmt);
 
   91 #ifdef _GLIBCXX_USE_C99 
   92     const int __ret = __builtin_vsnprintf(__out, __size, __fmt, __args);
 
   94     const int __ret = __builtin_vsprintf(__out, __fmt, __args);
 
   97     __builtin_va_end(__args);
 
   99 #if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2) 
  100     __gnu_cxx::__uselocale(__old);
 
  104     std::setlocale(LC_NUMERIC, __sav);
 
  111 _GLIBCXX_END_NAMESPACE_VERSION
 
GNU extensions for public use. 
ISO C++ entities toplevel namespace is std.