From 74846d6deb7331a7b4632848c287617bffeacd13 Mon Sep 17 00:00:00 2001 From: anulax1225 Date: Wed, 16 Oct 2024 16:45:31 +0200 Subject: [PATCH] Adding stb lib --- premake5.lua | 3 -- src/bakatools.h | 7 +-- src/bakatools/container/data_stream.h | 5 +- src/bakatools/container/types.h | 37 ++++++++++---- src/bakatools/file_system/dir_entry.cpp | 6 ++- src/bakatools/file_system/dir_entry.h | 6 +-- src/bakatools/file_system/file_watcher.cpp | 2 +- src/bakatools/file_system/file_watcher.h | 6 +-- src/bakatools/json/fs_manager.cpp | 2 + src/bakatools/json/fs_manager.h | 3 +- src/bakatools/logging/assert.h | 10 +--- src/bakatools/thread/task_delayer.h | 36 +++++++++----- src/bakatools/thread/task_timer.h | 43 ----------------- src/bakatools/time/time_point.h | 56 ---------------------- src/bakatools/time/time_span.h | 38 --------------- 15 files changed, 74 insertions(+), 186 deletions(-) delete mode 100644 src/bakatools/thread/task_timer.h delete mode 100644 src/bakatools/time/time_point.h delete mode 100644 src/bakatools/time/time_span.h diff --git a/premake5.lua b/premake5.lua index 01a6056..d21fb5f 100644 --- a/premake5.lua +++ b/premake5.lua @@ -8,9 +8,6 @@ project "bakatools" targetdir("%{wks.location}/bin/" .. outputdir .. "/%{prj.name}") objdir("%{wks.location}/bin-int/" .. outputdir .. "/%{prj.name}") - pchheader "bakatoolspch.h" - pchsource "bakatoolspch.cpp" - includedirs { "%{IncludeDirs.spdlog}", diff --git a/src/bakatools.h b/src/bakatools.h index 246c881..f4cfdcb 100644 --- a/src/bakatools.h +++ b/src/bakatools.h @@ -15,14 +15,11 @@ #include "bakatools/container/data_stream.h" #include "bakatools/container/trie.h" +#include "bakatools/container/types.h" -#include "bakatools/thread/task_timer.h" #include "bakatools/thread/task_delayer.h" #include "bakatools/file_system/dir_entry.h" #include "bakatools/file_system/directory.h" #include "bakatools/file_system/file.h" -#include "bakatools/file_system/file_watcher.h" - -#include "bakatools/time/time_span.h" -#include "bakatools/time/time_point.h" \ No newline at end of file +#include "bakatools/file_system/file_watcher.h" \ No newline at end of file diff --git a/src/bakatools/container/data_stream.h b/src/bakatools/container/data_stream.h index fe7348b..24a28c4 100644 --- a/src/bakatools/container/data_stream.h +++ b/src/bakatools/container/data_stream.h @@ -1,12 +1,15 @@ #pragma once #include +#include namespace Bk::Type { class DataStream { public: DataStream() = default; + DataStream(std::initializer_list list) + : payload(list) {} DataStream(std::vector data) : payload(data) {} @@ -56,7 +59,7 @@ namespace Bk::Type { std::memcpy(payload.data() + i, data.data(), sizeof(char) * data.size()); return true; } - + std::vector payload; }; } \ No newline at end of file diff --git a/src/bakatools/container/types.h b/src/bakatools/container/types.h index 7f82d26..a2ac470 100644 --- a/src/bakatools/container/types.h +++ b/src/bakatools/container/types.h @@ -1,14 +1,31 @@ #pragma once +#include +#include + namespace Bk { - using u1 = bool; - using u8 = unsigned char; - using u16 = unsigned short; - using u32 = unsigned long; - using u64 = unsigned long long; - using i1 = bool; - using i8 = signed char; - using i16 = signed short; - using i32 = signed long; - using i64 = signed long long; + using u8 = uint8_t; + using u16 = uint16_t; + using u32 = uint32_t; + using u64 = uint64_t; + using i8 = int8_t; + using i16 = int16_t; + using i32 = int32_t; + using i64 = int64_t; + + template + using Scope = std::unique_ptr; + template + constexpr Scope CreateScope(Args&& ... args) + { + return std::make_unique(std::forward(args)...); + } + + template + using Ref = std::shared_ptr; + template + constexpr Ref CreateRef(Args&& ... args) + { + return std::make_shared(std::forward(args)...); + } } \ No newline at end of file diff --git a/src/bakatools/file_system/dir_entry.cpp b/src/bakatools/file_system/dir_entry.cpp index b6dfe36..c80ad1c 100644 --- a/src/bakatools/file_system/dir_entry.cpp +++ b/src/bakatools/file_system/dir_entry.cpp @@ -1,4 +1,6 @@ #include "dir_entry.h" +#include +#include namespace Bk { @@ -27,9 +29,9 @@ namespace Bk return ent.file_size(); } - TimePoint DirEntry::last_write() + std::chrono::time_point DirEntry::last_write() { - return TimePoint(ent.last_write_time()); + return ent.last_write_time(); } bool DirEntry::exists() diff --git a/src/bakatools/file_system/dir_entry.h b/src/bakatools/file_system/dir_entry.h index 290dc37..c8d7816 100644 --- a/src/bakatools/file_system/dir_entry.h +++ b/src/bakatools/file_system/dir_entry.h @@ -1,8 +1,8 @@ #pragma once #include -#include -#include +#include +#include namespace Bk { @@ -34,7 +34,7 @@ namespace Bk std::string name(); uintmax_t size(); - TimePoint last_write(); + std::chrono::time_point last_write(); bool exists(); FilePerms perms(); uintmax_t hard_links(); diff --git a/src/bakatools/file_system/file_watcher.cpp b/src/bakatools/file_system/file_watcher.cpp index c9235da..a9c49f2 100644 --- a/src/bakatools/file_system/file_watcher.cpp +++ b/src/bakatools/file_system/file_watcher.cpp @@ -1,7 +1,7 @@ #include "file_watcher.h" namespace Bk { - FileWatcher::FileWatcher(std::string path, TimeSpan ts) + FileWatcher::FileWatcher(std::string path, int ts) : target(path), ttm(ts) { for (const std::filesystem::directory_entry& file : std::filesystem::recursive_directory_iterator(target)) diff --git a/src/bakatools/file_system/file_watcher.h b/src/bakatools/file_system/file_watcher.h index fa6fc8d..51a7d0e 100644 --- a/src/bakatools/file_system/file_watcher.h +++ b/src/bakatools/file_system/file_watcher.h @@ -1,7 +1,7 @@ #pragma once +#include "bakatools/thread/task_delayer.h" #include -#include namespace Bk { enum class FileStat @@ -14,7 +14,7 @@ namespace Bk { class FileWatcher { public: - FileWatcher(std::string path, TimeSpan ts); + FileWatcher(std::string path, int ts = 1000); ~FileWatcher(); void start(const std::function& action); @@ -24,6 +24,6 @@ namespace Bk { private: std::string target; std::unordered_map paths; - TaskTimer ttm; + TaskDelayer ttm; }; } \ No newline at end of file diff --git a/src/bakatools/json/fs_manager.cpp b/src/bakatools/json/fs_manager.cpp index 7d45da5..e11b93d 100644 --- a/src/bakatools/json/fs_manager.cpp +++ b/src/bakatools/json/fs_manager.cpp @@ -1,4 +1,6 @@ #include "fs_manager.h" +#include "bakatools/json/parser.h" +#include "bakatools/json/tools.h" namespace Bk::Json { diff --git a/src/bakatools/json/fs_manager.h b/src/bakatools/json/fs_manager.h index 8ad8f11..4242c6b 100644 --- a/src/bakatools/json/fs_manager.h +++ b/src/bakatools/json/fs_manager.h @@ -1,8 +1,7 @@ +#include "bakatools/json/node.h" #include #include #include -#include "parser.h" -#include "tools.h" namespace Bk::Json { diff --git a/src/bakatools/logging/assert.h b/src/bakatools/logging/assert.h index 2d72a8c..bb02b21 100644 --- a/src/bakatools/logging/assert.h +++ b/src/bakatools/logging/assert.h @@ -7,14 +7,8 @@ This file contains the assert macros. CORE macros musn't be used by the applicat #include "log.h" #include -#if defined(BK_PLATFORM_WINDOWS) - #define BK_STATIC_DEBUGBREAK() __debugbreak() -#elif defined(BK_PLATFORM_LINUX) - #include - #define BK_STATIC_DEBUGBREAK() raise(SIGTRAP) -#else - #error "Plaform doesn't support debug yet" -#endif +#define BK_STATIC_DEBUGBREAK() exit(1) + #define BK_STATIC_CORE_VAMSG_ASSERT(check, msg, ...) if(!(check)) { BK_STATIC_CORE_ERROR(Tools::format("Assertion [%s] failed at %s:%d\n\tError : %s", BK_STRINGIFY(check), __FILE__, __LINE__, msg), __VA_ARGS__); BK_STATIC_DEBUGBREAK(); } #define BK_STATIC_CORE_MSG_ASSERT(check, msg) if(!(check)) { BK_STATIC_CORE_ERROR("Assertion [{0}] failed at {1}:{2}\n\tError : {3}", BK_STRINGIFY(check), __FILE__, __LINE__, msg); BK_STATIC_DEBUGBREAK(); } diff --git a/src/bakatools/thread/task_delayer.h b/src/bakatools/thread/task_delayer.h index 77c97e2..253c078 100644 --- a/src/bakatools/thread/task_delayer.h +++ b/src/bakatools/thread/task_delayer.h @@ -1,30 +1,44 @@ #pragma once -#include -#include -#include +#include +#include +#include +#include namespace Bk { - template class TaskDelayer { public: - TaskDelayer(int n_ts, - std::unique_ptr> action - ): ts(n_ts) + TaskDelayer(int ts, bool repeat = false) + : ts(ts), repeat(repeat) {} + ~TaskDelayer() { stop(); } + + void start(std::unique_ptr> action) { + if(running) stop(); + running = true; worker = std::thread([this](std::unique_ptr> action) { std::function& task = *action; - std::this_thread::sleep_for(ts.interval); - task(); + while(running && repeat) + { + std::this_thread::sleep_for(ts); + task(); + } }, std::move(action)); } - ~TaskDelayer() { worker.join(); } + void stop() + { + if (!running) return; + running = false; + worker.join(); + } private: + bool running = false; + bool repeat; std::thread worker; - TimeSpan

ts; + std::chrono::duration ts; }; } \ No newline at end of file diff --git a/src/bakatools/thread/task_timer.h b/src/bakatools/thread/task_timer.h deleted file mode 100644 index c05aabc..0000000 --- a/src/bakatools/thread/task_timer.h +++ /dev/null @@ -1,43 +0,0 @@ -#pragma once - -#include -#include -#include - -namespace Bk { - template - class TaskTimer - { - public: - TaskTimer(TimeSpan

