aboutsummaryrefslogtreecommitdiffstats
path: root/libqpdf/QPDFObjGen.cc
diff options
context:
space:
mode:
Diffstat (limited to 'libqpdf/QPDFObjGen.cc')
-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");
+ }
}