7#include "core/fpdfapi/parser/cpdf_reference.h"
9#include "core/fpdfapi/parser/cpdf_dictionary.h"
10#include "core/fpdfapi/parser/cpdf_indirect_object_holder.h"
11#include "core/fxcrt/fx_stream.h"
12#include "third_party/base/check_op.h"
13#include "third_party/base/containers/contains.h"
16 : m_pObjList(pDoc), m_RefObjNum(objnum) {}
54 std::set<
const CPDF_Object*>* pVisited)
const {
55 pVisited->insert(
this);
57 return pdfium::MakeRetain<CPDF_Reference>(m_pObjList, m_RefObjNum);
60 return pDirect && !pdfium::Contains(*pVisited, pDirect.Get())
61 ? pDirect->CloneNonCyclic(
true, pVisited)
65const CPDF_Object* CPDF_Reference::FastGetDirect()
const {
69 m_pObjList->GetOrParseIndirectObjectInternal(m_RefObjNum);
79 return m_pObjList ? m_pObjList->GetOrParseIndirectObjectInternal(m_RefObjNum)
91 DCHECK_EQ(holder, m_pObjList);
virtual ByteString GetString() const
virtual int GetInteger() const
virtual float GetNumber() const
RetainPtr< CPDF_Object > CloneObjectNonCyclic(bool bDirect) const
virtual const CPDF_Dictionary * GetDictInternal() const
RetainPtr< CPDF_Object > CloneNonCyclic(bool bDirect, std::set< const CPDF_Object * > *pVisited) const override
void SetRef(CPDF_IndirectObjectHolder *pDoc, uint32_t objnum)
~CPDF_Reference() override
float GetNumber() const override
int GetInteger() const override
const CPDF_Dictionary * GetDictInternal() const override
const CPDF_Object * GetDirectInternal() const override
RetainPtr< CPDF_Reference > MakeReference(CPDF_IndirectObjectHolder *holder) const override
uint32_t GetRefObjNum() const
CPDF_Reference * AsMutableReference() override
bool WriteTo(IFX_ArchiveStream *archive, const CPDF_Encryptor *encryptor) const override
ByteString GetString() const override
Type GetType() const override
RetainPtr< CPDF_Object > Clone() const override
bool WriteString(ByteStringView str)
bool WriteDWord(uint32_t i)