Donner SVG Editor & Engine
SVG-native editor and embeddable SVG2 + CSS3 engine in C++20, with GPU (WebGPU) and compact CPU renderers, built for correctness, security, and performance.
Loading...
Searching...
No Matches
IrStatement.h File Reference

Statement nodes for the donner::gpu::shader IR. More...

#include <memory>
#include <optional>
#include <vector>
#include "donner/base/RcString.h"
#include "donner/gpu/shader/IrExpr.h"
#include "donner/gpu/shader/IrType.h"
Include dependency graph for IrStatement.h:
This graph shows which files directly or indirectly include this file:

Classes

class  donner::gpu::shader::IrStmt
 One IR statement. More...
struct  donner::gpu::shader::IrStmt::Data
 Internal storage; public for the builder and serialization implementation. More...

Namespaces

namespace  donner
 Top-level Donner namespace, which is split into different sub-namespaces such as donner::svg and donner::css.

Typedefs

using donner::gpu::shader::IrBlock = std::vector<IrStmt>
 An ordered list of statements.

Detailed Description

Statement nodes for the donner::gpu::shader IR.

Statements are immutable value nodes produced by FunctionBuilder, which performs all scope, type, and stage validation before constructing them; the nodes themselves are plain data consumed by serialization and (in later packets) the emitters.


Class Documentation

◆ donner::gpu::shader::IrStmt::Data

struct donner::gpu::shader::IrStmt::Data

Internal storage; public for the builder and serialization implementation.

Class Members
IrBlock body If-then / for body.
shared_ptr< const IrStmt > continuing For-loop continuing statement.
optional< IrType > declaredType Var declared type.
IrBlock elseBody If-else body.
vector< IrExpr > exprs Kind-dependent expressions: let/var init, assign (lhs, rhs), if/for condition, return values.
shared_ptr< const IrStmt > init For-loop init statement.
Kind kind = Kind::Break Statement kind.
RcString name Let/var name.