"""Primitive bytes ops.""" from mypyc.ir.ops import ERR_MAGIC from mypyc.ir.rtypes import ( object_rprimitive, bytes_rprimitive, list_rprimitive, dict_rprimitive, str_rprimitive, c_int_rprimitive, RUnion, c_pyssize_t_rprimitive, int_rprimitive, ) from mypyc.primitives.registry import ( load_address_op, function_op, method_op, binary_op, custom_op, ERR_NEG_INT ) # Get the 'bytes' type object. load_address_op( name='builtins.bytes', type=object_rprimitive, src='PyBytes_Type') # bytes(obj) function_op( name='builtins.bytes', arg_types=[RUnion([list_rprimitive, dict_rprimitive, str_rprimitive])], return_type=bytes_rprimitive, c_function_name='PyBytes_FromObject', error_kind=ERR_MAGIC) # bytearray(obj) function_op( name='builtins.bytearray', arg_types=[object_rprimitive], return_type=bytes_rprimitive, c_function_name='PyByteArray_FromObject', error_kind=ERR_MAGIC) # bytes ==/!= (return -1/0/1) bytes_compare = custom_op( arg_types=[bytes_rprimitive, bytes_rprimitive], return_type=c_int_rprimitive, c_function_name='CPyBytes_Compare', error_kind=ERR_NEG_INT) # bytes + bytes # bytearray + bytearray binary_op( name='+', arg_types=[bytes_rprimitive, bytes_rprimitive], return_type=bytes_rprimitive, c_function_name='CPyBytes_Concat', error_kind=ERR_MAGIC, steals=[True, False]) # bytes[begin:end] bytes_slice_op = custom_op( arg_types=[bytes_rprimitive, int_rprimitive, int_rprimitive], return_type=bytes_rprimitive, c_function_name='CPyBytes_GetSlice', error_kind=ERR_MAGIC) # bytes[index] # bytearray[index] method_op( name='__getitem__', arg_types=[bytes_rprimitive, int_rprimitive], return_type=int_rprimitive, c_function_name='CPyBytes_GetItem', error_kind=ERR_MAGIC) # bytes.join(obj) method_op( name='join', arg_types=[bytes_rprimitive, object_rprimitive], return_type=bytes_rprimitive, c_function_name='CPyBytes_Join', error_kind=ERR_MAGIC) # Join bytes objects and return a new bytes. # The first argument is the total number of the following bytes. bytes_build_op = custom_op( arg_types=[c_pyssize_t_rprimitive], return_type=bytes_rprimitive, c_function_name='CPyBytes_Build', error_kind=ERR_MAGIC, var_arg_type=bytes_rprimitive )