return ReadString(line, eol, lossy);
}
+bool UniMemFile::ReadStringAll(String& text)
+{
+ text.clear();
+ bool lossy = false, lossytmp = false;
+ text.reserve(m_filesize);
+ bool last = false;
+ do
+ {
+ String tmp, eol;
+ last = ReadString(tmp, eol, &lossytmp);
+ text += tmp;
+ text += eol;
+ if (lossytmp)
+ lossy = true;
+ } while (last);
+ return lossy;
+}
+
/**
* @brief Append characters to string.
* This function appends characters to the string. The storage for the string
return false;
}
+bool UniStdioFile::ReadStringAll(String & line)
+{
+ assert(false); // unimplemented -- currently cannot read from a UniStdioFile!
+ return false;
+}
+
/** @brief Write BOM (byte order mark) if Unicode file */
int UniStdioFile::WriteBom()
{
public:
virtual bool ReadString(String & line, bool * lossy) = 0;
virtual bool ReadString(String & line, String & eol, bool * lossy) = 0;
+ virtual bool ReadStringAll(String & line) = 0;
virtual int GetLineNumber() const = 0;
virtual int64_t GetPosition() const = 0;
virtual bool WriteString(const String & line) = 0;
virtual int GetLineNumber() const override { return m_lineno; }
virtual const txtstats & GetTxtStats() const override { return m_txtstats; }
+ virtual int64_t GetFileSize() const{ return m_filesize; }
bool IsUnicode() override;
public:
virtual bool ReadString(String & line, bool * lossy) override;
virtual bool ReadString(String & line, String & eol, bool * lossy) override;
+ virtual bool ReadStringAll(String & line) override;
virtual int64_t GetPosition() const override { return m_current - m_base; }
virtual bool WriteString(const String & line) override;
+ unsigned char* GetBase() const { return m_base; }
// Implementation methods
protected:
protected:
virtual bool ReadString(String & line, bool * lossy) override;
virtual bool ReadString(String & line, String & eol, bool * lossy) override;
+ virtual bool ReadStringAll(String & line) override;
public:
virtual int64_t GetPosition() const override;