aboutsummaryrefslogtreecommitdiff
path: root/src/crepe/api/SaveManager.h
diff options
context:
space:
mode:
authorWBoerenkamps <wrj.boerenkamps@student.avans.nl>2024-12-04 21:50:45 +0100
committerWBoerenkamps <wrj.boerenkamps@student.avans.nl>2024-12-04 21:50:45 +0100
commitd941f497c10bb9146bb83c5c4e59e844d0641a04 (patch)
tree7dfdf691175caf8e43a9c7a7e07a1cdd6bfed0ff /src/crepe/api/SaveManager.h
parentd10f220ff6c5d62bb51793a0ef4ee37090161d89 (diff)
parentcfb67ffddb9f4bb0357c2b9df4239bfee7364c5a (diff)
merge master
Diffstat (limited to 'src/crepe/api/SaveManager.h')
-rw-r--r--src/crepe/api/SaveManager.h114
1 files changed, 0 insertions, 114 deletions
diff --git a/src/crepe/api/SaveManager.h b/src/crepe/api/SaveManager.h
deleted file mode 100644
index 3d8c852..0000000
--- a/src/crepe/api/SaveManager.h
+++ /dev/null
@@ -1,114 +0,0 @@
-#pragma once
-
-#include <memory>
-
-#include "../ValueBroker.h"
-
-namespace crepe {
-
-class DB;
-
-/**
- * \brief Save data manager
- *
- * This class provides access to a simple key-value store that stores
- * - integers (8-64 bit, signed or unsigned)
- * - real numbers (float or double)
- * - string (std::string)
- *
- * The underlying database is a key-value store.
- */
-class SaveManager {
-public:
- /**
- * \brief Get a read/write reference to a value and initialize it if it does not yet exist
- *
- * \param key The value key
- * \param default_value Value to initialize \c key with if it does not already exist in the
- * database
- *
- * \return Read/write reference to the value
- */
- template <typename T>
- ValueBroker<T> get(const std::string & key, const T & default_value);
-
- /**
- * \brief Get a read/write reference to a value
- *
- * \param key The value key
- *
- * \return Read/write reference to the value
- *
- * \note Attempting to read this value before it is initialized (i.e. set) will result in an
- * exception
- */
- template <typename T>
- ValueBroker<T> get(const std::string & key);
-
- /**
- * \brief Set a value directly
- *
- * \param key The value key
- * \param value The value to store
- */
- template <typename T>
- void set(const std::string & key, const T & value);
-
- /**
- * \brief Check if the save file has a value for this \c key
- *
- * \param key The value key
- *
- * \returns True if the key exists, or false if it does not
- */
- bool has(const std::string & key);
-
-private:
- SaveManager();
- virtual ~SaveManager() = default;
-
-private:
- /**
- * \brief Serialize an arbitrary value to STL string
- *
- * \tparam T Type of arbitrary value
- *
- * \returns String representation of value
- */
- template <typename T>
- std::string serialize(const T &) const noexcept;
-
- /**
- * \brief Deserialize an STL string back to type \c T
- *
- * \tparam T Type of value
- * \param value Serialized value
- *
- * \returns Deserialized value
- */
- template <typename T>
- T deserialize(const std::string & value) const noexcept;
-
-public:
- // singleton
- static SaveManager & get_instance();
- SaveManager(const SaveManager &) = delete;
- SaveManager(SaveManager &&) = delete;
- SaveManager & operator=(const SaveManager &) = delete;
- SaveManager & operator=(SaveManager &&) = delete;
-
-private:
- /**
- * \brief Create an instance of DB and return its reference
- *
- * \returns DB instance
- *
- * This function exists because DB is a facade class, which can't directly be used in the API
- * without workarounds
- *
- * TODO: better solution
- */
- static DB & get_db();
-};
-
-} // namespace crepe