pgadmin3/include/utils/utffile.h
2020-07-07 22:19:12 +05:00

62 lines
1.7 KiB
C++

//////////////////////////////////////////////////////////////////////////
//
// pgAdmin III - PostgreSQL Tools
//
// Copyright (C) 2002 - 2016, The pgAdmin Development Team
// This software is released under the PostgreSQL Licence
//
// utffile.h - file io with BOM interpretation
//
//////////////////////////////////////////////////////////////////////////
#ifndef _WX_UTFFILEH__
#define _WX_UTFFILEH__
#include "wx/wx.h"
#include "wx/font.h"
#include "wx/file.h"
class wxUtfFile : public wxFile
{
public:
wxUtfFile();
wxUtfFile(const wxChar *szFileName, OpenMode mode = read, wxFontEncoding encoding = wxFONTENCODING_DEFAULT);
wxUtfFile(int fd, wxFontEncoding encoding = wxFONTENCODING_DEFAULT);
bool Create(const wxChar *szFileName, bool bOverwrite = false, int access = wxS_DEFAULT, wxFontEncoding encoding = wxFONTENCODING_DEFAULT);
bool Open(const wxChar *szFileName, OpenMode mode = read, int access = wxS_DEFAULT, wxFontEncoding encoding = wxFONTENCODING_DEFAULT);
void Attach(int fd, wxFontEncoding encoding = wxFONTENCODING_DEFAULT);
wxFontEncoding GetEncoding();
off_t Seek(off_t ofs, wxSeekMode mode = wxFromStart);
off_t SeekEnd(off_t ofs = 0)
{
return Seek(ofs, wxFromEnd);
}
off_t Tell() const
{
return wxFile::Tell() - m_bomOffset;
}
off_t Length() const
{
return wxFile::Length() - m_bomOffset;
}
off_t Read(wxString &str, off_t nCount = (off_t) - 1);
bool Write(const wxString &str);
protected:
void WriteBOM();
void DetermineConversion(wxFontEncoding encoding);
bool EvalBOM(wxFontEncoding encoding);
wxMBConv *m_conversion;
wxFontEncoding m_encoding;
off_t m_bomOffset;
wxString m_strFileName;
};
#endif // _WX_UTFFILEH__