mirror of
https://github.com/J-D-K/JKSV.git
synced 2026-03-22 01:34:13 -05:00
39 lines
1.3 KiB
C++
39 lines
1.3 KiB
C++
#include "fs/ScopedSaveMount.hpp"
|
|
|
|
#include "error.hpp"
|
|
#include "fslib.hpp"
|
|
|
|
// ---- Construction ----
|
|
|
|
fs::ScopedSaveMount::ScopedSaveMount(std::string_view mount, const FsSaveDataInfo *saveInfo, bool log)
|
|
: m_mountPoint(mount)
|
|
, m_log(log)
|
|
{
|
|
if (m_log) { m_isOpen = !error::fslib(fslib::open_save_data_with_save_info(m_mountPoint, *saveInfo)); }
|
|
else { m_isOpen = fslib::open_save_data_with_save_info(m_mountPoint, *saveInfo); }
|
|
}
|
|
|
|
fs::ScopedSaveMount::~ScopedSaveMount()
|
|
{
|
|
if (m_log) { error::fslib(fslib::close_file_system(m_mountPoint)); }
|
|
else { fslib::close_file_system(m_mountPoint); }
|
|
}
|
|
|
|
// ---- Move constructor & operator ----
|
|
|
|
fs::ScopedSaveMount::ScopedSaveMount(ScopedSaveMount &&scopedSaveMount) noexcept
|
|
: m_mountPoint(std::move(scopedSaveMount.m_mountPoint))
|
|
, m_isOpen(scopedSaveMount.m_isOpen) {};
|
|
|
|
fs::ScopedSaveMount &fs::ScopedSaveMount::operator=(ScopedSaveMount &&scopedSaveMount) noexcept
|
|
{
|
|
m_mountPoint = std::move(scopedSaveMount.m_mountPoint);
|
|
m_isOpen = scopedSaveMount.m_isOpen;
|
|
scopedSaveMount.m_isOpen = false;
|
|
return *this;
|
|
}
|
|
|
|
// ---- Public functions ----
|
|
|
|
bool fs::ScopedSaveMount::is_open() const noexcept { return m_isOpen; }
|