diff --git a/ChangeLog b/ChangeLog index 8fa0d31..696915a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -4,6 +4,10 @@ to QPDFObjectHandle with corresponding functions added to the C API. Thanks to m-holger for the contribution. +2022-01-17 Jay Berkenbilt + + * Add isDictionary and isArray to JSON + 2022-01-11 Jay Berkenbilt * Bug fix: add missing characters from PDF doc encoding. diff --git a/include/qpdf/JSON.hh b/include/qpdf/JSON.hh index 3618d1e..11fe2c7 100644 --- a/include/qpdf/JSON.hh +++ b/include/qpdf/JSON.hh @@ -69,6 +69,12 @@ class JSON QPDF_DLL static JSON makeNull(); + QPDF_DLL + bool isArray() const; + + QPDF_DLL + bool isDictionary() const; + // Check this JSON object against a "schema". This is not a schema // according to any standard. It's just a template of what the // JSON is supposed to contain. The checking does the following: diff --git a/libqpdf/JSON.cc b/libqpdf/JSON.cc index f75935a..c656bb1 100644 --- a/libqpdf/JSON.cc +++ b/libqpdf/JSON.cc @@ -294,6 +294,20 @@ JSON::makeNull() } bool +JSON::isArray() const +{ + return nullptr != dynamic_cast( + this->m->value.getPointer()); +} + +bool +JSON::isDictionary() const +{ + return nullptr != dynamic_cast( + this->m->value.getPointer()); +} + +bool JSON::checkSchema(JSON schema, std::list& errors) { return checkSchemaInternal(this->m->value.getPointer(),