{"id":13409593,"url":"https://github.com/AdaCore/ada-traits-containers","last_synced_at":"2025-03-14T15:30:23.022Z","repository":{"id":147274930,"uuid":"50102079","full_name":"AdaCore/ada-traits-containers","owner":"AdaCore","description":"Generic Ada Library for Algorithms and Containers","archived":false,"fork":false,"pushed_at":"2023-03-21T12:02:17.000Z","size":1240,"stargazers_count":29,"open_issues_count":1,"forks_count":13,"subscribers_count":16,"default_branch":"master","last_synced_at":"2024-07-30T20:32:41.149Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Ada","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/AdaCore.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}},"created_at":"2016-01-21T11:07:13.000Z","updated_at":"2024-07-15T21:39:49.000Z","dependencies_parsed_at":null,"dependency_job_id":"161903eb-5eaf-4aaf-ab07-b7f49c494920","html_url":"https://github.com/AdaCore/ada-traits-containers","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/AdaCore%2Fada-traits-containers","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AdaCore%2Fada-traits-containers/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AdaCore%2Fada-traits-containers/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AdaCore%2Fada-traits-containers/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AdaCore","download_url":"https://codeload.github.com/AdaCore/ada-traits-containers/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243600431,"owners_count":20317275,"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":[],"created_at":"2024-07-30T20:01:02.193Z","updated_at":"2025-03-14T15:30:22.084Z","avatar_url":"https://github.com/AdaCore.png","language":"Ada","funding_links":[],"categories":["Libraries"],"sub_categories":["Algorithms, Containers and Protocols"],"readme":"\n# Generic Ada Library for Algorithms and Containers\n\n## Goals\n\nThis library is another containers library for Ada. Although it\nprovides containers that do not exist in the standard Ada\nruntime (graphs for instance), it is more interesting for the\nflexibility it proposes:\n\n  - [X] Bounded/Unbounded containers and even more variants suitable\n        for use with the SPARK language.\n\n  - [X] Finite/Indefinite elements, and even more specialized\n        variants optimized for specific types\n\n  - [X] Pre and Post conditions, compatible with SPARK, so that some\n        variants of the containers can be used for proof.\n\n  - [X] Highly efficient; the user has full control over memory\n        allocations, checks, locks, ...\n\nAll this flexibility is done via the intensive use of generic\npackages, themselves used to instantiate other generic packages.\n\nCheck the [documentation](doc/making_of.rst) for more details on the\ndesign of the API, and its current usage.\n\n## Compiling\n\nThe library itself is pure Ada code, and only requires a working\nAda compiler to be available in your environment.\n\nThis library comes with a testsuite which measures the performance\nof the various variants of the containers, and compares them with\nC++ equivalent (or near equivalents). This testsuite generates a\nnice interactive HTML file.\n\nCompiling and running the testsuite requires that you also have a\nC++ compiler in your environment. In addition, you must install the\nBoost Graph Library (http://www.boost.org).\n\nYou must also download and install the\n[GNAT Components Collection](http://libre.adacore.com).\n\nFinally, in order to run the testsuite, you need to install GNATpython and\nPyYAML in your Python2 environment. You can install both with the following\ncommand:\n\n```sh\npip install -r REQUIREMENTS.txt\n```\n\nOnce this is done, modify the [shared.gpr](src/shared.gpr) file.\nSet the variable ```Boost_Include''' to point to the install prefix\nfor Boost:\n\n```\n   Boost_Include := (\"-I/usr/include\");\n```\n\nFinally, compile and run the test with\n\n```\nmake all perfs\n```\n\nand finally open the file [tests/perfs/index.html](index.html)\nin a browser to view the performance comparison.\n\n## Editing with GNAT Programming Studio\n\nTo edit with GPS, including the tests, you must first run:\n\n    make projects\n\nThen you can edit by launching GPS from the top directory, which will\nautomatically load the aggregate project 'root.gpr'\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FAdaCore%2Fada-traits-containers","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FAdaCore%2Fada-traits-containers","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FAdaCore%2Fada-traits-containers/lists"}