B
    u9a;  ã               @   s   G d d„ dƒZ dS )c               @   sZ   e Zd Zddd„Zdd„ Zdd„ Zd	d
„ Zdd„ Zddd„Zdd„ Z	ddd„Z
dd„ ZdS )ÚChunkTFc          	   C   sÔ   dd l }d| _|| _|rd}nd}|| _| d¡| _t| jƒdk rFt‚y | |d | d¡¡d | _	W n |j
k
r‚   td ‚Y nX |r”| j	d | _	d| _y| j ¡ | _W n ttfk
rÈ   d| _Y nX d| _d S )	Né    Fú>ú<é   ÚLé   T)ÚstructÚclosedÚalignÚfileÚreadÚ	chunknameÚlenÚEOFErrorÚunpack_fromÚ	chunksizeÚerrorÚ	size_readÚtellÚoffsetÚAttributeErrorÚOSErrorÚseekable)Úselfr   r
   Z	bigendianZ
inclheaderr   Zstrflag© r   ú/usr/lib/python3.7/chunk.pyÚ__init__4   s,     zChunk.__init__c             C   s   | j S )N)r   )r   r   r   r   ÚgetnameN   s    zChunk.getnamec             C   s   | j S )N)r   )r   r   r   r   ÚgetsizeR   s    zChunk.getsizec             C   s    | j sz|  ¡  W d d| _ X d S )NT)r	   Úskip)r   r   r   r   ÚcloseV   s    zChunk.closec             C   s   | j rtdƒ‚dS )NzI/O operation on closed fileF)r	   Ú
ValueError)r   r   r   r   Úisatty]   s    zChunk.isattyr   c             C   sv   | j rtdƒ‚| jstdƒ‚|dkr0|| j }n|dkrB|| j }|dk sT|| jkrXt‚| j | j	| d¡ || _d S )NzI/O operation on closed filezcannot seeké   é   r   )
r	   r!   r   r   r   r   ÚRuntimeErrorr   Úseekr   )r   ÚposÚwhencer   r   r   r&   b   s    
z
Chunk.seekc             C   s   | j rtdƒ‚| jS )NzI/O operation on closed file)r	   r!   r   )r   r   r   r   r   u   s    z
Chunk.telléÿÿÿÿc             C   s¦   | j rtdƒ‚| j| jkrdS |dk r2| j| j }|| j| j krN| j| j }| j |¡}| jt|ƒ | _| j| jkr¢| jr¢| jd@ r¢| j d¡}| jt|ƒ | _|S )NzI/O operation on closed fileó    r   r#   )r	   r!   r   r   r   r   r   r
   )r   ÚsizeÚdataÚdummyr   r   r   r   z   s     
z
Chunk.readc             C   s¦   | j rtdƒ‚| jrlyB| j| j }| jr:| jd@ r:|d }| j |d¡ | j| | _d S  tk
rj   Y nX x4| j| jk r t	d| j| j ƒ}|  
|¡}|snt‚qnW d S )NzI/O operation on closed filer#   i    )r	   r!   r   r   r   r
   r   r&   r   Úminr   r   )r   Únr-   r   r   r   r   ‘   s"    
z
Chunk.skipN)TTF)r   )r)   )Ú__name__Ú
__module__Ú__qualname__r   r   r   r    r"   r&   r   r   r   r   r   r   r   r   3   s   


r   N)r   r   r   r   r   Ú<module>3   r*   