aboutsummaryrefslogtreecommitdiffstats
path: root/libqpdf/QPDFObjectHandle.cc
diff options
context:
space:
mode:
Diffstat (limited to 'libqpdf/QPDFObjectHandle.cc')
-rw-r--r--libqpdf/QPDFObjectHandle.cc59
1 files changed, 58 insertions, 1 deletions
diff --git a/libqpdf/QPDFObjectHandle.cc b/libqpdf/QPDFObjectHandle.cc
index 54897b83..9b51a0cb 100644
--- a/libqpdf/QPDFObjectHandle.cc
+++ b/libqpdf/QPDFObjectHandle.cc
@@ -7,6 +7,8 @@
#include <qpdf/QPDF_Real.hh>
#include <qpdf/QPDF_Name.hh>
#include <qpdf/QPDF_String.hh>
+#include <qpdf/QPDF_Keyword.hh>
+#include <qpdf/QPDF_InlineImage.hh>
#include <qpdf/QPDF_Array.hh>
#include <qpdf/QPDF_Dictionary.hh>
#include <qpdf/QPDF_Stream.hh>
@@ -152,6 +154,20 @@ QPDFObjectHandle::isString()
}
bool
+QPDFObjectHandle::isKeyword()
+{
+ dereference();
+ return QPDFObjectTypeAccessor<QPDF_Keyword>::check(obj.getPointer());
+}
+
+bool
+QPDFObjectHandle::isInlineImage()
+{
+ dereference();
+ return QPDFObjectTypeAccessor<QPDF_InlineImage>::check(obj.getPointer());
+}
+
+bool
QPDFObjectHandle::isArray()
{
dereference();
@@ -190,7 +206,8 @@ QPDFObjectHandle::isIndirect()
bool
QPDFObjectHandle::isScalar()
{
- return (! (isArray() || isDictionary() || isStream()));
+ return (! (isArray() || isDictionary() || isStream() ||
+ isKeyword() || isInlineImage()));
}
// Bool accessors
@@ -245,6 +262,22 @@ QPDFObjectHandle::getUTF8Value()
return dynamic_cast<QPDF_String*>(obj.getPointer())->getUTF8Val();
}
+// Keyword and Inline Image accessors
+
+std::string
+QPDFObjectHandle::getKeywordValue()
+{
+ assertKeyword();
+ return dynamic_cast<QPDF_Keyword*>(obj.getPointer())->getVal();
+}
+
+std::string
+QPDFObjectHandle::getInlineImageValue()
+{
+ assertInlineImage();
+ return dynamic_cast<QPDF_InlineImage*>(obj.getPointer())->getVal();
+}
+
// Array accessors
int
@@ -929,6 +962,18 @@ QPDFObjectHandle::newString(std::string const& str)
}
QPDFObjectHandle
+QPDFObjectHandle::newKeyword(std::string const& value)
+{
+ return QPDFObjectHandle(new QPDF_Keyword(value));
+}
+
+QPDFObjectHandle
+QPDFObjectHandle::newInlineImage(std::string const& value)
+{
+ return QPDFObjectHandle(new QPDF_InlineImage(value));
+}
+
+QPDFObjectHandle
QPDFObjectHandle::newArray()
{
return newArray(std::vector<QPDFObjectHandle>());
@@ -1213,6 +1258,18 @@ QPDFObjectHandle::assertString()
}
void
+QPDFObjectHandle::assertKeyword()
+{
+ assertType("Keyword", isKeyword());
+}
+
+void
+QPDFObjectHandle::assertInlineImage()
+{
+ assertType("InlineImage", isInlineImage());
+}
+
+void
QPDFObjectHandle::assertArray()
{
assertType("Array", isArray());