diff options
Diffstat (limited to 'libqpdf/QPDFObjectHandle.cc')
-rw-r--r-- | libqpdf/QPDFObjectHandle.cc | 33 |
1 files changed, 13 insertions, 20 deletions
diff --git a/libqpdf/QPDFObjectHandle.cc b/libqpdf/QPDFObjectHandle.cc index e0e0e50a..72a35390 100644 --- a/libqpdf/QPDFObjectHandle.cc +++ b/libqpdf/QPDFObjectHandle.cc @@ -280,68 +280,67 @@ QPDFObjectHandle::getTypeName() QPDF_Array* QPDFObjectHandle::asArray() { - return isArray() ? dynamic_cast<QPDF_Array*>(obj.get()) : nullptr; + return dereference() ? obj->as<QPDF_Array>() : nullptr; } QPDF_Bool* QPDFObjectHandle::asBool() { - return isBool() ? dynamic_cast<QPDF_Bool*>(obj.get()) : nullptr; + return dereference() ? obj->as<QPDF_Bool>() : nullptr; } QPDF_Dictionary* QPDFObjectHandle::asDictionary() { - return isDictionary() ? dynamic_cast<QPDF_Dictionary*>(obj.get()) : nullptr; + return dereference() ? obj->as<QPDF_Dictionary>() : nullptr; } QPDF_InlineImage* QPDFObjectHandle::asInlineImage() { - return isInlineImage() ? dynamic_cast<QPDF_InlineImage*>(obj.get()) - : nullptr; + return dereference() ? obj->as<QPDF_InlineImage>() : nullptr; } QPDF_Integer* QPDFObjectHandle::asInteger() { - return isInteger() ? dynamic_cast<QPDF_Integer*>(obj.get()) : nullptr; + return dereference() ? obj->as<QPDF_Integer>() : nullptr; } QPDF_Name* QPDFObjectHandle::asName() { - return isName() ? dynamic_cast<QPDF_Name*>(obj.get()) : nullptr; + return dereference() ? obj->as<QPDF_Name>() : nullptr; } QPDF_Null* QPDFObjectHandle::asNull() { - return isNull() ? dynamic_cast<QPDF_Null*>(obj.get()) : nullptr; + return dereference() ? obj->as<QPDF_Null>() : nullptr; } QPDF_Operator* QPDFObjectHandle::asOperator() { - return isOperator() ? dynamic_cast<QPDF_Operator*>(obj.get()) : nullptr; + return dereference() ? obj->as<QPDF_Operator>() : nullptr; } QPDF_Real* QPDFObjectHandle::asReal() { - return isReal() ? dynamic_cast<QPDF_Real*>(obj.get()) : nullptr; + return dereference() ? obj->as<QPDF_Real>() : nullptr; } QPDF_Reserved* QPDFObjectHandle::asReserved() { - return isReserved() ? dynamic_cast<QPDF_Reserved*>(obj.get()) : nullptr; + return dereference() ? obj->as<QPDF_Reserved>() : nullptr; } QPDF_Stream* QPDFObjectHandle::asStream() { - return isStream() ? dynamic_cast<QPDF_Stream*>(obj.get()) : nullptr; + return dereference() ? obj->as<QPDF_Stream>() : nullptr; } QPDF_Stream* @@ -355,7 +354,7 @@ QPDFObjectHandle::asStreamWithAssert() QPDF_String* QPDFObjectHandle::asString() { - return isString() ? dynamic_cast<QPDF_String*>(obj.get()) : nullptr; + return dereference() ? obj->as<QPDF_String>() : nullptr; } bool @@ -1716,11 +1715,8 @@ QPDFObjectHandle::unparseResolved() if (!dereference()) { throw std::logic_error( "attempted to dereference an uninitialized QPDFObjectHandle"); - } else if (isReserved()) { - throw std::logic_error( - "QPDFObjectHandle: attempting to unparse a reserved object"); } - return this->obj->unparse(); + return obj->unparse(); } std::string @@ -1749,9 +1745,6 @@ QPDFObjectHandle::getJSON(int json_version, bool dereference_indirect) } else if (!dereference()) { throw std::logic_error( "attempted to dereference an uninitialized QPDFObjectHandle"); - } else if (isReserved()) { - throw std::logic_error( - "QPDFObjectHandle: attempting to unparse a reserved object"); } else { return obj->getJSON(json_version); } |