Commit 586865f980f43d5fc637d9d06f5cf1c98ce853b2
1 parent
9504421e
Move QPDFObject::write_json to BaseHandle
Showing
3 changed files
with
17 additions
and
15 deletions
include/qpdf/ObjectHandle.hh
| ... | ... | @@ -62,6 +62,7 @@ namespace qpdf |
| 62 | 62 | inline qpdf_object_type_e raw_type_code() const; |
| 63 | 63 | inline qpdf_object_type_e type_code() const; |
| 64 | 64 | std::string unparse() const; |
| 65 | + void write_json(int json_version, JSON::Writer& p) const; | |
| 65 | 66 | |
| 66 | 67 | protected: |
| 67 | 68 | BaseHandle() = default; | ... | ... |
libqpdf/QPDFObjectHandle.cc
| ... | ... | @@ -446,9 +446,9 @@ BaseHandle::unparse() const |
| 446 | 446 | } |
| 447 | 447 | |
| 448 | 448 | void |
| 449 | -QPDFObject::write_json(int json_version, JSON::Writer& p) | |
| 449 | +BaseHandle::write_json(int json_version, JSON::Writer& p) const | |
| 450 | 450 | { |
| 451 | - switch (getResolvedTypeCode()) { | |
| 451 | + switch (type_code()) { | |
| 452 | 452 | case ::ot_uninitialized: |
| 453 | 453 | throw std::logic_error( |
| 454 | 454 | "QPDFObjectHandle: attempting to get JSON from a uninitialized object"); |
| ... | ... | @@ -459,14 +459,14 @@ QPDFObject::write_json(int json_version, JSON::Writer& p) |
| 459 | 459 | p << "null"; |
| 460 | 460 | break; |
| 461 | 461 | case ::ot_boolean: |
| 462 | - p << std::get<QPDF_Bool>(value).val; | |
| 462 | + p << std::get<QPDF_Bool>(obj->value).val; | |
| 463 | 463 | break; |
| 464 | 464 | case ::ot_integer: |
| 465 | - p << std::to_string(std::get<QPDF_Integer>(value).val); | |
| 465 | + p << std::to_string(std::get<QPDF_Integer>(obj->value).val); | |
| 466 | 466 | break; |
| 467 | 467 | case ::ot_real: |
| 468 | 468 | { |
| 469 | - auto const& val = std::get<QPDF_Real>(value).val; | |
| 469 | + auto const& val = std::get<QPDF_Real>(obj->value).val; | |
| 470 | 470 | if (val.length() == 0) { |
| 471 | 471 | // Can't really happen... |
| 472 | 472 | p << "0"; |
| ... | ... | @@ -483,11 +483,11 @@ QPDFObject::write_json(int json_version, JSON::Writer& p) |
| 483 | 483 | } |
| 484 | 484 | break; |
| 485 | 485 | case ::ot_string: |
| 486 | - std::get<QPDF_String>(value).writeJSON(json_version, p); | |
| 486 | + std::get<QPDF_String>(obj->value).writeJSON(json_version, p); | |
| 487 | 487 | break; |
| 488 | 488 | case ::ot_name: |
| 489 | 489 | { |
| 490 | - auto const& n = std::get<QPDF_Name>(value); | |
| 490 | + auto const& n = std::get<QPDF_Name>(obj->value); | |
| 491 | 491 | // For performance reasons this code is duplicated in QPDF_Dictionary::writeJSON. When |
| 492 | 492 | // updating this method make sure QPDF_Dictionary is also update. |
| 493 | 493 | if (json_version == 1) { |
| ... | ... | @@ -507,7 +507,7 @@ QPDFObject::write_json(int json_version, JSON::Writer& p) |
| 507 | 507 | break; |
| 508 | 508 | case ::ot_array: |
| 509 | 509 | { |
| 510 | - auto const& a = std::get<QPDF_Array>(value); | |
| 510 | + auto const& a = std::get<QPDF_Array>(obj->value); | |
| 511 | 511 | p.writeStart('['); |
| 512 | 512 | if (a.sp) { |
| 513 | 513 | int next = 0; |
| ... | ... | @@ -521,7 +521,7 @@ QPDFObject::write_json(int json_version, JSON::Writer& p) |
| 521 | 521 | if (item_og.isIndirect()) { |
| 522 | 522 | p << "\"" << item_og.unparse(' ') << " R\""; |
| 523 | 523 | } else { |
| 524 | - item.second.getObj()->write_json(json_version, p); | |
| 524 | + item.second.write_json(json_version, p); | |
| 525 | 525 | } |
| 526 | 526 | next = ++key; |
| 527 | 527 | } |
| ... | ... | @@ -535,7 +535,7 @@ QPDFObject::write_json(int json_version, JSON::Writer& p) |
| 535 | 535 | if (item_og.isIndirect()) { |
| 536 | 536 | p << "\"" << item_og.unparse(' ') << " R\""; |
| 537 | 537 | } else { |
| 538 | - item.getObj()->write_json(json_version, p); | |
| 538 | + item.write_json(json_version, p); | |
| 539 | 539 | } |
| 540 | 540 | } |
| 541 | 541 | } |
| ... | ... | @@ -544,7 +544,7 @@ QPDFObject::write_json(int json_version, JSON::Writer& p) |
| 544 | 544 | break; |
| 545 | 545 | case ::ot_dictionary: |
| 546 | 546 | { |
| 547 | - auto const& d = std::get<QPDF_Dictionary>(value); | |
| 547 | + auto const& d = std::get<QPDF_Dictionary>(obj->value); | |
| 548 | 548 | p.writeStart('{'); |
| 549 | 549 | for (auto& iter: d.items) { |
| 550 | 550 | if (!iter.second.null()) { |
| ... | ... | @@ -569,10 +569,10 @@ QPDFObject::write_json(int json_version, JSON::Writer& p) |
| 569 | 569 | } |
| 570 | 570 | break; |
| 571 | 571 | case ::ot_stream: |
| 572 | - std::get<QPDF_Stream>(value).m->stream_dict.writeJSON(json_version, p); | |
| 572 | + std::get<QPDF_Stream>(obj->value).m->stream_dict.writeJSON(json_version, p); | |
| 573 | 573 | break; |
| 574 | 574 | case ::ot_reference: |
| 575 | - p << "\"" << getObjGen().unparse(' ') << " R\""; | |
| 575 | + p << "\"" << obj->og.unparse(' ') << " R\""; | |
| 576 | 576 | break; |
| 577 | 577 | default: |
| 578 | 578 | throw std::logic_error("attempted to write an unsuitable object as JSON"); |
| ... | ... | @@ -1471,7 +1471,7 @@ QPDFObjectHandle::writeJSON(int json_version, JSON::Writer& p, bool dereference_ |
| 1471 | 1471 | } else if (!obj) { |
| 1472 | 1472 | throw std::logic_error("attempted to dereference an uninitialized QPDFObjectHandle"); |
| 1473 | 1473 | } else { |
| 1474 | - obj->write_json(json_version, p); | |
| 1474 | + write_json(json_version, p); | |
| 1475 | 1475 | } |
| 1476 | 1476 | } |
| 1477 | 1477 | ... | ... |
libqpdf/qpdf/QPDFObject_private.hh
| ... | ... | @@ -209,6 +209,7 @@ class QPDF_Stream final |
| 209 | 209 | friend class QPDF_Stream; |
| 210 | 210 | friend class QPDFObject; |
| 211 | 211 | friend class qpdf::Stream; |
| 212 | + friend class qpdf::BaseHandle; | |
| 212 | 213 | |
| 213 | 214 | public: |
| 214 | 215 | Members(QPDFObjectHandle stream_dict, size_t length) : |
| ... | ... | @@ -227,6 +228,7 @@ class QPDF_Stream final |
| 227 | 228 | }; |
| 228 | 229 | |
| 229 | 230 | friend class QPDFObject; |
| 231 | + friend class qpdf::BaseHandle; | |
| 230 | 232 | friend class qpdf::Stream; |
| 231 | 233 | |
| 232 | 234 | QPDF_Stream(QPDFObjectHandle stream_dict, size_t length) : |
| ... | ... | @@ -295,7 +297,6 @@ class QPDFObject |
| 295 | 297 | qpdf, og, std::forward<T>(T(std::forward<Args>(args)...))); |
| 296 | 298 | } |
| 297 | 299 | |
| 298 | - void write_json(int json_version, JSON::Writer& p); | |
| 299 | 300 | void disconnect(); |
| 300 | 301 | std::string getStringValue() const; |
| 301 | 302 | ... | ... |