Skip to content

WentsingNee/Kerbal

Repository files navigation

Kerbal

language English |

Static Badge Codacy grade Vcpkg Version License

GitHub code size in bytes GitHub test code size in bytes

GitHub last commit GitHub commit activity GitHub commit activity GitHub commit activity

C++ template library with:

  1. more fundamental features,
  2. modern standard library facilities backport to old,
  3. and MORE constexpr!

Install

I) Install via Vcpkg

Vcpkg environment is required, see Vcpkg

vcpkg install kerbal

II) Install via Source

  1. clone repository
git clone https://github.com/WentsingNee/Kerbal.git
cd Kerbal
  1. clone git submodules (if you need)
git submodule init
git submodule update
  1. configure by CMake
mkdir build
cmake -S . -B build/ \
    -DCMAKE_BUILD_TYPE=Release

    # the following arguments are optional

    # the path prefix to install Kerbal
    -DCMAKE_INSTALL_PREFIX=`the-path-prefix-you-want-to-install`
    # default is set to your system path

    # the package generator(s) enabled during the cpack stage
    -DCPACK_GENERATOR=`package-generators-you-want`
    # default is set to "DEB;STGZ;TGZ;ZIP"

    # whether install pretty printer files
    # git submodule of `pretty_printer` is required to be existed
    -DKERBAL_INSTALL_PRETTY_PRINTER=True # or False
    # default value is decided by the existence of `pretty_printer` submodule
  1. install
cd build
cmake --build . --target install

then Kerbal will be installed to CMAKE_INSTALL_PREFIX

  1. generate package (if you need)
cd build
cpack .

Integrate Kerbal In Your CMake Project

find_package(Kerbal REQUIRED)
target_link_libraries(
        your-target PRIVATE
        Kerbal::kerbal
        [Kerbal::kerbal-omp] # maybe required when you have used Kerbal::omp module
)

Sub Libraries Overview

Library Brief
algorithm algorithm
any std::any-like facility but backport to C++98, together with C++20 constexpr support
assign std::initializer_list-like facility for C++98
autonm autonomous containers, having flexible memory (de)allocation like intrusive containers but have no intrusion to value type
bitset static_bitset (like std::bitset but have more function and constexpr support)
compare comparators and sequence compare
compatibility compatibility macros
config architecture, compiler, OS platform, std library environment detection
container array, vector, static_vector, list, forward_list, priority_queue ...
function function, function_traits, invoke, invoke_r ...
hash hash support
iterator iterator support
macro macro utilities
memory memory management support like allocator, uninitialized algorithms
numeric numeric algorithms
ompalgo openMP accelerated algorithms
openmp openMP facilities and environment detection
operators use CRTP to simplify operator overload
optional std::optional-like facility but backport to C++98
random random number engines and distributions
test unit test
tmp template meta programming facilities
type_traits C++11 <type_traits>-like facilities but backport part to C++98
utility compressed_pair, tuple ...

Document

  • Doxygen generated document: click this

Thanks

ThinkSpirit Laboratory of Nanjing University of Information Science and Technology