o
    j:                     @   s6   d dl mZ d dlmZmZ d dlZG dd dZdS )    )MINIDUMP_TYPE)MinidumpHeaderFlagsException(MinidumpHeaderSignatureMismatchExceptionNc                   @   s<   e Zd Zdd Zdd Zedd Zedd Zd	d
 ZdS )MinidumpHeaderc                 C   s:   d| _ d | _d | _d | _d | _d| _d| _d| _d | _d S )NPMDMr   		SignatureVersionImplementationVersionNumberOfStreamsStreamDirectoryRvaCheckSumReservedTimeDateStampFlags)self r   /root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/minidump/header.py__init__   s   
zMinidumpHeader.__init__c                 C   s   | j d}|| jjdddd7 }|| jjdddd7 }|| jjdddd7 }|| jjdddd7 }|| jjdddd7 }|| jjdddd7 }|| j	jdddd7 }|| j
jjdddd7 }|S )Nascii   littleF	byteordersigned   )r   encoder	   to_bytesr
   r   r   r   r   r   r   valuer   tr   r   r   r      s   zMinidumpHeader.to_bytesc              
   C   s   t  }| d d d d |_|jdkrt|jtj| dddd|_tj| dddd|_tj| dddd|_	tj| dddd|_
tj| dddd|_tj| dddd|_tj| dddd|_zttj| dddd|_W |S  ty } ztdd }~ww )	Nr   r   r   r   Fr   zCould not parse header flags!)r   readdecoder   r   int
from_bytesr	   r
   r   r   r   r   r   r   r   	Exceptionr   )buffmher   r   r   parse   s$   

zMinidumpHeader.parsec                    s&   |  dI d H }t|}t|S )N    )r"   ioBytesIOr   r*   )abuffadatar'   r   r   r   aparse3   s   

zMinidumpHeader.aparsec                 C   s   d}|d| j  7 }|d| j 7 }|d| j 7 }|d| j 7 }|d| j 7 }|d| j 7 }|d| j 7 }|d	| j 7 }|d
| j 7 }|S )Nz== MinidumpHeader ==
zSignature: %s
zVersion: %s
zImplementationVersion: %s
zNumberOfStreams: %s
zStreamDirectoryRva: %s
zCheckSum: %s
zReserved: %s
zTimeDateStamp: %s
z
Flags: %s
r   r   r   r   r   __str__9   s   zMinidumpHeader.__str__N)	__name__
__module____qualname__r   r   staticmethodr*   r0   r1   r   r   r   r   r      s    

r   )minidump.constantsr   minidump.exceptionsr   r   r,   r   r   r   r   r   <module>   s    