Enum glsl::syntax::Expr [−][src]
pub enum Expr {}Show variants
Variable(Identifier), IntConst(i32), UIntConst(u32), BoolConst(bool), FloatConst(f32), DoubleConst(f64), Unary(UnaryOp, Box<Expr>), Binary(BinaryOp, Box<Expr>, Box<Expr>), Ternary(Box<Expr>, Box<Expr>, Box<Expr>), Assignment(Box<Expr>, AssignmentOp, Box<Expr>), Bracket(Box<Expr>, ArraySpecifier), FunCall(FunIdentifier, Vec<Expr>), Dot(Box<Expr>, Identifier), PostInc(Box<Expr>), PostDec(Box<Expr>), Comma(Box<Expr>, Box<Expr>),
The most general form of an expression. As you can see if you read the variant list, in GLSL, an assignment is an expression. This is a bit silly but think of an assignment as a statement first then an expression which evaluates to what the statement “returns”.
An expression is either an assignment or a list (comma) of assignments.
Variants
Variable(Identifier)
A variable expression, using an identifier.
IntConst(i32)
Integral constant expression.
UIntConst(u32)
Unsigned integral constant expression.
BoolConst(bool)
Boolean constant expression.
FloatConst(f32)
Single precision floating expression.
DoubleConst(f64)
Double precision floating expression.
A unary expression, gathering a single expression and a unary operator.
A binary expression, gathering two expressions and a binary operator.
A ternary conditional expression, gathering three expressions.
Assignment(Box<Expr>, AssignmentOp, Box<Expr>)
An assignment is also an expression. Gathers an expression that defines what to assign to, an assignment operator and the value to associate with.
Bracket(Box<Expr>, ArraySpecifier)
Add an array specifier to an expression.
FunCall(FunIdentifier, Vec<Expr>)
A functional call. It has a function identifier and a list of expressions (arguments).
Dot(Box<Expr>, Identifier)
An expression associated with a field selection (struct).
Post-incrementation of an expression.
Post-decrementation of an expression.
An expression that contains several, separated with comma.