// Name: xlocale.h
// Purpose: interface of wxXLocale
// Author: wxWidgets team
-// RCS-ID: $Id$
-// Licence: wxWindows license
+// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
@class wxXLocale
This class represents a locale object used by so-called xlocale API.
+
Unlike wxLocale it doesn't provide any non-trivial operations but simply
provides a portable wrapper for POSIX @c locale_t type.
standard @c foo() except that instead of using the global program locale
they use the provided wxXLocale object.
- For example, if the user runs the program in French locale, the standard
- @c printf() function will output floating point numbers using decimal comma
- instead of decimal period. If the program needs to format a floating-point
- number in a standard format it can use:
- @code wxPrintf_l(wxXLocale::GetCLocale(), "%g", number) @endcode
- to do it.
+ See @ref group_funcmacro_locale for a list of wxXLocale-enabled functions.
Conversely, if a program wanted to output the number in French locale, even if
the current locale is different, it could use wxXLocale(wxLANGUAGE_FRENCH).
@c wxUSE_XLOCALE was set to 0 during the library compilation.
- @section xlocale_func Locale-dependent functions
-
- Currently the following @c _l-functions are available:
-
- Character classification functions: @c wxIsxxx_l(), e.g.
- @c wxIsalpha_l(), @c wxIslower_l() and all the others.
- Character transformation functions: @c wxTolower_l() and
- @c wxToupper_l()
-
- We hope to provide many more functions (covering numbers, time and formatted
- IO) in the near future.
-
@library{wxbase}
- @category{misc}
+ @category{cfg}
+ @stdobjects
+ @li ::wxNullXLocale
+
@see wxLocale
*/
class wxXLocale
{
public:
- //@{
/**
- Creates the locale object corresponding to the specified locale string. The
- locale string is system-dependent, use constructor taking wxLanguage for better
- portability.
+ Creates an uninitialized locale object, IsOk() method will return @false.
*/
- wxLocale();
- wxLocale(wxLanguage lang);
- wxLocale(const char* loc);
- //@}
+ wxXLocale();
/**
- This class is fully implemented only under the platforms where xlocale POSIX
- API or equivalent is available. Currently the xlocale API is available under
- most of the recent Unix systems (including Linux, various BSD and Mac OS X) and
- Microsoft Visual C++ standard library provides a similar API starting from
- version 8 (Visual Studio 2005).
- If neither POSIX API nor Microsoft proprietary equivalent are available, this
- class is still available but works in degraded mode: the only supported locale
- is the C one and attempts to create wxXLocale object for any other locale will
- fail. You can use the preprocessor macro @c wxHAS_XLOCALE_SUPPORT to
- test if full xlocale API is available or only skeleton C locale support is
- present.
- Notice that wxXLocale is new in wxWidgets 2.9.0 and is not compiled in if
- @c wxUSE_XLOCALE was set to 0 during the library compilation.
+ Creates the locale object corresponding to the specified language.
*/
-
+ wxXLocale(wxLanguage lang);
/**
- Returns the global object representing the "C" locale. For an even shorter
- access to this object a global @c wxCLocale variable (implemented as a
- macro) is provided and can be used instead of calling this method.
+ Creates the locale object corresponding to the specified locale string.
+ The locale string is system-dependent, use constructor taking wxLanguage
+ for better portability.
*/
- static wxXLocale GetCLocale();
+ wxXLocale(const char* loc);
/**
- This class represents a locale object used by so-called xlocale API. Unlike
- wxLocale it doesn't provide any non-trivial operations but
- simply provides a portable wrapper for POSIX @c locale_t type. It exists
- solely to be provided as an argument to various @c wxFoo_l() functions
- which are the extensions of the standard locale-dependent functions (hence the
- name xlocale). These functions do exactly the same thing as the corresponding
- standard @c foo() except that instead of using the global program locale
- they use the provided wxXLocale object. For example, if the user runs the
- program in French locale, the standard @c printf() function will output
- floating point numbers using decimal comma instead of decimal period. If the
- program needs to format a floating-point number in a standard format it can
- use @c wxPrintf_l(wxXLocale::GetCLocale(), "%g", number) to do it.
- Conversely, if a program wanted to output the number in French locale, even if
- the current locale is different, it could use wxXLocale(wxLANGUAGE_FRENCH).
+ Returns the global object representing the "C" locale.
+ For an even shorter access to this object a global @c wxCLocale variable
+ (implemented as a macro) is provided and can be used instead of calling
+ this method.
*/
-
+ static wxXLocale& GetCLocale();
/**
- Returns @true if this object is initialized, i.e. represents a valid locale
- or
- @false otherwise.
+ Returns @true if this object is initialized, i.e.\ represents a valid locale
+ or @false otherwise.
*/
bool IsOk() const;
-
+
/**
- Currently the following @c _l-functions are available:
- Character classification functions: @c wxIsxxx_l(), e.g.
- @c wxIsalpha_l(), @c wxIslower_l() and all the others.
- Character transformation functions: @c wxTolower_l() and
- @c wxToupper_l()
- We hope to provide many more functions (covering numbers, time and formatted
- IO) in the near future.
-
- @see wxLocale
+ Comparison operator.
*/
+ bool operator==(const wxXLocale& loc) const;
};
+
+/**
+ An empty and invalid wxXLocale object.
+*/
+wxXLocale wxNullXLocale;
+
+
+
+// ============================================================================
+// Global functions/macros
+// ============================================================================
+
+/** @addtogroup group_funcmacro_locale */
+//@{
+
+int wxIsalnum_l(wchar_t c, const wxXLocale& loc);
+int wxIsalpha_l(wchar_t c, const wxXLocale& loc);
+int wxIscntrl_l(wchar_t c, const wxXLocale& loc);
+int wxIsdigit_l(wchar_t c, const wxXLocale& loc);
+int wxIsgraph_l(wchar_t c, const wxXLocale& loc);
+int wxIslower_l(wchar_t c, const wxXLocale& loc);
+int wxIsprint_l(wchar_t c, const wxXLocale& loc);
+int wxIspunct_l(wchar_t c, const wxXLocale& loc);
+int wxIsspace_l(wchar_t c, const wxXLocale& loc);
+int wxIsupper_l(wchar_t c, const wxXLocale& loc);
+int wxIsxdigit_l(wchar_t c, const wxXLocale& loc);
+wchar_t wxTolower_l(wchar_t c, const wxXLocale& loc);
+wchar_t wxToupper_l(wchar_t c, const wxXLocale& loc);
+
+double wxStrtod_l(const wchar_t *c, wchar_t **endptr, const wxXLocale& loc);
+long wxStrtol_l(const wchar_t *c, wchar_t **endptr, int base, const wxXLocale& loc);
+unsigned long wxStrtoul_l(const wchar_t *c, wchar_t **endptr, int base, const wxXLocale& loc);
+
+//@}
+