From 6060d123441a06df699eb275ae5ffdd50409b8f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gr=C3=A9gory=20Soutad=C3=A9?= Date: Sat, 23 Mar 2024 18:28:23 +0100 Subject: [PATCH] Add removeObject() method to parser --- include/uPDFParser.h | 7 ++++++- src/uPDFParser.cpp | 15 +++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/include/uPDFParser.h b/include/uPDFParser.h index cd10ac2..48316da 100644 --- a/include/uPDFParser.h +++ b/include/uPDFParser.h @@ -81,6 +81,11 @@ namespace uPDFParser */ void addObject(Object* object) { _objects.push_back(object); } + /** + * @brief Remove an object from list and crefTable + */ + void removeObject(Object* object); + /** * @brief Return trailer object */ @@ -88,7 +93,7 @@ namespace uPDFParser /** * @brief Return xref table. This table is read and updated only once after parse - * Further add/delete will make it incoherent + * It's not used for write operation */ const std::vector& xrefTable() {return _xrefTable;} diff --git a/src/uPDFParser.cpp b/src/uPDFParser.cpp index eafddf4..cc23cd5 100644 --- a/src/uPDFParser.cpp +++ b/src/uPDFParser.cpp @@ -847,6 +847,21 @@ namespace uPDFParser } } + void Parser::removeObject(Object* object) + { + std::vector::iterator it; + + for(it = _objects.begin(); it != _objects.end(); it++) + { + if (**it == *object) + { + delete *it; + _objects.erase(it); + break; + } + } + } + void Parser::writeBuffer(int fd, const char* buffer, int size) { int ret;