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, offset) > 0;
28 bool WriteBlock(pdfium::span<
const uint8_t> buffer)
override {
29 if (m_pFile->SetPosition(GetSize()) ==
static_cast<
FX_FILESIZE>(-1)) {
32 return !!m_pFile->Write(buffer);
34 bool Flush()
override {
return m_pFile->Flush(); }
37 explicit CFX_CRTFileStream(std::unique_ptr<FileAccessIface> pFA)
38 : m_pFile(std::move(pFA)) {}
39 ~CFX_CRTFileStream()
override =
default;
41 std::unique_ptr<FileAccessIface> m_pFile;
47 return WriteBlock(str.unsigned_span());
51 return WriteBlock(pdfium::byte_span_from_ref(byte));
57 auto buf_span =
pdfium::as_byte_span(buf);
58 return WriteBlock(buf_span.first(strlen(buf)));
64 return WriteBlock(pdfium::as_writable_byte_span(buf).first(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 FX_FILESIZE GetPosition()
bool WriteFilesize(FX_FILESIZE size)
bool WriteByte(uint8_t byte)
bool WriteString(ByteStringView str)
bool WriteDWord(uint32_t i)
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
fxcrt::ByteStringView ByteStringView