
[1                 @   s[   d  d l  Z  d  d l Z d d l m Z d d l m Z Gd d   d  Z d d   Z d S)	    N   )	dbustypes)print_errorc               @   s   e  Z d  Z d Z d Z d Z d Z d Z d Z d Z	 d Z
 d	 Z 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ignoredc             C   s   t  j j j   |  _ |  j |  j _ |  j |  j _ |  j	 |  j _
 |  j |  j _ g  |  _ d  |  _ t j |  _ g  |  _ d  |  _ g  |  _ d |  _ |  j j |  d  S)N )xmlZ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_symbolZParse)selfxml_data r    share/glib-2.0/codegen/parser.py__init__'   s    						zDBusXMLParser.__init__Zbeginparamsbodyskipc             C   s  t  j } | j d  } d } d } d } i  } x1| D])} | }	 | j   } | t  j k r&t |  d k r`| j d  }
 |
 d k r | j d  r | d t |  d  } t  j } q#t  j } q`| d |
  } | |
 d d   j	   } t |  d k r| d	 | d
 7} t  j } q7 | t  j k r| j
 d  r| j 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} q7 | t  j k r7 t |  d k rJ| s9| d	 7} d } | |	 d 7} q7 | r7 | d
 7} d } q7 W| rt| d
 7} | d k r| |  _ | |  _ | |  _ d  S)N
r   Fr   z: r   :   z<para>z</para>@Tr$   )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linesZsymbolr   Zin_parar   lineZ	orig_lineZcolon_indexZrest_of_lineZparamZdocsr   r   r   r   >   sn    		
	




		zDBusXMLParser.handle_commentc             C   s   d  S)Nr   )r   r2   r   r   r   r   }   s    zDBusXMLParser.handle_char_datac             C   s'  |  j  } |  j } |  j  t j k r3 t j |  _  n|  j  t j k rr | t j k rc t j |  _  qt j |  _  n|  j  t j k r| t j k r t j |  _  t j | d  } | |  _ |  j	 j
 |  n` | t j k r"t j |  _  t j | d | d  } |  j 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   |  j _ nT|  j  t j k ro| t j k rt j |  _  t j | d  } |  j j j
 |  | |  _ n| t j k r[t j |  _  t j | d  }	 |  j j j
 |	  |	 |  _ n | t j k rt j |  _  t j | d | d | d  }
 |  j j j
 |
  |
 |  _ n` | t j k r
t j |  _  t j | d | d  } |  j j j
 |  | |  _ n t j |  _  d | k r|  j | d k r|  j |  j _ d |  j k r|  j d j   |  j _ n|  j  t j k r(| t j k rCt j |  _  d  } d | k r| d } t j | | d  } | j  d d  } | d k r|  j j! j
 |  n5 | d	 k r$|  j j" j
 |  n t# d
 j$ |   | |  _ n` | t j k rt j |  _  t j | d | d  } |  j j j
 |  | |  _ n t j |  _  |  j | j% k rd | k r| d |  j k r|  j | d } | d  k r| |  j _ d |  j k r|  j d j   |  j _ n|  j  t j k r| t j k rt j |  _  d  } d | k rq| d } t j | | d  } |  j j& j
 |  | |  _ n` | t j k rt j |  _  t j | d | d  } |  j j j
 |  | |  _ n t j |  _  |  j | j% k rd | k r| d |  j k r|  j | d } | d  k r`| |  j _ d |  j k r|  j d j   |  j _ nx|  j  t j k r | t j k rt j |  _  t j | d | d  } |  j j j
 |  | |  _ qt j |  _  n|  j  t j k ru| t j k rft j |  _  t j | d | d  } |  j j j
 |  | |  _ qt j |  _  n |  j  t j k r| t j k rt j |  _  t j | d | d  } |  j j j
 |  | |  _ qt j |  _  n t# d j$ |  j  |   |  j' j
 |  |  j( j
 |  d  S)Nnamevalueshort_descriptionsince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   r1   
doc_stringr0   Zdoc_string_briefr-   r8   STATE_METHODZMethodZmethodsSTATE_SIGNALZSignalZsignalsSTATE_PROPERTYZPropertyZ
properties	STATE_ARGZArggetZin_argsZout_argsr   formatr5   argsr   r   )r   r5   attrsZ	old_stateZold_cur_objectZifaceZannor7   r   r   ZpropZarg_namer
   r;   rC   r   r   r   r      s    			!

z"DBusXMLParser.handle_start_elementc             C   s(   |  j  j   |  _ |  j j   |  _ d  S)N)r   popr   r   r   )r   r5   r   r   r   r     s    z DBusXMLParser.handle_end_elementN)__name__
__module____qualname__r   r?   r@   rD   rE   rF   rG   rB   r>   r   r%   r+   r/   r,   r   r   r   r   r   r   r   r   r      s$   ?r   c             C   s   t  |   } | j S)N)r   r   )r   parserr   r   r   parse_dbus_xml#  s    rQ   )	sysZxml.parsers.expatr   r   r   Zutilsr   r   rQ   r   r   r   r   <module>   s    