aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorm-holger <m-holger@kubitscheck.org>2022-08-02 20:13:29 +0200
committerm-holger <m-holger@kubitscheck.org>2022-09-01 01:10:04 +0200
commit114bffa0894d8bac7151201404cb6d8d62bd9b4a (patch)
tree33f050c5a9e6e1042c7201bea5fdfb0ae8cacdcd /include
parent2a2eebcaea2b27bc86390dac2ee27ad5620f5eda (diff)
downloadqpdf-114bffa0894d8bac7151201404cb6d8d62bd9b4a.tar.zst
Add private methods QPDFObjectHandle::asArray etc
Centralise casting of QPDFObjects and reduce repeated dereferencing.
Diffstat (limited to 'include')
-rw-r--r--include/qpdf/QPDFObjectHandle.hh38
1 files changed, 36 insertions, 2 deletions
diff --git a/include/qpdf/QPDFObjectHandle.hh b/include/qpdf/QPDFObjectHandle.hh
index 3c7b62f8..af454e75 100644
--- a/include/qpdf/QPDFObjectHandle.hh
+++ b/include/qpdf/QPDFObjectHandle.hh
@@ -43,8 +43,18 @@
class Pipeline;
class QPDF;
-class QPDF_Dictionary;
class QPDF_Array;
+class QPDF_Bool;
+class QPDF_Dictionary;
+class QPDF_InlineImage;
+class QPDF_Integer;
+class QPDF_Name;
+class QPDF_Null;
+class QPDF_Operator;
+class QPDF_Real;
+class QPDF_Reserved;
+class QPDF_Stream;
+class QPDF_String;
class QPDFTokenizer;
class QPDFExc;
class Pl_QPDFTokenizer;
@@ -1480,6 +1490,16 @@ class QPDFObjectHandle
};
return o.obj;
}
+ static QPDF_Array*
+ asArray(QPDFObjectHandle& oh)
+ {
+ return oh.asArray();
+ }
+ static QPDF_Stream*
+ asStream(QPDFObjectHandle& oh)
+ {
+ return oh.asStream();
+ }
};
friend class ObjAccessor;
@@ -1581,6 +1601,20 @@ class QPDFObjectHandle
qpdf_offset_t offset,
size_t length);
+ QPDF_Array* asArray();
+ QPDF_Bool* asBool();
+ QPDF_Dictionary* asDictionary();
+ QPDF_InlineImage* asInlineImage();
+ QPDF_Integer* asInteger();
+ QPDF_Name* asName();
+ QPDF_Null* asNull();
+ QPDF_Operator* asOperator();
+ QPDF_Real* asReal();
+ QPDF_Reserved* asReserved();
+ QPDF_Stream* asStream();
+ QPDF_Stream* asStreamWithAssert();
+ QPDF_String* asString();
+
void typeWarning(char const* expected_type, std::string const& warning);
void objectWarning(std::string const& warning);
void assertType(char const* type_name, bool istype);
@@ -1881,7 +1915,7 @@ QPDFObjectHandle::setParsedOffset(qpdf_offset_t offset)
{
// This is called during parsing on newly created direct objects,
// so we can't call dereference() here.
- if (this->obj.get()) {
+ if (initialized) {
this->obj->setParsedOffset(offset);
}
}