diff --git a/README.md b/README.md new file mode 100644 index 0000000..de86a45 --- /dev/null +++ b/README.md @@ -0,0 +1,123 @@ +

+ seallib +

+ +

+ The fish powered, modular and tiny C++20 library collection of random stuff I've needed for other projects. +

+ +## Installation & Integration + +### 1. Requirements +* **Compiler**: A C++20 compliant compiler. +* **Build System**: CMake 4.1.0 or higher. + +### 2. Integration via CMake +#### Option A: Using FetchContent (Recommended) +You can pull the library directly into your project from the git repository. Add this to your CMakeLists.txt: + +```cmake +include(FetchContent) + +FetchContent_Declare( + seallib + GIT_REPOSITORY https://git.neru.rip/neru/seallib.git + GIT_TAG main # or a specific commit hash +) + +# Enable the modules you want before making it available +set(SEALLIB_LOG ON) +set(SEALLIB_ASSERT OFF) + +FetchContent_MakeAvailable(seallib) + +target_link_libraries(your_project PRIVATE seallib) +``` + +#### Option B: Local Path +If you have the library downloaded locally: +```cmake +# Enable the modules you want before adding it +set(SEALLIB_LOG ON) +set(SEALLIB_ASSERT OFF) + +add_subdirectory(path/to/seallib) + +target_link_libraries(your_project PRIVATE seallib) +``` + +--- + +## Build Options +| Option | Description | Default | +| :--- | :--- | :--- | +| SEALLIB_ASSERT | Enable Assertion utility | OFF | +| SEALLIB_EVENTS | Enable Event Dispatcher | OFF | +| SEALLIB_LOG | Enable Logging Framework | OFF | +| SEALLIB_VFS | Enable Virtual File System | OFF | +| SEALLIB_TEST | Build the test project | OFF | + +--- + +--- + +## Module Instructions + + +### 1. Logging +The Log module uses a Sink architecture. You create a Logger, attach an ILogSink, and log messages using std::format syntax. + +```C++ +#include +#include + +using namespace seallib; + +class ConsoleSink : public ILogSink { +public: + void receiveLog(LogType type, std::string_view loggerName, std::string_view message) override { + std::cout << getLogTypeColor(type) << "[" << getLogTypeName(type) << "] " + << "[" << loggerName << "] " + << message << "\x1b[0m" << std::endl; + } +}; + +int main() { + Logger logger("MainApp"); + logger.addSink(std::make_shared()); + + logger.info("Application started with version {}", 1.0); + logger.error("Failed to load config: {}", "file_not_found.json"); + + return 0; +} +``` + + +### 2. Assertion +(Documentation pending implementation) + + +### 3. Events +(Documentation pending implementation) + + +### 4. VFS +(Documentation pending implementation) + +--- + +## Running Tests + +### Windows (PowerShell + Visual Studio) +A script is provided to automate generation and open the solution in Visual Studio: + +./create-test.ps1 + +### Cross-Platform (CLI) +To build and run manually from the terminal: + +mkdir build && cd build +cmake .. -DSEALLIB_TEST=ON +cmake --build . +./seallib-test \ No newline at end of file