B
    Ꮚ\0
                 @   sF  d dl mZ ddl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jj_ejgejj_eejj_dS )	   )ffi    )c_boolc_char_pc_size_tc_ulonglong	string_atc_uint64c               @   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   ;lib/python3.7/site-packages/llvmlite/binding/object_file.pyname   s    zSectionIteratorRef.namec             C   s   t j| S )N)r   r   LLVMPY_IsSectionText)r   r   r   r   is_text   s    zSectionIteratorRef.is_textc             C   s   t j| S )N)r   r   LLVMPY_GetSectionSize)r   r   r   r   size	   s    zSectionIteratorRef.sizec             C   s   t j| S )N)r   r   LLVMPY_GetSectionAddress)r   r   r   r   address   s    zSectionIteratorRef.addressc             C   s   t tj| |  S )N)r   r   r   LLVMPY_GetSectionContentsr   )r   r   r   r   data   s    zSectionIteratorRef.datac             C   s   t j|| S )N)r   r   LLVMPY_IsSectionIteratorAtEnd)r   Zobject_filer   r   r   is_end   s    zSectionIteratorRef.is_endc             C   s   t j|  d S )N)r   r   LLVMPY_MoveToNextSection)r   r   r   r   next   s    zSectionIteratorRef.nextc             C   s   t j|  d S )N)r   r   LLVMPY_DisposeSectionIterator)r   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 )N)r   r   LLVMPY_CreateObjectFilelen)clsr   r   r   r   	from_data   s    zObjectFileRef.from_datac          	   C   s4   t |d}| }W d 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   s2   t tj| }x|| s,|V  |  qW d S )N)r
   r   r   LLVMPY_GetSectionsr   r   )r   itr   r   r   sections!   s    zObjectFileRef.sectionsc             C   s   t j|  d S )N)r   r   LLVMPY_DisposeObjectFile)r   r   r   r   r   '   s    zObjectFileRef._disposeN)r   r    r!   classmethodr&   r,   r/   r   r   r   r   r   r"      s   r"   N) r   Zctypesr   r   r   r   r   r	   Z	ObjectRefr
   r"   r   r#   ZargtypesZLLVMObjectFileRefZrestyper0   r-   ZLLVMSectionIteratorRefr   r   r   r   r   r   r   r   r   r   r   r   <module>   s,    




