Skip to main content

preprocess_source

Function preprocess_source 

Source
pub fn preprocess_source(
    source: Source,
    options: PreprocessOptions,
) -> Result<PreparedGlm, Error>
Expand description

Expand local quoted includes containing complete declarations, #define NAME=value, #ifdef, #ifndef, string-comparison #if, #else, #endif, and explicit ${NAME} variables.

Substitution is one pass, including within quoted values. Defines become visible in source order, also across includes. Inactive branches are removed before syntax parsing. #set and #warning remain inert directive lines for subsequent interpretation; they do not populate the explicit define table. Preprocessing switches reinclude, and Arras literal_if and relax_undefined_if, are also applied as explicit boolean settings. Other active directives fail explicitly. In particular, this function never executes code, accesses the process environment, or fetches remote includes. Include paths resolve relative to the primary file, matching an engine launched in that directory; implicit GLPATH searches are not performed.

Bounds: 64 MiB processed input and expanded output, 1 MiB per line/definition, 4096 files/defines, one million source-map segments, and 64 include or conditional levels. Duplicate includes require reinclude; cycles fail.