Index: core/fpdfapi/parser/cpdf_dictionary.h |
diff --git a/core/fpdfapi/parser/cpdf_dictionary.h b/core/fpdfapi/parser/cpdf_dictionary.h |
index 9cf575ddd49f8a9c8026d21769ab547bbe834159..fb8200f78c47bfb26528a45b4367d4808f69a4cc 100644 |
--- a/core/fpdfapi/parser/cpdf_dictionary.h |
+++ b/core/fpdfapi/parser/cpdf_dictionary.h |
@@ -15,6 +15,7 @@ |
#include "core/fxcrt/cfx_weak_ptr.h" |
#include "core/fxcrt/fx_coordinates.h" |
#include "core/fxcrt/fx_string.h" |
+#include "third_party/base/ptr_util.h" |
class CPDF_IndirectObjectHolder; |
@@ -98,6 +99,9 @@ class CPDF_Dictionary : public CPDF_Object { |
std::map<CFX_ByteString, CPDF_Object*> m_Map; |
}; |
+using UniqueDictionary = |
+ std::unique_ptr<CPDF_Dictionary, ReleaseDeleter<CPDF_Object>>; |
+ |
inline CPDF_Dictionary* ToDictionary(CPDF_Object* obj) { |
return obj ? obj->AsDictionary() : nullptr; |
} |
@@ -106,4 +110,12 @@ inline const CPDF_Dictionary* ToDictionary(const CPDF_Object* obj) { |
return obj ? obj->AsDictionary() : nullptr; |
} |
+inline UniqueDictionary ToDictionary(UniqueObject obj) { |
Lei Zhang
2016/10/13 22:52:38
Do we still want to explicitly inline / implement
Tom Sepez
2016/10/13 22:56:04
For now, I think so just to keep them together.
|
+ CPDF_Dictionary* pDict = ToDictionary(obj.get()); |
+ if (!pDict) |
+ return nullptr; |
+ obj.release(); |
+ return UniqueDictionary(pDict); |
+} |
+ |
#endif // CORE_FPDFAPI_PARSER_CPDF_DICTIONARY_H_ |