initial matador ng commit

This commit is contained in:
2025-02-02 20:37:12 +01:00
parent 19de5714f4
commit ded3daceb3
378 changed files with 14913 additions and 13431 deletions
+85 -24
View File
@@ -1,44 +1,105 @@
#ifndef QUERY_OS_HPP
#define QUERY_OS_HPP
#ifndef MATADOR_OS_HPP
#define MATADOR_OS_HPP
#include "matador/utils/export.hpp"
#include <cstdio>
#include <string>
namespace matador::utils::os {
enum class override_env_value {
KeepValue,
OverrideValue
};
#ifdef _WIN32
extern char DIR_SEPARATOR;
extern const char* DIR_SEPARATOR_STRING;
#else
extern char DIR_SEPARATOR;
extern const char* DIR_SEPARATOR_STRING;
std::string error_string(unsigned long error);
#endif
std::string error_string(unsigned long error);
void setenv(const char *name, const char *value, override_env_value override_value);
std::string getenv(const char* name);
void unsetenv(const char *name);
}
[[maybe_unused]] std::string getenv(const std::string &name);
namespace matador::os {
FILE* fopen(const std::string &path, const char *modes);
FILE* fopen(const char *path, const char *modes);
/// @cond MATADOR_DEV
std::string get_current_dir();
#ifdef _WIN32
MATADOR_UTILS_API extern char DIR_SEPARATOR;
MATADOR_UTILS_API extern const char* DIR_SEPARATOR_STRING;
#else
MATADOR_UTILS_API extern char DIR_SEPARATOR;
MATADOR_UTILS_API extern const char* DIR_SEPARATOR_STRING;
#endif
bool mkdir(const std::string &dirname);
bool mkdir(const char *dirname);
MATADOR_UTILS_API FILE* fopen(const std::string &path, const char *modes);
MATADOR_UTILS_API FILE* fopen(const char *path, const char *modes);
bool chdir(const std::string &dirname);
bool chdir(const char *dirname);
MATADOR_UTILS_API FILE* freopen(const std::string &path, const char *modes, FILE *stream);
MATADOR_UTILS_API FILE* freopen(const char *path, const char *modes, FILE *stream);
bool rmdir(const std::string &dirname);
bool rmdir(const char *dirname);
MATADOR_UTILS_API bool fclose(FILE *f);
bool mkpath(const std::string &path);
bool mkpath(const char *path);
MATADOR_UTILS_API bool remove(const std::string &name);
MATADOR_UTILS_API bool remove(const char *name);
bool rmpath(const std::string &path);
bool rmpath(const char *path);
MATADOR_UTILS_API bool rename(const std::string &old_name, const std::string &new_name);
MATADOR_UTILS_API bool rename(const char *old_name, const char *new_name);
MATADOR_UTILS_API bool access(const std::string &path, int mode);
MATADOR_UTILS_API bool access(const char *path, int mode);
MATADOR_UTILS_API int dup(FILE *stream);
MATADOR_UTILS_API bool mkdir(const std::string &dirname);
MATADOR_UTILS_API bool mkdir(const char *dirname);
MATADOR_UTILS_API bool chdir(const std::string &dirname);
MATADOR_UTILS_API bool chdir(const char *dirname);
MATADOR_UTILS_API bool rmdir(const std::string &dirname);
MATADOR_UTILS_API bool rmdir(const char *dirname);
MATADOR_UTILS_API std::string get_current_dir();
MATADOR_UTILS_API bool mkpath(const std::string &path);
MATADOR_UTILS_API bool mkpath(const char *path);
MATADOR_UTILS_API bool rmpath(const std::string &path);
MATADOR_UTILS_API bool rmpath(const char *path);
MATADOR_UTILS_API bool is_readable(const std::string &path);
MATADOR_UTILS_API bool is_readable(const char *path);
MATADOR_UTILS_API bool is_writable(const std::string &path);
MATADOR_UTILS_API bool is_writable(const char *path);
MATADOR_UTILS_API bool exists(const std::string &path);
MATADOR_UTILS_API bool exists(const char *path);
MATADOR_UTILS_API size_t file_size(FILE *stream);
MATADOR_UTILS_API std::string build_path(const std::string &a, const std::string &b);
template <typename ...T>
std::string build_path(const std::string &a, const std::string &b, T& ...arg)
{
return build_path(build_path(a, b), arg...);
}
template<typename... ARGS>
int sprintf(char* str, size_t s, const char* format, ARGS const&... args)
{
#ifdef _WIN32
return sprintf_s(str, s, format, args...);
#else
return ::snprintf(str, s, format, args...);
#endif
}
MATADOR_UTILS_API char* strerror(int err, char* errbuf, size_t bufsize);
/// @endcond
}
#endif //QUERY_OS_HPP
#endif //MATADOR_OS_HPP