Index: core/fpdfapi/fpdf_parser/include/cpdf_stream.h |
diff --git a/core/fpdfapi/fpdf_parser/include/cpdf_stream.h b/core/fpdfapi/fpdf_parser/include/cpdf_stream.h |
index 7ea761ef51d257796003447f380e10e7f585899f..b39b20a1e9318651e591c5f7e09ca2b50b5b1222 100644 |
--- a/core/fpdfapi/fpdf_parser/include/cpdf_stream.h |
+++ b/core/fpdfapi/fpdf_parser/include/cpdf_stream.h |
@@ -7,14 +7,18 @@ |
#ifndef CORE_FPDFAPI_FPDF_PARSER_INCLUDE_CPDF_STREAM_H_ |
#define CORE_FPDFAPI_FPDF_PARSER_INCLUDE_CPDF_STREAM_H_ |
+#include <memory> |
#include <set> |
#include "core/fpdfapi/fpdf_parser/include/cpdf_dictionary.h" |
#include "core/fpdfapi/fpdf_parser/include/cpdf_object.h" |
-#include "core/fxcrt/include/fx_stream.h" |
+#include "core/fxcrt/include/fx_basic.h" |
class CPDF_Stream : public CPDF_Object { |
public: |
+ CPDF_Stream(); |
+ |
+ // Takes onwership of |pData| and |pDict|. |
CPDF_Stream(uint8_t* pData, uint32_t size, CPDF_Dictionary* pDict); |
dsinclair
2016/09/19 13:12:18
Can we pass through a std::unique_ptr to make the
|
// CPDF_Object. |
@@ -27,12 +31,10 @@ class CPDF_Stream : public CPDF_Object { |
const CPDF_Stream* AsStream() const override; |
uint32_t GetRawSize() const { return m_dwSize; } |
- uint8_t* GetRawData() const { return m_pDataBuf; } |
+ uint8_t* GetRawData() const { return m_pDataBuf.get(); } |
- void SetData(const uint8_t* pData, |
- uint32_t size, |
- FX_BOOL bCompressed, |
- FX_BOOL bKeepBuf); |
+ // Does not takes onwership of |pData|, copies into internally-owned buffer. |
+ void SetData(const uint8_t* pData, uint32_t size); |
void InitStream(const uint8_t* pData, uint32_t size, CPDF_Dictionary* pDict); |
void InitStreamFromFile(IFX_FileRead* pFile, CPDF_Dictionary* pDict); |
@@ -41,26 +43,19 @@ class CPDF_Stream : public CPDF_Object { |
uint8_t* pBuf, |
uint32_t buf_size) const; |
- bool IsMemoryBased() const { return m_GenNum == kMemoryBasedGenNum; } |
+ bool IsMemoryBased() const { return m_bMemoryBased; } |
protected: |
- static const uint32_t kMemoryBasedGenNum = (uint32_t)-1; |
- |
~CPDF_Stream() override; |
CPDF_Object* CloneNonCyclic( |
bool bDirect, |
std::set<const CPDF_Object*>* pVisited) const override; |
- void InitStreamInternal(CPDF_Dictionary* pDict); |
- |
- CPDF_Dictionary* m_pDict; |
- uint32_t m_dwSize; |
- uint32_t m_GenNum; |
- |
- union { |
- uint8_t* m_pDataBuf; |
- IFX_FileRead* m_pFile; |
- }; |
+ std::unique_ptr<CPDF_Dictionary, ReleaseDeleter<CPDF_Dictionary>> m_pDict; |
+ bool m_bMemoryBased = true; |
+ uint32_t m_dwSize = 0; |
+ std::unique_ptr<uint8_t, FxFreeDeleter> m_pDataBuf; |
+ IFX_FileRead* m_pFile = nullptr; |
}; |
#endif // CORE_FPDFAPI_FPDF_PARSER_INCLUDE_CPDF_STREAM_H_ |