Go to file
S David c096918e78
All checks were successful
buildbot/IOCore-linux-builder Build done.
buildbot/IOCore-freebsd-builder Build done.
buildbot/IOCore-macos-builder Build done.
Simplify to_toml_table function code
2024-08-13 14:40:51 -04:00
.vim Add Toml support using toml++ and custom preprocessor macros 2024-06-16 22:39:15 -04:00
CMake@242668f6bf [CMakeTools] Use latest; no longer calls git submodule update on every configure call 2024-08-04 15:59:18 -04:00
include Simplify to_toml_table function code 2024-08-13 14:40:51 -04:00
src [FreeBSD][Build]Fix tomlplusplus headers not found 2024-08-13 12:15:31 -04:00
tests Add missing TomlConfigFile unit tests and adjust Toml code to make it work 2024-08-13 14:25:41 -04:00
.clang-format Import vim, clang-format and clang-tidy settings 2024-03-24 14:34:43 -04:00
.clang-tidy Import vim, clang-format and clang-tidy settings 2024-03-24 14:34:43 -04:00
.gitignore Add Toml support using toml++ and custom preprocessor macros 2024-06-16 22:39:15 -04:00
.gitmodules Modernize the cmake scripts directory by replacing it with my CMakeTools repo full of common CMake options 2024-05-18 09:24:16 -04:00
CMakeLists.txt [CMakeTools] Use latest; no longer calls git submodule update on every configure call 2024-08-04 15:59:18 -04:00
Doxyfile Add Doxyfile 2024-04-06 10:22:02 -04:00
LICENSE Import vim, clang-format and clang-tidy settings 2024-03-24 14:34:43 -04:00
README.md Add Buildbot Status Badge to README.md 2024-04-19 18:07:54 -04:00

IOCore: A C++20 Application Framework Library

CI/CD Build Status

Arch Linux FreeBSD 14.0 macOS Windows
Build Status Build Status Build Status TBD

IOCore is a comprehensive C++20 library designed to simplify common programming tasks.

It features advanced argument parsing functions, a custom exception class that captures stack traces at the point of throw, and a set of convenience macros for writing unit tests, among other utilities. The library leverages modern C++20 features and best practices to provide a robust foundation for software development.

Getting Started

Prerequisites

  • CMake (version 3.21 or higher)
  • A C++20-compatible compiler
  • Optional: Catch2 installed on your system to speed up compile time

Building the Project

  1. Clone the repository:

    git clone https://gitea.beniquez.me/sdaveb/IOCore.git
    
  2. Navigate to the project directory:

    cd IOCore
    
  3. Configure your build system:

    cmake -B debug -G Unix Makefiles
    # or
    cmake -B debug -G Ninja 
    
  4. Invoke your build system:

    cmake --build debug
    

Running Unit Tests

  1. After building the project, you can run the unit tests:
    cmake --build debug --target ctest
    

This will execute the IOCore test suite using Catch2.

Project Structure

  • src/: Contains the core library code, including argument parsing functions and the custom exception class.
  • app/: Provides examples on how to utilize the IOCore library in applications.
  • test/: Contains unit tests for the library, leveraging Catch2 and FakeIt to ensure robustness and reliability.

Key Features

  • Argument Parsing: Simplifies handling command-line arguments with a flexible and intuitive API.
  • Exception Handling: Offers a powerful exception class that includes stack traces for comprehensive error analysis.
  • Unit Testing Macros: Facilitates writing unit tests by providing convenient macros that integrate seamlessly with Catch2.

Dependencies

  • Catch2 v3: Test framework for C++ (can be fetched using FetchContent).
  • FakeIt: Mocking framework for C++ (also fetched using FetchContent).

License

This project is licensed under the MPL2.0 License - see the LICENSE file for details.