{"id":19865596,"url":"https://github.com/ct-clmsn/sybpp","last_synced_at":"2025-02-28T23:27:48.092Z","repository":{"id":54307023,"uuid":"339274631","full_name":"ct-clmsn/sybpp","owner":"ct-clmsn","description":"scrap your boilerplate plus plus","archived":false,"fork":false,"pushed_at":"2021-02-25T05:21:14.000Z","size":36,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-11T15:45:52.979Z","etag":null,"topics":["boost","cpp","cpp17","cxx","cxx17","metaprogramming","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":"bsl-1.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ct-clmsn.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}},"created_at":"2021-02-16T03:28:56.000Z","updated_at":"2021-02-25T05:21:16.000Z","dependencies_parsed_at":"2022-08-13T11:31:16.392Z","dependency_job_id":null,"html_url":"https://github.com/ct-clmsn/sybpp","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/ct-clmsn%2Fsybpp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ct-clmsn%2Fsybpp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ct-clmsn%2Fsybpp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ct-clmsn%2Fsybpp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ct-clmsn","download_url":"https://codeload.github.com/ct-clmsn/sybpp/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241275021,"owners_count":19937293,"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":["boost","cpp","cpp17","cxx","cxx17","metaprogramming","template-metaprogramming"],"created_at":"2024-11-12T15:23:19.725Z","updated_at":"2025-02-28T23:27:48.061Z","avatar_url":"https://github.com/ct-clmsn.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003c!-- Copyright (c) 2021 Christopher Taylor                                          --\u003e\n\u003c!-- Copyright (c) 2020 Christopher Taylor                                          --\u003e\n\u003c!--                                                                                --\u003e\n\u003c!--   Distributed under the Boost Software License, Version 1.0. (See accompanying --\u003e\n\u003c!--   file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)        --\u003e\n\n# Scrap Your Boilerplate Plus Plus (sybpp)\n\nProject details [here](http://www.github.com/ct-clmsn/sybpp/).\n\nThis project implements functionality from `Scrap Your Boilerplate: A Practical Design Pattern for Generic Programming`, Lammel, Peyton-Jones, 2003.\nThe paper can be found [here](https://www.microsoft.com/en-us/research/wp-content/uploads/2003/01/hmap.pdf).\n\n`Scrap Your Boilerplate` creates generic traversals over data types. Users identify a target type and provide a function that accepts\nthe identified type as an input parameter. `sybpp` computes, at compile-time, the generic traversal code. This removes the need for\nusers to implement \"boilerplate\" data structure traversal code (a visitor pattern) in order apply a function.\n\n### Notes\n\nUsers are required to wrap data types `sybpp` encounters with the `BOOST_FUSION_ADAPT_STRUCT` macro. Review the `demo.cpp` file for\ncode examples.\n\n### License\n\nBoost Software License 1.0\n\n### Features\n\n* everywhere\n* one-layer traversal\n* recursive traversal\n* queries\n* transform\n* functions, functors, std::bind, lambdas supported\n* STL container types\n* supports std::variant, std::tuple, std::pair, std::optional\n\n### Special Thanks\n\nHartmut Kaiser for suggesting this paper.\n\n### Author\n\nChristopher Taylor\n\n### Dependencies\n\n* C++17\n* Boost.Fusion\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fct-clmsn%2Fsybpp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fct-clmsn%2Fsybpp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fct-clmsn%2Fsybpp/lists"}