
    @;fD                         d dl Z d dlZd dlZd dlmZ ddlmZ ddlmZ ddlmZ ddlm	Z	 ddlm
Z
 dd	lmZ dd
lmZ ddlmZmZ d Zd Zd Zd Zed        Zd Zd Zd Zedk(  r e        yy)    N)contextmanager   )config)	dbustypes)parser)codegen)codegen_docbook)
codegen_md)codegen_rst)print_errorprint_warningc                 8    | D ]  }|j                   |k(  s|c S  y N)name)arg_listarg_nameas      &share/glib-2.0/codegen/codegen_main.pyfind_argr   '   s'     66XH     c                 L    | j                   D ]  }|j                  |k(  s|c S  y r   )methodsr   )ifacemethodms      r   find_methodr   .   +    ]] 66VH r   c                 L    | j                   D ]  }|j                  |k(  s|c S  y r   )signalsr   )r   signalr   s      r   find_signalr!   5   r   r   c                 L    | j                   D ]  }|j                  |k(  s|c S  y r   )
propertiesr   )r   propr   s      r   	find_propr%   <   s,     66T>H r   c              #      K   | | dk(  rt         j                   y t        | d      5 }| d d d        y # 1 sw Y   y xY ww)N-w)sysstdoutopen)filenameoutfiles     r   file_or_stdoutr.   C   sA     8s?jj(C  	GM	 	 	s   'A7	AA Ac                    d }| D ]  }	|	j                   |k(  s|	} n |t        dj                  |             d }
|r}t        ||      }|t        dj                  ||             |rOt	        |j
                  |      }|4t	        |j                  |      }|t        dj                  |||             |}
n|}
n|ret        ||      }|t        dj                  ||             |r7t	        |j                  |      }|t        dj                  |||             |}
n3|}
n0|r,t        ||      }|t        dj                  ||             |}
n|}
|
j                  j                  dt        j                  ||             y )NzNo interface "{}"z No method "{}" on interface "{}"z,No arg "{}" on method "{}" on interface "{}"z No signal "{}" on interface "{}"z,No arg "{}" on signal "{}" on interface "{}"z"No property "{}" on interface "{}"r   )r   r   formatr   r   in_argsout_argsr!   argsr%   annotationsinsertr   
Annotation)
iface_listr   r   r    r$   argkeyvalue	iface_obji
target_obj
method_objarg_obj
signal_objprop_objs                  r   apply_annotationrB   L   s   I 66U?I
 '..u56J F3
:AA&%PQz1137G":#6#6<?FMM
 !J#J	 F3
:AA&%PQz4GBIIVU
 !J#J	Y-<CCD%PQ

!!!Y%9%9#u%EFr   c                    |D ]h  \  }}}|j                  d      }|dk7  rl|d| }||dz   d  }|j                  d      }|dk7  r6||dz   d  }|d| }|j                  d      }|d| }t        | |d |d |||       wt        | |d |d d ||       |j                  d      }|dk7  r |d| }||dz   d  }	t        | |d d |	d ||       |j                  d	      }|dk7  r|d| }
|
j                  d
      }|
