Collection of cross-platform single-header C libraries for doing a lot of stuff! (Still WIP)

Overview

ice_libs

Collection of cross-platform single-header C libraries for doing a lot of stuff! (Still WIP)

Brief

ice_libs is collection of Single-Header C libraries, Designed to introduce stuff that sokol and some single-header libs didn't offered, In addition to more stuff offered by these libs.

Goals

  1. Portability: Supports ANSI C and onwards!
  2. Cross-Platform: Runs on a lot of platform, Including Game Consoles.
  3. Customizable: You can build shared libs of any ice library by the way you want.
  4. Platform-Detectable: ice libraries can detect platform that program runs on, So you are not forced to define implementation platform and backend used.
  5. Controllable: Offers custom memory allocators, Custom calling conventions, And more...
  6. Bindings-Friendly: Designed to make bindings much easier!
  7. Easy to code.
  8. Optimizable.
  9. Easy to license: ice libraries allows you to choose between 2 licenses: Public Domain and MIT!

Libraries

library library description platforms supported languages lines of code
ice_ffi.h Cross-Platform Single-Header library to work with shared libs Microsoft platforms, Unix-based platforms C 299
ice_fs.h Cross-Platform Single-Header library for filesystem functions Anywhere C 1888
ice_clipboard.h Cross-Platform Single-Header Clipboard library Anywhere C, C++, Obj-C 706
ice_ram.h Cross-Platform Single-Header library to get RAM info Microsoft platforms, Unix-based platforms, Web (Emscripten), Sony PlayStation Portable C 384
ice_time.h Cross-Platform Single-Header Time library Anywhere C 917
ice_easings.h Cross-Platform Single-Header Easings library Anywhere C 447
ice_math.h Cross-Platform Single-Header Math library Anywhere C 3609
ice_al.h Cross-Platform Single-Header OpenAL API loader OpenAL API supported platforms C 656
ice_steam.h Cross-Platform Single-Header Steamworks API loader Steamworks API supported platforms C 4754
ice_test.h Cross-Platform Single-Header Tiny unit testing lib Anywhere C 165
ice_str.h Cross-Platform Single-Header for working with strings Anywhere C 614
ice_arr.h Cross-Platform Single-Header for working with numeric arrays Anywhere C 773
ice_battery.h Cross-Platform Single-Header for getting battery info Microsoft platforms, Unix-based platforms, Web (Emscripten), Nintendo Switch, Sony PlayStation Portable, Sony PlayStation Vita C 996

NOTE: Unix-based platforms means Linux, iOS, OSX, Haiku, BeOS, and Android.

For docs of ice_libs see here!

Special Thanks

  1. Eduardo Bart, André L. Alvares, and Nicolas Sauzede for encouraging me to work on this!
  2. Together C and C++ Discord Server community, They are very amazing and helped me when got stuck.
  3. Sean Barrett, Andre Weissflog, and Micha Mettke as i got inspiration from their libs to work on my own!
  4. Everyone including you!
Issues
  • Add A Simple ice.h Header

    Add A Simple ice.h Header

    adding this header will let the user use all Icelib headers using one header, not two, a single help but im working on ice_gpu.h and in near future im gonna pull resquet it too :--), Thanks For Ur Good Libary

    opened by archuser555 2
  • Allow overriding/specifying custom allocator/deallocator pair

    Allow overriding/specifying custom allocator/deallocator pair

    Memory allocations directly use malloc and free. Having a couple of macros like ALLOC_FUNC and DEALLOC_FUNC and using them everywhere would be better. malloc and free can be defaults when these macros are undefined. This would be beneficial for using these headers in projects that have tight memory constraints and do manual memory management. Example: stb.

    opened by legends2k 1
  • General Improvements!

    General Improvements!

    1. Rewrote ice_ease.h for best performance (Faster than old ice_ease.h by over 20% when using -Ofast flag )
    2. Added ICE_EASE_TAU and ICE_EASE_HALF_PI for ice_ease.h
    3. Updated samples to discard return type when calling printf function.
    4. Added tree.c in samples folder which is program that implements tree command!
    5. Updated workflow to be more explained...
    opened by Rabios 0
  • General improvements for ice_ffi.h and ice_fs.h and ice_cpu.h

    General improvements for ice_ffi.h and ice_fs.h and ice_cpu.h

    1. Security improvements have been done for ice_al.h and ice_ffi.h
    2. Extended string length for ice_cpu_brand (CPU Name) in ice_cpu.h on Microsoft Platforms
    3. Fixed ice_fs_type function in ice_fs.h to be compatible with MSVC!
    4. Improved some samples...
    opened by Rabios 0
  • 1st anniversary update!

    1st anniversary update!

    1. ice_libs have passed 1 year on GitHub! (Happy Anniversary!)
    2. ice_fs.h released, Which is a Single-Header Cross-Platform C library to work with files and directories and paths!
    3. Done some patches to prevent crashes in some libraries!
    4. Added sample for ice_fs.h along with bindings for DragonRuby, LuaJIT, and Nelua!
    5. Added build scripts based on the same ones used in GitHub Actions, So you can build locally on your device.
    6. Build flags for the workflow are now more strict, Which allowed to fix a lot of problems...
    7. Renamed ice_str_arr_free to ice_str_free_arr in ice_str.h
    8. Fixed ice_cpu.h on BSDs!
    9. Updated TODO for next goals!
    10. Simplified the GitHub Actions workflow build script...
    11. Splitted DragonRuby/MRuby bindings into cexts folder and added Ruby files that loads the compiled shared library of the bindings along with Ruby definitions for each library!
    12. Added invalid pointer error codes to the libraries that uses error enumerations (Like ice_batt.h and ice_time.h)
    13. Fixed reverse of string mechanism for ice_str_rev in ice_str.h
    opened by Rabios 0
