Add IFX_StreamWithSize with just a GetSize() method. Set up the inheritance tree so IFX_SeekableWriteStream, IFX_SeekableReadStream, and IFX_SeekableStream do not all need to declare GetSize() as pure virtual. Change-Id: If11622bb6032388ff0df152459eeffdf684f4575 Reviewed-on: https://pdfium-review.googlesource.com/c/45557 Commit-Queue: Lei Zhang <thestig@chromium.org> Reviewed-by: Tom Sepez <tsepez@chromium.org>
diff --git a/core/fxcrt/fx_stream.h b/core/fxcrt/fx_stream.h index 354cbe4..dfaf51e 100644 --- a/core/fxcrt/fx_stream.h +++ b/core/fxcrt/fx_stream.h
@@ -52,22 +52,28 @@ virtual FX_FILESIZE CurrentOffset() const = 0; }; +class IFX_StreamWithSize { + public: + virtual FX_FILESIZE GetSize() = 0; +}; + class IFX_RetainableWriteStream : virtual public Retainable, public IFX_WriteStream {}; -class IFX_SeekableWriteStream : public IFX_RetainableWriteStream { +class IFX_SeekableWriteStream : virtual public IFX_StreamWithSize, + public IFX_RetainableWriteStream { public: // IFX_WriteStream: bool WriteBlock(const void* pData, size_t size) override; - virtual FX_FILESIZE GetSize() = 0; virtual bool Flush() = 0; virtual bool WriteBlockAtOffset(const void* pData, FX_FILESIZE offset, size_t size) = 0; }; -class IFX_SeekableReadStream : virtual public Retainable { +class IFX_SeekableReadStream : virtual public Retainable, + virtual public IFX_StreamWithSize { public: static RetainPtr<IFX_SeekableReadStream> CreateFromFilename( const char* filename); @@ -79,7 +85,6 @@ virtual bool ReadBlockAtOffset(void* buffer, FX_FILESIZE offset, size_t size) = 0; - virtual FX_FILESIZE GetSize() = 0; }; class IFX_SeekableStream : public IFX_SeekableReadStream, @@ -92,9 +97,6 @@ const wchar_t* filename, uint32_t dwModes); - // IFX_SeekableReadStream: - FX_FILESIZE GetSize() override = 0; - // IFX_SeekableWriteStream: bool WriteBlock(const void* buffer, size_t size) override; bool WriteString(const ByteStringView& str) override;