Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/mjansson/foundation_lib
Cross-platform public domain foundation library in C providing basic support data types and functions to write applications and games in a platform-independent fashion.
https://github.com/mjansson/foundation_lib
c cross-platform platform
Last synced: 1 day ago
JSON representation
Cross-platform public domain foundation library in C providing basic support data types and functions to write applications and games in a platform-independent fashion.
- Host: GitHub
- URL: https://github.com/mjansson/foundation_lib
- Owner: mjansson
- License: unlicense
- Created: 2013-01-14T11:56:43.000Z (about 12 years ago)
- Default Branch: main
- Last Pushed: 2023-11-05T16:44:58.000Z (about 1 year ago)
- Last Synced: 2024-08-29T00:02:05.212Z (5 months ago)
- Topics: c, cross-platform, platform
- Language: C
- Homepage:
- Size: 6.5 MB
- Stars: 297
- Watchers: 28
- Forks: 23
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG
- License: LICENSE
- Roadmap: ROADMAP
Awesome Lists containing this project
README
# Foundation Library - Public Domain
This library provides a cross-platform foundation library in C providing basic support data types and
functions to write applications and games in a platform-independent fashion. It provides:* Abstractions and unification of basic data types
* Pluggable memory management
* Threads and synchronization
* Atomic operations
* Timing and profiling
* Object lifetime management
* Events processing
* File system access
* Dynamic library loading
* Process spawning
* Logging, error reporting and asserts
* String handling in UTF-8 and UTF-16
* Murmur hasing and statically hashed strings
* Math support for 32 and 64 bit floats
* JSON/SJSON parser
* SHA256/SHA512 digest
* Application, environment and system queries and control
* Regular expressions
* Exception utilities (SEH, signals)It is written with the following API design principles in mind:
* Consistent. All functions, parameters and types should follow a well defined pattern in order to make it easy to remember how function names are constructed and how to pass the expected parameters.
* Orthogonal. A function should not have any side effects, and there should be only one way to perform an operation in the system.
* Specialized. A function in an API should perform a single task. Functions should not do completely different unrelated tasks or change behaviour depending on the contents of the variables passed in.
* Compact. The API needs to be compact, meaning the user can use it without using a manual. Note though that "compact" does not mean "small". A consistent naming scheme makes the API easier to use and remember.
* Contained. Third party dependencies are kept to an absolute minimum and prefer to use primitive or well-defined data types.Platforms and architectures currently supported:
* Windows (x86, x86-64), Vista or later
* MacOS X (x86-64), 10.7+
* Linux (x86, x86-64, PPC, ARM)
* FreeBSD (x86, x86-64, PPC, ARM)
* iOS (ARMv7, ARMv7s, ARMv8/AArch64), 6.0+
* Android (ARMv6, ARMv7, ARMv8/AArch64, x86, x86-64, MIPS, MIPS64)
* Raspberry Pi (ARMv6)Discord server for discussions
https://discord.gg/M8BwTQrt6cThe latest source code maintained by Mattias Jansson is always available at
Main branch is used for development. Releases are tags on main branch.
Cross-platform build system uses Ninja
This library is put in the public domain; you can redistribute it and/or modify it without any restrictions.
Created by Mattias Jansson ([@maniccoder](https://twitter.com/maniccoder))