aboutsummaryrefslogtreecommitdiffstats
path: root/libqpdf
diff options
context:
space:
mode:
authorJay Berkenbilt <ejb@ql.org>2013-01-22 15:57:07 +0100
committerJay Berkenbilt <ejb@ql.org>2013-01-22 16:01:45 +0100
commit913eb5ac35011b3d28c653b6f89d936c8f99c844 (patch)
treeded1a2e1b5f9fcdf6a5e77e44e30aa528be306be /libqpdf
parentf81152311e5737e5e0de9dd9462311f306c6921b (diff)
downloadqpdf-913eb5ac35011b3d28c653b6f89d936c8f99c844.tar.zst
Add getTypeCode() and getTypeName()
Add virtual methods to QPDFObject, wrappers to QPDFObjectHandle, and implementations to all the QPDF_Object types.
Diffstat (limited to 'libqpdf')
-rw-r--r--libqpdf/QPDFObjectHandle.cc26
-rw-r--r--libqpdf/QPDF_Array.cc12
-rw-r--r--libqpdf/QPDF_Bool.cc12
-rw-r--r--libqpdf/QPDF_Dictionary.cc12
-rw-r--r--libqpdf/QPDF_InlineImage.cc12
-rw-r--r--libqpdf/QPDF_Integer.cc12
-rw-r--r--libqpdf/QPDF_Keyword.cc12
-rw-r--r--libqpdf/QPDF_Name.cc12
-rw-r--r--libqpdf/QPDF_Null.cc12
-rw-r--r--libqpdf/QPDF_Real.cc12
-rw-r--r--libqpdf/QPDF_Reserved.cc12
-rw-r--r--libqpdf/QPDF_Stream.cc12
-rw-r--r--libqpdf/QPDF_String.cc12
-rw-r--r--libqpdf/qpdf/QPDF_Array.hh2
-rw-r--r--libqpdf/qpdf/QPDF_Bool.hh2
-rw-r--r--libqpdf/qpdf/QPDF_Dictionary.hh2
-rw-r--r--libqpdf/qpdf/QPDF_InlineImage.hh2
-rw-r--r--libqpdf/qpdf/QPDF_Integer.hh2
-rw-r--r--libqpdf/qpdf/QPDF_Keyword.hh2
-rw-r--r--libqpdf/qpdf/QPDF_Name.hh2
-rw-r--r--libqpdf/qpdf/QPDF_Null.hh2
-rw-r--r--libqpdf/qpdf/QPDF_Real.hh2
-rw-r--r--libqpdf/qpdf/QPDF_Reserved.hh2
-rw-r--r--libqpdf/qpdf/QPDF_Stream.hh2
-rw-r--r--libqpdf/qpdf/QPDF_String.hh2
25 files changed, 194 insertions, 0 deletions
diff --git a/libqpdf/QPDFObjectHandle.cc b/libqpdf/QPDFObjectHandle.cc
index bfca3f08..b53dd577 100644
--- a/libqpdf/QPDFObjectHandle.cc
+++ b/libqpdf/QPDFObjectHandle.cc
@@ -76,6 +76,32 @@ QPDFObjectHandle::isInitialized() const
return this->initialized;
}
+QPDFObject::object_type_e
+QPDFObjectHandle::getTypeCode() const
+{
+ if (obj.getPointer())
+ {
+ return obj->getTypeCode();
+ }
+ else
+ {
+ return QPDFObject::ot_uninitialized;
+ }
+}
+
+char const*
+QPDFObjectHandle::getTypeName() const
+{
+ if (obj.getPointer())
+ {
+ return obj->getTypeName();
+ }
+ else
+ {
+ return "uninitialized";
+ }
+}
+
template <class T>
class QPDFObjectTypeAccessor
{
diff --git a/libqpdf/QPDF_Array.cc b/libqpdf/QPDF_Array.cc
index 9f720287..0c2be92f 100644
--- a/libqpdf/QPDF_Array.cc
+++ b/libqpdf/QPDF_Array.cc
@@ -34,6 +34,18 @@ QPDF_Array::unparse()
return result;
}
+QPDFObject::object_type_e
+QPDF_Array::getTypeCode() const
+{
+ return QPDFObject::ot_array;
+}
+
+char const*
+QPDF_Array::getTypeName() const
+{
+ return "array";
+}
+
int
QPDF_Array::getNItems() const
{
diff --git a/libqpdf/QPDF_Bool.cc b/libqpdf/QPDF_Bool.cc
index 4bcbfc32..781a7ad9 100644
--- a/libqpdf/QPDF_Bool.cc
+++ b/libqpdf/QPDF_Bool.cc
@@ -15,6 +15,18 @@ QPDF_Bool::unparse()
return (val ? "true" : "false");
}
+QPDFObject::object_type_e
+QPDF_Bool::getTypeCode() const
+{
+ return QPDFObject::ot_boolean;
+}
+
+char const*
+QPDF_Bool::getTypeName() const
+{
+ return "boolean";
+}
+
bool
QPDF_Bool::getVal() const
{
diff --git a/libqpdf/QPDF_Dictionary.cc b/libqpdf/QPDF_Dictionary.cc
index 3be138a4..0af2f4bf 100644
--- a/libqpdf/QPDF_Dictionary.cc
+++ b/libqpdf/QPDF_Dictionary.cc
@@ -39,6 +39,18 @@ QPDF_Dictionary::unparse()
return result;
}
+QPDFObject::object_type_e
+QPDF_Dictionary::getTypeCode() const
+{
+ return QPDFObject::ot_dictionary;
+}
+
+char const*
+QPDF_Dictionary::getTypeName() const
+{
+ return "dictionary";
+}
+
bool
QPDF_Dictionary::hasKey(std::string const& key)
{
diff --git a/libqpdf/QPDF_InlineImage.cc b/libqpdf/QPDF_InlineImage.cc
index e42ddbf2..48be6387 100644
--- a/libqpdf/QPDF_InlineImage.cc
+++ b/libqpdf/QPDF_InlineImage.cc
@@ -17,6 +17,18 @@ QPDF_InlineImage::unparse()
return this->val;
}
+QPDFObject::object_type_e
+QPDF_InlineImage::getTypeCode() const
+{
+ return QPDFObject::ot_inlineimage;
+}
+
+char const*
+QPDF_InlineImage::getTypeName() const
+{
+ return "inline-image";
+}
+
std::string
QPDF_InlineImage::getVal() const
{
diff --git a/libqpdf/QPDF_Integer.cc b/libqpdf/QPDF_Integer.cc
index fb25af1b..572b34e0 100644
--- a/libqpdf/QPDF_Integer.cc
+++ b/libqpdf/QPDF_Integer.cc
@@ -17,6 +17,18 @@ QPDF_Integer::unparse()
return QUtil::int_to_string(this->val);
}
+QPDFObject::object_type_e
+QPDF_Integer::getTypeCode() const
+{
+ return QPDFObject::ot_integer;
+}
+
+char const*
+QPDF_Integer::getTypeName() const
+{
+ return "integer";
+}
+
long long
QPDF_Integer::getVal() const
{
diff --git a/libqpdf/QPDF_Keyword.cc b/libqpdf/QPDF_Keyword.cc
index e2537842..f55088e2 100644
--- a/libqpdf/QPDF_Keyword.cc
+++ b/libqpdf/QPDF_Keyword.cc
@@ -17,6 +17,18 @@ QPDF_Keyword::unparse()
return this->val;
}
+QPDFObject::object_type_e
+QPDF_Keyword::getTypeCode() const
+{
+ return QPDFObject::ot_keyword;
+}
+
+char const*
+QPDF_Keyword::getTypeName() const
+{
+ return "keyword";
+}
+
std::string
QPDF_Keyword::getVal() const
{
diff --git a/libqpdf/QPDF_Name.cc b/libqpdf/QPDF_Name.cc
index ce2184f8..19610bff 100644
--- a/libqpdf/QPDF_Name.cc
+++ b/libqpdf/QPDF_Name.cc
@@ -41,6 +41,18 @@ QPDF_Name::unparse()
return normalizeName(this->name);
}
+QPDFObject::object_type_e
+QPDF_Name::getTypeCode() const
+{
+ return QPDFObject::ot_name;
+}
+
+char const*
+QPDF_Name::getTypeName() const
+{
+ return "name";
+}
+
std::string
QPDF_Name::getName() const
{
diff --git a/libqpdf/QPDF_Null.cc b/libqpdf/QPDF_Null.cc
index 811ddd2e..05c35b09 100644
--- a/libqpdf/QPDF_Null.cc
+++ b/libqpdf/QPDF_Null.cc
@@ -9,3 +9,15 @@ QPDF_Null::unparse()
{
return "null";
}
+
+QPDFObject::object_type_e
+QPDF_Null::getTypeCode() const
+{
+ return QPDFObject::ot_null;
+}
+
+char const*
+QPDF_Null::getTypeName() const
+{
+ return "null";
+}
diff --git a/libqpdf/QPDF_Real.cc b/libqpdf/QPDF_Real.cc
index 466ddb72..fa0a60cb 100644
--- a/libqpdf/QPDF_Real.cc
+++ b/libqpdf/QPDF_Real.cc
@@ -22,6 +22,18 @@ QPDF_Real::unparse()
return this->val;
}
+QPDFObject::object_type_e
+QPDF_Real::getTypeCode() const
+{
+ return QPDFObject::ot_real;
+}
+
+char const*
+QPDF_Real::getTypeName() const
+{
+ return "real";
+}
+
std::string
QPDF_Real::getVal()
{
diff --git a/libqpdf/QPDF_Reserved.cc b/libqpdf/QPDF_Reserved.cc
index 368db3b4..ad8d94a3 100644
--- a/libqpdf/QPDF_Reserved.cc
+++ b/libqpdf/QPDF_Reserved.cc
@@ -11,3 +11,15 @@ QPDF_Reserved::unparse()
throw std::logic_error("attempt to unparse QPDF_Reserved");
return "";
}
+
+QPDFObject::object_type_e
+QPDF_Reserved::getTypeCode() const
+{
+ return QPDFObject::ot_reserved;
+}
+
+char const*
+QPDF_Reserved::getTypeName() const
+{
+ return "reserved";
+}
diff --git a/libqpdf/QPDF_Stream.cc b/libqpdf/QPDF_Stream.cc
index 88b8e8ff..15024849 100644
--- a/libqpdf/QPDF_Stream.cc
+++ b/libqpdf/QPDF_Stream.cc
@@ -63,6 +63,18 @@ QPDF_Stream::unparse()
QUtil::int_to_string(this->generation) + " R";
}
+QPDFObject::object_type_e
+QPDF_Stream::getTypeCode() const
+{
+ return QPDFObject::ot_stream;
+}
+
+char const*
+QPDF_Stream::getTypeName() const
+{
+ return "stream";
+}
+
QPDFObjectHandle
QPDF_Stream::getDict() const
{
diff --git a/libqpdf/QPDF_String.cc b/libqpdf/QPDF_String.cc
index 2ac2ed32..3a8e7074 100644
--- a/libqpdf/QPDF_String.cc
+++ b/libqpdf/QPDF_String.cc
@@ -33,6 +33,18 @@ QPDF_String::unparse()
return unparse(false);
}
+QPDFObject::object_type_e
+QPDF_String::getTypeCode() const
+{
+ return QPDFObject::ot_string;
+}
+
+char const*
+QPDF_String::getTypeName() const
+{
+ return "string";
+}
+
std::string
QPDF_String::unparse(bool force_binary)
{
diff --git a/libqpdf/qpdf/QPDF_Array.hh b/libqpdf/qpdf/QPDF_Array.hh
index 338f6eb2..e81f8664 100644
--- a/libqpdf/qpdf/QPDF_Array.hh
+++ b/libqpdf/qpdf/QPDF_Array.hh
@@ -12,6 +12,8 @@ class QPDF_Array: public QPDFObject
QPDF_Array(std::vector<QPDFObjectHandle> const& items);
virtual ~QPDF_Array();
virtual std::string unparse();
+ virtual QPDFObject::object_type_e getTypeCode() const;
+ virtual char const* getTypeName() const;
int getNItems() const;
QPDFObjectHandle getItem(int n) const;
diff --git a/libqpdf/qpdf/QPDF_Bool.hh b/libqpdf/qpdf/QPDF_Bool.hh
index 90dc590e..2ec8eb10 100644
--- a/libqpdf/qpdf/QPDF_Bool.hh
+++ b/libqpdf/qpdf/QPDF_Bool.hh
@@ -9,6 +9,8 @@ class QPDF_Bool: public QPDFObject
QPDF_Bool(bool val);
virtual ~QPDF_Bool();
virtual std::string unparse();
+ virtual QPDFObject::object_type_e getTypeCode() const;
+ virtual char const* getTypeName() const;
bool getVal() const;
private:
diff --git a/libqpdf/qpdf/QPDF_Dictionary.hh b/libqpdf/qpdf/QPDF_Dictionary.hh
index af9f7f09..5b5630cf 100644
--- a/libqpdf/qpdf/QPDF_Dictionary.hh
+++ b/libqpdf/qpdf/QPDF_Dictionary.hh
@@ -14,6 +14,8 @@ class QPDF_Dictionary: public QPDFObject
QPDF_Dictionary(std::map<std::string, QPDFObjectHandle> const& items);
virtual ~QPDF_Dictionary();
virtual std::string unparse();
+ virtual QPDFObject::object_type_e getTypeCode() const;
+ virtual char const* getTypeName() const;
// hasKey() and getKeys() treat keys with null values as if they
// aren't there. getKey() returns null for the value of a
diff --git a/libqpdf/qpdf/QPDF_InlineImage.hh b/libqpdf/qpdf/QPDF_InlineImage.hh
index 6408a2f1..6be034a9 100644
--- a/libqpdf/qpdf/QPDF_InlineImage.hh
+++ b/libqpdf/qpdf/QPDF_InlineImage.hh
@@ -9,6 +9,8 @@ class QPDF_InlineImage: public QPDFObject
QPDF_InlineImage(std::string const& val);
virtual ~QPDF_InlineImage();
virtual std::string unparse();
+ virtual QPDFObject::object_type_e getTypeCode() const;
+ virtual char const* getTypeName() const;
std::string getVal() const;
private:
diff --git a/libqpdf/qpdf/QPDF_Integer.hh b/libqpdf/qpdf/QPDF_Integer.hh
index f9964693..091392ab 100644
--- a/libqpdf/qpdf/QPDF_Integer.hh
+++ b/libqpdf/qpdf/QPDF_Integer.hh
@@ -9,6 +9,8 @@ class QPDF_Integer: public QPDFObject
QPDF_Integer(long long val);
virtual ~QPDF_Integer();
virtual std::string unparse();
+ virtual QPDFObject::object_type_e getTypeCode() const;
+ virtual char const* getTypeName() const;
long long getVal() const;
private:
diff --git a/libqpdf/qpdf/QPDF_Keyword.hh b/libqpdf/qpdf/QPDF_Keyword.hh
index 1a5c0ee6..78ae5791 100644
--- a/libqpdf/qpdf/QPDF_Keyword.hh
+++ b/libqpdf/qpdf/QPDF_Keyword.hh
@@ -9,6 +9,8 @@ class QPDF_Keyword: public QPDFObject
QPDF_Keyword(std::string const& val);
virtual ~QPDF_Keyword();
virtual std::string unparse();
+ virtual QPDFObject::object_type_e getTypeCode() const;
+ virtual char const* getTypeName() const;
std::string getVal() const;
private:
diff --git a/libqpdf/qpdf/QPDF_Name.hh b/libqpdf/qpdf/QPDF_Name.hh
index 361556a0..5f50c41d 100644
--- a/libqpdf/qpdf/QPDF_Name.hh
+++ b/libqpdf/qpdf/QPDF_Name.hh
@@ -9,6 +9,8 @@ class QPDF_Name: public QPDFObject
QPDF_Name(std::string const& name);
virtual ~QPDF_Name();
virtual std::string unparse();
+ virtual QPDFObject::object_type_e getTypeCode() const;
+ virtual char const* getTypeName() const;
std::string getName() const;
// Put # into strings with characters unsuitable for name token
diff --git a/libqpdf/qpdf/QPDF_Null.hh b/libqpdf/qpdf/QPDF_Null.hh
index dffe0260..16ca4755 100644
--- a/libqpdf/qpdf/QPDF_Null.hh
+++ b/libqpdf/qpdf/QPDF_Null.hh
@@ -8,6 +8,8 @@ class QPDF_Null: public QPDFObject
public:
virtual ~QPDF_Null();
virtual std::string unparse();
+ virtual QPDFObject::object_type_e getTypeCode() const;
+ virtual char const* getTypeName() const;
};
#endif // __QPDF_NULL_HH__
diff --git a/libqpdf/qpdf/QPDF_Real.hh b/libqpdf/qpdf/QPDF_Real.hh
index 2895cee5..d59ed982 100644
--- a/libqpdf/qpdf/QPDF_Real.hh
+++ b/libqpdf/qpdf/QPDF_Real.hh
@@ -10,6 +10,8 @@ class QPDF_Real: public QPDFObject
QPDF_Real(double value, int decimal_places = 0);
virtual ~QPDF_Real();
virtual std::string unparse();
+ virtual QPDFObject::object_type_e getTypeCode() const;
+ virtual char const* getTypeName() const;
std::string getVal();
private:
diff --git a/libqpdf/qpdf/QPDF_Reserved.hh b/libqpdf/qpdf/QPDF_Reserved.hh
index b149f776..8dbf4fe4 100644
--- a/libqpdf/qpdf/QPDF_Reserved.hh
+++ b/libqpdf/qpdf/QPDF_Reserved.hh
@@ -8,6 +8,8 @@ class QPDF_Reserved: public QPDFObject
public:
virtual ~QPDF_Reserved();
virtual std::string unparse();
+ virtual QPDFObject::object_type_e getTypeCode() const;
+ virtual char const* getTypeName() const;
};
#endif // __QPDF_RESERVED_HH__
diff --git a/libqpdf/qpdf/QPDF_Stream.hh b/libqpdf/qpdf/QPDF_Stream.hh
index 6e5dacf0..5a5d555b 100644
--- a/libqpdf/qpdf/QPDF_Stream.hh
+++ b/libqpdf/qpdf/QPDF_Stream.hh
@@ -17,6 +17,8 @@ class QPDF_Stream: public QPDFObject
qpdf_offset_t offset, size_t length);
virtual ~QPDF_Stream();
virtual std::string unparse();
+ virtual QPDFObject::object_type_e getTypeCode() const;
+ virtual char const* getTypeName() const;
QPDFObjectHandle getDict() const;
// See comments in QPDFObjectHandle.hh for these methods.
diff --git a/libqpdf/qpdf/QPDF_String.hh b/libqpdf/qpdf/QPDF_String.hh
index 82860e9d..abf8291a 100644
--- a/libqpdf/qpdf/QPDF_String.hh
+++ b/libqpdf/qpdf/QPDF_String.hh
@@ -11,6 +11,8 @@ class QPDF_String: public QPDFObject
QPDF_String(std::string const& val);
virtual ~QPDF_String();
virtual std::string unparse();
+ virtual QPDFObject::object_type_e getTypeCode() const;
+ virtual char const* getTypeName() const;
std::string unparse(bool force_binary);
std::string getVal() const;
std::string getUTF8Val() const;