diff options
author | bunnei <bunneidev@gmail.com> | 2016-11-05 04:14:38 +0100 |
---|---|---|
committer | bunnei <bunneidev@gmail.com> | 2016-12-22 05:29:04 +0100 |
commit | 198b6c9bdd58d76303f75a8577303907967a143e (patch) | |
tree | 0dba084e5c3418f917880fd4fc1efad37f127e9b /src/core/system.h | |
parent | loader: Remove duplicate docstrings. (diff) | |
download | yuzu-198b6c9bdd58d76303f75a8577303907967a143e.tar yuzu-198b6c9bdd58d76303f75a8577303907967a143e.tar.gz yuzu-198b6c9bdd58d76303f75a8577303907967a143e.tar.bz2 yuzu-198b6c9bdd58d76303f75a8577303907967a143e.tar.lz yuzu-198b6c9bdd58d76303f75a8577303907967a143e.tar.xz yuzu-198b6c9bdd58d76303f75a8577303907967a143e.tar.zst yuzu-198b6c9bdd58d76303f75a8577303907967a143e.zip |
Diffstat (limited to 'src/core/system.h')
-rw-r--r-- | src/core/system.h | 82 |
1 files changed, 72 insertions, 10 deletions
diff --git a/src/core/system.h b/src/core/system.h index b41fc088a..192a9c447 100644 --- a/src/core/system.h +++ b/src/core/system.h @@ -4,18 +4,80 @@ #pragma once +#include <string> + +#include "core/loader/loader.h" + class EmuWindow; -namespace System { +namespace Core { + +class System { +public: + struct State { + std::unique_ptr<Loader::AppLoader> app_loader; + }; + + /** + * Gets the instance of the System singleton class. + * @returns Reference to the instance of the System singleton class. + */ + static System& GetInstance() { + return s_instance; + } + + /// Enumeration representing the return values of the System Initialize and Load process. + enum class ResultStatus : u32 { + Success, ///< Succeeded + ErrorGetLoader, ///< Error finding the correct application loader + ErrorSystemMode, ///< Error determining the system mode + ErrorLoader, ///< Error loading the specified application + ErrorLoader_ErrorEncrypted, ///< Error loading the specified application due to encryption + ErrorLoader_ErrorInvalidFormat, ///< Error loading the specified application due to an invalid format + ErrorVideoCore, ///< Error in the video core + }; + + /** + * Initialize the emulated system. + * @param emu_window Pointer to the host-system window used for video output and keyboard input. + * @param system_mode The system mode. + * @returns ResultStatus code, indicating if the operation succeeded. + */ + ResultStatus Init(EmuWindow* emu_window, u32 system_mode); + + /// Shutdown the emulated system. + void Shutdown(); + + /** + * Load an executable application. + * @param emu_window Pointer to the host-system window used for video output and keyboard input. + * @param filepath String path to the executable application to load on the host file system. + * @returns ResultStatus code, indicating if the operation succeeded. + */ + ResultStatus Load(EmuWindow* emu_window, const std::string& filepath); + + /** + * Indicates if the emulated system is powered on (all subsystems initialized and able to run an + * application). + * @returns True if the emulated system is powered on, otherwise false. + */ + bool IsPoweredOn() const { + return is_powered_on; + } + + /** + * Gets the internal state of the emulated system. + * @returns The internal state of the emulated system + */ + State& GetState() { + return state; + } + +private: + bool is_powered_on{}; + State state; -enum class Result { - Success, ///< Everything is fine - Error, ///< Something went wrong (no module specified) - ErrorInitCore, ///< Something went wrong during core init - ErrorInitVideoCore, ///< Something went wrong during video core init + static System s_instance; }; -Result Init(EmuWindow* emu_window, u32 system_mode); -bool IsPoweredOn(); -void Shutdown(); -} +} // namespace Core |