
    *)hLD                         S SK r S SKrS SKrS SKJr  SSKJr  SSKJr  SSKJr  SSKJ	r	  SSKJ
r
  SS	KJr  SS
KJr  SSKJrJr  S rS rS rS r\S 5       rS rS rS r\S:X  a  \" 5         gg)    N)contextmanager   )config)	dbustypes)parser)codegen)codegen_docbook)
codegen_md)codegen_rst)print_errorprint_warningc                 >    U  H  nUR                   U:X  d  M  Us  $    g N)name)arg_listarg_nameas      +/usr/share/glib-2.0/codegen/codegen_main.pyfind_argr   )   s"    66XH      c                 R    U R                    H  nUR                  U:X  d  M  Us  $    g r   )methodsr   )ifacemethodms      r   find_methodr   0   &    ]]66VH  r   c                 R    U R                    H  nUR                  U:X  d  M  Us  $    g r   )signalsr   )r   signalr   s      r   find_signalr!   7   r   r   c                 R    U R                    H  nUR                  U:X  d  M  Us  $    g r   )
propertiesr   )r   propr   s      r   	find_propr%   >   s'    66T>H  r   c              #      #    U b  U S:X  a  [         R                  v   g [        U S5       nUv   S S S 5        g ! , (       d  f       g = f7f)N-w)sysstdoutopen)filenameoutfiles     r   file_or_stdoutr.   E   s7     8s?jj(C GM !  s   )A
9	A

