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,11 +4,29 @@
4 #include <qpdf/QTC.hh> 4 #include <qpdf/QTC.hh>
5 #include <qpdf/QUtil.hh> 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 JSONHandler::JSONHandler() : 21 JSONHandler::JSONHandler() :
8 m(new Members()) 22 m(new Members())
9 { 23 {
10 } 24 }
11 25
  26 +JSONHandler::~JSONHandler()
  27 +{
  28 +}
  29 +
12 void 30 void
13 JSONHandler::usage(std::string const& msg) 31 JSONHandler::usage(std::string const& msg)
14 { 32 {
libqpdf/qpdf/JSONHandler.hh
@@ -16,7 +16,7 @@ class JSONHandler @@ -16,7 +16,7 @@ class JSONHandler
16 public: 16 public:
17 // A QPDFUsage exception is thrown if there are any errors validating the JSON object. 17 // A QPDFUsage exception is thrown if there are any errors validating the JSON object.
18 JSONHandler(); 18 JSONHandler();
19 - ~JSONHandler() = default; 19 + ~JSONHandler();
20 20
21 // Based on the type of handler, expect the object to be of a certain type. QPDFUsage is thrown 21 // Based on the type of handler, expect the object to be of a certain type. QPDFUsage is thrown
22 // otherwise. Multiple handlers may be registered, which allows the object to be of various 22 // otherwise. Multiple handlers may be registered, which allows the object to be of various
@@ -55,49 +55,26 @@ class JSONHandler @@ -55,49 +55,26 @@ class JSONHandler
55 55
56 struct Handlers 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 std::map<std::string, std::shared_ptr<JSONHandler>> dict_handlers; 70 std::map<std::string, std::shared_ptr<JSONHandler>> dict_handlers;
83 std::shared_ptr<JSONHandler> fallback_dict_handler; 71 std::shared_ptr<JSONHandler> fallback_dict_handler;
84 std::shared_ptr<JSONHandler> array_item_handler; 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 #endif // JSONHANDLER_HH 80 #endif // JSONHANDLER_HH