aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorm-holger <m-holger@kubitscheck.org>2022-09-26 19:43:28 +0200
committerJay Berkenbilt <jberkenbilt@users.noreply.github.com>2022-11-19 20:10:42 +0100
commit0a3c533186e3b4957fbf318e9507fe52d3f71cbd (patch)
tree50d49a87277c10da9dc3d457f75e3a06ef142692
parentb3d71e1f58aa767dfa8eac3e723ecc164131f306 (diff)
downloadqpdf-0a3c533186e3b4957fbf318e9507fe52d3f71cbd.tar.zst
Add private method QPDF::nextObjGen
-rw-r--r--include/qpdf/QPDF.hh1
-rw-r--r--libqpdf/QPDF.cc12
2 files changed, 10 insertions, 3 deletions
diff --git a/include/qpdf/QPDF.hh b/include/qpdf/QPDF.hh
index 54630a62..f3160bf9 100644
--- a/include/qpdf/QPDF.hh
+++ b/include/qpdf/QPDF.hh
@@ -1185,6 +1185,7 @@ class QPDF
void stopOnError(std::string const& message);
QPDFObjectHandle reserveObjectIfNotExists(QPDFObjGen const& og);
QPDFObjectHandle reserveStream(QPDFObjGen const& og);
+ QPDFObjGen nextObjGen();
QPDFObjectHandle
newIndirect(QPDFObjGen const&, std::shared_ptr<QPDFObject> const&);
QPDFObjectHandle makeIndirectObject(std::shared_ptr<QPDFObject> const& obj);
diff --git a/libqpdf/QPDF.cc b/libqpdf/QPDF.cc
index a870d783..50e08804 100644
--- a/libqpdf/QPDF.cc
+++ b/libqpdf/QPDF.cc
@@ -1976,15 +1976,21 @@ QPDF::isUnresolved(QPDFObjGen const& og)
return !isCached(og) || m->obj_cache[og].object->isUnresolved();
}
-QPDFObjectHandle
-QPDF::makeIndirectObject(std::shared_ptr<QPDFObject> const& obj)
+QPDFObjGen
+QPDF::nextObjGen()
{
int max_objid = toI(getObjectCount());
if (max_objid == std::numeric_limits<int>::max()) {
throw std::range_error(
"max object id is too high to create new objects");
}
- QPDFObjGen next(max_objid + 1, 0);
+ return QPDFObjGen(max_objid + 1, 0);
+}
+
+QPDFObjectHandle
+QPDF::makeIndirectObject(std::shared_ptr<QPDFObject> const& obj)
+{
+ QPDFObjGen next{nextObjGen()};
m->obj_cache[next] = ObjCache(obj, -1, -1);
return newIndirect(next, m->obj_cache[next].object);
}