These headers have no associated C files, and are mainly used for
utility logic.
Having them in `/include` makes them more easily located, and more
globally used.
We are using "classic" header guards here over `#pragma once` for better
support. Since `#pragma once` is defined by the compiler, rather than
standard C.
Why isn't it used across the project? I have no idea.
Note: not changing `NBT_I*` macros, since the NBT specification does not
specify a difference between signed/unsigned types. Generally speaking,
internally we treat these as unsigned types for the purpose of
computations being correct.
The unit tests and continious integration is... exessive.
Yes, it's useful, but creates more complications than that it helps, so
it is removed for the time being. Maybe I will add a new framework at a
later date, but at the moment it is constraining development.
Functions now break before their brace, mirroring the Linux kernel.
The reason for this is that breaking the parameter list otherwise makes
code unreadable.
We can optionally add `,` utilising the `__VA_OPT__` macro. However,
this lead to the next problem, which is that an empty vardiac parameter
is a C23 extension. This was solved by dropping the string parameter,
making it be part of the vardiac parameters.
I still haven't much of an idea where I'll take this, but it's a start.
I know it is needed for block filtering and such, I still need to find a
way how I'll actually implement it.
We were statically creating a new string per log message, so re-using
the same message would cause duplicate byte sizes.
Now, all prefixes / suffixes are only defined once, the file name is
defined once per file, the line number should be defined once per unique
line.
This just saves some memory in the final binary, allowing things to be
optimised a little better.
Yes, I am aware there are plenty of violations in `conf.c`, but I'll
likely fix/rewrite those when I will use it. Since there are some other
changes I think I'll want to make.