2 * Copyright (C) 2003-2006 Gabest
3 * http://www.gabest.org
5 * This Program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2, or (at your option)
10 * This Program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
15 * You should have received a copy of the GNU General Public License
16 * along with GNU Make; see the file COPYING. If not, write to
17 * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
18 * http://www.gnu.org/copyleft/gpl.html
26 class CTextFile
: protected CStdioFile
29 typedef enum {ASCII
, UTF8
, LE16
, BE16
, ANSI
} enc
;
32 enc m_encoding
, m_defaultencoding
;
36 CTextFile(enc e
= ASCII
);
38 virtual bool Open(LPCTSTR lpszFileName
);
39 virtual bool Save(LPCTSTR lpszFileName
, enc e
/*= ASCII*/);
41 void SetEncoding(enc e
);
46 virtual UINT
Read(void* lpBuf
, UINT nCount
);
47 CString
GetFilePath() const;
51 ULONGLONG
GetPosition() const;
52 ULONGLONG
GetLength() const;
53 ULONGLONG
Seek(LONGLONG lOff
, UINT nFrom
);
55 void WriteString(LPCSTR lpsz
/*CStringA str*/);
56 void WriteString(LPCWSTR lpsz
/*CStringW str*/);
57 BOOL
ReadString(CStringA
& str
);
58 BOOL
ReadString(CStringW
& str
);
61 virtual bool ReopenAsText();
64 class CWebTextFile
: public CTextFile
70 CWebTextFile(CTextFile::enc e
= ASCII
, LONGLONG llMaxSize
= 1024 * 1024);
72 bool Open(LPCTSTR lpszFileName
);
73 bool Save(LPCTSTR lpszFileName
, enc e
/*= ASCII*/);
77 CStringW
AToW(const CStringA
& str
);
78 CStringA
WToA(const CStringW
& str
);
79 CString
AToT(const CStringA
& str
);
80 CString
WToT(const CStringW
& str
);
81 CStringA
TToA(const CString
& str
);
82 CStringW
TToW(const CString
& str
);