]> git.saurik.com Git - wxWidgets.git/blobdiff - interface/wx/xlocale.h
avoid infinite recursion for richtooltops, (hopefully) fixes #15070
[wxWidgets.git] / interface / wx / xlocale.h
index bf26cb8712f9714c109fc2afea4f990f499a2095..95c8472fb5d2674bf61d1bd9cd3c770a9c3abe10 100644 (file)
@@ -3,7 +3,7 @@
 // Purpose:     interface of wxXLocale
 // Author:      wxWidgets team
 // RCS-ID:      $Id$
 // Purpose:     interface of wxXLocale
 // Author:      wxWidgets team
 // RCS-ID:      $Id$
-// Licence:     wxWindows license
+// Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
 
 /////////////////////////////////////////////////////////////////////////////
 
 
@@ -11,6 +11,7 @@
     @class wxXLocale
 
     This class represents a locale object used by so-called xlocale API.
     @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.
 
     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.
 
     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).
 
     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.
 
 
     @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}
     @library{wxbase}
-    @category{misc}
+    @category{cfg}
 
 
+    @stdobjects
+    @li ::wxNullXLocale
+    
     @see wxLocale
 */
 class wxXLocale
 {
 public:
     @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;
     */
     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);
+
+//@}
+