mirror of https://gitlab.freedesktop.org/mesa/mesa
My current reading of the relevant static functions suggests that last is never used without being uninitialized, (we only use it if the expansion function returned non-NULL and the expansion functions always set it before returning non-NULL). Apparently gcc isn't coming to the same conclusion. Initializing this to NULL nicely quites gcc and will guarantee a nice, early segfault if my anaylsis turns out to be wrong. |
||
---|---|---|
.. | ||
main | ||
tests | ||
.gitignore | ||
Makefile.am | ||
README | ||
glcpp-lex.l | ||
glcpp-parse.y | ||
glcpp.c | ||
glcpp.h | ||
hash_table.c | ||
hash_table.h | ||
pp.c | ||
xtalloc.c |
README
glcpp -- GLSL "C" preprocessor This is a simple preprocessor designed to provide the preprocessing needs of the GLSL language. The requirements for this preprocessor are specified in the GLSL 1.30 specification availble from: http://www.opengl.org/registry/doc/GLSLangSpec.Full.1.30.08.pdf This specification is not precise on some semantics, (for example, #define and #if), defining these merely "as is standard for C++ preprocessors". To fill in these details, I've been using the C99 standard (for which I had a convenient copy) as available from: http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1124.pdf Known limitations ----------------- Macro invocations cannot include embedded newlines. The __LINE__, __FILE__, and __VERSION__ macros are not yet supported. The argument of the 'defined' operator cannot yet include enclosing parentheses. The #error, #pragma, #extension, #version, and #line macros are not yet supported. A file that ends with a function-like macro name as the last non-whitespace token will result in a parse error, (where it should be passed through as is).