#include "wx/strconv.h"
#include "wx/fontenc.h"
-#if wxUSE_WCHAR_T
-
// ----------------------------------------------------------------------------
// wxConvAuto: uses BOM to automatically detect input encoding
// ----------------------------------------------------------------------------
+// All currently recognized BOM values.
+enum wxBOM
+{
+ wxBOM_Unknown = -1,
+ wxBOM_None,
+ wxBOM_UTF32BE,
+ wxBOM_UTF32LE,
+ wxBOM_UTF16BE,
+ wxBOM_UTF16LE,
+ wxBOM_UTF8
+};
+
class WXDLLIMPEXP_BASE wxConvAuto : public wxMBConv
{
public:
virtual wxMBConv *Clone() const { return new wxConvAuto(*this); }
-private:
- // all currently recognized BOM values
- enum BOMType
- {
- BOM_None,
- BOM_UTF32BE,
- BOM_UTF32LE,
- BOM_UTF16BE,
- BOM_UTF16LE,
- BOM_UTF8
- };
-
// return the BOM type of this buffer
- static BOMType DetectBOM(const char *src, size_t srcLen);
+ static wxBOM DetectBOM(const char *src, size_t srcLen);
+ // return the characters composing the given BOM.
+ static const char* GetBOMChars(wxBOM bomType, size_t* count);
+
+ wxBOM GetBOM() const
+ {
+ return m_bomType;
+ }
+
+private:
// common part of all ctors
void Init()
{
- // no need to initialize m_bomType and m_consumedBOM here, this will be
- // done when m_conv is created
+ // We don't initialize m_encDefault here as different ctors do it
+ // differently.
m_conv = NULL;
+ m_bomType = wxBOM_Unknown;
m_ownsConv = false;
+ m_consumedBOM = false;
}
// initialize m_conv with the UTF-8 conversion
}
// create the correct conversion object for the given BOM type
- void InitFromBOM(BOMType bomType);
+ void InitFromBOM(wxBOM bomType);
// create the correct conversion object for the BOM present in the
- // beginning of the buffer; adjust the buffer to skip the BOM if found
- void InitFromInput(const char **src, size_t *len);
+ // beginning of the buffer
+ //
+ // return false if the buffer is too short to allow us to determine if we
+ // have BOM or not
+ bool InitFromInput(const char *src, size_t len);
// adjust src and len to skip over the BOM (identified by m_bomType) at the
// start of the buffer
wxFontEncoding m_encDefault;
// our BOM type
- BOMType m_bomType;
+ wxBOM m_bomType;
// true if we allocated m_conv ourselves, false if we just use an existing
// global conversion
bool m_consumedBOM;
- DECLARE_NO_ASSIGN_CLASS(wxConvAuto)
+ wxDECLARE_NO_ASSIGN_CLASS(wxConvAuto);
};
-#endif // wxUSE_WCHAR_T
-
#endif // _WX_CONVAUTO_H_