Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1197)

Unified Diff: core/fpdftext/fpdf_text_int.cpp

Issue 1896303002: Remove CFX_ArrayTemplate from CPDF_LinkExtract (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: Inline and remove Append method. Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | core/fpdftext/fpdf_text_int_unittest.cpp » ('j') | core/fpdftext/include/cpdf_linkextract.h » ('J')
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: core/fpdftext/fpdf_text_int.cpp
diff --git a/core/fpdftext/fpdf_text_int.cpp b/core/fpdftext/fpdf_text_int.cpp
index 741331fb7711984b851d25053cefc5def0d50828..4da251c78e6653a5a7138fe29ab35b9269f13125 100644
--- a/core/fpdftext/fpdf_text_int.cpp
+++ b/core/fpdftext/fpdf_text_int.cpp
@@ -2330,43 +2330,28 @@ int CPDF_TextPageFind::GetMatchedCount() const {
return resEnd - resStart + 1;
}
-CPDF_LinkExtract::CPDF_LinkExtract()
- : m_pTextPage(nullptr), m_bIsParsed(false) {}
+CPDF_LinkExtract::CPDF_LinkExtract(const CPDF_TextPage* pTextPage)
+ : m_pTextPage(pTextPage), m_bIsParsed(false) {}
CPDF_LinkExtract::~CPDF_LinkExtract() {
- DeleteLinkList();
}
-FX_BOOL CPDF_LinkExtract::ExtractLinks(const CPDF_TextPage* pTextPage) {
- if (!pTextPage || !pTextPage->IsParsed())
+FX_BOOL CPDF_LinkExtract::ExtractLinks() {
+ if (!m_pTextPage->IsParsed())
return FALSE;
- m_pTextPage = (const CPDF_TextPage*)pTextPage;
+ m_LinkList.clear();
m_strPageText = m_pTextPage->GetPageText(0, -1);
- DeleteLinkList();
- if (m_strPageText.IsEmpty()) {
+ if (m_strPageText.IsEmpty())
return FALSE;
- }
+
ParseLink();
m_bIsParsed = true;
return TRUE;
}
-void CPDF_LinkExtract::DeleteLinkList() {
- while (m_LinkList.GetSize()) {
- CPDF_LinkExt* linkinfo = NULL;
- linkinfo = m_LinkList.GetAt(0);
- m_LinkList.RemoveAt(0);
- delete linkinfo;
- }
- m_LinkList.RemoveAll();
-}
-
int CPDF_LinkExtract::CountLinks() const {
- if (!m_bIsParsed) {
- return -1;
- }
- return m_LinkList.GetSize();
+ return m_bIsParsed ? pdfium::CollectionSize<int>(m_LinkList) : -1;
}
void CPDF_LinkExtract::ParseLink() {
@@ -2395,7 +2380,8 @@ void CPDF_LinkExtract::ParseLink() {
}
if (nCount > 5 &&
(CheckWebLink(strBeCheck) || CheckMailLink(strBeCheck))) {
- AppendToLinkList(start, nCount, strBeCheck);
+ m_LinkList.push_back(
+ std::unique_ptr<Item>(new Item(start, nCount, strBeCheck)));
}
}
start = ++pos;
@@ -2501,50 +2487,30 @@ bool CPDF_LinkExtract::CheckMailLink(CFX_WideString& str) {
return TRUE;
}
-void CPDF_LinkExtract::AppendToLinkList(int start,
- int count,
- const CFX_WideString& strUrl) {
- CPDF_LinkExt* linkInfo = new CPDF_LinkExt;
- linkInfo->m_strUrl = strUrl;
- linkInfo->m_Start = start;
- linkInfo->m_Count = count;
- m_LinkList.Add(linkInfo);
-}
-
CFX_WideString CPDF_LinkExtract::GetURL(int index) const {
dsinclair 2016/04/20 13:05:19 Can index be changed from an int to a size_t so we
Tom Sepez 2016/04/20 19:07:39 Done. Pushed negative value checking up to API ca
- if (!m_bIsParsed || index < 0 || index >= m_LinkList.GetSize()) {
- return L"";
- }
- CPDF_LinkExt* link = NULL;
- link = m_LinkList.GetAt(index);
- if (!link) {
+ if (!m_bIsParsed || index < 0 ||
Lei Zhang 2016/04/19 23:52:06 Helper function instead of repeating this thrice?
Tom Sepez 2016/04/20 19:07:39 Nah, short enough to prefer transparency over cons
+ index >= pdfium::CollectionSize<int>(m_LinkList)) {
return L"";
}
- return link->m_strUrl;
+ return m_LinkList[index]->m_strUrl;
}
+
void CPDF_LinkExtract::GetBoundedSegment(int index,
dsinclair 2016/04/20 13:05:19 size_t?
Tom Sepez 2016/04/20 19:07:39 Done.
int& start,
int& count) const {
- if (!m_bIsParsed || index < 0 || index >= m_LinkList.GetSize()) {
+ if (!m_bIsParsed || index < 0 ||
+ index >= pdfium::CollectionSize<int>(m_LinkList)) {
return;
}
- CPDF_LinkExt* link = NULL;
- link = m_LinkList.GetAt(index);
- if (!link) {
- return;
- }
- start = link->m_Start;
- count = link->m_Count;
+ start = m_LinkList[index]->m_Start;
+ count = m_LinkList[index]->m_Count;
}
void CPDF_LinkExtract::GetRects(int index, CFX_RectArray& rects) const {
dsinclair 2016/04/20 13:05:19 size_t?
Tom Sepez 2016/04/20 19:07:39 Done.
- if (!m_bIsParsed || index < 0 || index >= m_LinkList.GetSize()) {
- return;
- }
- CPDF_LinkExt* link = NULL;
- link = m_LinkList.GetAt(index);
- if (!link) {
+ if (!m_bIsParsed || index < 0 ||
+ index >= pdfium::CollectionSize<int>(m_LinkList)) {
return;
}
- m_pTextPage->GetRectArray(link->m_Start, link->m_Count, rects);
+ m_pTextPage->GetRectArray(m_LinkList[index]->m_Start,
+ m_LinkList[index]->m_Count, rects);
}
« no previous file with comments | « no previous file | core/fpdftext/fpdf_text_int_unittest.cpp » ('j') | core/fpdftext/include/cpdf_linkextract.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698