o
    j                     @   sJ   d dl Z d dlT d dlmZ G dd dZG dd dZG dd	 d	ZdS )
    N)*)Listc                   @   8   e Zd Zdd Zdd Zdd Zedd Zd	d
 ZdS )MINIDUMP_MEMORY64_LISTc                 C   s   d | _ d | _g | _d S N)NumberOfMemoryRangesBaseRvaMemoryRangesself r   /root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/minidump/streams/Memory64ListStream.py__init__   s   
zMINIDUMP_MEMORY64_LIST.__init__c                 C   s   dt | jt    S N   )lenr	   MINIDUMP_MEMORY_DESCRIPTOR64get_sizer
   r   r   r   r      s   zMINIDUMP_MEMORY64_LIST.get_sizec                 C   sH   t | jjdddd}|| jjdddd7 }| jD ]}|| 7 }q|S N   littleF)	byteordersigned)r   r	   to_bytesr   )r   tmemranger   r   r   r      s
   
zMINIDUMP_MEMORY64_LIST.to_bytesc                 C   s   t  }t|  }| | tj tj| dddd|_tj| dddd|_	t
|jD ]}|jt|  |  }||krD |S q.|S r   )r   r   readseekioSEEK_CURint
from_bytesr   r   ranger	   appendr   parsetell)buffmmlbuffsize_curposr   r   r   r$      s   zMINIDUMP_MEMORY64_LIST.parsec                 C   sJ   d}|d| j  7 }|d| j 7 }t| j D ]}|t| j| d 7 }q|S )Nz== MINIDUMP_MEMORY64_LIST ==
zNumberOfMemoryRanges: %s
zBaseRva: %s

)r   r   r"   strr	   )r   r   ir   r   r   __str__,   s   zMINIDUMP_MEMORY64_LIST.__str__N	__name__
__module____qualname__r   r   r   staticmethodr$   r.   r   r   r   r   r      s    
r   c                   @   r   )r   c                 C   s   d | _ d | _d S r   )StartOfMemoryRangeDataSizer
   r   r   r   r   7   s   
z%MINIDUMP_MEMORY_DESCRIPTOR64.__init__c                 C   s   dS r   r   r
   r   r   r   r   ;   s   z%MINIDUMP_MEMORY_DESCRIPTOR64.get_sizec                 C   s,   | j jdddd}|| jjdddd7 }|S r   )r4   r   r5   r   r   r   r   r   r   >   s   z%MINIDUMP_MEMORY_DESCRIPTOR64.to_bytesc                 C   s:   t  }tj| dddd|_tj| dddd|_|S r   )r   r    r!   r   r4   r5   )r&   mdr   r   r   r$   C   s   z"MINIDUMP_MEMORY_DESCRIPTOR64.parsec                 C   s    dt | j }|d| j 7 }|S )Nz	Start: %szSize: %s)hexr4   r5   r6   r   r   r   r.   J   s   z$MINIDUMP_MEMORY_DESCRIPTOR64.__str__Nr/   r   r   r   r   r   6   s    
r   c                   @   s<   e Zd Zdd Zedd Zedd Zdd Zd	d
 ZdS )MinidumpMemory64Listc                 C   s
   g | _ d S r   )memory_segmentsr
   r   r   r   r   P   s   
zMinidumpMemory64List.__init__c                 C   sf   t  }|| jj t|| jj}t	|}|j
}|jD ]}|jt|| ||j7 }q|S r   )r9   r   LocationRvar   BytesIOr   r5   r   r$   r   r	   r:   r#   MinidumpMemorySegment
parse_full)dirr&   r   chunkmtlrvamodr   r   r   r$   S   s   

zMinidumpMemory64List.parsec           	         s|   t  }|| jjI d H  || jjI d H }t|}t	|}|j
}|jD ]}t||}|j| ||j7 }q(|S r   )r9   r   r;   r<   r   r5   r   r=   r   r$   r   r	   r>   r?   r:   r#   )	r@   r&   r'   
chunk_datarA   rB   rC   rD   msr   r   r   aparse_   s   


zMinidumpMemory64List.aparsec                 C   s0   g }| t  | jD ]	}| |  q|S r   )r#   r>   
get_headerr:   to_row)r   r   rD   r   r   r   to_tablem   s
   
zMinidumpMemory64List.to_tablec                 C   s   dt |   S )Nz== MinidumpMemory64List ==
)construct_tablerJ   r
   r   r   r   r.   t   s   zMinidumpMemory64List.__str__N)	r0   r1   r2   r   r3   r$   rG   rJ   r.   r   r   r   r   r9   O   s    

r9   )r   minidump.common_structstypingr   r   r   r9   r   r   r   r   <module>   s   +