Expression¶
Cast and Literals¶
var = CVariable(
c_type=Cint8,
name="i8Mycustomint",
initial_value=CCast(Cint8, CLiteral(12, c_type=Cuint8, literal_format=CLiteral.Format.decimal))
)
print(var.declare().render())
int8_t i8Mycustomint = (int8_t)12U;
var.c_type = Cuint8
var.initial_value = CCast(Cuint8, CLiteral(12, c_type=Cuint8, literal_format=CLiteral.Format.octal))
print(var.declare().render())
uint8_t i8Mycustomint = (uint8_t)014U;
var.initial_value = CCast(Cuint8, CLiteral(12, c_type=Cuint8, literal_format=CLiteral.Format.hexadecimal))
print(var.declare().render())
uint8_t i8Mycustomint = (uint8_t)0xcU;
var.initial_value = CCast(Cuint8, CLiteral(12, c_type=Cuint8, literal_format=CLiteral.Format.binary))
print(var.declare().render())
uint8_t i8Mycustomint = (uint8_t)0b1100U;
var.c_type = Cfloat
var.initial_value = CCast(Cfloat, CLiteral(12, c_type=Cfloat, literal_format=CLiteral.Format.float_decimals))
print(var.declare().render())
float i8Mycustomint = (float)12.0f;
var.initial_value = CCast(Cfloat, CLiteral(12, c_type=Cfloat, literal_format=CLiteral.Format.float_scientific))
print(var.declare().render())
float i8Mycustomint = (float)1.200000e+01f;
Operators¶
NOT = COperators.Logic.Not
print(NOT(CLiteral(False)).render())
!false
SUM = COperators.Arithmetic.Sum
PARENTHESES = COperators.Parentheses
print(
PARENTHESES(
SUM(CLiteral(2), CLiteral(3))
).render()
)
(2 + 3)
ASSIGN = COperators.Assignment.Assign
print(
ASSIGN(
CExpressionFreeStyle("a"),
CLiteral(5)
).render()
)
a = 5
PARENTHESES = COperators.Parentheses
print(
PARENTHESES(
# Typical operations (sum, subtract...) can be done using python built-in operations
var + CLiteral(2) - CLiteral(3) * CLiteral(4) / CLiteral(5) % CLiteral(6)
<< CLiteral(7) >> CLiteral(8) & CLiteral(True) | CLiteral(False)
+ PARENTHESES(
-CLiteral(9) # Unary minus
)
+ PARENTHESES(
+CLiteral(2) # Unary Plus
)
+ PARENTHESES(
~CLiteral(False) # Invert
)
).render()
)
(i8Mycustomint + 2 - 3 * 4 / 5 % 6 << 7 >> 8 && true || false + (-9) + (+2) + (!false))