/* * 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)).append(extraFlags)}, m_modeFlags{mode} { } CBinaryFile::~CBinaryFile() { close(); } FileResult CBinaryFile::open() { m_file = fopen(m_filename.c_str(), m_mode.c_str()); return m_file != nullptr ? FileResult::Success : FileResult::Error; } void CBinaryFile::close() { if (m_file != nullptr) { fclose(m_file); m_file = nullptr; } } const FILE* CBinaryFile::file() const { return m_file; } FILE* CBinaryFile::file() { return m_file; } } // namespace fud