{"id":26013278,"url":"https://github.com/wentsingnee/kerbal","last_synced_at":"2025-04-06T05:18:13.170Z","repository":{"id":63751981,"uuid":"159517672","full_name":"WentsingNee/Kerbal","owner":"WentsingNee","description":null,"archived":false,"fork":false,"pushed_at":"2025-02-19T12:22:33.000Z","size":6102,"stargazers_count":74,"open_issues_count":0,"forks_count":6,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-04-06T05:17:58.954Z","etag":null,"topics":["cplusplus","template-metaprogramming"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"lgpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/WentsingNee.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-11-28T14:49:42.000Z","updated_at":"2025-04-05T13:35:08.000Z","dependencies_parsed_at":"2023-11-06T10:42:07.509Z","dependency_job_id":"ca28e083-699f-4b5e-8bd9-2957b2b51837","html_url":"https://github.com/WentsingNee/Kerbal","commit_stats":null,"previous_names":[],"tags_count":22,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WentsingNee%2FKerbal","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WentsingNee%2FKerbal/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WentsingNee%2FKerbal/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WentsingNee%2FKerbal/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/WentsingNee","download_url":"https://codeload.github.com/WentsingNee/Kerbal/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247436587,"owners_count":20938595,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cplusplus","template-metaprogramming"],"created_at":"2025-03-06T01:28:10.450Z","updated_at":"2025-04-06T05:18:13.146Z","avatar_url":"https://github.com/WentsingNee.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"## Kerbal ##\n\nlanguage [English](readme.md) | [汉](readme.zh.md)\n\n![Static Badge](https://img.shields.io/badge/zhihu-IceBear-blue?link=https%3A%2F%2Fwww.zhihu.com%2Fpeople%2Fpeter-43-43-80)\n![Codacy grade](https://img.shields.io/codacy/grade/d8cf41ae4db84f36bbbab26ff3e3a0bd?link=https%3A%2F%2Fapp.codacy.com%2Fgh%2FWentsingNee%2FKerbal%2Fdashboard)\n![Vcpkg Version](https://img.shields.io/vcpkg/v/kerbal)\n![License](https://img.shields.io/github/license/WentsingNee/Kerbal)\n\n![GitHub code size in bytes](https://img.shields.io/github/languages/code-size/WentsingNee/Kerbal)\n![GitHub test code size in bytes](https://img.shields.io/github/languages/code-size/WentsingNee/KerbalTest?label=code%20size%20of%20test)\n\n![GitHub last commit](https://img.shields.io/github/last-commit/WentsingNee/Kerbal)\n![GitHub commit activity](https://img.shields.io/github/commit-activity/y/WentsingNee/Kerbal)\n![GitHub commit activity](https://img.shields.io/github/commit-activity/m/WentsingNee/Kerbal)\n![GitHub commit activity](https://img.shields.io/github/commit-activity/w/WentsingNee/Kerbal)\n\nC++ template library with:\n\n1) more fundamental features,\n2) modern standard library facilities backport to old,\n3) **and MORE constexpr**!\n\n\n\n### Install ###\n\n#### I) Install via Vcpkg ####\n\nVcpkg environment is required, see [Vcpkg](https://github.com/microsoft/vcpkg)\n\n```shell\nvcpkg install kerbal\n```\n\n#### II) Install via Source ####\n\n1) clone repository\n\n```shell\ngit clone https://github.com/WentsingNee/Kerbal.git\ncd Kerbal\n```\n\n2) clone git submodules (if you need)\n\n```shell\ngit submodule init\ngit submodule update\n```\n\n3) configure by CMake\n\n```shell\nmkdir build\ncmake -S . -B build/ \\\n    -DCMAKE_BUILD_TYPE=Release\n\n    # the following arguments are optional\n\n    # the path prefix to install Kerbal\n    -DCMAKE_INSTALL_PREFIX=`the-path-prefix-you-want-to-install`\n    # default is set to your system path\n\n    # the package generator(s) enabled during the cpack stage\n    -DCPACK_GENERATOR=`package-generators-you-want`\n    # default is set to \"DEB;STGZ;TGZ;ZIP\"\n\n    # whether install pretty printer files\n    # git submodule of `pretty_printer` is required to be existed\n    -DKERBAL_INSTALL_PRETTY_PRINTER=True # or False\n    # default value is decided by the existence of `pretty_printer` submodule\n```\n\n4) install\n\n```shell\ncd build\ncmake --build . --target install\n```\n\nthen Kerbal will be installed to `CMAKE_INSTALL_PREFIX`\n\n5) generate package (if you need)\n\n```shell\ncd build\ncpack .\n```\n\n\n\n### Integrate Kerbal In Your CMake Project ###\n\n```cmake\nfind_package(Kerbal REQUIRED)\ntarget_link_libraries(\n        your-target PRIVATE\n        Kerbal::kerbal\n        [Kerbal::kerbal-omp] # maybe required when you have used Kerbal::omp module\n)\n```\n\n\n\n### Sub Libraries Overview ###\n\n| Library                                        | Brief                                                                                                                      |\n|------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------|\n| [algorithm](include/kerbal/algorithm/)         | algorithm                                                                                                                  |\n| [any](include/kerbal/any/)                     | `std::any`-like facility but backport to C++98, together with C++20 constexpr support                                      |\n| [assign](include/kerbal/assign/)               | `std::initializer_list`-like facility for C++98                                                                            |\n| [autonm](include/kerbal/autonm/)               | autonomous containers, having flexible memory (de)allocation like intrusive containers but have no intrusion to value type |\n| [bitset](include/kerbal/bitset/)               | `static_bitset` (like `std::bitset` but have more function and constexpr support)                                          |\n| [compare](include/kerbal/compare/)             | comparators and sequence compare                                                                                           |\n| [compatibility](include/kerbal/compatibility/) | compatibility macros                                                                                                       |\n| [config](include/kerbal/config/)               | architecture, compiler, OS platform, std library environment detection                                                     |\n| [container](include/kerbal/container/)         | `array`, `vector`, `static_vector`, `list`, `forward_list`, `priority_queue` ...                                           |\n| [function](include/kerbal/function/)           | `function`, `function_traits`, `invoke`, `invoke_r` ...                                                                    |\n| [hash](include/kerbal/hash/)                   | hash support                                                                                                               |\n| [iterator](include/kerbal/iterator/)           | iterator support                                                                                                           |\n| [macro](include/kerbal/macro/)                 | macro utilities                                                                                                            |\n| [memory](include/kerbal/memory/)               | memory management support like allocator, uninitialized algorithms                                                         |\n| [numeric](include/kerbal/numeric/)             | numeric algorithms                                                                                                         |\n| [ompalgo](include/kerbal/ompalgo/)             | openMP accelerated algorithms                                                                                              |\n| [openmp](include/kerbal/openmp/)               | openMP facilities and environment detection                                                                                |\n| [operators](include/kerbal/operators/)         | use CRTP to simplify operator overload                                                                                     |\n| [optional](include/kerbal/optional/)           | `std::optional`-like facility but backport to C++98                                                                        |\n| [random](include/kerbal/random/)               | random number engines and distributions                                                                                    |\n| [test](include/kerbal/test/)                   | unit test                                                                                                                  |\n| [tmp](include/kerbal/tmp/)                     | template meta programming facilities                                                                                       |\n| [type_traits](include/kerbal/type_traits/)     | C++11 `\u003ctype_traits\u003e`-like facilities but backport part to C++98                                                           |\n| [utility](include/kerbal/utility/)             | `compressed_pair`, `tuple` ...                                                                                             |\n\n\n\n### Document ###\n\n* Doxygen generated document: click [this](https://wentsingnee.github.io/KerbalDoxygenDoc/)\n\n\n\n### Thanks ###\n\n[ThinkSpirit Laboratory](http://thinkspirit.org/) of [Nanjing University of Information\nScience and Technology](http://www.nuist.edu.cn/)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwentsingnee%2Fkerbal","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwentsingnee%2Fkerbal","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwentsingnee%2Fkerbal/lists"}