Commit aa0a379b37889caad022ec12fba76990b2e2e2d9
1 parent
5c5e5ca2
Add JSON::isDictionary and JSON::isArray
Showing
3 changed files
with
24 additions
and
0 deletions
ChangeLog
| @@ -4,6 +4,10 @@ | @@ -4,6 +4,10 @@ | ||
| 4 | to QPDFObjectHandle with corresponding functions added to the C | 4 | to QPDFObjectHandle with corresponding functions added to the C |
| 5 | API. Thanks to m-holger for the contribution. | 5 | API. Thanks to m-holger for the contribution. |
| 6 | 6 | ||
| 7 | +2022-01-17 Jay Berkenbilt <ejb@ql.org> | ||
| 8 | + | ||
| 9 | + * Add isDictionary and isArray to JSON | ||
| 10 | + | ||
| 7 | 2022-01-11 Jay Berkenbilt <ejb@ql.org> | 11 | 2022-01-11 Jay Berkenbilt <ejb@ql.org> |
| 8 | 12 | ||
| 9 | * Bug fix: add missing characters from PDF doc encoding. | 13 | * Bug fix: add missing characters from PDF doc encoding. |
include/qpdf/JSON.hh
| @@ -69,6 +69,12 @@ class JSON | @@ -69,6 +69,12 @@ class JSON | ||
| 69 | QPDF_DLL | 69 | QPDF_DLL |
| 70 | static JSON makeNull(); | 70 | static JSON makeNull(); |
| 71 | 71 | ||
| 72 | + QPDF_DLL | ||
| 73 | + bool isArray() const; | ||
| 74 | + | ||
| 75 | + QPDF_DLL | ||
| 76 | + bool isDictionary() const; | ||
| 77 | + | ||
| 72 | // Check this JSON object against a "schema". This is not a schema | 78 | // Check this JSON object against a "schema". This is not a schema |
| 73 | // according to any standard. It's just a template of what the | 79 | // according to any standard. It's just a template of what the |
| 74 | // JSON is supposed to contain. The checking does the following: | 80 | // JSON is supposed to contain. The checking does the following: |
libqpdf/JSON.cc
| @@ -294,6 +294,20 @@ JSON::makeNull() | @@ -294,6 +294,20 @@ JSON::makeNull() | ||
| 294 | } | 294 | } |
| 295 | 295 | ||
| 296 | bool | 296 | bool |
| 297 | +JSON::isArray() const | ||
| 298 | +{ | ||
| 299 | + return nullptr != dynamic_cast<JSON_array const*>( | ||
| 300 | + this->m->value.getPointer()); | ||
| 301 | +} | ||
| 302 | + | ||
| 303 | +bool | ||
| 304 | +JSON::isDictionary() const | ||
| 305 | +{ | ||
| 306 | + return nullptr != dynamic_cast<JSON_dictionary const*>( | ||
| 307 | + this->m->value.getPointer()); | ||
| 308 | +} | ||
| 309 | + | ||
| 310 | +bool | ||
| 297 | JSON::checkSchema(JSON schema, std::list<std::string>& errors) | 311 | JSON::checkSchema(JSON schema, std::list<std::string>& errors) |
| 298 | { | 312 | { |
| 299 | return checkSchemaInternal(this->m->value.getPointer(), | 313 | return checkSchemaInternal(this->m->value.getPointer(), |