{"id":17872135,"url":"https://github.com/hannespetur/paw","last_synced_at":"2025-04-02T23:25:55.607Z","repository":{"id":21591241,"uuid":"89933423","full_name":"hannespetur/paw","owner":"hannespetur","description":"Header-only C++11 libraries","archived":false,"fork":false,"pushed_at":"2024-02-29T12:54:11.000Z","size":2752,"stargazers_count":1,"open_issues_count":2,"forks_count":2,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-02-08T13:42:48.286Z","etag":null,"topics":["command-line-tool","cpp","cpp11","cpp14","cpp17","threadpool"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hannespetur.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":"2017-05-01T14:57:26.000Z","updated_at":"2023-03-05T01:49:49.000Z","dependencies_parsed_at":"2023-01-11T23:15:26.508Z","dependency_job_id":"60a613fc-8a00-4ecf-9396-a9532ecf2b4d","html_url":"https://github.com/hannespetur/paw","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hannespetur%2Fpaw","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hannespetur%2Fpaw/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hannespetur%2Fpaw/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hannespetur%2Fpaw/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hannespetur","download_url":"https://codeload.github.com/hannespetur/paw/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246907856,"owners_count":20853152,"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":["command-line-tool","cpp","cpp11","cpp14","cpp17","threadpool"],"created_at":"2024-10-28T10:40:25.091Z","updated_at":"2025-04-02T23:25:55.590Z","avatar_url":"https://github.com/hannespetur.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"I[![Build Status](https://travis-ci.org/hannespetur/paw.svg?branch=master)](https://travis-ci.org/hannespetur/paw)\n\n## paw\nPaw libraries are header-only libraries made to be both simple and convenient to use.\n\n\n### paw::Parser\npaw::Parser is a library for parsing command-line arguments. Its most distinctive feature that it automatically parses argument values to their respective types and creates a neat help page based on the available option of the program.\n\n**Dependencies**: C++11 support (GCC \u003e= 4.8.1, Clang \u003e= 3.3)\n\n### paw::Station\npaw::Station is a threadpool library built on top of the `std::thread` class. Each \"station\" manages the work to available threads.\n\n**Dependencies**: C++11 support (GCC \u003e= 4.8.1, Clang \u003e= 3.3), multi-threading library (compile with the `-pthread` flag on Linux)\n\n### paw::Align\npaw::Align is a pairwise alignment library. The alignments are SIMD optimized and the library includes backtracing. The library is compiled with various CPU extension and the optimal one is selected at runtime.\n\n**Dependencies**: C++11 support (GCC \u003e= 4.8.1, Clang \u003e= 3.3)\n\n### More libraries to come...\nHopefully.\n\n### Usage\nPaw libraries have separated their implementations from their declarations to allow compiling implementations only once, regardless how often its header files are included in your program. Users of paw should put `#define IMPLEMENT_PAW` in **EXCACTLY** one of their `.cc/.cpp` file to achieve this. Without the definitions, all implementations will be ignored which greatly reduces compilation times. A good practice is to have one file with nothing but these two lines:\n```cpp\n#define IMPLEMENT_PAW\n#include \"paw.hpp\" // Or only the header file(s) you need\n```\nPaw implementations will only need to be recompiled if this file is changed or the paw library is updated, which should likely happen very rarely.\n\nAnother possibility is build a library with all the paw implementations.\n```sh\nmkdir build\ncd build\ncmake ..\nmake shared # Builds lib/libpaw.so in the build directory\n# Or \"make static\" to build a static library\n```\nThen, you no longer need a single file with `#define IMPLEMENT_PAW` but instead you can simply link your program to `libpaw.so` (or `libpaw.a`). Use whichever method that suits you and enjoy using paw!\n\n### Examples\nSee the `examples` directory.\n\n### Author\nHannes P Eggertsson\n\n### License\nGNU GPLv3\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhannespetur%2Fpaw","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhannespetur%2Fpaw","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhannespetur%2Fpaw/lists"}