{"id":13731096,"url":"https://github.com/r-lyeh/tinybits","last_synced_at":"2025-04-09T07:07:58.104Z","repository":{"id":43553557,"uuid":"58539236","full_name":"r-lyeh/tinybits","owner":"r-lyeh","description":"Tiny bits and useful snippets that I keep using everywhere (C, C++)","archived":false,"fork":false,"pushed_at":"2022-12-26T17:11:00.000Z","size":235,"stargazers_count":320,"open_issues_count":1,"forks_count":25,"subscribers_count":19,"default_branch":"master","last_synced_at":"2025-04-02T05:06:52.307Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"unlicense","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/r-lyeh.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-05-11T11:30:35.000Z","updated_at":"2025-02-08T21:49:34.000Z","dependencies_parsed_at":"2023-01-31T00:45:21.971Z","dependency_job_id":null,"html_url":"https://github.com/r-lyeh/tinybits","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/r-lyeh%2Ftinybits","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/r-lyeh%2Ftinybits/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/r-lyeh%2Ftinybits/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/r-lyeh%2Ftinybits/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/r-lyeh","download_url":"https://codeload.github.com/r-lyeh/tinybits/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247994121,"owners_count":21030050,"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-08-03T02:01:23.829Z","updated_at":"2025-04-09T07:07:58.078Z","avatar_url":"https://github.com/r-lyeh.png","language":"C","readme":"# tinybits\n- [x] Tiny bits and useful snippets that I keep using everywhere.\n- [x] Too simple to become libraries. Just cut \u0026 paste.\n- [x] Cross-platform C/C++.\n- [x] Public Domain.\n\n|Snippet|Language|Domain|\n|:------|:-------|:-----|\n|[tinyarc4.hpp](tinyarc4.hpp)|C++|ARC4 stream cypher|\n|[tinyassert.c](tinyassert.c)|C/C++|Old assert() macro with new tricks|\n|[tinyatoi.c](tinyatoi.c)|C|atoi() implementation|\n|[tinybenchmark.hpp](tinybenchmark.hpp)|C++|Benchmark code|\n|[tinybsearch.c](tinybsearch.c)|C|Dichotomic binary search|\n|[tinybsearch.cc](tinybsearch.cc)|C++|Dichotomic binary search|\n|[tinybuild.h](tinybuild.h)|C|Build macros|\n|[tinydebug.h](tinydebug.h)|C|Debug macros|\n|[tinydefer.cc](tinydefer.cc)|C++|Defer macro, Go style|\n|[tinydir.cc](tinydir.cc)|C++|Directory listing|\n|[tinydixy.c](tinydixy.c)|C|Small YAML-subset config file parser|\n|[tinydual.sh.bat](tinydual.sh.bat)|Bash|Dual bash/batch file|\n|[tinyendian.c](tinyendian.c)|C|Endianness conversions|\n|[tinyerror.c](tinyerror.c)|C|Error handling|\n|[tinyfsm.c](tinyfsm.c)|C|Tight FSM|\n|[tinygc.cc](tinygc.cc)|C++|Garbage collector (C++)|\n|[tinyhexbase.c](tinyhexbase.c)|C|Simple binary to ascii encoder|\n|[tinyhexdump.c](tinyhexdump.c)|C|Hexdump viewer|\n|[tinyhuman.hpp](tinyhuman.hpp)|C++|De/humanized numbers|\n|[tinyini.c](tinyini.c)|C|Config parser (ini+)|\n|[tinyjson5.c](tinyjson5.c)|C|JSON5/SJSON/JSON parser/writer|\n|[tinylog.h](tinylog.h)|C|Logging utilities|\n|[tinylogger.h](tinylogger.h)|C|Simplest colorful logger|\n|[tinylogger.hpp](tinylogger.hpp)|C++|Session logger|\n|[tinymatch.c](tinymatch.c)|C|Wildcard/pattern matching|\n|[tinymime.c](tinymime.c)|C|MIME/file-type detection|\n|[tinypipe.hpp](tinypipe.hpp)|C++11|Chainable pipes|\n|[tinyprint.cc](tinyprint.cc)|C++|Comma-based printer|\n|[tinypulse.c](tinypulse.c)|C|Digital pulses|\n|[tinyroman.cc](tinyroman.cc)|C++|Integer to roman literals|\n|[tinystring.c](tinystring.c)|C|C string library|\n|[tinystring.cc](tinystring.cc)|C++|C++ string utilities|\n|[tinytga.c](tinytga.c)|C|TGA writer (fork)|\n|[tinytime.cc](tinytime.cc)|C++|Timing utilities|\n|[tinytodo.c](tinytodo.c)|C|TODO() macro|\n|[tinytty.c](tinytty.c)|C|Terminal utilities|\n|[tinyunit.c](tinyunit.c)|C|Unit-testing|\n|[tinyuniso.cc](tinyuniso.cc)|C++|.iso/9960 unarchiver|\n|[tinyuntar.cc](tinyuntar.cc)|C++|.tar unarchiver|\n|[tinyunzip.cc](tinyunzip.cc)|C++|.zip unarchiver|\n|[tinyvariant.cc](tinyvariant.cc)|C++|Variant class|\n|[tinyvbyte.h](tinyvbyte.h)|C|vbyte encoder/decoder (VLE)|\n|[tinywav.c](tinywav.c)|C|WAV writer (fork)|\n|[tinywtf.h](tinywtf.h)|C/C++|Portable host macros|\n|[tinyzlib.cpp](tinyzlib.cpp)|C++|zlib inflater|\n","funding_links":[],"categories":["Libraries"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fr-lyeh%2Ftinybits","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fr-lyeh%2Ftinybits","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fr-lyeh%2Ftinybits/lists"}