d| }|
|dz   d  }|j                  d      }|dk7  r2||dz   d  }|j                  d      }|d| }t        | ||d d |||       At        | ||d d d ||       U|}t        | |d d d d ||       k y )Nz::r      [r   ]:z().)findrB   rfind)r7   annotation_listwhatr9   r:   posr   r    r8   r$   combinedr   s               r   apply_annotationsrP      s   + 1c5iio"93KE#')_F++c"CbyS1WY'#hhsm!Cj UD&$SRWX tVT4e ))C.CbyQsC!GI UD$dCQVWiio"9#Ac{H"..-C$QsOE%cAgi0F))C.Cby"379o!hhsm!!Cj(&vtT3U )&vtT4e
 !E$"E4tT3_1r   c                  |   t        j                  d      } | j                  dddd       | j                  ddd	g t         j                  
       | j                  dddd       | j                  dddd       | j                  ddd       | j                  dg ddd       | j                  ddd       | j                  d dd!       | j                  d"dd#       | j                  d$dd%       | j                  d&d'd	d(d)*       | j                  d+d,d-       | j                  d.d,d/       | j                  d0d12       | j                  d3d42       | j                  d5d62       | j	                         }|j                  d7dd8       |j                  d9dd:       |j                  d;dd<       |j                  d=dd>       |j                  d?dd@       | j	                         }|j                  dAddB       |j                  dCdDddE       | j                         }t        |j                        dFkD  rt        dG       |j                  $|j                  |j                  |j                  |j                  t        dH       |j                  r|j                  dIz   }t        j                   j#                  |j$                  |      }dJ|_        t        j                   j#                  |j$                  |j                  dKz         }dJ|_        n|j&                  rD|j                  t        dL       |j                  }t        j                   j+                  |      }nq|j(                  ro|j                  t        dM       |j                  }|dNk(  rd}n9t        j                   j-                  t        j                   j+                  |            dF   dIz   }n|j.                  rZ|j                  t        dO       |j0                  rt        dP       |j                  }t        j                   j+                  |      }n|j2                  r|j                  t        dQ       |j0                  rt        dR       |j                  }|dNk(  rd}nBt        j                   j-                  t        j                   j+                  |            dF   dIz   }|j4                  r	 |j4                  j7                  dSd'      }t9        |dF         t9        t        |      dTkD  r|dT   ndF      f}t9        t        |      dUkD  r|dU   ndF      }dWk  r't        dXj?                  |j4                               ndW}|j@                  rh	 |j@                  j7                  dSd'      }t9        |dF         t9        t        |      dTkD  r|dT   ndF      f}	t9        t        |      dUkD  r|dU   ndF      }n tB        jD                  tB        jF                  f}	|jH                  #|jJ                  s|jL                  rt        dZ       	dF   |	dT   |	dT   dUz  z   f}	|	|k  rt        d[j?                  ||	             g }
g }tO        |jP                  |j                  z         D ]  }tS        |d\      5 }|jU                         }d d d        tW        jX                  |d]k\  ^      }|
j[                  |       |j]                  t        j                   j+                  |              |j^                  ta        |
|j^                         |
D ](  }|jc                  |jd                  |jf                         * |j                  }ti        jj                  |
      }|r|jm                  ||j$                         |j                  }to        jp                  |
      }|r|jm                  ||j$                         |j                  }ts        jt                  |
      }|r|jm                  ||j$                         |j&                  rtw              5 }ty        jz                  |
