ó
æö/Nc           @   sI   d  d l  m Z m Z d  d l m Z d e f d     YZ d   Z d S(   iĸĸĸĸ(   t
   ExpatErrort   ParserCreate(   t   IntrospectionParserExceptiont   _Parserc           B   s2   e  Z d Z d   Z d   Z d   Z d   Z RS(	   t   mapt   in_ifacet	   in_methodt   sigc         C   s(   i  |  _  d |  _ d |  _ d |  _ d  S(   Nt    (   R   R   R   R   (   t   self(    (    sA   /usr/lib/python2.7/dist-packages/dbus/_expat_introspect_parser.pyt   __init__   s    			c         C   sD   t  d d  } t | _ |  j | _ |  j | _ | j |  |  j S(   Ns   UTF-8t    (   R   t   Truet   buffer_textt   StartElementHandlert   EndElementHandlert   ParseR   (   R	   t   datat   parser(    (    sA   /usr/lib/python2.7/dist-packages/dbus/_expat_introspect_parser.pyt   parse%   s    	c         C   sĒ   |  j  s2 |  j r | d k r | d |  _  q nl |  j rX | d k rX | d |  _ nF |  j r | d k r | j d d  d k r |  j | d 7_ q n  d  S(   Nt	   interfacet   namet   methodt   argt	   directiont   int   type(   R   R   t   getR   (   R	   R   t
   attributes(    (    sA   /usr/lib/python2.7/dist-packages/dbus/_expat_introspect_parser.pyR   -   s    	c         C   sz   |  j  rv |  j r+ | d k r+ d |  _  qv |  j rv | d k rv |  j |  j |  j  d |  j <d |  _ d |  _ qv n  d  S(   NR   R   R   t   .(   R   R   R   R   (   R	   R   (    (    sA   /usr/lib/python2.7/dist-packages/dbus/_expat_introspect_parser.pyR   8   s    		(   s   maps   in_ifaces	   in_methods   sig(   t   __name__t
   __module__t	   __slots__R
   R   R   R   (    (    (    sA   /usr/lib/python2.7/dist-packages/dbus/_expat_introspect_parser.pyR      s
   			c         C   sG   y t    j |   SWn, t k
 rB } t d | j | f   n Xd S(   sß  Return a dict mapping ``interface.method`` strings to the
    concatenation of all their 'in' parameters, and mapping
    ``interface.signal`` strings to the concatenation of all their
    parameters.

    Example output::

        {
            'com.example.SignalEmitter.OneString': 's',
            'com.example.MethodImplementor.OneInt32Argument': 'i',
        }

    :Parameters:
        `data` : str
            The introspection XML. Must be an 8-bit string of UTF-8.
    s   %s: %sN(   R   R   t	   ExceptionR   t	   __class__(   R   t   e(    (    sA   /usr/lib/python2.7/dist-packages/dbus/_expat_introspect_parser.pyt   process_introspection_dataA   s    N(   t   xml.parsers.expatR    R   t   dbus.exceptionsR   t   objectR   R$   (    (    (    sA   /usr/lib/python2.7/dist-packages/dbus/_expat_introspect_parser.pyt   <module>   s   $