U
    +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   @/tmp/pip-unpacked-wheel-stw2luzp/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%   argtypesZLLVMObjectFileRefrestyper2   r/   ZLLVMSectionIteratorRefr   r   r   r   r   r   r   r   r   r   r   r   <module>   s0   $ 




