U
    |eh
                     @   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   Y/var/www/website-v5/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   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/   r2   r!   r   r   r   r   r%       s   

r%   N)llvmlite.bindingr   ctypesr   r   r   r   r   r   r	   	ObjectRefr
   r%   r   r&   argtypesLLVMObjectFileRefrestyper3   r0   LLVMSectionIteratorRefr    r   r   r   r   r   r   r   r   r   r   r   <module>   s0   $ 




