7#include "core/fxcrt/fx_stream.h"
12#include "core/fxcrt/fileaccess_iface.h"
21 FX_FILESIZE GetSize()
override {
return m_pFile->GetSize(); }
22 bool IsEOF()
override {
return GetPosition() >= GetSize(); }
23 FX_FILESIZE GetPosition()
override {
return m_pFile->GetPosition(); }
24 bool ReadBlockAtOffset(pdfium::span<uint8_t> buffer,
26 return m_pFile->ReadPos(buffer.data(), buffer.size(), offset) > 0;
28 size_t ReadBlock(pdfium::span<uint8_t> buffer)
override {
29 return m_pFile->Read(buffer.data(), buffer.size());
31 bool WriteBlockAtOffset(pdfium::span<
const uint8_t> buffer,
33 return !!m_pFile->WritePos(buffer.data(), buffer.size(), offset);
35 bool Flush()
override {
return m_pFile->Flush(); }
38 explicit CFX_CRTFileStream(std::unique_ptr<FileAccessIface> pFA)
39 : m_pFile(std::move(pFA)) {}
40 ~CFX_CRTFileStream()
override =
default;
42 std::unique_ptr<FileAccessIface> m_pFile;
58 return WriteBlock({
reinterpret_cast<uint8_t*>(buf), strlen(buf)});
64 return WriteBlock({
reinterpret_cast<uint8_t*>(buf), strlen(buf)});
69 const char* filename) {
70 std::unique_ptr<FileAccessIface> pFA = FileAccessIface::Create();
71 if (!pFA->Open(filename))
73 return pdfium::MakeRetain<CFX_CRTFileStream>(
std::move(pFA));
static RetainPtr< IFX_SeekableReadStream > CreateFromFilename(const char *filename)
virtual size_t ReadBlock(pdfium::span< uint8_t > buffer)
virtual FX_FILESIZE GetPosition()
bool WriteBlock(pdfium::span< const uint8_t > buffer) override
virtual bool WriteBlockAtOffset(pdfium::span< const uint8_t > data, FX_FILESIZE offset)=0
bool WriteBlock(pdfium::span< const uint8_t > buffer) override
virtual FX_FILESIZE GetSize()=0
bool WriteFilesize(FX_FILESIZE size)
bool WriteByte(uint8_t byte)
bool WriteString(ByteStringView str)
bool WriteDWord(uint32_t i)
virtual bool WriteBlock(pdfium::span< const uint8_t > data)=0
const char * FXSYS_i64toa(int64_t value, char *str, int radix)
char * FXSYS_itoa(int value, char *str, int radix)
#define CONSTRUCT_VIA_MAKE_RETAIN