U
    ƒÆb]   ã                ,   @   sô   d dl mZmZmZmZmZmZmZ dadd„ Z	dd„ Z
dd„ Zejeejeejeejeejeejeejeejeejeejeejeejeejeejeejeej e!ej"e!ej#e!ej$dej%dej&dej'diZ(d	d
„ Z)dd„ Z*dd„ Z+dd„ Z,e	e,ƒ dS )é   )Ú	VFuncInfoÚFunctionInfoÚCallableInfoÚ
ObjectInfoÚ
StructInfoÚ	DirectionÚTypeTagNc                 C   s   | a dS )zSet doc string generator function

    :param callable func:
        Callable which takes a GIInfoStruct and returns documentation for it.
    N©Ú_generate_doc_string_func)Úfunc© r   ú./usr/lib/python3/dist-packages/gi/docstring.pyÚset_doc_string_generator%   s    r   c                   C   s   t S )z6Returns the currently registered doc string generator.r	   r   r   r   r   Úget_doc_string_generator/   s    r   c                 C   s   t | ƒS )aE  Generate a doc string given a GIInfoStruct.

    :param gi.types.BaseInfo info:
        GI info instance to generate documentation for.
    :returns:
        Generated documentation as a string.
    :rtype: str

    This passes the info struct to the currently registered doc string
    generator and returns the result.
    r	   ©Úinfor   r   r   Úgenerate_doc_string4   s    r   c                 C   sf   |   ¡ }t |d ¡}|r(t|dƒr(|jS |tjkr^|  ¡ }| ¡ }|sN|  	¡ S d| 
¡ |f S |  	¡ S )NÚ__name__z%s.%s)Zget_tagÚ_type_tag_to_py_typeÚgetÚhasattrr   r   Ú	INTERFACEZget_interfaceÚget_nameZget_tag_as_stringZget_namespace)Zgi_typeZtype_tagZpy_typeZifaceZ	info_namer   r   r   Ú_get_pytype_hint\   s    
r   c                 C   sò  g }t | tƒrdg}nt | tƒr.|  ¡ r.dg}|  ¡ }d}tƒ }tƒ }|D ]2}| | ¡ ¡ | | ¡  	¡ ¡ | | 
¡ ¡ qJt|ƒD ]~\}}| ¡ tjkržq†||kr¨q†| ¡ }t| ¡ ƒ}	|	|krÐ|d|	 7 }| ¡ sà||krê|d7 }n| ¡ rú|d7 }| |¡ q†d |¡}
g }t|  ¡ ƒ}|  ¡ sZ|rZ||krZ|}|  ¡ rP|d7 }| |¡ t|ƒD ]`\}}| ¡ tjkr~qb||krŒqb| ¡ }t| ¡ ƒ}	|	|kr¶|d|	 7 }| |¡ qb|ràd| j|
d |¡f S d	| j|
f S d S )
NÚself)Zvoidú:z=Nonez=<optional>z, z or Nonez%s(%s) -> %sz%s(%s))Ú
isinstancer   r   Z	is_methodZget_argumentsÚsetÚaddZget_destroyZget_typeZget_array_lengthZget_closureÚ	enumerateZget_directionr   ZOUTr   r   Zmay_be_nullZis_optionalÚappendÚjoinZget_return_typeZskip_returnZmay_return_nullÚINr   )r   Zin_args_strsÚargsZhint_blacklistZignore_indicesZuser_data_indicesÚargÚiZargstrZhintZin_args_strZout_args_strsZreturn_hintr   r   r   Ú_generate_callable_info_docn   sb    







r&   c                 C   s†   d}d}t | tƒr4|  ¡ dkrH|d|  ¡  d 7 }n|d|  ¡  d 7 }|  ¡ D ] }| ¡ rP|dt|ƒ d 7 }qP|r~|| S dS d S )Nz
:Constructors:

::

Ú é    z    z()
z(**properties)
Ú
)r   r   Zget_sizer   Zget_methodsZis_constructorr&   )r   ÚheaderÚdocZmethod_infor   r   r   Ú_generate_class_info_doc®   s    
r,   c                 C   s,   t | ttfƒrt| ƒS t | tƒr(t| ƒS dS )Nr'   )r   r   r   r,   r   r&   r   r   r   r   Ú_generate_doc_dispatchÃ   s
    
r-   )-Z_gir   r   r   r   r   r   r   r
   r   r   r   ZBOOLEANÚboolZINT8ÚintZUINT8ZINT16ZUINT16ZINT32ZUINT32ZINT64ZUINT64ZFLOATÚfloatZDOUBLEZGLISTÚlistZGSLISTZARRAYZGHASHÚdictZUTF8ÚstrZFILENAMEZUNICHARr   ZGTYPEZERRORZVOIDr   r   r&   r,   r-   r   r   r   r   Ú<module>   sj   $
                     ë@
