B
    0ªa0  ã               @   s¶   d dl mZ d dl mZ d dl mZ d dl mZ d dlZddlmZ ddlm	Z	 ej
jd	k rjd d
lmZ nd d
lmZ ejdejdejdejdiZdd„ Zdd„ ZG dd„ deƒZdS )é    )Úabsolute_import)Údivision)Úprint_function)Úunicode_literalsNé   )Úast)ÚCCodeGeneratoré   )ÚStringIOZNULLz""zg_object_get_type ()c             C   s   t  | ¡}|r|S dS )NÚ0)ÚDEFAULT_C_VALUESÚget)ÚtypevalÚdefault© r   ú7/usr/lib/gobject-introspection/giscanner/testcodegen.pyÚget_default_for_typeval*   s    
r   c             C   s0   | j r| j  dd¡S | jr,| j dd¡ ¡ S d S )Nú Ú_Ú.Ú )Ztarget_fundamentalÚreplaceZtarget_ginameÚlower)r   r   r   r   Úuscore_from_type1   s
    r   c               @   s   e Zd Zdd„ Zdd„ ZdS )ÚEverythingCodeGeneratorc          	   C   s,   t  dd¡| _t| j|||||||ƒ| _d S )NZ
Everythingz1.0)r   Z	NamespaceÚ	namespacer   Úgen)ÚselfZout_h_filenameZout_c_filenameZfunction_decorationZinclude_first_headerZinclude_last_headerZinclude_first_srcZinclude_last_srcr   r   r   Ú__init__<   s    z EverythingCodeGenerator.__init__c       	      C   sÂ  t jg}| t j¡ t  dt jt jt jdg d| j 	d¡¡}| j
 |¡ d}| j ||¡ d}xn|D ]f}|t|ƒ }| j 	|¡}t  |t j|t jdg d|¡}| j
 |¡ t|ƒ}d|f }| j ||¡ qdW d}x~|D ]v}|t jkrèqØ|t|ƒ }| j 	|¡}t  |t jt jt jdt jd|t jt jd	gd|¡}| j
 |¡ | j |d¡ qØW d
}x´|D ]¬}|t jkrpq\|t|ƒ }| j 	|¡}t  |t jt jt jdt jd|t jt jd	gd|¡}| j
 |¡ tdƒ}t|jƒ}| d|f ¡ | d¡ | j || ¡ ¡ q\W d}x¢|D ]š}|t jkr*q|t|ƒ }| j 	|¡}t  |t j|t jdt jd|t jt jd	gd|¡}| j
 |¡ tdƒ}t|jƒ}| d¡ | j || ¡ ¡ qW | j ¡  d S )NZnullfunc)ÚtransferFz
  return;
zconst return z  return %s;
z	oneparam Zarg0)r   Ú	directionzone_outparam Úwz  *arg0 = %s;
zpassthrough_one z  return arg0;
)r   ÚTYPE_ANYÚextendZINTROSPECTABLE_BASICZFunctionZReturnZ	TYPE_NONEZPARAM_TRANSFER_NONEr   Z
gen_symbolr   ÚappendZset_function_bodyr   r   Z	ParameterZPARAM_DIRECTION_INZPARAM_DIRECTION_OUTr
   ZretvalÚwriteÚgetvalueÚcodegen)	r   ÚtypesÚfuncZbodyÚprefixr   ÚnameZsymr   r   r   r   r%   N   s|    










zEverythingCodeGenerator.writeN)Ú__name__Ú
__module__Ú__qualname__r   r%   r   r   r   r   r   :   s   r   )Z
__future__r   r   r   r   Úsysr   r   r'   r   Úversion_infoÚmajorr
   Úior"   ZTYPE_STRINGZTYPE_FILENAMEZ
TYPE_GTYPEr   r   r   Úobjectr   r   r   r   r   Ú<module>   s    
	