Split vulkan_base into smaller units

Closes #30. This is a basic refactoring of the graphics module, so
everything won't be in single file.
This commit is contained in:
Piotr Krygier committed 2023-03-29 09:41:04 +02:00
1 parent 649e7f76fe
commit 6a09350902
32 files changed
+2354 -2002

No files matched your search

+10
View File
@@ -0,0 +1,10 @@
add_library(rse_utilities SHARED)
target_include_directories(rse_utilities PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}
)
target_sources(rse_utilities PRIVATE
src/logger.cpp
src/file_utils.cpp
)
+15
View File
@@ -0,0 +1,15 @@
#ifndef RSE_FILE_UTILS_HPP
#define RSE_FILE_UTILS_HPP
#include <vector>
#include <string>
namespace rse::utils::file
{
std::vector<char> read_file(const std::string& fileName);
}
#endif
+28
View File
@@ -0,0 +1,28 @@
/**
* @file localization.hpp
* @author Piotr Krygier (everyonencancode@gmail.com)
* @brief Simple localization header
* @version 0.1
* @date 2022-02-15
*
* @copyright Copyright (c) 2022
*
*/
#pragma once
#define SELECTED_LANGUAGE rse::utils::locale::EN_US
namespace rse::utils::locale
{
/**
* @brief Available languages
*
*/
enum Languages_t
{
EN_US = 0,
LAST_LANGUAGE
};
} // namespace rse::locale
+79
View File
@@ -0,0 +1,79 @@
/**
* @file log.hpp
* @author Piotr Krygier (everyonencancode@gmail.com)
* @brief Logging interfaces
* @version 0.1
* @date 2022-02-11
*
* @copyright Copyright (c) 2022
*
*/
#ifndef RSE_LOGGER_HPP
#define RSE_LOGGER_HPP
#include <sstream>
#ifndef LOG_LEVEL
#define LOG_LEVEL LOGLEVEL_DEBUG
#endif
#define LOGT rse::utils::log::Logger(rse::utils::log::LOGLEVEL_TRACE)
#define LOGD rse::utils::log::Logger(rse::utils::log::LOGLEVEL_DEBUG)
#define LOGI rse::utils::log::Logger(rse::utils::log::LOGLEVEL_INFO)
#define LOGW rse::utils::log::Logger(rse::utils::log::LOGLEVEL_WARNING)
#define LOGE rse::utils::log::Logger(rse::utils::log::LOGLEVEL_ERROR)
#define LOGF rse::utils::log::Logger(rse::utils::log::LOGLEVEL_FATAL)
namespace rse::utils::log
{
/**
* @brief Log level. Is not an enum class, because level is being compared to enable prints
*
*/
typedef enum
{
LOGLEVEL_TRACE = 1,
LOGLEVEL_DEBUG = 2,
LOGLEVEL_INFO = 3,
LOGLEVEL_WARNING = 4,
LOGLEVEL_ERROR = 5,
LOGLEVEL_FATAL = 6
} LogLevel;
/**
* @brief Class used indirectly as a logger.
*
*/
class Logger {
private:
bool printMessage;
std::stringstream mMessageBuffer;
public:
/**
* @brief Construct a new Logger object
*
*/
Logger(LogLevel);
~Logger();
/**
* @brief For log printing. I want it to work like log << "Message " << args;
*
*/
template <typename T>
Logger& operator<<(T&& message)
{
if (printMessage)
mMessageBuffer << message;
return *this;
}
};
} // namespace rse::log
#endif
+33
View File
@@ -0,0 +1,33 @@
#include "file_utils.hpp"
#include <fstream>
namespace rse::utils::file
{
/**
* @brief Reads file and puts its content into char buffer
*
* @param fileName Path to file
* @return std::vector<char> Binary buffer data
*/
std::vector<char> read_file(const std::string& fileName)
{
std::ifstream file{fileName, std::ios::ate | std::ios::binary};
if (!file.is_open()) {
return {};
}
/* Get file size and create data buffer */
size_t fileSize = static_cast<size_t>(file.tellg());
std::vector<char> buffer(fileSize);
file.seekg(0);
file.read(buffer.data(), fileSize);
file.close();
return buffer;
}
} // namespace rse::utils::file
+59
View File
@@ -0,0 +1,59 @@
/**
* @file logger.cpp
* @author Piotr Krygier (everyonecancode@gmail.com)
* @brief Implementation for the logger
* @version 0.1
* @date 2022-07-06
*
* @copyright Copyright (c) 2022
*
*/
#include "logger.hpp"
#include <iostream>
namespace rse::utils::log
{
Logger::Logger(LogLevel level) : printMessage(false)
{
if (level < LOG_LEVEL)
{
return;
}
switch (level)
{
case LOGLEVEL_TRACE:
mMessageBuffer << "[TRACE] ";
break;
case LOGLEVEL_DEBUG:
mMessageBuffer << "[DEBUG] ";
break;
case LOGLEVEL_INFO:
mMessageBuffer << "[INFO] ";
break;
case LOGLEVEL_WARNING:
mMessageBuffer << "[WARNING] ";
break;
case LOGLEVEL_ERROR:
mMessageBuffer << "[ERROR] ";
break;
case LOGLEVEL_FATAL:
mMessageBuffer << "[FATAL] ";
break;
default:
break;
}
printMessage = true;
}
Logger::~Logger()
{
std::cout << mMessageBuffer.str() << std::endl;
}
} // namespace rse::log