From 017ebba6940e0fe5ff39122c033600f88f24539a Mon Sep 17 00:00:00 2001 From: dan sinclair Date: Fri, 12 May 2017 09:18:06 -0400 Subject: Add a WriteString method to IFX_WriteStream MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This Cl allows passing a CFX_ByteStringC to IFX_WriteStream along with the buffer method. This makes it easier to pass C-style strings to the stream. Change-Id: I1051eb3ba17c7fbd42984c14dc60cbce24d72f3f Reviewed-on: https://pdfium-review.googlesource.com/5430 Reviewed-by: Nicolás Peña Commit-Queue: dsinclair --- core/fxcrt/fx_stream.cpp | 4 ++++ core/fxcrt/fx_stream.h | 4 +++- fpdfsdk/fsdk_filewriteadapter.cpp | 4 ++++ fpdfsdk/fsdk_filewriteadapter.h | 1 + 4 files changed, 12 insertions(+), 1 deletion(-) diff --git a/core/fxcrt/fx_stream.cpp b/core/fxcrt/fx_stream.cpp index 32b6ca3495..ba21461098 100644 --- a/core/fxcrt/fx_stream.cpp +++ b/core/fxcrt/fx_stream.cpp @@ -93,3 +93,7 @@ size_t IFX_SeekableReadStream::ReadBlock(void* buffer, size_t size) { bool IFX_SeekableStream::WriteBlock(const void* buffer, size_t size) { return WriteBlock(buffer, GetSize(), size); } + +bool IFX_SeekableStream::WriteString(const CFX_ByteStringC& str) { + return WriteBlock(str.c_str(), str.GetLength()); +} diff --git a/core/fxcrt/fx_stream.h b/core/fxcrt/fx_stream.h index 5237a7cb94..622818173b 100644 --- a/core/fxcrt/fx_stream.h +++ b/core/fxcrt/fx_stream.h @@ -42,13 +42,13 @@ wchar_t FX_GetFolderSeparator(); class IFX_WriteStream : virtual public CFX_Retainable { public: virtual bool WriteBlock(const void* pData, size_t size) = 0; + virtual bool WriteString(const CFX_ByteStringC& str) = 0; }; class IFX_ArchiveStream : public IFX_WriteStream { public: virtual bool WriteByte(uint8_t byte) = 0; virtual bool WriteDWord(uint32_t i) = 0; - virtual bool WriteString(const CFX_ByteStringC& str) = 0; virtual FX_FILESIZE CurrentOffset() const = 0; }; @@ -108,6 +108,8 @@ class IFX_SeekableStream : public IFX_SeekableReadStream, FX_FILESIZE offset, size_t size) override = 0; bool WriteBlock(const void* buffer, size_t size) override; + bool WriteString(const CFX_ByteStringC& str) override; + bool Flush() override = 0; }; diff --git a/fpdfsdk/fsdk_filewriteadapter.cpp b/fpdfsdk/fsdk_filewriteadapter.cpp index 98ca3af574..ff527a6f2e 100644 --- a/fpdfsdk/fsdk_filewriteadapter.cpp +++ b/fpdfsdk/fsdk_filewriteadapter.cpp @@ -16,3 +16,7 @@ FSDK_FileWriteAdapter::~FSDK_FileWriteAdapter() {} bool FSDK_FileWriteAdapter::WriteBlock(const void* data, size_t size) { return fileWriteStruct_->WriteBlock(fileWriteStruct_, data, size) != 0; } + +bool FSDK_FileWriteAdapter::WriteString(const CFX_ByteStringC& str) { + return WriteBlock(str.c_str(), str.GetLength()); +} diff --git a/fpdfsdk/fsdk_filewriteadapter.h b/fpdfsdk/fsdk_filewriteadapter.h index 78f34cc679..f2c3a534bf 100644 --- a/fpdfsdk/fsdk_filewriteadapter.h +++ b/fpdfsdk/fsdk_filewriteadapter.h @@ -17,6 +17,7 @@ class FSDK_FileWriteAdapter : public IFX_WriteStream { friend CFX_RetainPtr pdfium::MakeRetain(Args&&... args); bool WriteBlock(const void* data, size_t size) override; + bool WriteString(const CFX_ByteStringC& str) override; private: explicit FSDK_FileWriteAdapter(FPDF_FILEWRITE* fileWriteStruct); -- cgit v1.2.3