o
    2g,)                  
   @  s  d Z ddlmZ ddlmZmZ ddlmZmZm	Z	m
Z
mZmZmZmZ ddlmZmZmZmZmZmZ dD ]\ZZeeeegedeeefgdd q6d	D ]\ZZeeeegeeedd
 qMedeegededd
 dD ]\ZZeeeegeeedd
 qldD ]\ZZeeeegeeedd qdD ]\ZZedege eeedd qedeegedeeddgdd dD ]\ZZeeeeeedd qedeedeedd edegededd
 edeegededd
Zedeeeged edd
 ed!eeged"edd
 ed#eged$ed% ed&eeged'ed%Zed&eeeged(ed% ed)eeeged*ed%Zed+eeged,ed%Zed-eeged.ed%Zeg ed/eedefgd0Z eeee
eged1ed2Z!eeee
eged3ed2Z"eeeeged4ed2Z#eg ed5eedefgd0Z$eeged6ed2Z%eege	d7ed2Z&ed8eged9ed%Z'eeged:ed2Z(eeged;ed2Z)eeged<ed2Z*eeged=ed2Z+d>S )?a  Fallback primitive operations that operate on 'object' operands.

These just call the relevant Python C API function or a thin wrapper
around an API function. Most of these also have faster, specialized
ops that operate on some more specific types.

Many of these ops are given a low priority (0) so that specialized ops
will take precedence. If your specialized op doesn't seem to be used,
check that the priorities are configured properly.
    )annotations)	ERR_MAGIC	ERR_NEVER)bool_rprimitivec_int_rprimitivec_pyssize_t_rprimitivec_size_t_rprimitiveint_rprimitiveobject_pointer_rprimitiveobject_rprimitivepointer_rprimitive)ERR_NEG_INT	binary_op	custom_opfunction_op	method_opunary_op))z==   )z!=   )<r   )z<=   )>   )z>=   PyObject_RichCompare)name	arg_typesreturn_typec_function_name
error_kindextra_int_constantspriority))+PyNumber_Add)-PyNumber_Subtract)*PyNumber_Multiply)z//PyNumber_FloorDivide)/PyNumber_TrueDivide)%PyNumber_Remainder)z<<PyNumber_Lshift)z>>PyNumber_Rshift)&PyNumber_And)^PyNumber_Xor)|PyNumber_Or)@PyNumber_MatrixMultiply)r   r   r   r   r   r!   zbuiltins.divmodPyNumber_Divmod))z+=PyNumber_InPlaceAdd)z-=PyNumber_InPlaceSubtract)z*=PyNumber_InPlaceMultiply)z@=PyNumber_InPlaceMatrixMultiply)z//=PyNumber_InPlaceFloorDivide)z/=PyNumber_InPlaceTrueDivide)z%=PyNumber_InPlaceRemainder)z<<=PyNumber_InPlaceLshift)z>>=PyNumber_InPlaceRshift)z&=PyNumber_InPlaceAnd)z^=PyNumber_InPlaceXor)z|=PyNumber_InPlaceOr))z**CPyNumber_Power)z**=CPyNumber_InPlacePower)r   r   r   r   r   r!   ))r   rD   )r   PyNumber_Powerzbuiltins.powinPySequence_Containsr   )r   r   r   r   r   truncated_typeorderingr!   ))r$   PyNumber_Negative)r"   PyNumber_Positive)~PyNumber_Invert)r   arg_typer   r   r   r!   notPyObject_Not)r   rO   r   r   r   rI   r!   zbuiltins.absPyNumber_Absolute__getitem__PyObject_GetItem__setitem__PyObject_SetItem__delitem__PyObject_DelItemzbuiltins.hashCPyObject_Hash)r   r   r   r   r   zbuiltins.getattrCPyObject_GetAttrCPyObject_GetAttr3zbuiltins.setattrPyObject_SetAttrzbuiltins.hasattrPyObject_HasAttrzbuiltins.delattrPyObject_DelAttrPyObject_CallFunctionObjArgs)r   r   r   r   var_arg_typer    _PyObject_Vectorcall)r   r   r   r   PyObject_VectorcallMethodPyObject_CallCPyObject_CallMethodObjArgsCPyObject_SizePyObject_Sizezbuiltins.iterPyObject_GetIterPyIter_NextCPyIter_NextCPy_GetAIterCPy_GetANextN),__doc__
__future__r   mypyc.ir.opsr   r   mypyc.ir.rtypesr   r   r   r   r	   r
   r   r   mypyc.primitives.registryr   r   r   r   r   r   opopidfuncname
c_function	arg_countpy_get_item_oppy_getattr_oppy_setattr_oppy_hasattr_oppy_delattr_op
py_call_oppy_vectorcall_oppy_vectorcall_method_oppy_call_with_kwargs_oppy_method_call_opgeneric_len_opgeneric_ssize_t_len_opiter_opnext_opnext_raw_opaiter_opanext_op r   r   T/home/garg/my-data/venv/lib/python3.10/site-packages/mypyc/primitives/generic_ops.py<module>   s   ( 
	


				



					

	
	
