Chromium Code Reviews| 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_ |