Commit 62f00b6d9c93e17ff1eb25cb19f2d82c1038f280

Authored by m-holger
1 parent 8b05c550

Change JSONHandler::m to std::unique_ptr and declare Members in implementation file

libqpdf/JSONHandler.cc
... ... @@ -4,11 +4,29 @@
4 4 #include <qpdf/QTC.hh>
5 5 #include <qpdf/QUtil.hh>
6 6  
  7 +class JSONHandler::Members
  8 +{
  9 + friend class JSONHandler;
  10 +
  11 + public:
  12 + ~Members() = default;
  13 +
  14 + private:
  15 + Members() = default;
  16 + Members(Members const&) = delete;
  17 +
  18 + Handlers h;
  19 +};
  20 +
7 21 JSONHandler::JSONHandler() :
8 22 m(new Members())
9 23 {
10 24 }
11 25  
  26 +JSONHandler::~JSONHandler()
  27 +{
  28 +}
  29 +
12 30 void
13 31 JSONHandler::usage(std::string const& msg)
14 32 {
... ...
libqpdf/qpdf/JSONHandler.hh
... ... @@ -16,7 +16,7 @@ class JSONHandler
16 16 public:
17 17 // A QPDFUsage exception is thrown if there are any errors validating the JSON object.
18 18 JSONHandler();
19   - ~JSONHandler() = default;
  19 + ~JSONHandler();
20 20  
21 21 // Based on the type of handler, expect the object to be of a certain type. QPDFUsage is thrown
22 22 // otherwise. Multiple handlers may be registered, which allows the object to be of various
... ... @@ -55,49 +55,26 @@ class JSONHandler
55 55  
56 56 struct Handlers
57 57 {
58   - Handlers() :
59   - any_handler(nullptr),
60   - null_handler(nullptr),
61   - string_handler(nullptr),
62   - number_handler(nullptr),
63   - bool_handler(nullptr),
64   - dict_start_handler(nullptr),
65   - dict_end_handler(nullptr),
66   - array_start_handler(nullptr),
67   - array_end_handler(nullptr),
68   - final_handler(nullptr)
69   - {
70   - }
71   -
72   - json_handler_t any_handler;
73   - void_handler_t null_handler;
74   - string_handler_t string_handler;
75   - string_handler_t number_handler;
76   - bool_handler_t bool_handler;
77   - json_handler_t dict_start_handler;
78   - void_handler_t dict_end_handler;
79   - json_handler_t array_start_handler;
80   - void_handler_t array_end_handler;
81   - void_handler_t final_handler;
  58 + Handlers() = default;
  59 +
  60 + json_handler_t any_handler{nullptr};
  61 + void_handler_t null_handler{nullptr};
  62 + string_handler_t string_handler{nullptr};
  63 + string_handler_t number_handler{nullptr};
  64 + bool_handler_t bool_handler{nullptr};
  65 + json_handler_t dict_start_handler{nullptr};
  66 + void_handler_t dict_end_handler{nullptr};
  67 + json_handler_t array_start_handler{nullptr};
  68 + void_handler_t array_end_handler{nullptr};
  69 + void_handler_t final_handler{nullptr};
82 70 std::map<std::string, std::shared_ptr<JSONHandler>> dict_handlers;
83 71 std::shared_ptr<JSONHandler> fallback_dict_handler;
84 72 std::shared_ptr<JSONHandler> array_item_handler;
85 73 };
86 74  
87   - class Members
88   - {
89   - friend class JSONHandler;
90   -
91   - public:
92   - ~Members() = default;
  75 + class Members;
93 76  
94   - private:
95   - Members() = default;
96   - Members(Members const&) = delete;
97   -
98   - Handlers h;
99   - };
100   - std::shared_ptr<Members> m;
  77 + std::unique_ptr<Members> m;
101 78 };
102 79  
103 80 #endif // JSONHANDLER_HH
... ...