o
    MKd2                     @   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'   %/usr/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rt 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rt|dkr|sd}||	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| _ nt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rtj| _ tj|d | jd}| jj
| || _n_|tjkrtj| _ t|d }	| jj
|	 |	| _nD|tjkrt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rtj| _ t|d |d }| jj
| || _ntj| _ | j|j&krd|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rtj| _ t|d |d }| jj
| || _ndtj| _ n_| j tjkr|tjkrtj| _ t|d |d }| jj
| || _n9tj| _ n4| j tjkr|tjkrt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     