From 9b0801721710093102c64068b6c643c8fcd7f5db Mon Sep 17 00:00:00 2001 From: m-holger Date: Thu, 5 Jan 2023 11:09:44 +0000 Subject: Add new convenience class QPDFObjGen::set --- libqpdf/QPDFObjGen.cc | 56 +++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 54 insertions(+), 2 deletions(-) (limited to 'libqpdf/QPDFObjGen.cc') 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 -#include +#include +#include +#include +#include + +// 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"); + } } -- cgit v1.2.3-54-g00ecf