o
    Tæ«dZ  ã                   @   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   ÚtuÚtvÚuÚvÚres© r   úi/home/ncw/WWW/www-new/content/articles/pi-bbp/venv/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   Ú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.
    )Úcastr   )r   r   ÚfromtyÚtotyr%   r   r   r   Úint_enum_to_int0   ó   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   r+   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   r3   Ústatic_getitemc                 C   s(   |j \}}|j|j }|  ||j|j¡S )z.
    Return an enum member by index name.
    )r   r0   Úliteral_valuer,   r   r#   )r   r   r   r   Úenum_cls_typÚidxr2   r   r   r   Úenum_class_getitemI   s
   

ÿr8   Ú__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%   r;   r   r   r   Úintenum_hashT   s   r<   )Ú__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.   Ú	EnumClassr3   ÚStringLiteralr8   r<   r   r   r   r   Ú<module>   s.     










