Final Platform Layer 0.9.8-beta
|
Final Platform Layer is released under the MIT License.
This license allows you to use FPL freely in any software.
Yes, you are! FPL is fully open source and costs nothing.
Final Platform Layer is written in C99 for simplicity and best portability, but is C++/11 compatible as well.
It uses standard types such as uint32_t or intptr_t from <stdint.h> <stddef.h> and <stdbool.h> to ensure correctness on all platforms.
For certain features such as printf(), getchar() the CRT (C-Runtime-Library) are used, but you can disable it if needed.
Final Platform Layer contains headers and implementations for all supported platforms with all the function prototypes for linking operating system functions dynamically.
Also the entire API definition is documented inline and it comes with a full detailed changelog.
FPL relies heavy on preprocessor defines, used for detecting the current architecture / compiler / operating system.
This makes it possible to enable/disable certain code-paths for certain platform/compiler combinations.
Only built-in OS operating system functions are used in every situation and the usage of standard library functions is prevented by all means.
To prevent code duplication, FPL implements either platform sets or just subsets which can be used for other platforms For example, Linux is a POSIX-based platform so it uses POSIX libraries, such as pthread / X11, etc. The pthread and X11 implementation are separated, so other Unix-based platforms can use that implementation without any problem.
On top of that FPL implements multiple audio and video backends, so that all platforms can playback audio and render using a supported graphics API.
Yes, it does have some limitations, because it cannot do everything for you:
On every platform, all strings/paths are expected to be UTF-8 always!
If you need to convert Unicode/UTF-16 based strings there are conversion functions built-in.
Yes it works very well with other libraries. There are several demo projects in the repository which show that.
Here is a short list of tested third-party libraries with FPL:
But it won't work with other platform abstraction libraries such as SDL, SFML, GLUT, GLFW, etc.
All these other platform abstraction libraries have their way of providing the main entry point and may not compatibility with each other.