Index: core/fpdfapi/parser/cpdf_indirect_object_holder.h |
diff --git a/core/fpdfapi/parser/cpdf_indirect_object_holder.h b/core/fpdfapi/parser/cpdf_indirect_object_holder.h |
index da4e942b5da73ca92fca89725e773febeebd827f..074e428d4350d92e815a7f61c4b5b458dcbbd1d4 100644 |
--- a/core/fpdfapi/parser/cpdf_indirect_object_holder.h |
+++ b/core/fpdfapi/parser/cpdf_indirect_object_holder.h |
@@ -10,9 +10,14 @@ |
#include <map> |
#include <memory> |
+#include "core/fpdfapi/parser/cpdf_object.h" |
+#include "core/fxcrt/cfx_string_pool_template.h" |
+#include "core/fxcrt/cfx_weak_ptr.h" |
#include "core/fxcrt/fx_system.h" |
-class CPDF_Object; |
+class CPDF_Array; |
+class CPDF_Dictionary; |
+class CPDF_Stream; |
class CPDF_IndirectObjectHolder { |
public: |
@@ -24,12 +29,23 @@ class CPDF_IndirectObjectHolder { |
CPDF_Object* GetIndirectObject(uint32_t objnum) const; |
CPDF_Object* GetOrParseIndirectObject(uint32_t objnum); |
- void ReleaseIndirectObject(uint32_t objnum); |
+ void DeleteIndirectObject(uint32_t objnum); |
+ |
+ // Take ownership of |pObj|, returns unowned pointer to it. |
+ CPDF_Object* AddIndirectObject(UniqueObject pObj); |
+ |
+ // Adds and owns a new object, returns unowned pointer to it. |
+ CPDF_Array* AddIndirectArray(); |
+ CPDF_Dictionary* AddIndirectDictionary(); |
+ CPDF_Dictionary* AddIndirectDictionary( |
+ const CFX_WeakPtr<CFX_ByteStringPool>& pPool); |
+ CPDF_Stream* AddIndirectStream(); |
+ CPDF_Stream* AddIndirectStream(uint8_t* pData, |
+ uint32_t size, |
+ CPDF_Dictionary* pDict); |
- // Take ownership of |pObj|. |
- uint32_t AddIndirectObject(CPDF_Object* pObj); |
bool ReplaceIndirectObjectIfHigherGeneration(uint32_t objnum, |
- CPDF_Object* pObj); |
+ UniqueObject pObj); |
uint32_t GetLastObjNum() const { return m_LastObjNum; } |
void SetLastObjNum(uint32_t objnum) { m_LastObjNum = objnum; } |
@@ -42,6 +58,8 @@ class CPDF_IndirectObjectHolder { |
private: |
uint32_t m_LastObjNum; |
+ |
+ // Ordinary deleter, not Release(). |
std::map<uint32_t, std::unique_ptr<CPDF_Object>> m_IndirectObjs; |
}; |