module Language.C99.Simple.Expr where
import Prelude hiding (LT, GT)
import Language.C99.Simple.AST
(.++) :: Expr -> Expr
(.++) = UnaryOp Inc
(.--) :: Expr -> Expr
(.--) = UnaryOp Dec
ref :: Expr -> Expr
ref = UnaryOp Ref
deref :: Expr -> Expr
deref = UnaryOp DeRef
pos :: Expr -> Expr
pos = UnaryOp Plus
neg :: Expr -> Expr
neg = UnaryOp Min
(.~) :: Expr -> Expr
(.~) = UnaryOp BoolNot
(.!) :: Expr -> Expr
(.!) = UnaryOp Not
(.*) :: Expr -> Expr -> Expr
(.*) = BinaryOp Mult
(./) :: Expr -> Expr -> Expr
(./) = BinaryOp Div
(.%) :: Expr -> Expr -> Expr
(.%) = BinaryOp Mod
(.+) :: Expr -> Expr -> Expr
(.+) = BinaryOp Add
(.-) :: Expr -> Expr -> Expr
(.-) = BinaryOp Sub
(.<<) :: Expr -> Expr -> Expr
(.<<) = BinaryOp ShiftL
(.>>) :: Expr -> Expr -> Expr
(.>>) = BinaryOp ShiftR
(.<) :: Expr -> Expr -> Expr
(.<) = BinaryOp LT
(.>) :: Expr -> Expr -> Expr
(.>) = BinaryOp GT
(.<=) :: Expr -> Expr -> Expr
(.<=) = BinaryOp LE
(.>=) :: Expr -> Expr -> Expr
(.>=) = BinaryOp GE
(.==) :: Expr -> Expr -> Expr
(.==) = BinaryOp Eq
(.!=) :: Expr -> Expr -> Expr
(.!=) = BinaryOp NEq
(.&) :: Expr -> Expr -> Expr
(.&) = BinaryOp And
(.^) :: Expr -> Expr -> Expr
(.^) = BinaryOp XOr
(.|) :: Expr -> Expr -> Expr
(.|) = BinaryOp Or
(.&&) :: Expr -> Expr -> Expr
(.&&) = BinaryOp LAnd
(.||) :: Expr -> Expr -> Expr
(.||) = BinaryOp LOr
(.=) :: Expr -> Expr -> Expr
(.=) = AssignOp Assign
(.*=) :: Expr -> Expr -> Expr
(.*=) = AssignOp AssignMult
(./=) :: Expr -> Expr -> Expr
(./=) = AssignOp AssignDiv
(.%=) :: Expr -> Expr -> Expr
(.%=) = AssignOp AssignMod
(.+=) :: Expr -> Expr -> Expr
(.+=) = AssignOp AssignAdd
(.-=) :: Expr -> Expr -> Expr
(.-=) = AssignOp AssignSub
(.<<=) :: Expr -> Expr -> Expr
(.<<=) = AssignOp AssignShiftL
(.>>=) :: Expr -> Expr -> Expr
(.>>=) = AssignOp AssignShiftR
(.&=) :: Expr -> Expr -> Expr
(.&=) = AssignOp AssignAnd
(.^=) :: Expr -> Expr -> Expr
(.^=) = AssignOp AssignXOr
(.|=) :: Expr -> Expr -> Expr
(.|=) = AssignOp AssignOr