{"id":18359744,"url":"https://github.com/snototter/werkzeugkiste","last_synced_at":"2025-07-31T11:14:10.749Z","repository":{"id":37590730,"uuid":"491626349","full_name":"snototter/werkzeugkiste","owner":"snototter","description":"C++ Utility Library","archived":false,"fork":false,"pushed_at":"2023-09-04T20:39:01.000Z","size":4108,"stargazers_count":0,"open_issues_count":8,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-07-18T05:37:22.706Z","etag":null,"topics":["cpp","library"],"latest_commit_sha":null,"homepage":"https://snototter.github.io/werkzeugkiste","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/snototter.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","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":"2022-05-12T18:28:55.000Z","updated_at":"2023-04-07T17:48:19.000Z","dependencies_parsed_at":"2024-11-05T22:29:40.323Z","dependency_job_id":"0ade8a01-197c-4f8c-a503-7bbcf35e9091","html_url":"https://github.com/snototter/werkzeugkiste","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/snototter/werkzeugkiste","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/snototter%2Fwerkzeugkiste","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/snototter%2Fwerkzeugkiste/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/snototter%2Fwerkzeugkiste/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/snototter%2Fwerkzeugkiste/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/snototter","download_url":"https://codeload.github.com/snototter/werkzeugkiste/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/snototter%2Fwerkzeugkiste/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":268028296,"owners_count":24183812,"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","status":"online","status_checked_at":"2025-07-31T02:00:08.723Z","response_time":66,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["cpp","library"],"created_at":"2024-11-05T22:24:20.790Z","updated_at":"2025-07-31T11:14:10.726Z","avatar_url":"https://github.com/snototter.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Werkzeugkiste - Yet Another C++ Utility Library\n\nThis library is a collection of frequently used C++ snippets copy-pasted across\nway too many of my projects. Since there's tons of so-called utilities, utils,\ntools \u0026 toolboxes out there, I prefer to call this one `werkzeugkiste`,\n__i.e.__ the German word for toolbox.\n\n[![Release](https://img.shields.io/github/v/release/snototter/werkzeugkiste)](https://github.com/snototter/werkzeugkiste/releases)\n\n[![C++17](https://img.shields.io/badge/std-c%2B%2B17-blue.svg?style=flat\u0026logo=c%2B%2B)](https://en.cppreference.com/w/cpp/compiler_support)\n\n[![CI Status](https://github.com/snototter/werkzeugkiste/actions/workflows/ci.yml/badge.svg)](https://github.com/snototter/werkzeugkiste/actions/workflows/ci.yml)\n\n[![Coverage Status](https://coveralls.io/repos/github/snototter/werkzeugkiste/badge.svg?branch=main)](https://coveralls.io/github/snototter/werkzeugkiste?branch=main)\n\n[![License](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/snototter/werkzeugkiste/blob/master/LICENSE?raw=true)\n\n\n## Functionality\n\nThis toolbox will only receive sporadic updates, basically whenever I have to\nreuse (and modernize) some of my older code.\nCurrently, it provides the following functionality. Note that the namespace\nname also equals the corresponding CMake target to be linked against:\n* `werkzeugkiste::config`: Utilitity to interact with TOML/JSON/libconfig configurations.\n* `werkzeugkiste::container`: Sorting/lookup utilities and a custom\n  circular buffer.\n* `werkzeugkiste::files`: Basic file I/O and filesystem utilities.\n  _Caveat:_ These utilities are only tested on/available for GNU/Linux.\n  For portable applications, C++17's `std::filesystem` should be used instead.\n* `werkzeugkiste::geometry`: Math utilities, focused on basic 2D \u0026 3D geometry.\n* `werkzeugkiste::strings`: Common string manipulation.\n* `werkzeugkiste::timing`: Provides a stop watch \u0026 additional helpers on top\n  of `std::chrono` (to hide some of its template boilerplate).\n\n\n## Requirements\n\n* A C++ compiler supporting at least C++17\n* [CMake][] \u003e= 3.14 and a [compatible build tool][Generators], like [Make][],\n  [Ninja][], etc.\n* The linear algebra library [Eigen3][]\n\n\n## Usage\n\nThe **recommended way** to include `werkzeugkiste` in a C++ project is via\nCMake's `FetchContent`:\n\n```cmake\n# Fetch the library:\ninclude(FetchContent)\nFetchContent_Declare(\n    werkzeugkiste\n    GIT_REPOSITORY https://github.com/snototter/werkzeugkiste.git\n    GIT_TAG main)\nFetchContent_MakeAvailable(werkzeugkiste)\n\n# Optionally print the available library version:\nmessage(STATUS \"Using werkzeugkiste v${werkzeugkiste_VERSION}\")\n```\n\nAfterwards, add it to your consuming executable/library via:\n```cmake\ntarget_link_libraries(\n    your_target PRIVATE\n    werkzeugkiste::config\n    werkzeugkiste::geometry\n    werkzeugkiste::strings\n    # Add other werkzeugkiste packages if needed\n)\n```\n\n## Contributing\n\n* Details for developers or users who need to **manually build and install**\n  `werkzeugkiste` are provided in the separate [BUILDING][] document.\n* Contribution guidelines are summarized in the [CONTRIBUTING][] document.\n\n\n[CMake]: https://cmake.org/\n[Generators]: https://cmake.org/cmake/help/latest/manual/cmake-generators.7.html\n[Make]: https://www.gnu.org/software/make/\n[Ninja]: https://ninja-build.org/\n[Eigen3]: https://eigen.tuxfamily.org/\n[BUILDING]: https://github.com/snototter/werkzeugkiste/blob/main/BUILDING.md\n[CONTRIBUTING]: https://github.com/snototter/werkzeugkiste/blob/main/CONTRIBUTING.md\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsnototter%2Fwerkzeugkiste","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsnototter%2Fwerkzeugkiste","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsnototter%2Fwerkzeugkiste/lists"}