Commit 3b60224bae16f36e0b6caf13fe1e119b9fa1f6b1

Authored by Jay Berkenbilt
1 parent b74e7989

JSONHandler: pass JSON object to array start function

libqpdf/JSONHandler.cc
... ... @@ -69,7 +69,7 @@ JSONHandler::addFallbackDictHandler(std::shared_ptr<JSONHandler> fdh)
69 69 }
70 70  
71 71 void
72   -JSONHandler::addArrayHandlers(void_handler_t start_fn,
  72 +JSONHandler::addArrayHandlers(json_handler_t start_fn,
73 73 void_handler_t end_fn,
74 74 std::shared_ptr<JSONHandler> ah)
75 75 {
... ... @@ -144,7 +144,7 @@ JSONHandler::handle(std::string const&amp; path, JSON j)
144 144 }
145 145 if (this->m->h.array_start_handler && j.isArray())
146 146 {
147   - this->m->h.array_start_handler(path);
  147 + this->m->h.array_start_handler(path, j);
148 148 size_t i = 0;
149 149 j.forEachArrayItem([&i, &path, this](JSON v) {
150 150 this->m->h.array_item_handler->handle(
... ...
libqpdf/qpdf/JSONHandler.hh
... ... @@ -66,7 +66,7 @@ class JSONHandler
66 66 void addFallbackDictHandler(std::shared_ptr<JSONHandler>);
67 67  
68 68 QPDF_DLL
69   - void addArrayHandlers(void_handler_t start_fn,
  69 + void addArrayHandlers(json_handler_t start_fn,
70 70 void_handler_t end_fn,
71 71 std::shared_ptr<JSONHandler> item_handlers);
72 72  
... ... @@ -102,7 +102,7 @@ class JSONHandler
102 102 bool_handler_t bool_handler;
103 103 json_handler_t dict_start_handler;
104 104 void_handler_t dict_end_handler;
105   - void_handler_t array_start_handler;
  105 + json_handler_t array_start_handler;
106 106 void_handler_t array_end_handler;
107 107 void_handler_t final_handler;
108 108 std::map<std::string, std::shared_ptr<JSONHandler>> dict_handlers;
... ...
libtests/json_handler.cc
... ... @@ -71,8 +71,7 @@ static std::shared_ptr&lt;JSONHandler&gt; make_all_handler()
71 71 auto h5s = std::make_shared<JSONHandler>();
72 72 h->addDictKeyHandler("five", h5s);
73 73 h5s->addArrayHandlers(
74   - make_print_message("array begin"),
75   - make_print_message("array end"),
  74 + print_json, make_print_message("array end"),
76 75 h5);
77 76 auto h6 = std::make_shared<JSONHandler>();
78 77 h6->addDictHandlers(
... ...
libtests/qtest/json_handler/json_handler.out
... ... @@ -25,7 +25,13 @@
25 25 "three": true,
26 26 "two": 3.14
27 27 }
28   -.five: json: array begin
  28 +.five: json: [
  29 + "x",
  30 + false,
  31 + "y",
  32 + null,
  33 + true
  34 +]
29 35 .five[0]: string: x
30 36 .five[1]: bool: false
31 37 .five[2]: string: y
... ...