a ]xa?@sddlZddlZddlZddlmZddlmZddlmZddlmZddlmZddl m Z m Z d d Z d d Z d dZddZddZddZddZedkredS)N)config) dbustypes)parser)codegen)codegen_docbook) print_error print_warningcCs |D]}|j|kr|SqdSN)name)arg_listZarg_namear+/usr/share/glib-2.0/codegen/codegen_main.pyfind_arg$s  rcCs"|jD]}|j|kr|SqdSr )methodsr )ifacemethodmrrr find_method+s   rcCs"|jD]}|j|kr|SqdSr )Zsignalsr )rsignalrrrr find_signal2s   rcCs"|jD]}|j|kr|SqdSr )Z propertiesr )rproprrrr find_prop9s   rcCsXd}|D]} | j|kr| }q q|dur6td|d} |rt||} | dur`td|||rt| j|} | durt| j|} | durtd|||| } n| } n|r t||} | durtd|||rt| j|} | durtd|||| } n| } n4|r:t ||}|dur4td|||} n|} | j dt ||dS)NzNo 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 rformatrrZin_argsZout_argsrargsr annotationsinsertrZ Annotation) iface_listrrrrargkeyvalueZ iface_objiZ target_objZ method_objZarg_objZ signal_objZprop_objrrrapply_annotation@sZ        r#c Cs|D]\}}}|d}|dkr|d|}||dd}|d}|dkr||dd}|d|}|d}|d|}t||d|d|||nt||d|dd||q|d}|dkr|d|}||dd} t||dd| d||q|d }|dkr|d|} | d }| d|}| |dd} |d}|dkr||dd}|d}|d|}t||| dd|||nt||| ddd||q|}t||dddd||qdS) Nz::r[r]:z().)findr#rfind) rZannotation_listZwhatr r!posrrrrZcombinedrrrrapply_annotationsvsR                 r-cCs tjdd}|jddddd|jddd gtjd |jd d d dd|jddd dd|jdddd|jdgdddd|jdddd|jd dd!d|jd"d#d d$d%d&|jd'd(d)d|jd*d(d+d|jd,d-d.|jd/d0d.|jd1d2d.|}|jd3dd4d|jd5dd6d|jd7dd8d|jd9dd:d|jd;ddd|jd?d@d dAd|}t|jdBkrtdC|j dus|j dur|j durt dD|j r|j dE}t j|j|}dF|_t j|j|j dG}dF|_n|jr@|j dur,t dH|j }t j|}n|jr|j dur\t dI|j }t jt j|dBdE}n|jr|j durt dJ|jrt dK|j }t j|}nN|jr|j durt dL|jrt dM|j }t jt j|dBdE}|jrzZ|jdNd#}t|dBtt|dOkrH|dOndBf}tt|dPkrh|dPndB}Wn(ttfyt dQ|jYn0|dRkrt dS|jndR}|jrHzZ|jdNd#}t|dBtt|dOkr|dOndBf} tt|dPkr|dPndB}Wn(ttfyDt dT|jYn0n tj tj!f} |j"durx|j#sp|j$rxt dU| dB| dO| dOdPf} | |krt dV|| g} g} t%|j&|jD]h} t'| dW} | (}Wdn1s0Yt)j*||dXkdY}| +|| ,t j| q|j-durHt.| |j-| D]}|/|j0|j1qL|j }t23| }|r|4||j|jrt'|dZB}t56| |j1|j|j7|| |j8||j"|j#| }|4Wdn1s0Y|jrJt'|dZ8}t59| |j1|j|| |||j$| }|4Wdn1s@0Y|jrt'|dZ:}t5:| |j1|| |j8||j"|j#| }|4Wdn1s0Y|jrt'|dZ2}t5;| |j1|| ||j$|}|4Wdn1s0Yt<=dBdS)[Nz&D-Bus code and documentation generator) descriptionfilesFILE+zD-Bus introspection XML file)metavarnargshelpz --xml-filesappend)r2actiondefaultr4z--interface-prefixZPREFIXzargparseArgumentParser add_argumentSUPPRESSadd_mutually_exclusive_group parse_argslenZ xml_filesr Zgenerate_c_codeZgenerate_docbookoutputrospathjoinZoutput_directoryheaderbodybasenamesplitextZinterface_info_headerZc_generate_object_managerZinterface_info_bodyglib_min_requiredsplitint ValueError IndexErrorrglib_max_allowedrZ MAJOR_VERSIONZ MINOR_VERSIONZsymbol_decoratorZsymbol_decorator_headerZsymbol_decorator_definesortedr/openreadrZparse_dbus_xmlextendr5Zannotater-Z post_processZinterface_prefixZ c_namespacerZDocbookCodeGeneratorZgeneraterZHeaderCodeGeneratorZc_generate_autocleanupZ pragma_onceZ CodeGeneratorZ InterfaceInfoHeaderCodeGeneratorZInterfaceInfoBodyCodeGeneratorsysexit)Z arg_parsergrouprZ header_nameZh_fileZc_filepartsrQ_rVZ all_ifacesZinput_files_basenamesfnamefZxml_dataZ parsed_ifacesr"ZdocbookZ docbook_genZoutfilegenrrr codegen_mains     *"  *"     (      (  (  (  (rc__main__)rBrJr[r8rrrrrZutilsrr rrrrr#r-rc__name__rrrrs&     66<