2525
2626#ifndef ZJSONNODE_H
2727#define ZJSONNODE_H
28- // clang-format off
29- #include < wx/vector.h>
30- #include < wx/string.h>
31- #include < wx/variant.h>
32- #include < wx/filename.h>
33- #include < string_view>
34- #include < wx/gdicmn.h>
28+
3529#include " codelite_exports.h"
36- #include < map>
30+ #include " macros.h"
31+
3732#include < cJSON.h>
33+ #include < map>
34+ #include < string_view>
35+ #include < type_traits>
36+ #include < vector>
37+ #include < wx/filename.h>
38+ #include < wx/gdicmn.h>
39+ #include < wx/string.h>
40+ #include < wx/variant.h>
41+ #include < wx/vector.h>
42+
3843#if wxUSE_GUI
3944#include < wx/arrstr.h>
4045#include < wx/colour.h>
4146#include < wx/font.h>
4247#endif
43- #include " macros.h"
44- #include < vector>
45- #include < type_traits>
46- // clang-format on
4748
4849// ////////////////////////////////////////////////////////////////////////
4950// ////////////////////////////////////////////////////////////////////////
5051
52+ class JSON ;
53+
5154class WXDLLIMPEXP_CL JSONItem
5255{
53- protected:
54- cJSON* m_json = nullptr ;
55- cJSON* m_walker = nullptr ;
56- wxString m_propertyName;
57- int m_type = wxNOT_FOUND;
58-
59- // Values
60- wxString m_valueString;
61- double m_valueNumer = 0 ;
62-
56+ friend JSON;
6357public:
64- JSONItem (cJSON* json);
65- JSONItem (const wxString& name, double val);
66- JSONItem (const wxString& name, const std::string& val);
67- JSONItem (const wxString& name, const char * pval, size_t len);
68- JSONItem (const wxString& name, bool val);
58+ explicit JSONItem (cJSON* json);
6959 JSONItem () = default ;
7060 virtual ~JSONItem () = default ;
7161
72- // Walkers
73- JSONItem firstChild ();
74- JSONItem nextChild ();
75-
76- // Setters
77- // //////////////////////////////////////////////
78- void setType (int m_type) { this ->m_type = m_type; }
79- int getType () const { return m_type; }
80- const wxString& GetPropertyName () const { return m_propertyName; }
81- void SetPropertyName (const wxString& name) { m_propertyName = name; }
82-
8362 // Readers
8463 // //////////////////////////////////////////////
8564 JSONItem namedObject (const wxString& name) const ;
@@ -154,7 +133,6 @@ class WXDLLIMPEXP_CL JSONItem
154133 }
155134 size_t toSize_t (size_t defaultVal = 0 ) const ;
156135 double toDouble (double defaultVal = -1.0 ) const ;
157- wxFileName toFileName () const ;
158136
159137 wxColour toColour (const wxColour& defaultColour = wxNullColour) const ;
160138 wxFont toFont (const wxFont& defaultFont = wxNullFont) const ;
@@ -198,7 +176,7 @@ class WXDLLIMPEXP_CL JSONItem
198176 JSONItem& addProperty (const wxString& name, long value);
199177 JSONItem& addProperty (const wxString& name, size_t value);
200178 JSONItem& addProperty (const wxString& name, bool value);
201- JSONItem& addProperty (const wxString& name, cJSON* pjson );
179+ JSONItem& addProperty (const wxString& name, JSON&& json );
202180 JSONItem& addProperty (const wxString& name, const wxFileName& filename);
203181 JSONItem& addProperty (const wxString& name, const std::vector<int >& arr_int);
204182 template <class T = int >
@@ -223,11 +201,6 @@ class WXDLLIMPEXP_CL JSONItem
223201 */
224202 void removeProperty (const wxString& name);
225203
226- /* *
227- * @brief detach element from json. Return the detached element
228- */
229- JSONItem detachProperty (const wxString& name);
230-
231204 // ////////////////////////////////////////////////
232205 // Array operations
233206 // ////////////////////////////////////////////////
@@ -245,6 +218,13 @@ class WXDLLIMPEXP_CL JSONItem
245218
246219 bool isOk () const { return m_json != NULL ; }
247220
221+ private:
222+
223+ const wxString& GetPropertyName () const { return m_propertyName; }
224+ void SetPropertyName (const wxString& name) { m_propertyName = name; }
225+ int getType () const { return m_type; }
226+ void setType (int m_type) { this ->m_type = m_type; }
227+
248228 /* *
249229 * @brief release the internal pointer
250230 */
@@ -254,6 +234,14 @@ class WXDLLIMPEXP_CL JSONItem
254234 m_json = nullptr ;
255235 return temp;
256236 }
237+ private:
238+ cJSON* m_json = nullptr ;
239+ wxString m_propertyName;
240+ int m_type = wxNOT_FOUND;
241+
242+ // Values
243+ wxString m_valueString;
244+ double m_valueNumer = 0 ;
257245};
258246
259247// ////////////////////////////////////////////////////////////////////////
@@ -267,32 +255,27 @@ enum class JsonType
267255
268256class WXDLLIMPEXP_CL JSON
269257{
270- protected:
271- cJSON* m_json;
272- wxString _errorString;
273-
274258public:
275259 explicit JSON (JsonType type);
276260 explicit JSON (const wxString& text);
277261 explicit JSON (const wxFileName& filename);
278262 explicit JSON (JSONItem item);
279- explicit JSON (cJSON* json);
280263
264+ // Make this class not copyable
265+ JSON (const JSON&) = delete ;
266+ JSON& operator =(const JSON&) = delete ;
281267 virtual ~JSON ();
282268
283269 void save (const wxFileName& fn) const ;
284- wxString errorString () const ;
285270 bool isOk () const { return m_json != NULL ; }
286271
287272 JSONItem toElement () const ;
288273
289274 void clear ();
290275 cJSON* release ();
291276
292- private:
293- // Make this class not copyable
294- JSON (const JSON&) = delete ;
295- JSON& operator =(const JSON&) = delete ;
277+ protected:
278+ cJSON* m_json = nullptr ;
296279};
297280
298281#endif // ZJSONNODE_H
0 commit comments