{"id":20822662,"url":"https://github.com/moongoal/libccl","last_synced_at":"2025-10-25T03:36:58.059Z","repository":{"id":84636809,"uuid":"543334371","full_name":"moongoal/libccl","owner":"moongoal","description":"C++ base library","archived":false,"fork":false,"pushed_at":"2024-07-06T00:37:43.000Z","size":840,"stargazers_count":0,"open_issues_count":6,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-12T06:41:45.038Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":false,"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/moongoal.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":"2022-09-29T22:00:05.000Z","updated_at":"2022-12-05T21:15:06.000Z","dependencies_parsed_at":null,"dependency_job_id":"4d9ee710-0c84-4d89-aa20-fe72aeea3af0","html_url":"https://github.com/moongoal/libccl","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/moongoal/libccl","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/moongoal%2Flibccl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/moongoal%2Flibccl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/moongoal%2Flibccl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/moongoal%2Flibccl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/moongoal","download_url":"https://codeload.github.com/moongoal/libccl/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/moongoal%2Flibccl/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":280901469,"owners_count":26410586,"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-10-25T02:00:06.499Z","response_time":81,"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":[],"created_at":"2024-11-17T22:15:42.249Z","updated_at":"2025-10-25T03:36:58.044Z","avatar_url":"https://github.com/moongoal.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# CCL C++ base library\n\n## API stability\n\nAPI and implementation stable: 🟢\n\nAPI stable: 🟡\n\nUnstable: 🔴\n\n|Interface|Status\n|-|-\n|Utilities|🔴\n|Vector|🔴\n|Ring|🔴\n|Test Driver|🟡\n|Maybe|🔴\n|Hashtable|🔴\n|Hash|🔴\n|Debug Utilities|🔴\n|Compressed Pair|🔴\n|Bitset|🔴\n|Allocators|🔴\n|Dense Map|🔴\n|Packed Integer|🔴\n|Paged Vector|🔴\n|Pool|🔴\n|Set|🔴\n|Sparse Set|🔴\n|Tagged pointer|🔴\n|Pair|🔴\n|Deque|🔴\n|Shared Pointer|🔴\n|String|🔴\n|Internationalization Support|🔴\n|Thread communication primitives|🔴\n|Algorithms library|🔴\n\n## Building\n\nWhile this is a header-only library, the build process is required to create the *version.hpp* header\nfile.\n\nThis library is built with CMake `\u003e= 3.24.2`. Lower versions may work but are not supported. The following are example build commands for informational purposes only. The specific commands for your system may differ.\n\nTo initialise the build system for development, run:\n\n```\npipenv install -d\npipenv run conan install --build=missing --deployer=full_deploy -s build_type=Debug .\n```\n\nTo configure the build, run:\n\n```\nbuild/Debug/generators/conanbuild.bat\ncmake --preset dev\n```\n\nOr with `--preset release` to use the release configuration.\n\nTo enable test coverage data to be collected, append `-DCCL_COVERAGE:BOOL=ON` - enabled by default for the *dev* pre-set. This will enable instrumentation of tests in order to collect coverage data, the `coverage-summary` and `coverage-report` build targets.\n\nSimilarly, to build the project:\n\n```\nbuild/Debug/generators/conanbuild.bat\ncmake --build --preset dev\n```\n\n### Build dependencies\n\nThese dependencies must be manually installed on the system:\n\n* Python `\u003e= 3.12`\n* LLVM `\u003e= 17.0.0`\n* Pipenv `\u003e= 2023.10.24`\n\nThese dependencies are automatically installed and managed via Pipenv:\n\n* Conan `\u003e= 2.0.13`\n\nThese dependencies are automatically installed and managed via Conan:\n\n* CMake `\u003e= 3.24.2`\n* Ninja `\u003e= 1.11.0`\n\n## Packaging\n\nThis library can be packaged with Conan, by running:\n\n```\npipenv run conan create -pr:b \u003cYOUR_PROFILE\u003e .\n```\n\n## Testing\n\nTo run the tests:\n\n```\nbuild/Debug/generators/conanbuild.bat\nctest --preset dev\n```\n\n## Development\n\n### Clangd\n\nThis project is configured for clangd. Run as follows:\n\n```\nclangd --header-insertion=never --compile-commands-dir=build --enable-config\n```\n\n### Configuration\n\nSeveral pre-processor definitions configure behaviour:\n\n|Symbol|Meaning\n|-|-\n|CCL_HASHTABLE_MINIMUM_CAPACITY|Minimum capacity of a hashtable\n|CCL_HASHTABLE_MINIMUM_CHUNK_SIZE|Minimum number of items storable in a hashtable under the same key\n|CCL_SET_MINIMUM_CAPACITY|Minimum capacity of a set\n|CCL_SET_KEY_CHUNK_SIZE|Max number of consecutive set slots to look for when inserting, before rehashing into a larger set\n|CCL_ALLOCATOR_DEFAULT_ALIGNMENT|Default allocator minimum alignment constraint\n|CCL_PAGE_SIZE|Page size for paged data structures, as number of elements\n|CCL_DEQUE_MIN_CAPACITY|Minimum allocatable capacity for deques\n|CCL_ALLOCATOR_IMPL|Enable compiling the default implementations of `ccl::get_default_allocator()` and `ccl::set_default_allocator()`\n|CCL_ALLOCATOR_EXPORTER|Mark `ccl::get_default_allocator()` and `ccl::set_default_allocator()` as dll-exported\n|CCL_ALLOCATOR_IMPORTER|Mark `ccl::get_default_allocator()` and `ccl::set_default_allocator()` as dll-imported\n|CCL_ALLOCATOR_DEFAULT_FLAGS|Set default allocation flags\n|CCL_CHAR_TRAITS_DEFAULT_POS_TYPE|The default position type for `char_traits\u003cchar\u003e`\n\nDefault values are available in [definitions.hpp](include/ccl/definitions.hpp).\n\nDefine any of these before including any CCL headers to override the default behaviour. The best\nway to override these is by leveraging your compiler flags (i.e. `g++ -DCCL_PAGE_SIZE=1024 ...`). Default values are meant to be reasonable for most situations. Some values or combinations\nmay not make sense and cause undefined behaviour. Be sure to check the source code first.\n\nCertain features can be enabled or disabled as needed. The following pre-processor definitions configure optional features:\n\n|Symbol|Meaning\n|-|-\n|CCL_FEATURE_ASSERTIONS|Enable assertions\n|CCL_FEATURE_EXCEPTIONS|Enable exceptions\n|CCL_FEATURE_TYPECHECK_CASTS|Enable use of `dynamic_cast` where appropriate\n|CCL_FEATURE_STL_COMPAT|Include the STL compatibility header\n|CCL_FEATURE_DEFAULT_ALLOCATION_FLAGS|Enable default allocation flags. Disabling this flag will result in a compilation error whenever default allocation flags are not manually defined\n\nDefault values are available in [features.hpp](include/ccl/features.hpp).\n\nTo override the presence of any feature, define `CCL_OVERRIDE_FEATURE_\u003cFEATURE_NAME\u003e`. This will disable the definition any pre-processor symbols related to the given feature.\n\n### STL Compatibility Layer\n\nThere is an STL compatibility layer available in [compat.hpp](include/ccl/compat.hpp). This file is not included by default and provides definitions for enhancing compatibility of CCL with existing STL constructs.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmoongoal%2Flibccl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmoongoal%2Flibccl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmoongoal%2Flibccl/lists"}