Owner
Rabia Alhaffar
Syrian game programmer at age of 16, Hobbyist indie game developer and often do web/software stuff!
Rabia Alhaffar
Several single-file, cross-platform, public domain libraries for C/C++ that I use for learning / testing

HTC Several single-file, cross-platform, public domain libraries for C/C++ that I use for learning / testing (Not meant for production code). This is

Chris 19 Jul 12, 2022
An experiment of running a lot of wasm apps on esp32 M5 atom matrix board

Wasms This is a POC project to run many wasm apps on a single esp32 board (in my case, M5 Atom Matrix, with a nice neopixel 5x5 display matrix). All I

Dmitry Kabak 16 Aug 1, 2022
CAN bus extruder, more resistant to noise,reduce a lot of wires for your 3D printer

PandaCAN is an extruder control board that connect to main board with CAN interface, more resistant to signal noise,reduce a lot of wires for your 3D printer.

Mark 81 Jul 6, 2022
By putting in a lot of speed, the speed sequence is sorted and divided, three types of speed interval distribution maps are generated.(including broken line graph,histogram and curve graph)

Auto-drawing-speed-range-map By putting in a lot of speed, the speed sequence is sorted and divided, three types of speed interval distribution maps a

wellwellAllwen 4 May 14, 2022
WIP Plan 9 port of Simon Tatham's Portable Puzzle Collection

This is the README accompanying the source code to Simon Tatham's puzzle collection. The collection's web site is at <https://www.chiark.greenend.org.

Sean Hinchee 4 Sep 16, 2021
CVE-2021-24084 Windows Local Privilege Escalation Left officially unpatched since 2020. Hence, its still a zero day

WindowsMDM-LPE-0Day Works best on Windows 11 CVE-2021-24084 Windows Local Privilege Escalation Left officially unpatched since 2020. Hence, its still

Exploit Blizzard 31 Jul 20, 2022
Orca - Advanced Malware with multifeatures written in ASM/C/C++ , work on all windows versions ! (some features still under developing and not stable)

About Orca Orca is an Advanced Malware with multifeatures written in ASM/C/C++ features Run in Background (Hidden Mode) Records keystrokes and saves t

anas 166 Aug 3, 2022
Program that allows you to get the source code of a website's home page without doing it manually. Use it at your own risk.

Website-Homepage-Grabber Install one of the folders x64 or x32 if the program doesn't work(probably because you don't have visual studio installed) If

null 5 Feb 19, 2022
A Modern C11 compiler (STILL EARLY)

Cuik (pronounced 'Quick') warning: unfinished The plan is a modern C11 compiler which can mostly work with Clang, GCC, and MSVC while also introducing

Yasser Arguelles 87 Jul 29, 2022
Faster neofetch alternative, written in C. Still improving :)

albafetch ~by alba4k albafetch is a simple, fast system fetching program. It prints many info about the system in way less than a second. I decided to

alba4k 14 Jul 22, 2022
I add my Pi Pico (RP2040) stuff here.

Pico Stuff I add my Pi Pico (RP2040) stuff here. There are complete apps and libraries for sensors or complicated tasks. Libraries BMP180: Header-only

Luigi Cruz 97 Jul 13, 2022
Stuff I've made/found for reversing/modding/extracting NieR:Replicant v1.224...

NieR:Replicant ver.1.22474487139 Tools Archive (.arc) Files Hex Signature: 28 B5 2F FD Can contain one or multiple compressed files. Files are compres

Woeful_Wolf 8 Jul 30, 2022
Violent Fungus is a command and control (C2) software suite, providing red teams post-exploitation persistence and other juicy stuff.

Violent Fungus is a command and control (C2) software suite, providing red teams post-exploitation persistence and other juicy stuff.

Chris Humphries 33 Jul 3, 2022
A DLL that fixes some stuff on Fortnite OT 6.5. Originally based on Alphaium by Cyuubi

How to use Compile as x86 because alpha is 32 bit Setup the responses Inject while in the login screen Wait for the console to tell you to login Respo

null 14 Jul 23, 2022
a simple project made with a esp32 and some other stuff

pumkin candy dispenser its a really simple candy dispenser that it works with a esp32 ai thinker. I made it for a school project and idk it looks cool

ranon rat 7 Jul 15, 2022
a simple project made with a esp32 and some other stuff

pumpkin candy dispenser its a really simple candy dispenser that it works with a esp32 ai thinker. I made it for a school project and idk it looks coo

ranon rat 7 Jul 15, 2022
Useful cmake macros that help with: compiler/linker flags, collecting sources, PCHs, Unity builds and other stuff.

ucm - useful cmake macros ucm is a collection of cmake macros that help with: managing compiler/linker flags collecting source files with grouping in

Viktor Kirilov 191 Jun 29, 2022
This is a imgui login that runs with keyauth with only uses the key and has tabs for you to paste your stuff in c++

KeyAuth-Imgui-key-Login This is a imgui login that runs with keyauth with only uses the key and has tabs for you to paste your stuff in c++ KeyAuth CP

Lucent 9 Jun 21, 2022
A collection of tools, libraries, and tests for Vulkan shader compilation.

Shaderc A collection of tools, libraries and tests for shader compilation. At the moment it includes: glslc, a command line compiler for GLSL/HLSL to

Google 1.4k Aug 5, 2022