]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/encconv.h
Patch #826420, and also adapted to new SWIG
[wxWidgets.git] / include / wx / encconv.h
index 13dc5353428af319a6ca90ebe81b5639f4cda935..d99eaea5e2b34ba899920d8ddb3127f943960e2e 100644 (file)
 #ifndef _WX_ENCCONV_H_
 #define _WX_ENCCONV_H_
 
-#ifdef __GNUG__
+#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
 #pragma interface "encconv.h"
 #endif
 
 #include "wx/defs.h"
+
+#if wxUSE_FONTMAP
+
 #include "wx/object.h"
 #include "wx/fontenc.h"
 #include "wx/dynarray.h"
@@ -44,7 +47,7 @@ enum
 // types
 // ----------------------------------------------------------------------------
 
-WX_DEFINE_ARRAY(wxFontEncoding, wxFontEncodingArray);
+WX_DEFINE_ARRAY_INT(wxFontEncoding, wxFontEncodingArray);
 
 //--------------------------------------------------------------------------------
 // wxEncodingConverter
@@ -52,14 +55,14 @@ WX_DEFINE_ARRAY(wxFontEncoding, wxFontEncodingArray);
 //                  8bit encodings/charsets. It can also convert from/to Unicode
 //--------------------------------------------------------------------------------
 
-class WXDLLEXPORT wxEncodingConverter : public wxObject
+class WXDLLIMPEXP_BASE wxEncodingConverter : public wxObject
 {
     public:
 
             wxEncodingConverter();
             ~wxEncodingConverter() { if (m_Table) delete[] m_Table; }
 
-            // Initialize convertion. Both output or input encoding may
+            // Initialize conversion. Both output or input encoding may
             // be wxFONTENCODING_UNICODE, but only if wxUSE_WCHAR_T is set to 1.
             //
             // All subsequent calls to Convert() will interpret it's argument
@@ -90,15 +93,15 @@ class WXDLLEXPORT wxEncodingConverter : public wxObject
 
             // Convert input string according to settings passed to Init.
             // Note that you must call Init before using Convert!
-            void Convert(const char* input, char* output);
-            void Convert(char* str) { Convert(str, str); }
-            wxString Convert(const wxString& input);
+            void Convert(const char* input, char* output) const;
+            void Convert(char* str) const { Convert(str, str); }
+            wxString Convert(const wxString& input) const;
 
 #if wxUSE_WCHAR_T
-            void Convert(const char* input, wchar_t* output);
-            void Convert(const wchar_t* input, char* output);
-            void Convert(const wchar_t* input, wchar_t* output);
-            void Convert(wchar_t* str) { Convert(str, str); }
+            void Convert(const char* input, wchar_t* output) const;
+            void Convert(const wchar_t* input, char* output) const;
+            void Convert(const wchar_t* input, wchar_t* output) const;
+            void Convert(wchar_t* str) const { Convert(str, str); }
 #endif
             // Return equivalent(s) for given font that are used
             // under given platform. wxPLATFORM_CURRENT means the plaform
@@ -135,6 +138,17 @@ class WXDLLEXPORT wxEncodingConverter : public wxObject
             // equivalent encodings, regardless the platform, including itself.
             static wxFontEncodingArray GetAllEquivalents(wxFontEncoding enc);
 
+            // Return true if [any text in] one multibyte encoding can be
+            // converted to another one losslessly.
+            //
+            // Do not call this with wxFONTENCODING_UNICODE, it doesn't make
+            // sense (always works in one sense and always depends on the text
+            // to convert in the other)
+            static bool CanConvert(wxFontEncoding encIn, wxFontEncoding encOut)
+            {
+                return GetAllEquivalents(encIn).Index(encOut) != wxNOT_FOUND;
+            }
+
     private:
 
 #if wxUSE_WCHAR_T
@@ -145,7 +159,9 @@ class WXDLLEXPORT wxEncodingConverter : public wxObject
             bool m_UnicodeInput, m_UnicodeOutput;
             bool m_JustCopy;
 
+    DECLARE_NO_COPY_CLASS(wxEncodingConverter)
 };
 
+#endif // wxUSE_FONTMAP
 
 #endif  // _WX_ENCCONV_H_