U
    ºmœdh
  ã                   @   sN  d dl mZ d dlmZmZmZmZmZmZm	Z	 G dd„ dej
ƒZG dd„ dej
ƒZeegejj_ejejj_ejgejj_ejgejj_ejejj_ejgejj_ejgejj_ejejgejj_eejj_ejgejj_eejj_ejgejj_eejj_ejgejj_eejj_ejgejj_e	eƒejj_ejgejj_eejj_dS )é    )Úffi)Úc_boolÚc_char_pÚc_charÚc_size_tÚ	string_atÚc_uint64ÚPOINTERc                   @   sL   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dS )ÚSectionIteratorRefc                 C   s   t j | ¡S ©N)r   ÚlibÚLLVMPY_GetSectionName©Úself© r   úU/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/llvmlite/binding/object_file.pyÚname   s    zSectionIteratorRef.namec                 C   s   t j | ¡S r   )r   r   ÚLLVMPY_IsSectionTextr   r   r   r   Úis_text
   s    zSectionIteratorRef.is_textc                 C   s   t j | ¡S r   )r   r   ÚLLVMPY_GetSectionSizer   r   r   r   Úsize   s    zSectionIteratorRef.sizec                 C   s   t j | ¡S r   )r   r   ÚLLVMPY_GetSectionAddressr   r   r   r   Úaddress   s    zSectionIteratorRef.addressc                 C   s   t tj | ¡|  ¡ ƒS r   )r   r   r   ÚLLVMPY_GetSectionContentsr   r   r   r   r   Údata   s    zSectionIteratorRef.datac                 C   s   t j || ¡S r   )r   r   ÚLLVMPY_IsSectionIteratorAtEnd)r   Zobject_filer   r   r   Úis_end   s    zSectionIteratorRef.is_endc                 C   s   t j | ¡ d S r   )r   r   ÚLLVMPY_MoveToNextSectionr   r   r   r   Únext   s    zSectionIteratorRef.nextc                 C   s   t j | ¡ d S r   )r   r   ÚLLVMPY_DisposeSectionIteratorr   r   r   r   Ú_dispose   s    zSectionIteratorRef._disposeN)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r   r   r    r   r   r   r   r
      s   r
   c                   @   s4   e Zd Zedd„ ƒZedd„ ƒZdd„ Zdd„ Zd	S )
ÚObjectFileRefc                 C   s   | t j |t|ƒ¡ƒS r   )r   r   ÚLLVMPY_CreateObjectFileÚlen)Úclsr   r   r   r   Ú	from_data!   s    zObjectFileRef.from_datac              	   C   s4   t |dƒ�}| ¡ }W 5 Q R X | tj |t|ƒ¡ƒS )NÚrb)ÚopenÚreadr   r   r%   r&   )r'   ÚpathÚfr   r   r   r   Ú	from_path%   s    zObjectFileRef.from_pathc                 c   s.   t tj | ¡ƒ}| | ¡s*|V  | ¡  qd S r   )r
   r   r   ÚLLVMPY_GetSectionsr   r   )r   Úitr   r   r   Úsections+   s    
zObjectFileRef.sectionsc                 C   s   t j | ¡ d S r   )r   r   ÚLLVMPY_DisposeObjectFiler   r   r   r   r    1   s    zObjectFileRef._disposeN)r!   r"   r#   Úclassmethodr(   r.   r1   r    r   r   r   r   r$       s   

r$   N)Zllvmlite.bindingr   Úctypesr   r   r   r   r   r   r	   Z	ObjectRefr
   r$   r   r%   ZargtypesZLLVMObjectFileRefÚrestyper2   r/   ZLLVMSectionIteratorRefr   r   r   r   r   r   r   r   r   r   r   r   Ú<module>   s0   $ ÿ




