mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-05-02 17:28:33 +00:00
rename Common/File to Common/IOFile
This commit is contained in:
parent
07fd02f207
commit
84128d9532
84 changed files with 87 additions and 87 deletions
146
Source/Core/Common/IOFile.cpp
Normal file
146
Source/Core/Common/IOFile.cpp
Normal file
|
@ -0,0 +1,146 @@
|
|||
// Copyright 2008 Dolphin Emulator Project
|
||||
// Licensed under GPLv2+
|
||||
// Refer to the license.txt file included.
|
||||
|
||||
#include <cstddef>
|
||||
#include <cstdio>
|
||||
#include <string>
|
||||
|
||||
#ifdef _WIN32
|
||||
#include <io.h>
|
||||
|
||||
#include "Common/CommonFuncs.h"
|
||||
#include "Common/StringUtil.h"
|
||||
#else
|
||||
#include <unistd.h>
|
||||
#endif
|
||||
|
||||
#ifdef ANDROID
|
||||
#include <algorithm>
|
||||
|
||||
#include "jni/AndroidCommon/AndroidCommon.h"
|
||||
#endif
|
||||
|
||||
#include "Common/CommonTypes.h"
|
||||
#include "Common/FileUtil.h"
|
||||
#include "Common/IOFile.h"
|
||||
|
||||
namespace File
|
||||
{
|
||||
IOFile::IOFile() : m_file(nullptr), m_good(true)
|
||||
{
|
||||
}
|
||||
|
||||
IOFile::IOFile(std::FILE* file) : m_file(file), m_good(true)
|
||||
{
|
||||
}
|
||||
|
||||
IOFile::IOFile(const std::string& filename, const char openmode[]) : m_file(nullptr), m_good(true)
|
||||
{
|
||||
Open(filename, openmode);
|
||||
}
|
||||
|
||||
IOFile::~IOFile()
|
||||
{
|
||||
Close();
|
||||
}
|
||||
|
||||
IOFile::IOFile(IOFile&& other) noexcept : m_file(nullptr), m_good(true)
|
||||
{
|
||||
Swap(other);
|
||||
}
|
||||
|
||||
IOFile& IOFile::operator=(IOFile&& other) noexcept
|
||||
{
|
||||
Swap(other);
|
||||
return *this;
|
||||
}
|
||||
|
||||
void IOFile::Swap(IOFile& other) noexcept
|
||||
{
|
||||
std::swap(m_file, other.m_file);
|
||||
std::swap(m_good, other.m_good);
|
||||
}
|
||||
|
||||
bool IOFile::Open(const std::string& filename, const char openmode[])
|
||||
{
|
||||
Close();
|
||||
|
||||
#ifdef _WIN32
|
||||
m_good = _tfopen_s(&m_file, UTF8ToTStr(filename).c_str(), UTF8ToTStr(openmode).c_str()) == 0;
|
||||
#else
|
||||
#ifdef ANDROID
|
||||
if (IsPathAndroidContent(filename))
|
||||
m_file = fdopen(OpenAndroidContent(filename, OpenModeToAndroid(openmode)), openmode);
|
||||
else
|
||||
#endif
|
||||
m_file = std::fopen(filename.c_str(), openmode);
|
||||
|
||||
m_good = m_file != nullptr;
|
||||
#endif
|
||||
|
||||
return m_good;
|
||||
}
|
||||
|
||||
bool IOFile::Close()
|
||||
{
|
||||
if (!IsOpen() || 0 != std::fclose(m_file))
|
||||
m_good = false;
|
||||
|
||||
m_file = nullptr;
|
||||
return m_good;
|
||||
}
|
||||
|
||||
void IOFile::SetHandle(std::FILE* file)
|
||||
{
|
||||
Close();
|
||||
Clear();
|
||||
m_file = file;
|
||||
}
|
||||
|
||||
u64 IOFile::GetSize() const
|
||||
{
|
||||
if (IsOpen())
|
||||
return File::GetSize(m_file);
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
|
||||
bool IOFile::Seek(s64 off, int origin)
|
||||
{
|
||||
if (!IsOpen() || 0 != fseeko(m_file, off, origin))
|
||||
m_good = false;
|
||||
|
||||
return m_good;
|
||||
}
|
||||
|
||||
u64 IOFile::Tell() const
|
||||
{
|
||||
if (IsOpen())
|
||||
return ftello(m_file);
|
||||
else
|
||||
return UINT64_MAX;
|
||||
}
|
||||
|
||||
bool IOFile::Flush()
|
||||
{
|
||||
if (!IsOpen() || 0 != std::fflush(m_file))
|
||||
m_good = false;
|
||||
|
||||
return m_good;
|
||||
}
|
||||
|
||||
bool IOFile::Resize(u64 size)
|
||||
{
|
||||
#ifdef _WIN32
|
||||
if (!IsOpen() || 0 != _chsize_s(_fileno(m_file), size))
|
||||
#else
|
||||
// TODO: handle 64bit and growing
|
||||
if (!IsOpen() || 0 != ftruncate(fileno(m_file), size))
|
||||
#endif
|
||||
m_good = false;
|
||||
|
||||
return m_good;
|
||||
}
|
||||
|
||||
} // namespace File
|
Loading…
Add table
Add a link
Reference in a new issue