o
    �õ±j`  ã                   @   s   d Z ddlZG dd„ dƒZdS )zß
the Value-List
==============

Offset	Size	Contents
0x0000	D-Word	Offset 1st Value
0x0004	D-Word	Offset 2nd Value
0x????	D-Word	Offset nth Value

To determine the number of values, you have to look at the
owner-nk-record!
é    Nc                   @   sP   e Zd Zdd„ Zeddd„ƒZeddd„ƒZedd	„ ƒZed
d„ ƒZdd„ Z	dS )Ú	ValueListc                 C   s
   g | _ d S )N)Úrecord_offsets)Úself© r   ú‘/root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/aiowinreg/filestruct/valuelist.pyÚ__init__   s   
zValueList.__init__Tc                 C   s2   |du r|   d| d¡ n|   |d¡ t | |¡S )NTé   r   )Úseekr   Úfrom_buffer)ÚreaderÚoffsetÚsizeÚis_filer   r   r   Úload_data_from_offset   s   zValueList.load_data_from_offsetc           	      Ã   s˜   �|du r|   d| d¡I d H  n	|   |d¡I d H  tƒ }t|ƒD ](}|  d¡I d H }t|tƒr;|\}}|d ur:|‚n|}|j tj	|ddd�¡ q!|S )NTr   r   é   Úlittle©Úsigned)
r	   r   ÚrangeÚreadÚ
isinstanceÚtupler   ÚappendÚintÚ
from_bytes)	r   r   r   r   ÚskÚ_ÚresÚtÚerrr   r   r   Úaload_data_from_offset   s   €
ÿz ValueList.aload_data_from_offsetc                 C   s   t  t | ¡|¡S )zB
		size is needed, because the struct doesnt contain its size!!
		)r   r
   ÚioÚBytesIO)Údatar   r   r   r   r   1   s   zValueList.from_bytesc                 C   s6   t ƒ }t|ƒD ]}|j tj|  d¡ddd�¡ q|S )Nr   r   Tr   )r   r   r   r   r   r   r   )Úbuffr   r   r   r   r   r   r
   8   s    zValueList.from_bufferc                 C   sn   d}| j D ]/}t| j | tƒr't| j | ƒD ]\}}|d||t|ƒf 7 }qq|d|t| j | ƒf 7 }q|S )Nz== NT Registry Value list ==
z   %s: %s: %sz	%s: %s 
)Ú__dict__r   ÚlistÚ	enumerateÚstr)r   r   ÚkÚiÚitemr   r   r   Ú__str__?   s   
ÿzValueList.__str__N)T)
Ú__name__Ú
__module__Ú__qualname__r   Ústaticmethodr   r    r   r
   r,   r   r   r   r   r      s    

r   )Ú__doc__r!   r   r   r   r   r   Ú<module>   s   