|
#define | __STDC_FORMAT_MACROS |
| We want to be able to use the PRI* macros for printing out integers, but on some platforms they aren't included unless this is already defined. More...
|
|
#define | PRISM_DEPTH_MAXIMUM 1000 |
| When we are parsing using recursive descent, we want to protect against malicious payloads that could attempt to crash our parser. More...
|
|
#define | PRISM_EXPORTED_FUNCTION |
| By default, we compile with -fvisibility=hidden. More...
|
|
#define | PRISM_ATTRIBUTE_FORMAT(string_index, argument_index) __attribute__((format(printf, string_index, argument_index))) |
| Certain compilers support specifying that a function accepts variadic parameters that look like printf format strings to provide a better developer experience when someone is using the function. More...
|
|
#define | PRISM_ATTRIBUTE_UNUSED __attribute__((unused)) |
| GCC will warn if you specify a function or parameter that is unused at runtime. More...
|
|
#define | inline __inline |
| Old Visual Studio versions do not support the inline keyword, so we need to define it to be __inline. More...
|
|
#define | PM_CONCATENATE(left, right) left ## right |
| Old Visual Studio versions before 2015 do not implement sprintf, but instead implement _snprintf. More...
|
|
#define | PM_STATIC_ASSERT(line, condition, message) typedef char PM_CONCATENATE(static_assert_, line)[(condition) ? 1 : -1] |
| We want to be able to use static assertions, but they weren't standardized until C11. More...
|
|
#define | PRISM_HAS_FILESYSTEM |
| In general, libc for embedded systems does not support memory-mapped files. More...
|
|
#define | xmalloc malloc |
| isinf on POSIX systems it accepts a float, a double, or a long double. More...
|
|
#define | xrealloc realloc |
| The realloc function that should be used. More...
|
|
#define | xcalloc calloc |
| The calloc function that should be used. More...
|
|
#define | xfree free |
| The free function that should be used. More...
|
|
#define | PRISM_LIKELY(x) __builtin_expect(!!(x), 1) |
| If PRISM_BUILD_MINIMAL is defined, then we're going to define every possible switch that will turn off certain features of prism. More...
|
|
#define | PRISM_UNLIKELY(x) __builtin_expect(!!(x), 0) |
| The compiler should predicate that this branch will not be taken. More...
|
|
Macro definitions used throughout the prism library.
This file should be included first by any *.h or *.c in prism for consistency and to ensure that the macros are defined before they are used.
Definition in file defines.h.
#define PRISM_HAS_FILESYSTEM |
In general, libc for embedded systems does not support memory-mapped files.
If the target platform is POSIX or Windows, we can map a file in memory and read it in a more efficient manner. If PRISM_HAS_NO_FILESYSTEM is defined, then we want to exclude all filesystem related code from the library. All filesystem related code should be guarded by PRISM_HAS_FILESYSTEM.
Definition at line 136 of file defines.h.
isinf on POSIX systems it accepts a float, a double, or a long double.
But Windows didn't provide isinf, so we need to use _finite instead. If you build prism with a custom allocator, configure it with "-D PRISM_XALLOCATOR" to use your own allocator that defines xmalloc, xrealloc, xcalloc, and xfree.
For example, your prism_xallocator.h
file could look like this:
#ifndef PRISM_XALLOCATOR_H
#define PRISM_XALLOCATOR_H
#define xmalloc my_malloc
#define xrealloc my_realloc
#define xcalloc my_calloc
#define xfree my_free
#endif
The malloc function that should be used. This can be overridden with the PRISM_XALLOCATOR define.
Definition at line 172 of file defines.h.