
    $dB                         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mZ d Zd Zd Zd Zd Zd Zd Zedk    r e             dS dS )    N   )config)	dbustypes)parser)codegen)codegen_docbook)
codegen_md)codegen_rst)print_errorprint_warningc                 .    | D ]}|j         |k    r|c S d S N)name)arg_listarg_nameas      &share/glib-2.0/codegen/codegen_main.pyfind_argr   &   s1      6XHHH 4    c                 8    | j         D ]}|j        |k    r|c S d S r   )methodsr   )ifacemethodms      r   find_methodr   -   3    ]  6VHHH 4r   c                 8    | j         D ]}|j        |k    r|c S d S r   )signalsr   )r   signalr   s      r   find_signalr    4   r   r   c                 8    | j         D ]}|j        |k    r|c S d S r   )
propertiesr   )r   propr   s      r   	find_propr$   ;   s2      6T>>HHH 4r   c                 h   d }| D ]}	|	j         |k    r|	} n|"t          d                    |                     d }
|rt          ||          }|#t          d                    ||                     |rUt	          |j        |          }|;t	          |j        |          }|$t          d                    |||                     |}
n|}
n|rxt          ||          }|#t          d                    ||                     |r>t	          |j        |          }|$t          d                    |||                     |}
n?|}
n<|r8t          ||          }|#t          d                    ||                     |}
n|}
|
j
                            dt          j        ||                     d S )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_annotationr8   B   s   I  6U??IE  '..u55666J & F33
:AA&%PPQQQ 	$z1377G":#6<<?FMM   
 !JJ#JJ	  F33
:AA&%PPQQQ 
	$z44GBIIVU   
 !JJ#JJ	 Y--<CCD%PPQQQ


!!!Y%9#u%E%EFFFFFr   c                    |D ]\  }}}|                     d          }|dk    r|d|         }||dz   d          }|                     d          }|dk    rM||dz   d          }|d|         }|                     d          }|d|         }t          | |d |d |||           t          | |d |d d ||           |                     d          }|dk    r/|d|         }||dz   d          }	t          | |d d |	d ||           |                     d	          }|dk    r|d|         }
|
                    d
          }|
d|         }|
|dz   d          }|                     d          }|dk    rD||dz   d          }|                     d          }|d|         }t          | ||d d |||           t          | ||d d d ||           |}t          | |d d d d ||           d S )Nz::r      [r   ]:z().)findr8   rfind)r-   annotation_listwhatr/   r0   posr   r   r.   r#   combinedr   s               r   apply_annotationsrF   x   si   + 1 1c5iioo"993KE#'))_F++c""CbyyS1WYY'#hhsmm!C%j UD&$SRWXXXX tVT4e    ))C..CbyyQsUC!GII UD$dCQVWWWWiioo"99#AcE{H"..--C$QsUOE%cAgii0F))C..Cbyy"3799o!hhsmm!!C%j(&vtT3U    )&vtT4e   
 !E$"E4tT3   _1 1r   c                  Z   t          j        d          } |                     dddd           |                     ddd	g t           j        
           |                     dddd           |                     dddd           |                     ddd           |                     dg ddd           |                     ddd           |                     d dd!           |                     d"dd#           |                     d$dd%           |                     d&d'd	d(d)*           |                     d+d,d-           |                     d.d,d/           |                     d0d12           |                     d3d42           |                     d5d62           |                                 }|                    d7dd8           |                    d9dd:           |                    d;dd<           |                    d=dd>           |                    d?dd@           |                                 }|                    dAddB           |                    dCdDddE           |                                 }t          |j                  dFk    rt          dG           |j	        |j
        |j        |j        |j        t          dH           |j	        rl|j	        dIz   }t          j                            |j        |          }dJ|_        t          j                            |j        |j	        dKz             }dJ|_        n|j        r>|j        t          dL           |j        }t          j                            |          }nC|j        rc|j        t          dM           |j        }t          j                            t          j                            |                    dF         dIz   }n|j        rS|j        t          dN           |j        rt          dO           |j        }t          j                            |          }n|j        rx|j        t          dP           |j        rt          dQ           |j        }t          j                            t          j                            |                    dF         dIz   }|j        r	 |j                            dRd'          }t9          |dF                   t9          t          |          dSk    r|dS         ndF          f}t9          t          |          dTk    r|dT         ndF          }n># t:          t<          f$ r* t          dU                    |j                             Y nw xY w|dVk     r't          dW                    |j                             ndV}|j         r	 |j                             dRd'          }t9          |dF                   t9          t          |          dSk    r|dS         ndF          f}	t9          t          |          dTk    r|dT         ndF          }nV# t:          t<          f$ r* t          dX                    |j                              Y nw xY wtB          j"        tB          j#        f}	|j$        |j%        s|j&        rt          dY           |	dF         |	dS         |	dS         dTz  z   f}	|	|k     r#t          dZ                    ||	                     g }
