JKSV/source/fs/ScopedSaveMount.cpp
2025-10-30 18:11:16 -04:00

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; }