Move back to C
I'm insane and as such I have moved to C AGAIN! Without any reason.
This commit is contained in:
1 parent
bf31b96a2e
commit
3d538eaa2c
43 files changed
+2645
-2649
No files matched your search
@@ -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
|
||||
)
|
||||
@@ -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 */
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 */
|
||||
@@ -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 */
|
||||
@@ -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
|
||||
@@ -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);
|
||||
}
|
||||
@@ -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
|
||||
@@ -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);
|
||||
}
|
||||
@@ -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
|
||||
Reference in new issue
Block a user