#include <stdlib.h>
#endif // ! __WXPALMOS5__
-#if wxUSE_WCHAR_T
-
class WXDLLIMPEXP_FWD_BASE wxString;
// the error value returned by wxMBConv methods
// common part of all ctors
void Init();
- // creates m_convReal if necessary
- void CreateConvIfNeeded() const;
-
- // do create m_convReal (unconditionally)
+ // Creates the conversion to use, called from all ctors to initialize
+ // m_convReal.
wxMBConv *DoCreate() const;
- // set the name (may be only called when m_name == NULL), makes copy of
- // the charset string
+ // Set the name (may be only called when m_name == NULL), makes copy of
+ // the charset string.
void SetName(const char *charset);
-
- // m_name may be NULL in which case m_encoding should be used
+ // Set m_encoding field respecting the rules below, i.e. making sure it has
+ // a valid value if m_name == NULL (thus this should be always called after
+ // SetName()).
//
- // note that we can't use wxString here because of compilation
- // dependencies: we're included from wx/string.h
- char *m_name;
+ // Input encoding may be valid or not.
+ void SetEncoding(wxFontEncoding encoding);
+
- // may be wxFONTENCODING_SYSTEM in which case m_name is used
+ // The encoding we use is specified by the two fields below:
+ //
+ // 1. If m_name != NULL, m_encoding corresponds to it if it's one of
+ // encodings we know about (i.e. member of wxFontEncoding) or is
+ // wxFONTENCODING_SYSTEM otherwise.
//
- // if m_name is NULL, then we should use the default system encoding
+ // 2. If m_name == NULL, m_encoding is always valid, i.e. not one of
+ // wxFONTENCODING_{SYSTEM,DEFAULT,MAX}.
+ char *m_name;
wxFontEncoding m_encoding;
- // use CreateConvIfNeeded() before accessing m_convReal!
+ // The conversion object for our encoding or NULL if we failed to create it
+ // in which case we fall back to hard-coded ISO8859-1 conversion.
wxMBConv *m_convReal;
- bool m_deferred;
};
#define wxFNSTRINGCAST WXSTRINGCAST
#endif
-#else // !wxUSE_WCHAR_T
-
-// ----------------------------------------------------------------------------
-// stand-ins in absence of wchar_t
-// ----------------------------------------------------------------------------
-
-class WXDLLIMPEXP_BASE wxMBConv
-{
-public:
- const char* cMB2WX(const char *psz) const { return psz; }
- const char* cWX2MB(const char *psz) const { return psz; }
-};
-
-#define wxConvFile wxConvLocal
-
-extern WXDLLIMPEXP_DATA_BASE(wxMBConv) wxConvLibc,
- wxConvLocal,
- wxConvISO8859_1,
- wxConvUTF8;
-extern WXDLLIMPEXP_DATA_BASE(wxMBConv *) wxConvCurrent;
-
-#define wxFNCONV(name) name
-#define wxFNSTRINGCAST WXSTRINGCAST
-
-#endif
- // wxUSE_WCHAR_T
-
// ----------------------------------------------------------------------------
// macros for the most common conversions
// ----------------------------------------------------------------------------