|jf                  |j0                  |j|                  ||j~                  ||jH                  |jJ                  |      }|jm                          d d d        |j(                  r_tw              5 }ty        j                  |
|jf                  |j0                  ||||jL                  |	      }|jm                          d d d        |j.                  ritw              5 }ty        j                  |
|jf                  ||j~                  ||jH                  |jJ                  |	      }|jm                          d d d        |j2                  rStw              5 }ty        j                  |
|jf                  |||jL                  |      }|jm                          d d d        t        j                  dF       y # t:        t<        f$ r( t        dVj?                  |j4                               Y w xY w# t:        t<        f$ r( t        dYj?                  |j@                               Y gw xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w)_Nz&D-Bus code and documentation generator)descriptionfilesFILE+zD-Bus introspection XML file)metavarnargshelpz--xml-filesappend)rV   actiondefaultrX   z--interface-prefixPREFIX z<String to strip from D-Bus interface names for code and docs)rV   r[   rX   z--c-namespace	NAMESPACEz)The namespace to use for generated C codez--c-generate-object-manager
store_truezCGenerate a GDBusObjectManagerClient subclass when generating C code)rZ   rX   z--c-generate-autocleanup)noneobjectsallra   zGenerate autocleanup support)choicesr[   rX   z--generate-docbookOUTFILESz2Generate Docbook in OUTFILES-org.Project.IFace.xml)rV   rX   z--generate-mdz2Generate Markdown in OUTFILES-org.Project.IFace.mdz--generate-rstz;Generate reStructuredText in OUTFILES-org.Project.IFace.rstz--pragma-oncez(Use "pragma once" as the inclusion guardz
--annotate   zWHAT KEY VALUEz*Add annotation (may be used several times))rW   rZ   rV   rX   z--glib-min-requiredVERSIONzMMinimum version of GLib to be supported by the outputted code (default: 2.30)z--glib-max-allowedzXMaximum version of GLib to be used by the outputted code (default: current GLib version)z--symbol-decoratorzSMacro used to decorate a symbol in the outputted header, possibly to export symbols)rX   z--symbol-decorator-headerzHAdditional header required for decorator specified by --symbol-decoratorz--symbol-decorator-definezHAdditional define required for decorator specified by --symbol-decoratorz--generate-c-codez Generate C code in OUTFILES.[ch]z--headerzGenerate C headersz--bodyzGenerate C codez--interface-info-headerz$Generate GDBusInterfaceInfo C headerz--interface-info-bodyz"Generate GDBusInterfaceInfo C codez--outputz$Write output into the specified filez--output-directoryOUTDIRz"Location to output generated filesr   zHThe "--xml-files" option is deprecated; use positional arguments insteadzcUsing --generate-c-code or --generate-{docbook,md,rst} and --output at the same time is not allowedz.hTz.cz Using --header requires --outputzUsing --body requires --outputr'   z/Using --interface-info-header requires --outputzH--c-generate-object-manager is incompatible with --interface-info-headerz-Using --interface-info-body requires --outputzF--c-generate-object-manager is incompatible with --interface-info-bodyrI   r   rE   u0   Unrecognized --glib-min-required string ‘{}’)rE      uD   Invalid --glib-min-required string ‘{}’: minimum version is 2.30u/   Unrecognized --glib-max-allowed string ‘{}’z\--symbol-decorator-define and --symbol-decorator-header must be used with --symbol-decoratorz`Invalid versions: --glib-min-required ({}) must be less than or equal to --glib-max-allowed ({})rb)rE   @   )h_type_implies_unix_fd)EargparseArgumentParseradd_argumentSUPPRESSadd_mutually_exclusive_group
parse_argslen	xml_filesr   generate_c_codegenerate_docbookgenerate_mdgenerate_rstoutputr   ospathjoinoutput_directoryheaderbodybasenamesplitextinterface_info_headerc_generate_object_managerinterface_info_bodyglib_min_requiredsplitint
ValueError
IndexErrorr0   glib_max_allowedr   MAJOR_VERSIONMINOR_VERSIONsymbol_decoratorsymbol_decorator_headersymbol_decorator_definesortedrS   r+   readr   parse_dbus_xmlextendrY   annotaterP   post_processinterface_prefixc_namespacer	   DocbookCodeGeneratorgenerater
   MdCodeGeneratorr   RstCodeGeneratorr.   r   HeaderCodeGeneratorc_generate_autocleanuppragma_onceCodeGenerator InterfaceInfoHeaderCodeGeneratorInterfaceInfoBodyCodeGeneratorr)   exit)
arg_parsergroupr3   header_nameh_filec_filepartsr   _r   
all_ifacesinput_files_basenamesfnamefxml_dataparsed_ifacesr<   docbookdocbook_genmdmd_genrstrst_genr-   gens                            r   codegen_mainr      s
   ((<J s1O      K	   8	   %R  
 "*+	   A  
 A  
 J  
 7  
  9      *   %  
 #  
 #   335E	Z6X   
z,=QR	x;LM	!3  
 
1   335E	F)O   
1	     "D
4>>QV	

 	(  ,'(
++
!7	

 **T1d33[Ad33T5I5ID5PQ		;;:;gg&&v.	;;89S=K''**277+;+;F+CDQG$NK		#	#;;IJ))*
 gg&&v.		!	!;;GH))(
 S=K''**277+;+;F+CDQG$NK
 
	**00a8E!$U1XE
QE!HTU0V WE
QE!HA6A w&""(&)?)?"@
 $ 
	))//Q7E #E!Hss5zA~58ST/UVE
QE!HA6A #00&2F2FG $''4+G+G2 	/2Q67
 ++<<BF!#3=	
 J

T^^34 >% 	 !vvxH	 --.?7.J
 	-($$RWW%5%5e%<=> }} *dmm4 @	t,,d.>.>?@ ##G!66zBKWd&;&;<			B''
3F	D112


C**:6G
d334{{F# 	w--  ..++%  !%%,,C LLN	  yyF# 	w''  ..%!,,
C LLN	 !!F# 	w::  %  !%%,,
C LLN	 F# 
	w88  %!,,C LLN
	 HHQKe J' 	BII**	, J' 	AHH))	F	  	 <	 	"	 		 	
	 
	sf   -A&h
 A&i *i>A,jAj7Aj%,A j2
3i i3i;:i;>j	jj"%j/2j;__main__)rl   ry   r)   
contextlibr   r]   r   r   r   r   r	   r
   r   utilsr   r   r   r   r!   r%   r.   rB   rP   r   __name__ r   r   <module>r      s{   0  	 
 %        -  3Gl3lVr
 zN r   