Move back to C

I'm insane and as such I have moved to C AGAIN! Without any reason.
This commit is contained in:
Piotr Krygier committed 2023-08-14 13:48:29 +02:00
1 parent bf31b96a2e
commit 3d538eaa2c
43 files changed
+2645 -2649

No files matched your search

+2 -2
View File
@@ -5,6 +5,6 @@ target_include_directories(rse_utilities PRIVATE
)
target_sources(rse_utilities PRIVATE
src/logger.cpp
src/file_utils.cpp
src/file_utils.c
src/logger.c
)
+17
View File
@@ -0,0 +1,17 @@
#ifndef RSE_FILE_UTILS_H
#define RSE_FILE_UTILS_H
#include <stddef.h>
/**
* @brief Reads file and puts its content into char buffer. If NULL is provided as buffer, than just bytes_count
* is set
*
* @param file_path Path to file
* @param bytes_count Returned bytes count
* @param buffer Returned filled buffer
*/
void read_file(const char* file_path, long* bytes_count, char* buffer);
#endif /* RSE_FILE_UTILS_H */
-15
View File
@@ -1,15 +0,0 @@
#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
+4 -4
View File
@@ -9,8 +9,8 @@
*
*/
#ifndef LOCALIZATION_H
#define LOCALIZATION_H
#ifndef RSE_LOCALIZATION_H
#define RSE_LOCALIZATION_H
#define SELECTED_LANGUAGE EN_US
#define MAX_MESSAGE_LENGHT 128
@@ -19,10 +19,10 @@
* @brief Available languages
*
*/
enum Languages_t
enum languages_t
{
EN_US = 0,
LAST_LANGUAGE
};
#endif /* LOCALIZATION_H */
#endif /* RSE_LOCALIZATION_H */
+48
View File
@@ -0,0 +1,48 @@
/**
* @file log.h
* @author Piotr Krygier (everyonencancode@gmail.com)
* @brief Logging interfaces
* @version 0.1
* @date 2022-02-11
*
* @copyright Copyright (c) 2022
*
*/
#ifndef RSE_LOGGER_H
#define RSE_LOGGER_H
#ifndef LOG_LEVEL
#define LOG_LEVEL LOGLEVEL_DEBUG
#endif
#include <stdio.h>
#define LOGGER(log_level, ...) _log_log(log_level, __FILE__, __LINE__, __VA_ARGS__)
// #define LOGGER(log_level, ...) printf("[##log_level] %s:%d", __FILE__, __LINE__); printf(__VA_ARGS__)
#define LOGT(...) LOGGER(LOGLEVEL_TRACE, __VA_ARGS__)
#define LOGD(...) LOGGER(LOGLEVEL_DEBUG, __VA_ARGS__)
#define LOGI(...) LOGGER(LOGLEVEL_INFO, __VA_ARGS__)
#define LOGW(...) LOGGER(LOGLEVEL_WARNING, __VA_ARGS__)
#define LOGE(...) LOGGER(LOGLEVEL_ERROR, __VA_ARGS__)
#define LOGF(...) LOGGER(LOGLEVEL_FATAL, __VA_ARGS__)
/**
* @brief Log level. Is not an enum class, because level is being compared to enable prints
*
*/
typedef enum
{
LOGLEVEL_TRACE,
LOGLEVEL_DEBUG,
LOGLEVEL_INFO,
LOGLEVEL_WARNING,
LOGLEVEL_ERROR,
LOGLEVEL_FATAL
} LogLevel;
void _log_log(unsigned int level, const char* file, int line, const char* fmt, ...);
#endif /* RSE_LOGGER_H */
-79
View File
@@ -1,79 +0,0 @@
/**
* @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
+22
View File
@@ -0,0 +1,22 @@
#include "file_utils.h"
#include <stdio.h>
#include <stdlib.h>
void read_file(const char* file_name, long* bytes_count, char* buffer)
{
FILE* file;
file = fopen(file_name, "rb");
fseek(file, 0, SEEK_END);
*bytes_count = ftell(file);
rewind(file);
if (buffer == NULL) {
fclose(file);
return;
}
fread(buffer, *bytes_count, 1, file);
fclose(file);
}
-33
View File
@@ -1,33 +0,0 @@
#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
+18
View File
@@ -0,0 +1,18 @@
#include "logger.h"
#include "stdarg.h"
const char* log_levels[] = {
"LOGLEVEL_TRACE", "LOGLEVEL_DEBUG", "LOGLEVEL_INFO", "LOGLEVEL_WARNING", "LOGLEVEL_ERROR", "LOGLEVEL_FATAL"
};
void _log_log(unsigned int level, const char* file, int line, const char* fmt, ...)
{
char buf[256];
va_list list;
va_start(list, fmt);
fprintf(stdout, "%s %s:%d ", log_levels[level], file, line);
vfprintf(stdout, fmt, list);
fprintf(stdout, "\n");
fflush(stdout);
}
-59
View File
@@ -1,59 +0,0 @@
/**
* @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