관리-도구
편집 파일: codegen_main.cpython-39.pyc
a ����]xa�?����������������������@���s����d�dl�Z�d�dlZd�dlZddlmZ�ddlmZ�ddlmZ�ddlmZ�ddlmZ�ddl m Z mZ�d d ��Zdd��Z d d��Zdd��Zdd��Zdd��Zdd��Zedkr�e���dS�)�����N����)�config)� dbustypes)�parser)�codegen)�codegen_docbook)�print_error� print_warningc�����������������C���s ���|�D�]}|j�|kr|��S�qd�S��N)�name)�arg_listZarg_name�a��r����+/usr/share/glib-2.0/codegen/codegen_main.py�find_arg$���s���� r���c�����������������C���s"���|�j�D�]}|j|kr|��S�qd�S�r ���)�methodsr���)�iface�method�mr���r���r����find_method+���s���� r���c�����������������C���s"���|�j�D�]}|j|kr|��S�qd�S�r ���)Zsignalsr���)r����signalr���r���r���r����find_signal2���s���� r���c�����������������C���s"���|�j�D�]}|j|kr|��S�qd�S�r ���)Z propertiesr���)r����propr���r���r���r���� find_prop9���s���� r���c�����������������C���sX��d�}|�D�]} | j�|kr| }�q q|d�u�r6td�|���d�} |r�t||�}|d�u�r`td�||���|r�t|j|�}|d�u�r�t|j|�}|d�u�r�td�|||���|} n|} n�|�r t||�} | d�u�r�td�||���|�rt| j|�}|d�u�r�td�|||���|} n| } n4|�r:t ||�}|d�u��r4td�||���|} n|} | j �dt� ||���d�S�)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���r����formatr���r���Zin_argsZout_argsr����argsr����annotations�insertr���Z Annotation)� iface_listr���r���r���r����arg�key�valueZ iface_obj�iZ target_objZ method_objZarg_objZ signal_objZprop_objr���r���r����apply_annotation@���sZ���� �� �� r#���c�������������� ���C���s���|D��]�\}}}|��d�}|dkr�|d|��}||d�d���}|��d�}|dkr�||d�d���}|d|��}|��d�}|d|��}t|�|d�|d�|||��nt|�|d�|d�d�||��q|��d�}|dkr�|d|��}||d�d���} t|�|d�d�| d�||��q|��d �}|dk�r�|d|��} | �d �}| d|��}| |d�d���}|��d�}|dk�r�||d�d���}|��d�}|d|��}t|�||d�d�|||��nt|�||d�d�d�||��q|}t|�|d�d�d�d�||��qd�S�)Nz::���r��������[r����]�:z()�.)�findr#����rfind)r���Zannotation_listZwhatr ���r!����posr���r���r���r���Zcombinedr���r���r���r����apply_annotationsv���sR���� � ���r-���c������������������C���s��t�jdd�}�|�jddddd��|�jddd g�t�jd ��|�jddd dd��|�jddd dd��|�jdddd��|�jdg�d�ddd��|�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;dd<d��|����}|jd=dd>d��|jd?d@d dAd��|����}t|j�dBk�r�tdC��|j d�u�s�|j d�u�r�|jd�u�r�tdD��|j �r|j dE�}t j�|j|�}dF|_t j�|j|j dG��}dF|_n�|j�r@|jd�u��r,tdH��|j}t j�|�}n�|j�r�|jd�u��r\tdI��|j}t j�t j�|��dB�dE�}n�|j�r�|jd�u��r�tdJ��|j�r�tdK��|j}t j�|�}nN|j�r|jd�u��r�tdL��|j�r�tdM��|j}t j�t j�|��dB�dE�}|j�r�zZ|j�dNd#�}t|dB��tt|�dOk�rH|dO�ndB�f}tt|�dPk�rh|dP�ndB�}W�n(�ttf�y����tdQ�|j���Y�n0�|dRk��r�tdS�|j���ndR}|j�rHzZ|j�dNd#�}t|dB��tt|�dOk�r�|dO�ndB�f} tt|�dPk�r|dP�ndB�}W�n(�ttf�yD���tdT�|j���Y�n0�ntj tj!f} |j"d�u��rx|j#�sp|j$�rxtdU��| dB�| dO�| dO�dP��f} | |k��r�tdV�|| ���g�} g�}t%|j&|j��D�]h}t'|dW��} | �(��}W�d�����n1��s�0����Y��t)j*||dXkdY�}| �+|��|�,t j�|����q�|j-d�u�rHt.| |j-��| D�]}|�/|j0|j1���qL|j }t2�3| �}|�r�|�4||j��|j�r�t'|dZ��B}t5�6| |j1|j|j7|||j8||j"|j#|�}|�4���W�d�����n1��s�0����Y��|j�rJt'|dZ��8}t5�9| |j1|j|||||j$|� }|�4���W�d�����n1��s@0����Y��|j�r�t'|dZ��:}t5�:| |j1|||j8||j"|j#|� }|�4���W�d�����n1��s�0����Y��|j�r�t'|dZ��2}t5�;| |j1||||j$|�}|�4���W�d�����n1��s�0����Y��t<�=dB��d�S�)[Nz&D-Bus code and documentation generator)�description�files�FILE�+zD-Bus introspection XML file)�metavar�nargs�helpz--xml-files�append)r2����action�defaultr4���z--interface-prefixZPREFIX��z<String to strip from D-Bus interface names for code and docs)r2���r7���r4���z --c-namespaceZ NAMESPACEz)The namespace to use for generated C codez--c-generate-object-manager� store_truezCGenerate a GDBusObjectManagerClient subclass when generating C code)r6���r4���z--c-generate-autocleanup)Znone�objects�allr:���zGenerate autocleanup support)�choicesr7���r4���z--generate-docbookZOUTFILESz2Generate Docbook in OUTFILES-org.Project.IFace.xml)r2���r4���z --pragma-oncez(Use "pragma once" as the inclusion guardz --annotate����zWHAT KEY VALUEz*Add annotation (may be used several times))r3���r6���r2���r4���z--glib-min-requiredZVERSIONzMMinimum 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)r4���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--headerzGenerate C headersz--bodyzGenerate C codez--interface-info-headerz$Generate GDBusInterfaceInfo C headerz--interface-info-bodyz"Generate GDBusInterfaceInfo C codez--outputz$Write output into the specified filez--output-directoryZOUTDIRz"Location to output generated filesr���zHThe "--xml-files" option is deprecated; use positional arguments insteadzZUsing --generate-c-code or --generate-docbook and --output at the same time is not allowedz.hTz.cz Using --header requires --outputzUsing --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%����@���)Zh_type_implies_unix_fd�w)>�argparse�ArgumentParser�add_argument�SUPPRESS�add_mutually_exclusive_group� parse_args�lenZ xml_filesr ���Zgenerate_c_codeZgenerate_docbook�outputr����os�path�joinZoutput_directory�header�body�basename�splitextZinterface_info_headerZc_generate_object_managerZinterface_info_body�glib_min_required�split�int� ValueError� IndexErrorr����glib_max_allowedr���Z MAJOR_VERSIONZ MINOR_VERSIONZsymbol_decoratorZsymbol_decorator_headerZsymbol_decorator_define�sortedr/����open�readr���Zparse_dbus_xml�extendr5���Zannotater-���Zpost_processZinterface_prefixZc_namespacer���ZDocbookCodeGeneratorZgenerater���ZHeaderCodeGeneratorZc_generate_autocleanupZpragma_onceZ CodeGeneratorZ InterfaceInfoHeaderCodeGeneratorZInterfaceInfoBodyCodeGenerator�sys�exit)Z arg_parser�groupr���Zheader_nameZh_fileZc_file�partsrQ����_rV���Z all_ifacesZinput_files_basenames�fname�fZxml_dataZ parsed_ifacesr"���ZdocbookZdocbook_genZoutfile�genr���r���r����codegen_main����s���������������������������� ��*"�� ��*"���� ��(� � (�(�(� (rc����__main__)rB���rJ���r[���r8���r���r���r���r���r���Zutilsr���r ���r���r���r���r���r#���r-���rc����__name__r���r���r���r����<module>���s&���66��<