Commit 586865f980f43d5fc637d9d06f5cf1c98ce853b2

Authored by m-holger
1 parent 9504421e

Move QPDFObject::write_json to BaseHandle

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&amp; 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&amp; 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&amp; 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&amp; 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&amp; 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&amp; 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&amp; 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  
... ...