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   