o
    'Ñ¹gZ  ã                   @   s  d Z ddlZddlmZmZmZmZmZmZ ddl	m
Z
 ddlmZ eeje
je
jƒdd„ ƒZeeje
je
jƒdd	„ ƒZeeje
je
jƒd
d„ ƒZee
jdƒdd„ ƒZee
je
jƒdd„ ƒZee
jƒdd„ ƒZee
jƒdd„ ƒZede
je
jƒdd„ ƒZee
jdƒdd„ ƒZdS )z
Implementation of enums.
é    N)Úlower_builtinÚlower_getattrÚlower_getattr_genericÚ
lower_castÚlower_constantÚimpl_ret_untracked)Útypes)Úoverload_methodc           	      C   ó@   |j \}}|\}}|  |tj|j|jf||f¡}t| ||j|ƒS ©N)ÚargsÚgeneric_compareÚoperatorÚeqÚdtyper   Úreturn_type©	ÚcontextÚbuilderÚsigr   ZtuZtvÚuÚvÚres© r   úZ/Users/admin/.pyenv/versions/3.10.0/lib/python3.10/site-packages/numba/cpython/enumimpl.pyÚenum_eq   ó   

ÿr   c           	      C   sX   |j \}}|\}}||kr|  |tj|j|jf||f¡}n|  |jd¡}t| ||j|ƒS )NF)r   r   r   r   r   Zget_constantr   r   r   r   r   r   Úenum_is   s   

ÿr   c           	      C   r
   r   )r   r   r   Úner   r   r   r   r   r   r   Úenum_ne"   r   r   Úvaluec                 C   s   |S r   r   )r   r   ÚtyÚvalr   r   r   Ú
enum_value+   s   r#   c                 C   s   |   |||j|¡S )z=
    Convert an IntEnum member to its raw integer value.
    N)Úcastr   )r   r   ZfromtyZtotyr"   r   r   r   Úint_enum_to_int0   ó   r%   c                 C   s   |   ||j|j¡S )zB
    Return a LLVM constant representing enum member *pyval*.
    N)Úget_constant_genericr   r    )r   r   r!   Zpyvalr   r   r   Úenum_constant8   r&   r(   c                 C   s   t |j|ƒ}|  ||j|j¡S )z2
    Return an enum member by attribute name.
    N)ÚgetattrÚinstance_classr'   r   r    )r   r   r!   r"   ÚattrÚmemberr   r   r   Úenum_class_getattr@   s   r-   Zstatic_getitemc                 C   s(   |j \}}|j|j }|  ||j|j¡S )z.
    Return an enum member by index name.
    N)r   r*   Zliteral_valuer'   r   r    )r   r   r   r   Zenum_cls_typÚidxr,   r   r   r   Úenum_class_getitemI   s
   

ÿr/   Ú__hash__c                 C   s   dd„ }|S )Nc                 S   s
   t | jƒS r   )Úhashr    )r"   r   r   r   Ú	hash_implW   s   
zintenum_hash.<locals>.hash_implr   )r"   r2   r   r   r   Úintenum_hashT   s   r3   )Ú__doc__r   Znumba.core.imputilsr   r   r   r   r   r   Z
numba.corer   Znumba.core.extendingr	   r   Z
EnumMemberr   Úis_r   r   r   r#   ZIntEnumMemberZIntegerr%   r(   Z	EnumClassr-   ZStringLiteralr/   r3   r   r   r   r   Ú<module>   s.     










