U
    í¾|eZ  ã                   @   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   s@   |j \}}|\}}|  |tj|j|jf||f¡}t| ||j|ƒS ©N)ÚargsÚgeneric_compareÚoperatorÚeqÚdtyper   Úreturn_type©	ÚcontextÚbuilderÚsigr   ÚtuÚtvÚuÚvÚres© r   úS/var/www/website-v5/atlas_env/lib/python3.8/site-packages/numba/cpython/enumimpl.pyÚenum_eq   s    


 ÿ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   Úget_constantr   r   r   r   r   r   Úenum_is   s    


 ÿr   c           	      C   s@   |j \}}|\}}|  |tj|j|jf||f¡}t| ||j|ƒS r
   )r   r   r   Úner   r   r   r   r   r   r   Úenum_ne"   s    


 ÿ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.
    )Úcastr   )r   r   ÚfromtyÚtotyr#   r   r   r   Úint_enum_to_int0   s    r(   c                 C   s   |   ||j|j¡S )zB
    Return a LLVM constant representing enum member *pyval*.
    )Úget_constant_genericr   r!   )r   r   r"   Úpyvalr   r   r   Úenum_constant8   s    r+   c                 C   s   t |j|ƒ}|  ||j|j¡S )z2
    Return an enum member by attribute name.
    )ÚgetattrÚinstance_classr)   r   r!   )r   r   r"   r#   ÚattrÚmemberr   r   r   Úenum_class_getattr@   s    r0   Ústatic_getitemc                 C   s(   |j \}}|j|j }|  ||j|j¡S )z.
    Return an enum member by index name.
    )r   r-   Úliteral_valuer)   r   r!   )r   r   r   r   Zenum_cls_typÚidxr/   r   r   r   Úenum_class_getitemI   s
    

ÿr4   Ú__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#   r7   r   r   r   Úintenum_hashT   s    r8   )Ú__doc__r   Únumba.core.imputilsr   r   r   r   r   r   Ú
numba.corer   Únumba.core.extendingr	   r   Ú
EnumMemberr   Úis_r   r   r    r$   ÚIntEnumMemberÚIntegerr(   r+   Ú	EnumClassr0   ÚStringLiteralr4   r8   r   r   r   r   Ú<module>   s,    










