U
    ?hZ                     @   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   Ztutvuvres r   H/var/www/html/venv/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   Z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   ZfromtyZ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    Z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    r+   Zstatic_getitemc                 C   s(   |j \}}|j|j }| ||j|jS )z.
    Return an enum member by index name.
    )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!   r0   r   r   r   intenum_hashT   s    r1   )__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IntEnumMemberIntegerr$   r&   Z	EnumClassr+   ZStringLiteralr-   r1   r   r   r   r   <module>   s,    










