summaryrefslogtreecommitdiffhomepage
path: root/diff.h
diff options
context:
space:
mode:
Diffstat (limited to 'diff.h')
-rw-r--r--diff.h37
1 files changed, 37 insertions, 0 deletions
diff --git a/diff.h b/diff.h
new file mode 100644
index 0000000..5c2c335
--- /dev/null
+++ b/diff.h
@@ -0,0 +1,37 @@
+#pragma once
+
+#include <string>
+
+#include <boost/property_tree/ptree.hpp>
+
+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);
+}