virtual bool HasBom() = 0;
virtual void SetBom(bool bom) = 0;
- virtual int GetUnicoding() const = 0;
- virtual void SetUnicoding(int unicoding) = 0;
+ virtual ucr::UNICODESET GetUnicoding() const = 0;
+ virtual void SetUnicoding(ucr::UNICODESET unicoding) = 0;
virtual int GetCodepage() const = 0;
virtual void SetCodepage(int codepage) = 0;
virtual String GetFullyQualifiedPath() const { return m_filepath; }
virtual const UniError & GetLastUniError() const { return m_lastError; }
- virtual int GetUnicoding() const { return m_unicoding; }
- virtual void SetUnicoding(int unicoding) { m_unicoding = unicoding; }
+ virtual ucr::UNICODESET GetUnicoding() const { return m_unicoding; }
+ virtual void SetUnicoding(ucr::UNICODESET unicoding) { m_unicoding = unicoding; }
virtual int GetCodepage() const { return m_codepage; }
virtual void SetCodepage(int codepage) { m_codepage = codepage; }
String m_filename;
int m_lineno; // current 0-based line of m_current
UniError m_lastError;
- int m_unicoding; // enum UNICODESET in unicoder.h
+ ucr::UNICODESET m_unicoding;
int m_charsize; // 2 for UCS-2, else 1
int m_codepage; // only valid if m_unicoding==ucr::NONE;
txtstats m_txtstats;
if (!ufile.OpenReadOnly(filepath) || !ufile.IsUnicode())
return TRUE; // not unicode file, nothing to do
- int codeOldBOM = ufile.GetUnicoding();
+ ucr::UNICODESET codeOldBOM = ufile.GetUnicoding();
if (codeOldBOM == ucr::UCS2LE)
return TRUE; // unicode UCS-2LE, nothing to do
bool bBom = ufile.HasBom();
UniMemFile ufile;
if (!ufile.OpenReadOnly(filepath) || !ufile.IsUnicode())
return TRUE; // not unicode file, nothing to do
- int unicoding = ufile.GetUnicoding();
+ ucr::UNICODESET unicoding = ufile.GetUnicoding();
// Finished with examing file contents
ufile.Close();
};
/** @brief Known Unicode encodings. */
-typedef enum
+enum UNICODESET
{
NONE = 0, /**< No unicode. */
UCS2LE, /**< UCS-2 little endian. */
UCS2BE, /**< UCS-2 big endian. */
UTF8, /**< UTF-8. */
-} UNICODESET;
+};
int Ucs4_to_Utf8(UINT unich, unsigned char * utf8);
int Utf8len_fromLeadByte(unsigned char ch);
int SaveToFile (LPCTSTR pszFileName, BOOL bTempFile, CString & sError,
PackingInfo * infoUnpacker = NULL, CRLFSTYLE nCrlfStyle = CRLF_STYLE_AUTOMATIC,
BOOL bClearModifiedFlag = TRUE );
- int getUnicoding() const { return m_encoding.m_unicoding; }
- void setUnicoding(int value) { m_encoding.m_unicoding = value; }
+ ucr::UNICODESET getUnicoding() const { return m_encoding.m_unicoding; }
+ void setUnicoding(ucr::UNICODESET value) { m_encoding.m_unicoding = value; }
int getCodepage() const { return m_encoding.m_codepage; }
void setCodepage(int value) { m_encoding.m_codepage = value; }
const FileTextEncoding & getEncoding() const { return m_encoding; }
void FileTextEncoding::Clear()
{
m_codepage = -1;
- m_unicoding = 0; // assume unicoding==0 means none
+ m_unicoding = ucr::NONE;
m_bom = false;
m_guessed = false;
}
m_unicoding = ucr::UTF8;
}
-void FileTextEncoding::SetUnicoding(int unicoding)
+void FileTextEncoding::SetUnicoding(ucr::UNICODESET unicoding)
{
if (unicoding == ucr::NONE)
m_codepage = CP_ACP; // not sure what to do here
#ifndef FileTextEncoding_h_included
#define FileTextEncoding_h_included
+#include "unicoder.h"
+
/**
* @brief Text encoding (eg, UTF-8, or CP-1252)
*/
struct FileTextEncoding
{
int m_codepage; /**< 8bit codepage, if applicable, -1 is unknown or N/A */
- int m_unicoding; /**< Unicode encoding (assumes 0 is none, use values from ucr::CODESET) */
+ ucr::UNICODESET m_unicoding; /**< Unicode encoding. */
bool m_bom; /**< Unicode byte marker */
bool m_guessed; /**< Whether encoding was guessed from content */
FileTextEncoding();
void Clear();
void SetCodepage(int codepage);
- void SetUnicoding(int unicoding);
+ void SetUnicoding(ucr::UNICODESET unicoding);
String GetName() const;
static int Collate(const FileTextEncoding & fte1, const FileTextEncoding & fte2);
_T ("\x0d") // Macintosh style
};
+static void SaveBuffForDiff(CDiffTextBuffer & buf, LPCTSTR filepath);
+static void UnescapeControlChars(CString &s);
+
/////////////////////////////////////////////////////////////////////////////
// CMergeDoc
{
ASSERT(buf.m_nSourceEncoding == buf.m_nDefaultEncoding);
int orig_codepage = buf.getCodepage();
- int orig_unicoding = buf.getUnicoding();
+ ucr::UNICODESET orig_unicoding = buf.getUnicoding();
// If file was in Unicode
if (orig_unicoding!=ucr::NONE)