// license:BSD-3-Clause // copyright-holders:Nicola Salmoria, Aaron Giles /*************************************************************************** config.h Wrappers for handling MAME configuration files ***************************************************************************/ #ifndef MAME_EMU_CONFIG_H #define MAME_EMU_CONFIG_H #pragma once #include "xmlfile.h" enum class config_type : int { INIT, // opportunity to initialize things first CONTROLLER, // loading from controller file DEFAULT, // loading from default.cfg SYSTEM, // loading from system.cfg FINAL // opportunity to finish initialization }; enum class config_level : int { DEFAULT, SOURCE, BIOS, PARENT, SYSTEM }; class configuration_manager { public: typedef delegate load_delegate; typedef delegate save_delegate; static inline constexpr int CONFIG_VERSION = 10; // construction/destruction configuration_manager(running_machine &machine); void config_register(const char *nodename, load_delegate load, save_delegate save); bool load_settings(); void save_settings(); // getters running_machine &machine() const { return m_machine; } private: struct config_element { std::string name; // node name load_delegate load; // load callback save_delegate save; // save callback }; bool load_xml(emu_file &file, config_type which_type); bool save_xml(emu_file &file, config_type which_type); // internal state running_machine & m_machine; // reference to our machine std::vector m_typelist; }; #endif // MAME_EMU_CONFIG_H