mesa/src/compiler/glsl/glcpp
Caio Oliveira 63ab985511 util: Use an opaque type for linear context
In the linear allocation only the parent (context) can be used
to allocate new children, so let's use an opaque type to identify
the linear context.  This is similar to what's done in GC allocator.

Update the documentation and a couple of function names to
refer to linear context instead of linear parent.

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25280>
2023-09-25 17:26:17 +00:00
..
tests glsl/tests: do not perform eol-conversion on windows 2022-08-23 09:16:19 +00:00
glcpp-lex.l util: Use an opaque type for linear context 2023-09-25 17:26:17 +00:00
glcpp-parse.y util: Use an opaque type for linear context 2023-09-25 17:26:17 +00:00
glcpp.c glcpp: Fully initialize struct gl_context 2021-03-19 08:50:37 +00:00
glcpp.h util: Use an opaque type for linear context 2023-09-25 17:26:17 +00:00
meson.build meson: use files() instead of joining paths 2023-01-27 11:35:50 +00:00
pp.c glcpp: Fix undefined behaviour in glcpp 2021-03-25 00:23:43 +00:00
pp_standalone_scaffolding.c mesa: add support cursor support for relative path shader includes 2019-11-20 05:05:56 +00:00
pp_standalone_scaffolding.h mesa: add support cursor support for relative path shader includes 2019-11-20 05:05:56 +00:00
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.10.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 a draft of
the C99 standard as available from:

http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf

Any downstream compiler accepting output from glcpp should be prepared
to encounter and deal with the following preprocessor macros:

	#line
	#pragma
	#extension

All other macros will be handled according to the GLSL specification
and will not appear in the output.

Known limitations
-----------------
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).