From 913eb5ac35011b3d28c653b6f89d936c8f99c844 Mon Sep 17 00:00:00 2001 From: Jay Berkenbilt Date: Tue, 22 Jan 2013 09:57:07 -0500 Subject: Add getTypeCode() and getTypeName() Add virtual methods to QPDFObject, wrappers to QPDFObjectHandle, and implementations to all the QPDF_Object types. --- libqpdf/QPDFObjectHandle.cc | 26 ++++++++++++++++++++++++++ libqpdf/QPDF_Array.cc | 12 ++++++++++++ libqpdf/QPDF_Bool.cc | 12 ++++++++++++ libqpdf/QPDF_Dictionary.cc | 12 ++++++++++++ libqpdf/QPDF_InlineImage.cc | 12 ++++++++++++ libqpdf/QPDF_Integer.cc | 12 ++++++++++++ libqpdf/QPDF_Keyword.cc | 12 ++++++++++++ libqpdf/QPDF_Name.cc | 12 ++++++++++++ libqpdf/QPDF_Null.cc | 12 ++++++++++++ libqpdf/QPDF_Real.cc | 12 ++++++++++++ libqpdf/QPDF_Reserved.cc | 12 ++++++++++++ libqpdf/QPDF_Stream.cc | 12 ++++++++++++ libqpdf/QPDF_String.cc | 12 ++++++++++++ libqpdf/qpdf/QPDF_Array.hh | 2 ++ libqpdf/qpdf/QPDF_Bool.hh | 2 ++ libqpdf/qpdf/QPDF_Dictionary.hh | 2 ++ libqpdf/qpdf/QPDF_InlineImage.hh | 2 ++ libqpdf/qpdf/QPDF_Integer.hh | 2 ++ libqpdf/qpdf/QPDF_Keyword.hh | 2 ++ libqpdf/qpdf/QPDF_Name.hh | 2 ++ libqpdf/qpdf/QPDF_Null.hh | 2 ++ libqpdf/qpdf/QPDF_Real.hh | 2 ++ libqpdf/qpdf/QPDF_Reserved.hh | 2 ++ libqpdf/qpdf/QPDF_Stream.hh | 2 ++ libqpdf/qpdf/QPDF_String.hh | 2 ++ 25 files changed, 194 insertions(+) (limited to 'libqpdf') 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 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 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 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; -- cgit v1.2.3-70-g09d2