o
    Aæd2  ã                   @   s:   d dl ZddlmZ ddlmZ G dd„ dƒZdd„ ZdS )	é    Né   )Ú	dbustypes)Úprint_errorc                   @   sj   e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zddd„ZdZdZdZdZdd„ Zdd„ Zdd„ Zdd„ ZdS )ÚDBusXMLParserÚtopÚnodeZ	interfaceÚmethodÚsignalÚpropertyÚargÚ
annotationZignoredTc                 C   sx   t jj ¡ | _| j| j_| j| j_| j	| j_
| j| j_g | _d | _tj| _g | _d | _g | _d| _|| _| j |¡ d S )NÚ )ÚxmlÚparsersÚexpatÚParserCreateÚ_parserÚhandle_commentÚCommentHandlerÚhandle_char_dataÚCharacterDataHandlerÚhandle_start_elementÚStartElementHandlerÚhandle_end_elementÚEndElementHandlerÚparsed_interfacesÚ_cur_objectr   Ú	STATE_TOPÚstateÚstate_stackÚ_cur_object_stackÚdoc_comment_last_symbolÚ_h_type_implies_unix_fdÚParse)ÚselfÚxml_dataÚh_type_implies_unix_fd© r'   úW/home/ych/rk3568/buildroot/output/rockchip_rk3568/host/share/glib-2.0/codegen/parser.pyÚ__init__'   s   



zDBusXMLParser.__init__ÚbeginÚparamsÚbodyÚskipc                 C   sÚ  t j}| d¡}d}d}d}i }|D ]Ã}|}	| ¡ }|t jkrft|ƒdkre| d¡}
|
dkrE| d¡rA|dt|ƒd … }t j}qt j}q|d|
… }||
d	 d …  	¡ }t|ƒdkrb||› d7 }t j}q|t jkr·| 
d
¡rŸ| d¡}
|
dkrŒt j}|s„|d7 }d}||	› d7 }q|d|
… }||
d	 d … }|||< qt j}t|ƒdkr¶|s°|d7 }d}||	d 7 }q|t jkrÕt|ƒdkrÍ|sÆd}||	d 7 }q|rÕ|d7 }d}q|rÜ|d7 }|dkrë|| _|| _|| _d S d S )NÚ
r   Fr   z: éÿÿÿÿú:r   é   ú@T)r   ÚCOMMENT_STATE_BEGINÚsplitÚlstripÚlenÚfindÚendswithÚCOMMENT_STATE_PARAMSÚCOMMENT_STATE_SKIPÚstripÚ
startswithÚCOMMENT_STATE_BODYr!   Údoc_comment_paramsÚdoc_comment_body)r$   ÚdataZcomment_stateÚlinesÚsymbolr,   Zin_parar+   ÚlineZ	orig_lineZcolon_indexÚrest_of_lineÚparamÚdocsr'   r'   r(   r   A   st   



€



€
€
ýzDBusXMLParser.handle_commentc                 C   s   d S ©Nr'   )r$   r@   r'   r'   r(   r      s   zDBusXMLParser.handle_char_datac                 C   s
  | j }| j}| j tjkrtj| _ nå| j tjkr)|tjkr#tj| _ nÔtj| _ nÎ| j tjkr™|tjkrItj| _ t |d ¡}|| _| j	 
|¡ n"|tjkrgtj| _ t |d |d ¡}| jj 
|¡ || _ntj| _ d|v r—| j|d kr—| j| j_d| jv r‰| jd }|| j_d| jv r—| jd  ¡ | j_n^| j tjkr@|tjkr¾tj| _ tj|d | jd}| jj 
|¡ || _n_|tjkrÙtj| _ t |d ¡}	| jj 
|	¡ |	| _nD|tjkrútj| _ t |d |d |d ¡}
| jj 
|
¡ |
| _n#|tjkrtj| _ t |d |d ¡}| jj 
|¡ || _ntj| _ d|v r>| j|d kr>| j| j_d| jv r>| jd  ¡ | j_n·| j tjkrç|tjkrtj| _ d }d|v r\|d }t  ||d ¡}| !dd	¡}|d	krw| jj" 
|¡ n|d
kr„| jj# 
|¡ nt$d %|¡ƒ || _n#|tjkr®tj| _ t |d |d ¡}| jj 
|¡ || _ntj| _ | j|j&kråd|v rå|d | jv rå| j|d  }|d urÖ|| j_d| jv rå| jd  ¡ | j_n| j tjkrm|tjkrtj| _ d }d|v r|d }t  ||d ¡}| jj' 
|¡ || _n#|tjkr5tj| _ t |d |d ¡}| jj 
|¡ || _ntj| _ | j|j&krld|v rl|d | jv rl| j|d  }|d ur]|| j_d| jv rl| jd  ¡ | j_nŠ| j tjkr˜|tjkr“tj| _ t |d |d ¡}| jj 
|¡ || _ndtj| _ n_| j tjkrÃ|tjkr¾tj| _ t |d |d ¡}| jj 
|¡ || _n9tj| _ n4| j tjkrî|tjkrétj| _ t |d |d ¡}| jj 
|¡ || _ntj| _ n	t$d %| j |¡ƒ | j( 
|¡ | j) 
|¡ d S )NÚnameÚvalueÚshort_descriptionÚsince)r&   ÚtypeÚaccessÚ	directionÚinÚoutzInvalid direction "{}"z:Unhandled state "{}" while entering element with name "{}")*r   r   r   ÚSTATE_IGNOREDr   Ú
STATE_NODEÚSTATE_INTERFACEr   Ú	Interfacer   ÚappendÚSTATE_ANNOTATIONÚ
AnnotationÚannotationsr!   r?   Ú
doc_stringr>   Údoc_string_briefr;   rK   ÚSTATE_METHODÚMethodr"   ÚmethodsÚSTATE_SIGNALÚSignalÚsignalsÚSTATE_PROPERTYÚPropertyÚ
propertiesÚ	STATE_ARGÚArgÚgetÚin_argsÚout_argsr   ÚformatrH   Úargsr   r    )r$   rH   ÚattrsZ	old_stateZold_cur_objectÚifaceÚannorJ   r   r	   ÚpropÚarg_namer   rN   rY   r'   r'   r(   r   ƒ   s   






€

ÿ


€



ÿþ€

ÿþ€


ÿÿz"DBusXMLParser.handle_start_elementc                 C   s   | j  ¡ | _| j ¡ | _d S rG   )r   Úpopr   r    r   )r$   rH   r'   r'   r(   r   '  s   z DBusXMLParser.handle_end_elementN)T)Ú__name__Ú
__module__Ú__qualname__r   rR   rS   r[   r^   ra   rd   rV   rQ   r)   r3   r9   r=   r:   r   r   r   r   r'   r'   r'   r(   r      s(    
> %r   c                 C   s   t | |ƒ}|jS rG   )r   r   )r%   r&   Úparserr'   r'   r(   Úparse_dbus_xml,  s   
ru   )Úxml.parsers.expatr   r   r   Úutilsr   r   ru   r'   r'   r'   r(   Ú<module>   s     