ts) - : ts(ts) {} - ~TaskTimer() { stop(); } - - void start(std::unique_ptr> action) - { - if(running) stop(); - running = true; - worker = std::thread([this](std::unique_ptr> action) - { - std::function& task = *action; - while(running) - { - std::this_thread::sleep_for(ts.interval); - task(); - } - }, std::move(action)); - } - - void stop() - { - if (!running) return; - running = false; - worker.join(); - } - - private: - bool running = false; - std::thread worker; - TimeSpan

ts; - }; -} \ No newline at end of file diff --git a/src/bakatools/time/time_point.h b/src/bakatools/time/time_point.h deleted file mode 100644 index 2ecee50..0000000 --- a/src/bakatools/time/time_point.h +++ /dev/null @@ -1,56 +0,0 @@ -#pragma once - -#include -#include "time_span.h" - -namespace Bk -{ - using SysClock = std::chrono::system_clock; - using SteadyClock = std::chrono::steady_clock; - using FileClock = std::chrono::file_clock; - using UtcClock = std::chrono::utc_clock; - - template - struct TimePoint - { - TimePoint() = default; - TimePoint(std::chrono::time_point point) - { - this->point = std::chrono::time_point_cast>(point); - } - - template - TimePoint as_unit() - { - return TimePoint(std::chrono::time_point_cast>(point)); - } - - template - TimePoint as_clock() - { - return TimePoint(std::chrono::clock_cast(point)); - } - - TimeSpan

