47 lines
		
	
	
		
			940 B
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			47 lines
		
	
	
		
			940 B
		
	
	
	
		
			C++
		
	
	
	
| // AUTOGENERATED COPYRIGHT HEADER START
 | |
| // Copyright (C) 2020-2023 Michael Fabian 'Xaymar' Dirks <info@xaymar.com>
 | |
| // AUTOGENERATED COPYRIGHT HEADER END
 | |
| 
 | |
| #pragma once
 | |
| #include "common.hpp"
 | |
| 
 | |
| #include "warning-disable.hpp"
 | |
| #include <filesystem>
 | |
| #include <memory>
 | |
| #include <new>
 | |
| #include "warning-enable.hpp"
 | |
| 
 | |
| namespace streamfx {
 | |
| 	class configuration {
 | |
| 		std::filesystem::path _config_path;
 | |
| 
 | |
| 		std::shared_ptr<obs_data_t> _data;
 | |
| 
 | |
| #if __cpp_lib_hardware_interference_size >= 201603
 | |
| 		alignas(std::hardware_destructive_interference_size)
 | |
| #endif
 | |
| 			std::mutex _task_lock;
 | |
| 
 | |
| 		std::shared_ptr<streamfx::util::threadpool::task> _save_task;
 | |
| 
 | |
| 		public:
 | |
| 		~configuration();
 | |
| 
 | |
| 		private:
 | |
| 		configuration();
 | |
| 
 | |
| 		public:
 | |
| 		void save();
 | |
| 
 | |
| 		public:
 | |
| 		std::shared_ptr<obs_data_t> get();
 | |
| 
 | |
| 		uint64_t version();
 | |
| 
 | |
| 		bool is_different_version();
 | |
| 
 | |
| 		public /* Singleton */:
 | |
| 		static std::shared_ptr<streamfx::configuration> instance();
 | |
| 	};
 | |
| } // namespace streamfx
 |