o
    Žqi¬	  ã                   @   s"   G d d„ dƒZ G dd„ deƒZdS )c                   @   s   e Zd Zd\ZZdS )Ú
Endianness)z
Big-EndianzLittle-EndianN)Ú__name__Ú
__module__Ú__qualname__ZBigÚLittle© r   r   úH/home/app/PyTorch/test/pytorch/third_party/python-peachpy/peachpy/abi.pyr      s    r   c                       s€   e Zd Zg ddddf‡ fdd„	Zdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Ze	dd„ ƒZ
e	dd„ ƒZe	dd„ ƒZe	dd„ ƒZ‡  ZS )ÚABINc                    sŠ   t t| ƒ ¡  || _|| _|| _|| _|| _|| _|| _	|| _
|	| _|
| _|| _|| _|| _|| _|| _|| _|| _|| _|| _|| _d S ©N)Úsuperr   Ú__init__ÚnameÚ
endiannessÚ	bool_sizeÚ
wchar_sizeÚ
short_sizeÚint_sizeÚ	long_sizeÚlonglong_sizeÚpointer_sizeÚ
index_sizeÚstack_alignmentÚred_zoneÚcallee_save_registersÚargument_registersÚvolatile_registersÚrestricted_registersÚ	elf_classÚelf_data_encodingÚelf_machine_typeÚmscoff_machine_type)Úselfr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   ©Ú	__class__r   r   r   
   s*   
zABI.__init__c                 C   s   t |tƒo
| j|jkS r	   ©Ú
isinstancer   r   ©r    Úotherr   r   r   Ú__eq__'   s   z
ABI.__eq__c                 C   s   t |tƒ p| j|jkS r	   r#   r%   r   r   r   Ú__ne__*   s   z
ABI.__ne__c                 C   s
   t | jƒS r	   )Úhashr   ©r    r   r   r   Ú__hash__-   s   
zABI.__hash__c                 C   s   | j S r	   )r   r*   r   r   r   Ú__str__0   s   zABI.__str__c                 C   s   t | ƒS r	   )Ústrr*   r   r   r   Ú__repr__3   s   zABI.__repr__c                 C   s   | j d uo| jd uo| jd uS r	   )r   r   r   r*   r   r   r   Úis_elf_compatible6   s   zABI.is_elf_compatiblec                 C   s
   | j d uS r	   )r   r*   r   r   r   Úis_mscoff_compatible:   s   
zABI.is_mscoff_compatiblec                 C   s   dS )NFr   r*   r   r   r   Úis_macho_compatible>   s   zABI.is_macho_compatiblec                 C   s0   | j d urddlm} |jd|jdi| j  S d S )Né    )ÚElfClassé    é@   )r   Úpeachpy.formats.elf.filer3   Úclass32Úclass64)r    r3   r   r   r   Úelf_bitnessB   s   
þzABI.elf_bitness)r   r   r   r   r'   r(   r+   r,   r.   Úpropertyr/   r0   r1   r9   Ú__classcell__r   r   r!   r   r   	   s$    ú


r   N)r   Úobjectr   r   r   r   r   Ú<module>   s   