AA
c                 :   S nU  H  n	U	R                   U:X  d  M  U	n  O   Uc  [        SR                  U5      5        S n
U(       a  [        X5      nUc  [        SR                  X!5      5        U(       aP  [	        UR
                  U5      nUc4  [	        UR                  U5      nUc  [        SR                  XRU5      5        Un
OUn
OU(       ai  [        X5      nUc  [        SR                  X15      5        U(       a7  [	        UR                  U5      nUc  [        SR                  XSU5      5        Un
O7Un
O4U(       a+  [        X5      nUc  [        SR                  XA5      5        Un
OUn
U
R                  R                  S[        R                  " Xg5      5        g )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   N   s|   I66U?I 
 '..u56J 3
:AA&PQz1137G":#6#6<?FMM
 !J#J	 3
:AA&PQz4GBIIU
 !J#J	Y-<CCDPQ

!!!Y%9%9#%EFr   c                    U GHa  u  p#nUR                  S5      nUS:w  ai  USU nX%S-   S  nUR                  S5      nUS:w  a4  XuS-   S  nUSU nUR                  S5      nUSU n[        XS US XU5        Mu  [        XS US S X45        M  UR                  S5      nUS:w  a  USU nX%S-   S  n	[        XS S U	S X45        M  UR                  S	5      nUS:w  a|  USU n
U
R                  S
5      nU
SU nXS-   S  nUR                  S5      nUS:w  a0  X%S-   S  nUR                  S5      nUSU n[        XUS S XU5        GM<  [        XUS S S X45        GMO  Un[        XS S S S X45        GMd     g )Nz::r      [r   ]:z().)findrB   rfind)r7   annotation_listwhatr9   r:   posr   r    r8   r$   combinedr   s               r   apply_annotationsrP      s   +5iio"93KE')_F++c"Cby1WY'#hhsm!Cj D&$RWX tVT4 ))C.CbyQs!GI D$dCWiio"9#Ac{H"..-C$QsOE%Agi0F))C.Cby"79o!hhsm!!Cj(&vtT3U )&vtT4
 !E$"4tT3_ ,r   c                     [         R                  " SS9n U R                  SSSSS9  U R                  SSS	/ [         R                  S
9  U R                  SSSSS9  U R                  SSSSS9  U R                  SSSS9  U R                  S/ SQSSS9  U R                  SSSS9  U R                  S SS!S9  U R                  S"SS#S9  U R                  S$SS%S9  U R                  S&S'S	S(S)S*9  U R                  S+S,S-S9  U R                  S.S,S/S9  U R                  S0S1S29  U R                  S3S4S29  U R                  S5S6S29  U R	                  5       nUR                  S7SS8S9  UR                  S9SS:S9  UR                  S;SS<S9  UR                  S=SS>S9  UR                  S?SS@S9  U R	                  5       nUR                  SASSBS9  UR                  SCSDSSES9  U R                  5       n[        UR                  5      SF:  a  [        SG5        UR                  c'  UR                  c  UR                  c  UR                  b  UR                  b  [        SH5        UR                  (       a  UR                  SI-   n[        R                   R#                  UR$                  U5      nSJUl        [        R                   R#                  UR$                  UR                  SK-   5      nSJUl        GOUR&                  (       aE  UR                  c  [        SL5        UR                  n[        R                   R+                  U5      nGOUR(                  (       ar  UR                  c  [        SM5        UR                  nUSN:X  a  SnGOQ[        R                   R-                  [        R                   R+                  U5      5      SF   SI-   nGOUR.                  (       a`  UR                  c  [        SO5        UR0                  (       a  [        SP5        UR                  n[        R                   R+                  U5      nOUR2                  (       a  UR                  c  [        SQ5        UR0                  (       a  [        SR5        UR                  nUSN:X  a  SnOB[        R                   R-                  [        R                   R+                  U5      5      SF   SI-   nUR4                  (       a   UR4                  R7                  SSS'5      n[9        USF   5      [9        [        U5      ST:  a  UST   OSF5      4n[9        [        U5      SU:  a  USU   OSF5      nWSW:  a$  [        SXR?                  UR4                  5      5        OSWnUR@                  (       aj   UR@                  R7                  SSS'5      n[9        USF   5      [9        [        U5      ST:  a  UST   OSF5      4n	[9        [        U5      SU:  a  USU   OSF5      nO [B        RD                  [B        RF                  4n	URH                  c-  URJ                  (       d  URL                  (       a  [        SZ5        W	SF   U	ST   U	ST   SU-  -   4n	X:  a  [        S[R?                  Xy5      5        / n
/ n[O        URP                  UR                  -   5       H  n[S        US\5       nURU                  5       nS S S 5        [V        RX                  " WUS]:  S^9nU
R[                  U5        UR]                  [        R                   R+                  U5      5        M     UR^                  b  [a        XR^                  5        U
 H)  nURc                  URd                  URf                  5        M+     UR                  n[h        Rj                  " U
5      nU(       a  URm                  UUR$                  5        UR                  n[n        Rp                  " U
5      nU(       a  URm                  UUR$                  5        UR                  n[r        Rt                  " U
5      nU(       a  URm                  UUR$                  5        UR&                  (       a  [w        W5       n[x        Rz                  " U
URf                  UR0                  UR|                  WUUR~                  UURH                  URJ                  U5      nURm                  5         S S S 5        UR(                  (       a`  [w        W5       n[x        R                  " U
URf                  UR0                  WUUUURL                  U5	      nURm                  5         S S S 5        UR.                  (       aj  [w        W5       n[x        R                  " U
URf                  WUUR~                  UURH                  URJ                  U5	      nURm                  5         S S S 5        UR2                  (       aT  [w        W5       n[x        R                  " U
URf                  WUUURL                  U5      nURm                  5         S S S 5        [        R                  " SF5        g ! [:        [<        4 a(    [        SVR?                  UR4                  5      5         GN-f = f! [:        [<        4 a(    [        SYR?                  UR@                  5      5         GNf = f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN7= f! , (       d  f       N= f)_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!=	
 J

T^^34%!vvxH --.?7.J
 	-($$RWW%5%5e%<= 5 }} *mm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(h9 A(i4 ,j/A-k-AkAk%Ak794i10i144j,+j,/
j>	
k
k"%
k47
l__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{   4  	 
 %        -  3Gl3lVr
 zN r   