init
This commit is contained in:
commit
38355d2442
9083 changed files with 1225834 additions and 0 deletions
|
|
@ -0,0 +1,84 @@
|
|||
"""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
|
||||
)
|
||||
Loading…
Add table
Add a link
Reference in a new issue