Move CPDF_Reference::SafeGetDirect() out of the header.

Review-Url: https://codereview.chromium.org/2386433002
diff --git a/core/fpdfapi/fpdf_parser/cpdf_reference.cpp b/core/fpdfapi/fpdf_parser/cpdf_reference.cpp
index 06625a9..4f826dc 100644
--- a/core/fpdfapi/fpdf_parser/cpdf_reference.cpp
+++ b/core/fpdfapi/fpdf_parser/cpdf_reference.cpp
@@ -67,6 +67,11 @@
   return new CPDF_Reference(m_pObjList, m_RefObjNum);
 }
 
+CPDF_Object* CPDF_Reference::SafeGetDirect() const {
+  CPDF_Object* obj = GetDirect();
+  return (obj && !obj->IsReference()) ? obj : nullptr;
+}
+
 void CPDF_Reference::SetRef(CPDF_IndirectObjectHolder* pDoc, uint32_t objnum) {
   m_pObjList = pDoc;
   m_RefObjNum = objnum;
diff --git a/core/fpdfapi/fpdf_parser/cpdf_reference.h b/core/fpdfapi/fpdf_parser/cpdf_reference.h
index af52f90..1322b97 100644
--- a/core/fpdfapi/fpdf_parser/cpdf_reference.h
+++ b/core/fpdfapi/fpdf_parser/cpdf_reference.h
@@ -25,8 +25,6 @@
   FX_FLOAT GetNumber() const override;
   int GetInteger() const override;
   CPDF_Dictionary* GetDict() const override;
-
-  // TODO(weili): check whether GetUnicodeText() and GetArray() are needed.
   bool IsReference() const override;
   CPDF_Reference* AsReference() override;
   const CPDF_Reference* AsReference() const override;
@@ -38,15 +36,12 @@
 
  protected:
   ~CPDF_Reference() override;
+
   CPDF_Object* CloneNonCyclic(
       bool bDirect,
       std::set<const CPDF_Object*>* pVisited) const override;
-  CPDF_Object* SafeGetDirect() const {
-    CPDF_Object* obj = GetDirect();
-    if (!obj || obj->IsReference())
-      return nullptr;
-    return obj;
-  }
+
+  CPDF_Object* SafeGetDirect() const;
 
   CPDF_IndirectObjectHolder* m_pObjList;
   uint32_t m_RefObjNum;