elasped() - { - return TimeSpan

(point.time_since_epoch()); - } - - bool is_steady() - { - return C::is_steady; - } - - TimeSpan

operator-(TimePoint& tp) - { - return TimeSpan

(point - tp.point); - } - - static TimePoint now() - { - return TimePoint(C::now()); - } - - std::chrono::time_point> point; - }; -} \ No newline at end of file diff --git a/src/bakatools/time/time_span.h b/src/bakatools/time/time_span.h deleted file mode 100644 index 01b5f4a..0000000 --- a/src/bakatools/time/time_span.h +++ /dev/null @@ -1,38 +0,0 @@ -#pragma once - -#include - -namespace Bk -{ - using Nanosecond = std::ratio<1,1000000000>; - using Microsecond = std::ratio<1,1000000>; - using Millisecond = std::ratio<1,1000>; - using Second = std::ratio<1,1>; - using Minute = std::ratio<60, 1>; - using Hour = std::ratio<3600, 1>; - using Day = std::ratio<84600, 1>; - - template - struct TimeSpan - { - TimeSpan(int interval = 0) - : interval(std::chrono::duration(interval)) {} - TimeSpan(std::chrono::duration interval) - : interval(interval) {} - - template - TimeSpan as_unit() - { - return TimeSpan(std::chrono::duration_cast>(interval)); - } - - int count() { return interval.count(); } - - TimeSpan

operator-(TimeSpan

& time_span) - { - return TimeSpan

(interval - time_span.interval); - } - - std::chrono::duration interval; - }; -} \ No newline at end of file