{"id":28742343,"url":"https://github.com/kevyonan/harbol","last_synced_at":"2025-06-16T08:41:21.193Z","repository":{"id":122075928,"uuid":"196302406","full_name":"kevyonan/Harbol","owner":"kevyonan","description":"Harbol is a collection of data structure and miscellaneous libraries, similar in nature to C++'s Boost, STL, and GNOME's GLib but for C99+","archived":false,"fork":false,"pushed_at":"2025-03-21T16:48:50.000Z","size":486,"stargazers_count":28,"open_issues_count":2,"forks_count":4,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-06-14T15:45:49.201Z","etag":null,"topics":["allocators","bytebuffer","c","configuration-file","custom-types","floating-point-types","hashmap","hashtable","libraries","library","memory-pool","miscellaneous-libraries","ordered-hashmap","plugin-manager","queue","string","tree","tuple","variants","vector"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kevyonan.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,"zenodo":null}},"created_at":"2019-07-11T02:02:38.000Z","updated_at":"2025-05-30T02:12:48.000Z","dependencies_parsed_at":"2023-11-26T00:25:30.821Z","dependency_job_id":"5d7adfe3-9908-40fa-8726-a89b96e8f29b","html_url":"https://github.com/kevyonan/Harbol","commit_stats":null,"previous_names":["kevyonan/harbol","assyrianic/harbol"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/kevyonan/Harbol","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kevyonan%2FHarbol","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kevyonan%2FHarbol/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kevyonan%2FHarbol/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kevyonan%2FHarbol/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kevyonan","download_url":"https://codeload.github.com/kevyonan/Harbol/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kevyonan%2FHarbol/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":260127238,"owners_count":22962779,"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":["allocators","bytebuffer","c","configuration-file","custom-types","floating-point-types","hashmap","hashtable","libraries","library","memory-pool","miscellaneous-libraries","ordered-hashmap","plugin-manager","queue","string","tree","tuple","variants","vector"],"created_at":"2025-06-16T08:41:20.307Z","updated_at":"2025-06-16T08:41:21.184Z","avatar_url":"https://github.com/kevyonan.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Harbol\n\n## Introduction\n\n**Harbol** is a collection of data structures and miscellaneous libraries, similar in nature to C++'s Boost, STL, and GNOME's GLib; it is meant to be a smaller and more lightweight collection of data structures, code systems, and convenience software.\n\n\n### Features\n\n* Variant type - supports any type of values and their type IDs.\n* C++-style String type.\n* Dynamic/Static Array (can be used as either a dynamic array (aka vector) or as a static fat array.)\n* Ordered Hash Table.\n* Byte Buffer.\n* Tuple type - convertible to structs, can also be packed.\n* Memory Pool - accomodates any size.\n* Object Pool - like the memory pool but for fixed size data/objects.\n* N-ary Tree.\n* JSON-like Key-Value Configuration File Parser - allows retrieving data from keys through python-style pathing.\n* Plugin Manager - designed to be wrapped around to provide an easy-to-setup plugin API and plugin SDK.\n* Fixed Size floating-point types.\n* Double Ended Queue (Deque).\n* Lexing tools for C/Golang style numbers and strings.\n* Basic as well as a Rust-style Diagnostic Messager/Emitter.\n* Integer Logarithm Generator.\n* Mersenne Twister (header-only).\n* Math Parser.\n* Intrusive Linking Structures.\n\n### Future\n\n* C Lexer [+ Parser]\n* HTML Generator\n\n\n## Usage\n\n```c\n#include \"harbol.h\"\n\nint main(int const argc, char *argv[]) {\n\tbool result = false;\n\tstruct HarbolString str = harbol_string_make(\"my initial string!\", \u0026result);\n\tif( !result ) {\n\t\tprintf(\"str failed to initialize\\n\");\n\t\treturn 1;\n\t}\n\t\n\tharbol_string_add_cstr(\u0026str, \"and another string concatenated!\");\n\tharbol_string_clear(\u0026str);\n\t\n\tstruct HarbolArray vec = harbol_array_make(ARRAY_DEFAULT_SIZE, \u0026result);\n\tif( !result ) {\n\t\tprintf(\"vec failed to initialize\\n\");\n\t\treturn 1;\n\t}\n\t\n\tharbol_array_insert(\u0026vec, \u0026( float32_t ){2.f}, sizeof(float32_t));\n\tharbol_array_insert(\u0026vec, \u0026( float32_t ){3.f}, sizeof(float32_t));\n\tharbol_array_insert(\u0026vec, \u0026( float32_t ){4.f}, sizeof(float32_t));\n\tfloat32_t const f = *( float32_t const* )(harbol_vector_get(\u0026vec, 1));\n\tharbol_array_clear(\u0026vec);\n\t\n\tstruct HarbolMap *ptrmap = harbol_map_new(8);\n\tif( ptrmap==NULL ) {\n\t\tprintf(\"hash table failed to initialize\\n\");\n\t\treturn 1;\n\t}\n\tharbol_map_insert(ptrmap, \"style\", sizeof \"style\", \u0026( float64_t ){2.3553}, sizeof(float64_t));\n\tharbol_map_insert(ptrmap, \"border\", sizeof \"border\", \u0026( float64_t ){12.995}, sizeof(float64_t));\n\tharbol_map_free(\u0026ptrmap);\n}\n```\n\n## Contributing\n\nTo submit a patch, first file an issue and/or present a pull request.\n\n## Help\n\nIf you need help or have any question, make an issue on the github repository.\nSimply drop a message or your question and you'll be reached in no time!\n\n## Installation\n\n### Requirements\n\nC99 compliant compiler and libc implementation with stdlib.h, stdio.h, and stddef.h.\n\n### Building\n\nTo build the library, simply run `make harbol_static` which will make the static library version of libharbol.\nfor a shared library version, run `make harbol_shared`.\n\nTo clean up the `.o` files, run `make clean`.\n\nTo build a debug version of the library, run `make debug`.\n\n### Testing\n\nFor testing code changes or additions, simply run `make test` which will build test executables within each library folder.\nAfter that, run `make run_test` to execute ALL compiled tests for each library component.\n\nRunning `make clean` _WILL_ delete the test executables and their result outputs.\n\n## Credits\n\n* Kevin Yonan - main developer of Harbol.\n\n\n## Contact\n\nI can be contacted at kevyonan@gmail.com; No soliciting or spam.\n\n\n## License\n\nThis project is licensed under Apache License.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkevyonan%2Fharbol","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkevyonan%2Fharbol","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkevyonan%2Fharbol/lists"}