Final Platform Layer

Table of Contents


What are the license requirements for FPL?

Final Platform Layer is released under the MIT License.
This license allows you to use FPL freely in any software.

I did pay for FPL, did i get ripped-of?

Yes, you are! FPL is full open source and costs nothing.

In what language is FPL written?

Final Platform Layer is written in C99 for simplicity and best portability, but is C++ 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 C Runtime are used but you can disable it if needed.

What makes it different from other platform abstraction libraries, such as SDL/SFML etc. ?

Why is FPL so big?

Final Platform Layer contains headers and implementations for all supported platforms with all the function prototypes for linking operating system functions dynamically.
In addition there is a full detailed changelog included as well.

How does it work?

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 almost every situation and the usage of standard library functions is prevented by all means.

Platforms are either full implemented platforms or a subset of sub-platforms.
On top of that we have audio/video drivers for certain platforms/sub-platforms.
Lastly there is a abstraction layer api which merges the platforms/subplatforms/drivers into structures/unions.

Does FPL have some limitations?

Yes it does have some limitations, because it cannot do everything for you:

How does FPL handle strings?

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.

Can FPL handle third party libraries?

Yes actually it works very well with other libraries - in fact there are several demo projects in the repository which shows that.

Here is a short list of tested third-party libraries with FPL:

But it wont work with other platform abstraction libraries such as SDL, SFML, GLUT, GLFW etc.
All these other platform abstraction libraries have their own way of providing the main entry point and are not compability with each other.