
­­­­­­­­­­­­­­­­­­
<!DOCTYPE html>
<html>
3
UZ"                 @   sR   yd dl mZmZ W n ek
r0   eZeZY nX G dd dZG dd dZdS )    )
StringTypeIntTypec               @   s    e Zd ZdZdd Zdd ZdS )	HalDevicez5An object containing its udi, properties and childrenc             C   s@   |d | _ || _g | _d | _d|kr0|d | _nd | _d | _d S )Nzinfo.udizinfo.parent)udi
propertieschildrenclassification
parent_udiparent)selfr    r   /usr/lib/python3.6/haltree.py__init__"   s    
zHalDevice.__init__c             C   s6   t | jd x$| jj D ]\}}t d|d| qW d S )N:z    z ==> )printr   r   items)r   propertyvaluer   r   r   print_properties0   s    zHalDevice.print_propertiesN)__name__
__module____qualname____doc__r   r   r   r   r   r   r       s   r   c               @   sH   e Zd Zdd Zdd Zdd Zdd Zed	d
 Zdd Z	dd Z
dS )HalTreec             C   s   d | _ g | _d S )N)headno_parent_yet)r   r   r   r   r   9   s    zHalTree.__init__c             C   sL   |j r8| j|j }|r*|jj| ||_q>| jj| n|| _| j| d S )N)r	   _HalTree__find_noder   appendr
   r   r   _HalTree__get_lost_children)r   
hal_devicer
   r   r   r   add>   s    zHalTree.addc             C   sR   g }g }| j d d  }x6|D ].}|j|jkr||_|jj| | j j| qW d S )N)r   r	   r   r
   r   r   remove)r   r   Z
found_listZindexesZno_parent_yet_copyZdevr   r   r   Z__get_lost_childrenM   s    
zHalTree.__get_lost_childrenc             C   sD   | j rtj| j |}|r|S x"| jD ]}tj||}|r$|S q$W dS )zo
        This takes a node in the HalDevice tree and returns the HalDevice with
        the given udi.
        N)r   r   _HalTree__find_node_workerr   )r   r   nodeZ
found_noder   r   r   Z__find_nodeW   s    zHalTree.__find_nodec             C   s6   | j |kr| S x"| jD ]}tj||}|r|S qW d S )N)r   r   r   r"   )r#   r   Zdeviceresr   r   r   Z__find_node_workerg   s    
zHalTree.__find_node_workerc             C   s   | j | jd d S )N )_HalTree__print_dev_treer   )r   r   r   r   
print_treeq   s    zHalTree.print_treec             C   s   t ||j t |d|j x|jj D ]\}}t|tkrz|j rbt |d d|tt	|f  qt |d d||f  q&t|t
krt |d d|tt	|f  q&t |d d||f  q&W t  x|jD ]}| j||d  qW d S )NzCLASS:z    z%-20s ==> %s)r   r   r   r   r   typer   isdigithexintr   r   r&   )r   r#   indentnamer   Zchildr   r   r   Z__print_dev_treet   s      zHalTree.__print_dev_treeN)r   r   r   r   r    r   r   staticmethodr"   r'   r&   r   r   r   r   r   8   s   

r   N)typesr   r   ImportErrorbytesr+   r   r   r   r   r   r   <module>   s   
