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))