o
    j                     @   s>   d dl Z d dlT G dd dZG dd dZG dd dZdS )	    N)*c                   @   0   e Zd Zdd Zdd Zedd Zdd Zd	S )
MINIDUMP_MEMORY_LISTc                 C   s   d | _ g | _d S N)NumberOfMemoryRangesMemoryRangesself r
   /root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/minidump/streams/MemoryListStream.py__init__   s   
zMINIDUMP_MEMORY_LIST.__init__c                 C   s2   t | jjdddd}| jD ]}|| 7 }q|S N   littleF	byteordersigned)lenr   to_bytes)r	   tmemranger
   r
   r   r      s   
zMINIDUMP_MEMORY_LIST.to_bytesc                 C   sD   t  }tj| dddd|_t|jD ]}|jt	|  q|S r   )
r   int
from_bytesreadr   ranger   appendMINIDUMP_MEMORY_DESCRIPTORparse)buffmml_r
   r
   r   r      s
   zMINIDUMP_MEMORY_LIST.parsec                 C   s.   d}|d| j  7 }| jD ]}|t|7 }q|S )Nz== MINIDUMP_MEMORY_LIST ==
zNumberOfMemoryRanges: %s
)r   r   str)r	   r   r   r
   r
   r   __str__   s
   
zMINIDUMP_MEMORY_LIST.__str__N__name__
__module____qualname__r   r   staticmethodr   r"   r
   r
   r
   r   r   
   s    
r   c                   @   r   )
r   c                 C   s   d | _ d | _d | _d | _d S r   )StartOfMemoryRangeMemoryLocationDataSizeRvar   r
   r
   r   r   '   s   
z#MINIDUMP_MEMORY_DESCRIPTOR.__init__c                 C   s$   | j jdddd}|| j 7 }|S r   )r(   r   r)   r	   r   r
   r
   r   r   /   s   z#MINIDUMP_MEMORY_DESCRIPTOR.to_bytesc                 C   sB   t  }tj| dddd|_t| |_|jj|_|jj	|_	|S )N   r   Fr   )
r   r   r   r   r(   MINIDUMP_LOCATION_DESCRIPTORr   r)   r*   r+   )r   mdr
   r
   r   r   4   s   


z MINIDUMP_MEMORY_DESCRIPTOR.parsec                 C   s.   dt | j }|d| j 7 }|d| j 7 }|S )Nz	Start: %szSize: %szRva: %s)hexr(   r*   r+   r,   r
   r
   r   r"   F   s   z"MINIDUMP_MEMORY_DESCRIPTOR.__str__Nr#   r
   r
   r
   r   r   &   s    
r   c                   @   s4   e Zd Zdd Zedd Zedd Zdd Zd	S )
MinidumpMemoryListc                 C   s
   g | _ d S r   )memory_segmentsr   r
   r
   r   r   M   s   
zMinidumpMemoryList.__init__c                 C   sV   t  }|| jj t|| jj}t	|}|j
D ]}|jt|| q|S r   )r1   seekLocationr+   ioBytesIOr   r*   r   r   r   r2   r   MinidumpMemorySegment
parse_mini)dirr   r   chunkmtlmodr
   r
   r   r   P   s   

zMinidumpMemoryList.parsec                    sh   t  }|| jjI d H  || jjI d H }t|}t	|}|j
D ]}|jt|| q%|S r   )r1   r3   r4   r+   r   r*   r5   r6   r   r   r   r2   r   r7   r8   )r9   r   r   
chunk_datar:   r;   r<   r
   r
   r   aparseZ   s   


zMinidumpMemoryList.aparsec                 C   s$   d}| j D ]
}|t|d 7 }q|S )Nz== MinidumpMemoryList ==

)r2   r!   )r	   r   r<   r
   r
   r   r"   e   s   
zMinidumpMemoryList.__str__N)r$   r%   r&   r   r'   r   r>   r"   r
   r
   r
   r   r1   L   s    
	

r1   )r5   minidump.common_structsr   r   r1   r
   r
   r
   r   <module>   s
   &