o
    yih
                     @   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      t j| S N)r   libLLVMPY_GetSectionNameself r   _/home/ubuntu/maya3_transcribe/venv/lib/python3.10/site-packages/llvmlite/binding/object_file.pyname      zSectionIteratorRef.namec                 C   r   r   )r   r   LLVMPY_IsSectionTextr   r   r   r   is_text
   r   zSectionIteratorRef.is_textc                 C   r   r   )r   r   LLVMPY_GetSectionSizer   r   r   r   size   r   zSectionIteratorRef.sizec                 C   r   r   )r   r   LLVMPY_GetSectionAddressr   r   r   r   address   r   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      t j|  d S r   )r   r   LLVMPY_MoveToNextSectionr   r   r   r   next      zSectionIteratorRef.nextc                 C   r    r   )r   r   LLVMPY_DisposeSectionIteratorr   r   r   r   _dispose   r#   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   sH   t |d}| }W d    n1 sw   Y  | 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  |  || rd S d S r   )r
   r   r   LLVMPY_GetSectionsr   r"   )r   itr   r   r   sections+   s   
zObjectFileRef.sectionsc                 C   r    r   )r   r   LLVMPY_DisposeObjectFiler   r   r   r   r%   1   r#   zObjectFileRef._disposeN)r&   r'   r(   classmethodr-   r3   r6   r%   r   r   r   r   r)       s    

r)   N)llvmlite.bindingr   ctypesr   r   r   r   r   r   r	   	ObjectRefr
   r)   r   r*   argtypesLLVMObjectFileRefrestyper7   r4   LLVMSectionIteratorRefr$   r!   r   r   r   r   r   r   r   r   r   r   <module>   s0    $




