def int_unary_op(name: str, c_function_name: str) -> CFunctionDescription: return c_unary_op(name=name, arg_type=int_rprimitive, return_type=int_rprimitive, c_function_name=c_function_name, error_kind=ERR_NEVER)
return_type=c_int_rprimitive, c_function_name='PySequence_Contains', error_kind=ERR_NEG_INT, truncated_type=bool_rprimitive, ordering=[1, 0], priority=0) # Unary operations for op, funcname in [('-', 'PyNumber_Negative'), ('+', 'PyNumber_Positive'), ('~', 'PyNumber_Invert')]: c_unary_op(name=op, arg_type=object_rprimitive, return_type=object_rprimitive, c_function_name=funcname, error_kind=ERR_MAGIC, priority=0) c_unary_op( name='not', arg_type=object_rprimitive, return_type=c_int_rprimitive, c_function_name='PyObject_Not', error_kind=ERR_NEG_INT, truncated_type=bool_rprimitive, priority=0) # obj1[obj2] c_method_op(name='__getitem__', arg_types=[object_rprimitive, object_rprimitive],
binary_op('is not', arg_types=[object_rprimitive, object_rprimitive], result_type=bool_rprimitive, error_kind=ERR_NEVER, emit=simple_emit('{dest} = {args[0]} != {args[1]};'), priority=0) # Unary operations for op, funcname in [('-', 'PyNumber_Negative'), ('+', 'PyNumber_Positive'), ('~', 'PyNumber_Invert')]: c_unary_op(name=op, arg_type=object_rprimitive, return_type=object_rprimitive, c_function_name=funcname, error_kind=ERR_MAGIC, priority=0) unary_op(op='not', arg_type=object_rprimitive, result_type=bool_rprimitive, error_kind=ERR_MAGIC, format_str='{dest} = not {args[0]}', emit=call_negative_magic_emit('PyObject_Not'), priority=0) # obj1[obj2] c_method_op(name='__getitem__', arg_types=[object_rprimitive, object_rprimitive],