Adding common functions (read file)
This commit is contained in:
parent
ec4d60142d
commit
1681640aaa
@ -44,6 +44,8 @@ endif ()
|
|||||||
|
|
||||||
add_executable(AdventOfCode2023 main.cpp)
|
add_executable(AdventOfCode2023 main.cpp)
|
||||||
|
|
||||||
|
add_subdirectory(common)
|
||||||
|
|
||||||
add_subdirectory(pb_1)
|
add_subdirectory(pb_1)
|
||||||
|
|
||||||
add_subdirectory(pb_2)
|
add_subdirectory(pb_2)
|
||||||
|
9
common/CMakeLists.txt
Normal file
9
common/CMakeLists.txt
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
project(common_lib CXX)
|
||||||
|
|
||||||
|
add_library(common SHARED common_functions.cpp common_functions.hpp)
|
||||||
|
|
||||||
|
target_compile_definitions(common PUBLIC $<$<AND:$<CONFIG:Debug>,$<STREQUAL:$<CXX_COMPILER_ID>,GNU>>:_GLIBCXX_DEBUG>)
|
||||||
|
|
||||||
|
target_compile_options(common PUBLIC ${COMPILE_FLAGS})
|
||||||
|
|
||||||
|
target_link_options(common PUBLIC ${LINKER_OPTIONS})
|
34
common/common_functions.cpp
Normal file
34
common/common_functions.cpp
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
//
|
||||||
|
// Created by postaron on 31/07/24.
|
||||||
|
//
|
||||||
|
|
||||||
|
#include "common_functions.hpp"
|
||||||
|
#include <iostream>
|
||||||
|
#include <format>
|
||||||
|
|
||||||
|
std::optional<std::ifstream> common::read_file(const std::filesystem::path &problemFile) noexcept {
|
||||||
|
std::ifstream file(problemFile);
|
||||||
|
if (!file.is_open()) {
|
||||||
|
const auto error_state = file.rdstate();
|
||||||
|
switch (error_state) {
|
||||||
|
case std::ios::badbit:
|
||||||
|
std::cerr << "Fatal I/O error occurred.\n";
|
||||||
|
break;
|
||||||
|
case std::ios::eofbit:
|
||||||
|
std::cerr << "End of file reached.\n";
|
||||||
|
break;
|
||||||
|
case std::ios::failbit:
|
||||||
|
std::cerr << "Non-fatal I/O error occurred.\n";
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
std::cerr << "impossible to reach.\n";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
const auto path_string = problemFile.string();
|
||||||
|
const auto msg = std::format("Failed to open file {}: ", path_string);
|
||||||
|
std::perror(msg.c_str());
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
return file;
|
||||||
|
|
||||||
|
}
|
18
common/common_functions.hpp
Normal file
18
common/common_functions.hpp
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
//
|
||||||
|
// Created by postaron on 31/07/24.
|
||||||
|
//
|
||||||
|
|
||||||
|
#ifndef ADVENTOFCODE2023_COMMON_FUNCTIONS_HPP
|
||||||
|
#define ADVENTOFCODE2023_COMMON_FUNCTIONS_HPP
|
||||||
|
|
||||||
|
#include <fstream>
|
||||||
|
#include <filesystem>
|
||||||
|
#include <optional>
|
||||||
|
|
||||||
|
namespace common {
|
||||||
|
namespace fs = std::filesystem;
|
||||||
|
|
||||||
|
std::optional<std::ifstream> read_file(const fs::path &problemFile) noexcept;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif //ADVENTOFCODE2023_COMMON_FUNCTIONS_HPP
|
Loading…
Reference in New Issue
Block a user