g }tO          |j(        |j        z             D ]}tS          |d[          5 }|*                                }d d d            n# 1 swxY w Y   tW          j,        ||d\k    ]          }|
-                    |           |.                    t          j                            |                     |j/        ta          |
|j/                   |
D ]"}|1                    |j2        |j3                   #|j
        }ti          j5        |
          }|r|6                    ||j                   |j        }to          j8        |
          }|r|6                    ||j                   |j        }ts          j:        |
          }|r|6                    ||j                   |j        rxtS          |d^          5 }tw          j<        |
|j3        |j        |j=        |||j>        ||j$        |j%        |          }|6                                 d d d            n# 1 swxY w Y   |j        rgtS          |d^          5 }tw          j?        |
|j3        |j        |||||j&        |	  	        }|6                                 d d d            n# 1 swxY w Y   |j        rltS          |d^          5 }tw          j@        |
|j3        |||j>        ||j$        |j%        |	  	        }|6                                 d d d            n# 1 swxY w Y   |j        r`tS          |d^          5 }tw          jA        |
|j3        ||||j&        |          }|6                                 d d d            n# 1 swxY w Y   t          jC        dF           d S )_Nz&D-Bus code and documentation generator)descriptionfilesFILE+zD-Bus introspection XML file)metavarnargshelpz--xml-filesappend)rL   actiondefaultrN   z--interface-prefixPREFIX z<String to strip from D-Bus interface names for code and docs)rL   rQ   rN   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)rP   rN   z--c-generate-autocleanup)noneobjectsallrW   zGenerate autocleanup support)choicesrQ   rN   z--generate-docbookOUTFILESz2Generate Docbook in OUTFILES-org.Project.IFace.xml)rL   rN   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))rM   rP   rL   rN   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)rN   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 --outputz/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-bodyr?   r   r;   u0   Unrecognized --glib-min-required string ‘{}’)r;      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)r;   @   )h_type_implies_unix_fdw)D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
IndexErrorr&   glib_max_allowedr   MAJOR_VERSIONMINOR_VERSIONsymbol_decoratorsymbol_decorator_headersymbol_decorator_definesortedrI   openreadr   parse_dbus_xmlextendrO   annotaterF   post_processinterface_prefixc_namespacer   DocbookCodeGeneratorgenerater	   MdCodeGeneratorr
   RstCodeGeneratorr   HeaderCodeGeneratorc_generate_autocleanuppragma_onceCodeGenerator InterfaceInfoHeaderCodeGeneratorInterfaceInfoBodyCodeGeneratorsysexit)
arg_parsergroupr)   header_nameh_filec_filepartsr{   _r   
all_ifacesinput_files_basenamesfnamefxml_dataparsed_ifacesr2   docbookdocbook_genmdmd_genrstrst_genoutfilegens                            r   codegen_mainr      s   (<  J s1O          K	     8	     %R    
 "***+	     A    
 A    
 J    
 7    
  9          *     %    
 #    
 #     3355E	Z6X     
z,=QRRR	x;LMMM	!3    
 
1     3355E	F)O     
1	       ""D
4>QV	
 	
 	

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

  'K*T1d3[AAd3T5ID5PQQ			 !K;:;;;g&&v..	 K;8999g&&rw'7'7'?'?@@CdJ		# K;IJJJ) 	*  
 g&&v..		! 
K;GHHH) 	(  
 g&&rw'7'7'?'?@@CdJ
  $
	*00a88E!$U1XE

QE!HHTU0V0V WE

QE!HHA66AAJ' 	 	 	BII*     	 w&&""(&)?"@"@  
 $  H
	)//Q77E #E!Hss5zzA~~588ST/U/UVE

QE!HHA66AAJ' 	 	 	AHH)     	 #0&2FG $' 	4+G 	2   	/2Q67
 +++<<BF!#3= =	
 	
 	
 J
T^344 > >% 	 !vvxxH	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 -.?7.J
 
 
 	-((($$RW%5%5e%<%<====} *dm444 @ @	t,d.>????#G!6zBBK =Wd&;<<<		B'
33F	 3D1222

C*:66G
 5d3444{ &# 	'- .+% !%, C LLNNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	  y &# 	'' .%!,
 
C LLNNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ! &# 	': % !%,
 
C LLNNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	  &# 
	'8 %!, C LLNNN
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 HQKKKKKs   (BU- -8V('V(#BY( (8Z#"Z#]::]>	]>	'Aeee&A f22f69f6Ah%%h),h)9jjj__main__)rc   rp   r   rS   r   r   r   r   r   r	   r
   utilsr   r   r   r   r    r$   r8   rF   r   __name__ r   r   <module>r      sN  0  				 



                                           - - - - - - - -        3G 3G 3Gl3 3 3lN N Nb
 zLNNNNN r   