{"id":28716154,"url":"https://github.com/grauho/simpleheaderlibraries","last_synced_at":"2025-06-15T02:39:34.395Z","repository":{"id":298941712,"uuid":"996281530","full_name":"grauho/simpleHeaderLibraries","owner":"grauho","description":"A collection of small but useful header only C libraries that I've built up over time. ","archived":false,"fork":false,"pushed_at":"2025-06-13T17:55:31.000Z","size":48,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-06-13T18:46:09.737Z","etag":null,"topics":["ansi","bitfields","c89","c90","configuration-files","endianness","getopt","getopt-long","header-only","header-only-library","stdint","thread-pool","thread-pool-implementations","vector-implementation"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-4-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/grauho.png","metadata":{"files":{"readme":"README.3","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","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":"2025-06-04T18:10:29.000Z","updated_at":"2025-06-13T17:55:34.000Z","dependencies_parsed_at":"2025-06-13T18:46:13.785Z","dependency_job_id":"a7424429-fb28-4dec-96c4-6788baf234f7","html_url":"https://github.com/grauho/simpleHeaderLibraries","commit_stats":null,"previous_names":["grauho/simpleheaderlibraries"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/grauho/simpleHeaderLibraries","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grauho%2FsimpleHeaderLibraries","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grauho%2FsimpleHeaderLibraries/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grauho%2FsimpleHeaderLibraries/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grauho%2FsimpleHeaderLibraries/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/grauho","download_url":"https://codeload.github.com/grauho/simpleHeaderLibraries/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grauho%2FsimpleHeaderLibraries/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259914053,"owners_count":22931297,"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":["ansi","bitfields","c89","c90","configuration-files","endianness","getopt","getopt-long","header-only","header-only-library","stdint","thread-pool","thread-pool-implementations","vector-implementation"],"created_at":"2025-06-15T02:39:32.371Z","updated_at":"2025-06-15T02:39:34.385Z","avatar_url":"https://github.com/grauho.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":".\\\" -*- mode: troff; coding: utf-8 -*-\n.TH \"\" \"7\" \"\"\n.SH Small Header Only Libraries\n.LP\nThis repository contains several small header only libraries that contain \nfunctions that are useful but missing from the C standard library with an aim\ntowards being portable across a wide range of potential C platforms. All of \nthese header libraries adhere to the ANSI C90 standard and where possible \nconstrain themselves to the \\(oqfreestanding C\\(cq subset of the standard library.\n.PP\nThese libraries came about as a result of the specific needs of the author and\nas such are not as robust as other larger libraries offering similar solutions. \nIf more functionality is desired one is advised to either expand these headers \noneself or seek out those aforementioned alternatives. \n.SH Synopsis\n.SS\nport* files\n.LP\nThese files often only require the user to include them in a single C \ntranslation unit much like any other C header. \n.PP\neg:\n#include \\(lqportopt.h\\(rq\n.SS\nmacro* files\n.LP\nThese files contain macros that expand into a dynamically generated API with a \nuser defined namespace. The exact nature of this expansion is unique to the \nfile and as such have their own manual pages in their respective directories.\nIn general however one usually will need to include the respective header file\nand then define a macro describing the desired namespace and other pertinent \ninformation. \n.LP\n.EX\n#include \\(dqmacroThreadPool.h\\(dq\n\n#define MACRO_THREAD_POOL_COMPLETE(myPool, struct jobArgs, workerFunction);\n.EE\n.PP\nCurrently both macro dynamic headers have the option to define the resulting \nfunction prototype, their definitions, or both depending on the macro invoked. \nPlease refer to the specific manual page for these files for more information.\n.SH Summary\n.SS\nportegg.h\n.LP\nA library for detecting host Endian-ness and converting between big and little\nEndian formats. \n.SS\nportopt.h\n.LP\nA library that provides both a simple and more verbose command line argument\nparsing framework. Freestanding compatible if logging is disabled. \n.SS\nportcfg.h\n.LP\nA library for parsing basic configuration files. Not freestanding as it \nrequires I/O functions from stdio. \n.SS\nportint.h\n.LP\nA library intended to be a stopgap replacement for the basic types in stdint.h. \nThis header attempts to ascertain variable bit widths from their respective \nlimits in limits.h. Note that this is only guaranteed for unsigned integers,\nalthough in most cases the corresponding signed variable will match the \nbit-width of the unsigned variant. \n.SS\nportbit.h\n.LP\nA library created to attempt to address the platform dependant nature of \nbitfields in the C standard. The purpose of this library is to allow for the\ncreation of bitfields of arbitrary length and allow for the reading and writing\nof variables of arbitrary length to said bitfields. Freestanding if an\nalternative calloc function is provided. \n.SS\nmacroThreadPool/macroThreadPool.h\n.LP\nA library to dynamically generate a thread pool that allows for the queuing of\na specified job. pthread.h or an applicable wrapper that provides the pthread \nAPI is required. See the manual page in the dedicated directory for more \ninformation.\n.SS\nmacroVector/cevMacro.h\n.LP\nA library to dynamically generate a dynamic array, or vector in C++ parlance, \nof a given data type. Can be made freestanding compatible if alternatives for\nthe allocation functions and memmove/memcpy are provided. See the manual\npage in the dedicated directory for more information. \n.SH Examples\n.LP\nA directory containing examples for each of the non-macro headers is included\nwith this repository. All of the examples can be compiled with simply:\n.LP\n.EX\n\\(gacc file.c\\(ga\n.EE\n.PP\nto produce the corresponding demo program. Each of the macro headers contains \nan example program in its personal directory along with a Makefile for \ncompiling the demo program. \n.SH License\n.LP\nAll the files in this repository are provided under the terms of the BSD \n4-Clause License. A copy of this license can be found in the body of each of \nthe header files and also in LICENSE.txt. \n.SH Bugs\n.LP\nPlease report any bugs along with pertinent environmental information to the \nbugs section of this repository. Feature suggestions or requests are not bugs. \n.SH Authors\n.LP\n.EX\nGrauho \u003cgrauho@proton.me\u003e\n.EE\n.SH Copyright\n.LP\nCopyright \\(co Grauho 2025, All Rights Reserved\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgrauho%2Fsimpleheaderlibraries","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgrauho%2Fsimpleheaderlibraries","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgrauho%2Fsimpleheaderlibraries/lists"}