const std::vector<CPDF_Dictionary*>* CPDF_LinkList::GetPageLinks( CPDF_Page* pPage) { uint32_t objnum = pPage->m_pFormDict->GetObjNum(); if (objnum == 0) return nullptr; auto it = m_PageMap.find(objnum); if (it != m_PageMap.end()) return &it->second; // std::map::operator[] forces the creation of a map entry. std::vector<CPDF_Dictionary*>& page_link_list = m_PageMap[objnum]; LoadPageLinks(pPage, &page_link_list); return &page_link_list; }
CFX_PtrArray* CPDF_LinkList::GetPageLinks(CPDF_Page* pPage) { FX_DWORD objnum = pPage->m_pFormDict->GetObjNum(); if (objnum == 0) { return NULL; } CFX_PtrArray* pPageLinkList = NULL; if (!m_PageMap.Lookup((FX_LPVOID)(FX_UINTPTR)objnum, (FX_LPVOID&)pPageLinkList)) { pPageLinkList = FX_NEW CFX_PtrArray; if (pPageLinkList == NULL) { return NULL; } m_PageMap.SetAt((FX_LPVOID)(FX_UINTPTR)objnum, pPageLinkList); LoadPageLinks(pPage, pPageLinkList); } return pPageLinkList; }