Branch data Line data Source code
1 : : // ***************************************************************************** 2 : : /*! 3 : : \file src/jsonbase.hpp 4 : : \copyright 2022-2025 J. Bakosi, 5 : : All rights reserved. See the LICENSE file for details. 6 : : \brief Piac classes to interact with JSON serialization library 7 : : */ 8 : : // ***************************************************************************** 9 : : 10 : : #pragma once 11 : : 12 : : #include <string> 13 : : 14 : : #include "rapidjson/rapidjson.h" 15 : : #include "rapidjson/document.h" 16 : : #include "rapidjson/prettywriter.h" 17 : : 18 : : namespace piac { 19 : : 20 : : //! Base class to interact with JSON serialization library 21 : : class JSONBase { 22 : : public: 23 : 45 : virtual ~JSONBase() = default; 24 : : 25 : : //! Deserialize from JSON in file helper 26 : : bool deserializeFromFile( const std::string& filePath ); 27 : : 28 : : //! Serialize JSON format to file helper 29 : : bool serializeToFile( const std::string& filePath ) const; 30 : : 31 : : //! Serialize JSON writer helper 32 : : [[nodiscard]] virtual std::string serialize() const; 33 : : 34 : : //! Deserialize helper from JSON in string 35 : : virtual bool deserialize( const std::string& s ); 36 : : 37 : : //! Serialize JSON writer helper 38 : : virtual bool deserialize( const rapidjson::Value& obj ) = 0; 39 : : virtual bool serialize( rapidjson::Writer<rapidjson::StringBuffer>* writer ) 40 : : const = 0; 41 : : 42 : : protected: 43 : : //! Validate and initialize JSON formatted document 44 : : bool initDocument( const std::string& s, rapidjson::Document& doc ) const; 45 : : }; 46 : : 47 : : } // piac::