cables_dev/cables/src/core/cg/preproc.js
- export function preproc(str, vars)
- {
- const lines = str.split("\n");
- const outLines = [];
- let stack = [];
-
- for (let i = 0; i < lines.length; i++)
- {
- let line = lines[i].trim();
- let parts = line.split(" ");
-
- if (line.startsWith("#ifdef "))
- {
- const s = vars[parts[1]];
- stack.push({ "state": s });
- continue;
- }
- if (line.startsWith("#ifndef "))
- {
- const s = vars[parts[1]];
- stack.push({ "state": !s });
- continue;
- }
- if (line.startsWith("#endif"))
- {
- stack.pop();
- continue;
- }
- const state = stack[stack.length - 1];
-
- if (line.startsWith("#else"))
- {
- state.state = !state.state;
- continue;
- }
-
- if (!state || state.state)
- {
- outLines.push(lines[i]);
- }
- }
-
- return outLines.join("\n");
- }