| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155 | 
							- ///////////////////////////////////////////////////////////////////////////////
 
- // Name:        wx/convauto.h
 
- // Purpose:     wxConvAuto class declaration
 
- // Author:      Vadim Zeitlin
 
- // Created:     2006-04-03
 
- // Copyright:   (c) 2006 Vadim Zeitlin
 
- // Licence:     wxWindows licence
 
- ///////////////////////////////////////////////////////////////////////////////
 
- #ifndef _WX_CONVAUTO_H_
 
- #define _WX_CONVAUTO_H_
 
- #include "wx/strconv.h"
 
- #include "wx/fontenc.h"
 
- // ----------------------------------------------------------------------------
 
- // 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:
 
-     // default ctor, the real conversion will be created on demand
 
-     wxConvAuto(wxFontEncoding enc = wxFONTENCODING_DEFAULT)
 
-     {
 
-         Init();
 
-         m_encDefault = enc;
 
-     }
 
-     // copy ctor doesn't initialize anything neither as conversion can only be
 
-     // deduced on first use
 
-     wxConvAuto(const wxConvAuto& other) : wxMBConv()
 
-     {
 
-         Init();
 
-         m_encDefault = other.m_encDefault;
 
-     }
 
-     virtual ~wxConvAuto()
 
-     {
 
-         if ( m_ownsConv )
 
-             delete m_conv;
 
-     }
 
-     // get/set the fall-back encoding used when the input text doesn't have BOM
 
-     // and isn't UTF-8
 
-     //
 
-     // special values are wxFONTENCODING_MAX meaning not to use any fall back
 
-     // at all (but just fail to convert in this case) and wxFONTENCODING_SYSTEM
 
-     // meaning to use the encoding of the system locale
 
-     static wxFontEncoding GetFallbackEncoding() { return ms_defaultMBEncoding; }
 
-     static void SetFallbackEncoding(wxFontEncoding enc);
 
-     static void DisableFallbackEncoding()
 
-     {
 
-         SetFallbackEncoding(wxFONTENCODING_MAX);
 
-     }
 
-     // override the base class virtual function(s) to use our m_conv
 
-     virtual size_t ToWChar(wchar_t *dst, size_t dstLen,
 
-                            const char *src, size_t srcLen = wxNO_LEN) const;
 
-     virtual size_t FromWChar(char *dst, size_t dstLen,
 
-                              const wchar_t *src, size_t srcLen = wxNO_LEN) const;
 
-     virtual size_t GetMBNulLen() const { return m_conv->GetMBNulLen(); }
 
-     virtual wxMBConv *Clone() const { return new wxConvAuto(*this); }
 
-     // return the BOM type of this buffer
 
-     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()
 
-     {
 
-         // 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
 
-     void InitWithUTF8()
 
-     {
 
-         m_conv = &wxConvUTF8;
 
-         m_ownsConv = false;
 
-     }
 
-     // create the correct conversion object for the given BOM type
 
-     void InitFromBOM(wxBOM bomType);
 
-     // create the correct conversion object for the BOM present in the
 
-     // 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
 
-     void SkipBOM(const char **src, size_t *len) const;
 
-     // fall-back multibyte encoding to use, may be wxFONTENCODING_SYSTEM or
 
-     // wxFONTENCODING_MAX but not wxFONTENCODING_DEFAULT
 
-     static wxFontEncoding ms_defaultMBEncoding;
 
-     // conversion object which we really use, NULL until the first call to
 
-     // either ToWChar() or FromWChar()
 
-     wxMBConv *m_conv;
 
-     // the multibyte encoding to use by default if input isn't Unicode
 
-     wxFontEncoding m_encDefault;
 
-     // our BOM type
 
-     wxBOM m_bomType;
 
-     // true if we allocated m_conv ourselves, false if we just use an existing
 
-     // global conversion
 
-     bool m_ownsConv;
 
-     // true if we already skipped BOM when converting (and not just calculating
 
-     // the size)
 
-     bool m_consumedBOM;
 
-     wxDECLARE_NO_ASSIGN_CLASS(wxConvAuto);
 
- };
 
- #endif // _WX_CONVAUTO_H_
 
 
  |