B
    a2                 @   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topZnodeZ	interfacemethodsignalpropertyargZ
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parsersZexpatZParserCreateZ_parserhandle_commentZCommentHandlerhandle_char_dataZCharacterDataHandlerhandle_start_elementZStartElementHandlerhandle_end_elementZEndElementHandlerparsed_interfaces_cur_objectr   	STATE_TOPstatestate_stack_cur_object_stackdoc_comment_last_symbol_h_type_implies_unix_fdZParse)selfxml_datah_type_implies_unix_fd r   %/usr/share/glib-2.0/codegen/parser.py__init__'   s    



zDBusXMLParser.__init__Zbeginparamsbodyskipc             C   s  t j}|d}d}d}d}i }x|D ]}|}	| }|t jkrt|dkr|d}
|
dkr|dr|dt|d  }t j}qt j}nB|d|
 }||
d	 d  	 }t|dkr|d
| d 7 }t j}q(|t jkr|
drL|d}
|
dkr&t j}|s|d
7 }d}||	d 7 }n$|d|
 }||
d	 d  }|||< n2t j}t|dkr|sr|d
7 }d}||	d 7 }q(|t jkr(t|dkr|s|d
7 }d}||	d 7 }q(|r(|d7 }d}q(W |r|d7 }|dkr|| _|| _|| _d S )N
r   Fr   z: :r      z<para>z</para>@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_indexZrest_of_lineZparamZdocsr   r   r   r   A   sn    








zDBusXMLParser.handle_commentc             C   s   d S )Nr   )r   r5   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rP|tjkrDtj| _ ntj| _ n| j tjkr:|tjkrtj| _ t|d }|| _| j	
| nD|tjkrtj| _ t|d |d }| jj
| || _ntj| _ d|kr| j|d kr| j| j_d| jkr| jd }|| j_d| jk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
|	 |	| _n|tjkrtj| _ t|d |d |d }
| jj
|
 |
| _nF|tjkr@tj| _ t|d |d }| jj
| || _ntj| _ d|kr| j|d kr| j| j_d| jkr| jd  | j_np| j tjkr|tjkr,tj| _ d }d|kr|d }t ||d }|!dd	}|d	kr| jj"
| n(|d
kr| jj#
| nt$d%| || _nF|tjkrjtj| _ t|d |d }| jj
| || _ntj| _ | j|j&krd|kr|d | jkr| j|d  }|d k	r|| j_d| jkr| jd  | j_n"| j tjkr|tjkr:tj| _ d }d|kr|d }t ||d }| jj'
| || _nF|tjkrxtj| _ t|d |d }| jj
| || _ntj| _ | j|j&krd|kr|d | jkr| j|d  }|d k	r|| j_d| jkr| jd  | j_n| j tjkr@|tjkr6tj| _ t|d |d }| jj
| || _ntj| _ n| j tjkr|tjkrtj| _ t|d |d }| jj
| || _ntj| _ nh| 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   Z	Interfacer   appendSTATE_ANNOTATIONZ
AnnotationZannotationsr   r4   
doc_stringr3   Zdoc_string_briefr0   r<   STATE_METHODZMethodr   methodsSTATE_SIGNALZSignalZsignalsSTATE_PROPERTYZPropertyZ
properties	STATE_ARGZArggetZin_argsZout_argsr   formatr9   argsr   r   )r   r9   ZattrsZ	old_stateZold_cur_objectZifaceZannor;   r   r   ZpropZarg_namer
   r?   rG   r   r   r   r      s   















z"DBusXMLParser.handle_start_elementc             C   s   | j  | _| j | _d S )N)r   popr   r   r   )r   r9   r   r   r   r   (  s    z DBusXMLParser.handle_end_elementN)T)__name__
__module____qualname__r   rC   rD   rH   rJ   rK   rL   rF   rB   r   r(   r.   r2   r/   r   r   r   r   r   r   r   r   r      s&   
? %r   c             C   s   t | |}|jS )N)r   r   )r   r   parserr   r   r   parse_dbus_xml-  s    
rU   )Zxml.parsers.expatr   r   r   Zutilsr   r   rU   r   r   r   r   <module>   s     