diff --git a/include/qpdf/ObjectHandle.hh b/include/qpdf/ObjectHandle.hh index 821acaf..eb424ab 100644 --- a/include/qpdf/ObjectHandle.hh +++ b/include/qpdf/ObjectHandle.hh @@ -105,6 +105,9 @@ namespace qpdf void warn(QPDFExc&&) const; void warn(std::string const& warning) const; + inline std::shared_ptr const& obj_sp() const; + inline QPDFObjectHandle oh() const; + protected: BaseHandle() = default; BaseHandle(std::shared_ptr const& obj) : diff --git a/include/qpdf/QPDFObjectHandle.hh b/include/qpdf/QPDFObjectHandle.hh index afa3204..29b2494 100644 --- a/include/qpdf/QPDFObjectHandle.hh +++ b/include/qpdf/QPDFObjectHandle.hh @@ -1321,21 +1321,6 @@ class QPDFObjectHandle: public qpdf::BaseHandle { return obj; } - std::shared_ptr - getObj() const - { - return obj; - } - QPDFObject* - getObjectPtr() - { - return obj.get(); - } - QPDFObject* const - getObjectPtr() const - { - return obj.get(); - } void writeJSON(int json_version, JSON::Writer& p, bool dereference_indirect = false) const; diff --git a/libqpdf/QPDFFormFieldObjectHelper.cc b/libqpdf/QPDFFormFieldObjectHelper.cc index 8908cc4..2dd2eea 100644 --- a/libqpdf/QPDFFormFieldObjectHelper.cc +++ b/libqpdf/QPDFFormFieldObjectHelper.cc @@ -765,7 +765,7 @@ QPDFFormFieldObjectHelper::generateTextAppearance(QPDFAnnotationObjectHelper& ao return; } - if (AS.getObj().use_count() > 4) { + if (AS.obj_sp().use_count() > 3) { aoh.warn("unable to generate text appearance from shared appearance stream for update"); return; } diff --git a/libqpdf/QPDFObjectHandle.cc b/libqpdf/QPDFObjectHandle.cc index 9029399..ca53199 100644 --- a/libqpdf/QPDFObjectHandle.cc +++ b/libqpdf/QPDFObjectHandle.cc @@ -318,7 +318,7 @@ BaseHandle::copy(bool shallow) const throw std::logic_error("attempted to shallow copy QPDFObjectHandle from destroyed QPDF"); return {}; // does not return case ::ot_reference: - return obj->qpdf->getObject(obj->og).getObj(); + return obj->qpdf->getObject(obj->og).obj_sp(); } return {}; // unreachable } @@ -470,7 +470,7 @@ BaseHandle::write_json(int json_version, JSON::Writer& p) const p.writeNext() << "null"; } p.writeNext(); - auto item_og = value.getObj()->getObjGen(); + auto item_og = value.id_gen(); if (item_og.isIndirect()) { p << "\"" << item_og.unparse(' ') << " R\""; } else { diff --git a/libqpdf/QPDFParser.cc b/libqpdf/QPDFParser.cc index 52d9a9c..d147e60 100644 --- a/libqpdf/QPDFParser.cc +++ b/libqpdf/QPDFParser.cc @@ -626,8 +626,8 @@ QPDFParser::fixMissingKeys() { std::set names; for (auto& obj: frame->olist) { - if (obj.getObj()->getTypeCode() == ::ot_name) { - names.insert(obj.getObj()->getStringValue()); + if (obj.raw_type_code() == ::ot_name) { + names.insert(obj.obj_sp()->getStringValue()); } } int next_fake_key = 1; diff --git a/libqpdf/QPDF_json.cc b/libqpdf/QPDF_json.cc index ba3b137..e2417ec 100644 --- a/libqpdf/QPDF_json.cc +++ b/libqpdf/QPDF_json.cc @@ -693,7 +693,7 @@ QPDF::JSONReactor::setObjectDescription(QPDFObjectHandle& oh, JSON const& value) QPDFObject::JSON_Descr(j_descr.input, cur_object)); } - oh.getObjectPtr()->setDescription(&pdf, descr, value.getStart()); + oh.obj_sp()->setDescription(&pdf, descr, value.getStart()); } QPDFObjectHandle diff --git a/libqpdf/QPDF_objects.cc b/libqpdf/QPDF_objects.cc index 94b3e69..fd96a0d 100644 --- a/libqpdf/QPDF_objects.cc +++ b/libqpdf/QPDF_objects.cc @@ -1554,7 +1554,7 @@ Objects::readObjectAtOffset( break; } } - m->objects.updateCache(og, oh.getObj(), end_before_space, m->file->tell()); + m->objects.updateCache(og, oh.obj_sp(), end_before_space, m->file->tell()); } QPDFObjectHandle @@ -1613,7 +1613,7 @@ Objects::readObjectAtOffset( break; } } - m->objects.updateCache(og, oh.getObj(), end_before_space, m->file->tell()); + m->objects.updateCache(og, oh.obj_sp(), end_before_space, m->file->tell()); return oh; } @@ -1805,7 +1805,7 @@ Objects::resolveObjectsInStream(int obj_stream_number) entry->second.getObjStreamNumber() == obj_stream_number) { is::OffsetBuffer in("", {b_start + obj_offset, obj_size}, obj_offset); auto oh = readObjectInStream(in, obj_stream_number, obj_id); - updateCache(og, oh.getObj(), end_before_space, end_after_space); + updateCache(og, oh.obj_sp(), end_before_space, end_after_space); } else { QTC::TC("qpdf", "QPDF not caching overridden objstm object"); } @@ -1874,7 +1874,7 @@ QPDF::makeIndirectObject(QPDFObjectHandle oh) if (!oh) { throw std::logic_error("attempted to make an uninitialized QPDFObjectHandle indirect"); } - return m->objects.makeIndirectFromQPDFObject(oh.getObj()); + return m->objects.makeIndirectFromQPDFObject(oh.obj_sp()); } std::shared_ptr @@ -1935,7 +1935,7 @@ QPDF::replaceObject(QPDFObjGen og, QPDFObjectHandle oh) if (!oh || (oh.isIndirect() && !(oh.isStream() && oh.getObjGen() == og))) { throw std::logic_error("QPDF::replaceObject called with indirect object handle"); } - m->objects.updateCache(og, oh.getObj(), -1, -1, false); + m->objects.updateCache(og, oh.obj_sp(), -1, -1, false); } void diff --git a/libqpdf/qpdf/QPDFObjectHandle_private.hh b/libqpdf/qpdf/QPDFObjectHandle_private.hh index 3e82bca..7cb4890 100644 --- a/libqpdf/qpdf/QPDFObjectHandle_private.hh +++ b/libqpdf/qpdf/QPDFObjectHandle_private.hh @@ -621,6 +621,18 @@ namespace qpdf { } + inline std::shared_ptr const& + BaseHandle::obj_sp() const + { + return obj; + } + + inline QPDFObjectHandle + BaseHandle::oh() const + { + return {obj}; + } + inline void BaseHandle::assign(qpdf_object_type_e required, BaseHandle const& other) {