summaryrefslogtreecommitdiffstats
path: root/libqpdf
diff options
context:
space:
mode:
authorm-holger <m-holger@kubitscheck.org>2023-01-05 12:09:44 +0100
committerm-holger <m-holger@kubitscheck.org>2023-05-19 13:27:53 +0200
commit9b0801721710093102c64068b6c643c8fcd7f5db (patch)
tree631fd26fc674aee7fe54280f56597f94cf97679b /libqpdf
parenta6d7b79e65941238871c0c3d7d06b9bf246213ba (diff)
downloadqpdf-9b0801721710093102c64068b6c643c8fcd7f5db.tar.zst
Add new convenience class QPDFObjGen::set
Diffstat (limited to 'libqpdf')
-rw-r--r--libqpdf/QPDFObjGen.cc56
1 files changed, 54 insertions, 2 deletions
diff --git a/libqpdf/QPDFObjGen.cc b/libqpdf/QPDFObjGen.cc
index 7cce84d8..8e5bd178 100644
--- a/libqpdf/QPDFObjGen.cc
+++ b/libqpdf/QPDFObjGen.cc
@@ -1,7 +1,12 @@
#include <qpdf/QPDFObjGen.hh>
-#include <qpdf/QUtil.hh>
+#include <qpdf/QPDFObjectHandle.hh>
+#include <qpdf/QPDFObjectHelper.hh>
+#include <qpdf/QPDFObject_private.hh>
+#include <stdexcept>
+
+// ABI: inline and pass og by value
std::ostream&
operator<<(std::ostream& os, const QPDFObjGen& og)
{
@@ -9,8 +14,55 @@ operator<<(std::ostream& os, const QPDFObjGen& og)
return os;
}
+// ABI: inline
std::string
QPDFObjGen::unparse(char separator) const
{
- return std::to_string(this->obj) + separator + std::to_string(this->gen);
+ return std::to_string(obj) + separator + std::to_string(gen);
+}
+
+bool
+QPDFObjGen::set::add(QPDFObjectHandle const& oh)
+{
+ if (auto* ptr = oh.getObjectPtr()) {
+ return add(ptr->getObjGen());
+ } else {
+ throw std::logic_error("attempt to retrieve QPDFObjGen from "
+ "uninitialized QPDFObjectHandle");
+ return false;
+ }
+}
+
+bool
+QPDFObjGen::set::add(QPDFObjectHelper const& helper)
+{
+ if (auto* ptr = helper.getObjectHandle().getObjectPtr()) {
+ return add(ptr->getObjGen());
+ } else {
+ throw std::logic_error("attempt to retrieve QPDFObjGen from "
+ "uninitialized QPDFObjectHandle");
+ return false;
+ }
+}
+
+void
+QPDFObjGen::set::erase(QPDFObjectHandle const& oh)
+{
+ if (auto* ptr = oh.getObjectPtr()) {
+ erase(ptr->getObjGen());
+ } else {
+ throw std::logic_error("attempt to retrieve QPDFObjGen from "
+ "uninitialized QPDFObjectHandle");
+ }
+}
+
+void
+QPDFObjGen::set::erase(QPDFObjectHelper const& helper)
+{
+ if (auto* ptr = helper.getObjectHandle().getObjectPtr()) {
+ erase(ptr->getObjGen());
+ } else {
+ throw std::logic_error("attempt to retrieve QPDFObjGen from "
+ "uninitialized QPDFObjectHandle");
+ }
}