From aa0a379b37889caad022ec12fba76990b2e2e2d9 Mon Sep 17 00:00:00 2001 From: Jay Berkenbilt Date: Mon, 17 Jan 2022 18:38:05 -0500 Subject: [PATCH] Add JSON::isDictionary and JSON::isArray --- ChangeLog | 4 ++++ include/qpdf/JSON.hh | 6 ++++++ libqpdf/JSON.cc | 14 ++++++++++++++ 3 files changed, 24 insertions(+) diff --git a/ChangeLog b/ChangeLog index 8fa0d315..696915ad 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 3618d1e7..11fe2c7b 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 f75935aa..c656bb14 100644 --- a/libqpdf/JSON.cc +++ b/libqpdf/JSON.cc @@ -293,6 +293,20 @@ JSON::makeNull() return JSON(new JSON_null()); } +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) {