From 6cbc55a5b5ac4a1c44906ed9dd9ad5c50cd93ea1 Mon Sep 17 00:00:00 2001 From: m-holger Date: Wed, 21 Dec 2022 13:14:05 +0000 Subject: Add new virtual method QPDFObject::getStringValue Avoid dynamic casting. --- libqpdf/QPDFObjectHandle.cc | 50 ++++++++++++++++++--------------------------- 1 file changed, 20 insertions(+), 30 deletions(-) (limited to 'libqpdf/QPDFObjectHandle.cc') diff --git a/libqpdf/QPDFObjectHandle.cc b/libqpdf/QPDFObjectHandle.cc index f86167b6..169a930d 100644 --- a/libqpdf/QPDFObjectHandle.cc +++ b/libqpdf/QPDFObjectHandle.cc @@ -639,9 +639,8 @@ QPDFObjectHandle::getValueAsUInt(unsigned int& value) std::string QPDFObjectHandle::getRealValue() { - auto real = asReal(); - if (real) { - return real->getVal(); + if (isReal()) { + return obj->getStringValue(); } else { typeWarning("real", "returning 0.0"); QTC::TC("qpdf", "QPDFObjectHandle real returning 0.0"); @@ -652,11 +651,10 @@ QPDFObjectHandle::getRealValue() bool QPDFObjectHandle::getValueAsReal(std::string& value) { - auto real = asReal(); - if (real == nullptr) { + if (!isReal()) { return false; } - value = real->getVal(); + value = obj->getStringValue(); return true; } @@ -665,9 +663,8 @@ QPDFObjectHandle::getValueAsReal(std::string& value) std::string QPDFObjectHandle::getName() { - auto name = asName(); - if (name) { - return name->getName(); + if (isName()) { + return obj->getStringValue(); } else { typeWarning("name", "returning dummy name"); QTC::TC("qpdf", "QPDFObjectHandle name returning dummy name"); @@ -678,11 +675,10 @@ QPDFObjectHandle::getName() bool QPDFObjectHandle::getValueAsName(std::string& value) { - auto name = asName(); - if (name == nullptr) { + if (!isName()) { return false; } - value = name->getName(); + value = obj->getStringValue(); return true; } @@ -691,9 +687,8 @@ QPDFObjectHandle::getValueAsName(std::string& value) std::string QPDFObjectHandle::getStringValue() { - auto str = asString(); - if (str) { - return str->getVal(); + if (isString()) { + return obj->getStringValue(); } else { typeWarning("string", "returning empty string"); QTC::TC("qpdf", "QPDFObjectHandle string returning empty string"); @@ -704,11 +699,10 @@ QPDFObjectHandle::getStringValue() bool QPDFObjectHandle::getValueAsString(std::string& value) { - auto str = asString(); - if (str == nullptr) { + if (!isString()) { return false; } - value = str->getVal(); + value = obj->getStringValue(); return true; } @@ -741,9 +735,8 @@ QPDFObjectHandle::getValueAsUTF8(std::string& value) std::string QPDFObjectHandle::getOperatorValue() { - auto op = asOperator(); - if (op) { - return op->getVal(); + if (isOperator()) { + return obj->getStringValue(); } else { typeWarning("operator", "returning fake value"); QTC::TC("qpdf", "QPDFObjectHandle operator returning fake value"); @@ -754,20 +747,18 @@ QPDFObjectHandle::getOperatorValue() bool QPDFObjectHandle::getValueAsOperator(std::string& value) { - auto op = asOperator(); - if (op == nullptr) { + if (!isOperator()) { return false; } - value = op->getVal(); + value = obj->getStringValue(); return true; } std::string QPDFObjectHandle::getInlineImageValue() { - auto image = asInlineImage(); - if (image) { - return image->getVal(); + if (isInlineImage()) { + return obj->getStringValue(); } else { typeWarning("inlineimage", "returning empty data"); QTC::TC("qpdf", "QPDFObjectHandle inlineimage returning empty data"); @@ -778,11 +769,10 @@ QPDFObjectHandle::getInlineImageValue() bool QPDFObjectHandle::getValueAsInlineImage(std::string& value) { - auto image = asInlineImage(); - if (image == nullptr) { + if (!isInlineImage()) { return false; } - value = image->getVal(); + value = obj->getStringValue(); return true; } -- cgit v1.2.3-54-g00ecf