/* * libfud * Copyright 2024 Dominick Allen * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "fud_c_file.hpp" namespace fud { CBinaryFile::CBinaryFile(const String& filename, CFileMode mode) : m_filename{filename}, m_mode{CBinaryFileModeFromFlags(mode)}, m_modeFlags{mode} { } CBinaryFile::CBinaryFile(const String& filename, CFileMode mode, const String& extraFlags) : m_filename{filename}, m_extraFlags{extraFlags}, m_mode{String(CBinaryFileModeFromFlags(mode)).catenate(extraFlags)}, m_modeFlags{mode} { } CBinaryFile::CBinaryFile(CBinaryFile&& rhs) noexcept : m_filename{std::move(rhs.m_filename)}, m_extraFlags{std::move(rhs.m_extraFlags)}, m_mode{std::move(rhs.m_mode)}, m_modeFlags{rhs.m_modeFlags}, m_file{rhs.m_file} { } CBinaryFile::~CBinaryFile() { close(); } CBinaryFile& CBinaryFile::operator=(CBinaryFile&& rhs) noexcept { close(); m_filename = std::move(rhs.m_filename); m_extraFlags = std::move(rhs.m_extraFlags); m_mode = std::move(rhs.m_mode); m_modeFlags = rhs.m_modeFlags; m_file = rhs.m_file; return *this; } CTextFile::CTextFile(const String& filename, CFileMode mode) : m_filename{filename}, m_mode{CTextFileModeFromFlags(mode)}, m_modeFlags{mode} { } CTextFile::CTextFile(const String& filename, CFileMode mode, const String& extraFlags) : m_filename{filename}, m_extraFlags{extraFlags}, m_mode{String(CTextFileModeFromFlags(mode)).catenate(extraFlags)}, m_modeFlags{mode} { } CTextFile::CTextFile(CTextFile&& rhs) noexcept : m_filename{std::move(rhs.m_filename)}, m_extraFlags{std::move(rhs.m_extraFlags)}, m_mode{std::move(rhs.m_mode)}, m_modeFlags{rhs.m_modeFlags}, m_file{rhs.m_file} { } CTextFile::~CTextFile() { close(); } CTextFile& CTextFile::operator=(CTextFile&& rhs) noexcept { close(); m_filename = std::move(rhs.m_filename); m_extraFlags = std::move(rhs.m_extraFlags); m_mode = std::move(rhs.m_mode); m_modeFlags = rhs.m_modeFlags; m_file = rhs.m_file; return *this; } } // namespace fud