#pragma once #include #include class Diff { public: Diff(); Diff(const std::string& old_version, const std::string& new_version); void create(const std::string& old_version, const std::string& new_version); Diff(const boost::property_tree::ptree& ptree); void create(const boost::property_tree::ptree& ptree); Diff(const std::string& xml); void create(const std::string& xml); std::string apply(const std::string& old_version) const; bool empty() const; boost::property_tree::ptree get_structure() const; std::string get_xml() const; private: // diff replaces space from m_pos0 (inclusive) to m_pos1 (exclusive) with m_data size_t m_pos0{}; size_t m_pos1{}; std::string m_data; }; extern "C" { const char* diff_create(const char* old_version, const char* new_version); const char* diff_apply(const char* old_version, const char* diff); }