U
    Zf>                     @   s  d dl mZmZmZmZ d dlmZ d dlmZm	Z	m
Z
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ d dlmZ d dlmZmZmZm Z m!Z! ede	deded	ed
ededededededediZ"dZ#d$e#Z%dZ&G dd deZ'dd Z(dd Z)dS )    )absolute_importdivisionprint_functionunicode_literals)contextmanager)BooleanBytesDataTypeFloat32Float64Int32Int64ListString	TimestampUInt32UInt64Voidis_list_typeis_timestamp_typeis_union_typeis_user_defined_typeunwrap_nullable)CodeBackend)	fmt_classfmt_funcfmt_objfmt_typefmt_varZBoolSerializerZNSDataSerializerZFloatSerializerZDoubleSerializerZInt32SerializerZInt64SerializerZArraySerializerZStringSerializerZNSDateSerializerZUInt32SerializerZUInt64SerializerZVoidSerializerzs///
/// Copyright (c) 2016 Dropbox, Inc. All rights reserved.
///
/// Auto-generated by Stone, do not modify.
///

z{}import Foundation

z(no description)c                   @   sH   e Zd ZdZedddZdddZeddd	Zdd
dZdd Z	dS )SwiftBaseBackendz3Wrapper class over Stone generator for Swift logic.Nc              	   c   s>   d ||}|r|d |7 }| | d V  W 5 Q R X d S )Nz{}({})z -> {})formatblock)selffuncargsreturn_type	signature r'   8/tmp/pip-unpacked-wheel-vqb3mfeu/stone/backends/swift.pyfunction_blockK   s
    zSwiftBaseBackend.function_blockFc           
      C   s   g }d}|D ]b\}}|r.|r.d|kr.d |}|rP|d k	rP|rP|d | n|d k	rj|d || d}qd}	|r|	d|   7 }	|	|S )	NT=z{0} {0}z{}z{}: {}F, 
)r    appendZmake_indentjoin)
r"   Z	args_listnewlinesZforce_firstZnot_initoutfirstkvsepr'   r'   r(   
_func_argsS   s    
zSwiftBaseBackend._func_argsc              	   c   s   |pg }g }t |tr8t|j}|jr<|t|j n|}|| |rZdd	|nd}| 
d|| d V  W 5 Q R X d S )Nz: {}r+    zopen class {}{})
isinstancer	   r   nameZparent_typer-   r   extendr    r.   r!   )r"   thingZ	protocols
extensionsr8   Zextend_suffixr'   r'   r(   class_blockh   s    


zSwiftBaseBackend.class_blockc           
      C   s   g }|j D ]}t|j}t|j}t|j\}}|jrlt|rRdt|j	j
}n
t|j	}|d|7 }n|rx|d7 }||f}	||	 q
|S )Nz.{}z = {}z = nil)Z
all_fieldsr   r8   r   	data_typer   Zhas_defaultr   r    defaultZtag_namer   r-   )
r"   r=   	namespacer$   fieldr8   valuenullabler>   argr'   r'   r(   _struct_init_argsz   s    



z"SwiftBaseBackend._struct_init_argsc                 C   s   |dkr8d|kr*| dd\}}t|}nd}t||S |dkrtd|krj| d\}}dt|t|S t|S n|dkr|S |S d S )NZroute:   r@   .z{} in {})typevallink)splitintr   r    r   r   )r"   tagrI   versionclsr@   r'   r'   r(   _docf   s     



zSwiftBaseBackend._docf)N)FFF)N)N)
__name__
__module____qualname____doc__r   r)   r5   r<   rD   rP   r'   r'   r'   r(   r   G   s   

r   c                 C   sp   t | \} }t| r4d}|t| jjt| j}n0t| jt| j}t	| rd|dt
| j }|sl|S dS )Nz{}.{}Serializerz<{}>ZNullableSerializer)r   r   r    r   r?   r8   _serial_type_tableget	__class__r   fmt_serial_typer=   r=   rB   resultr'   r'   r(   rX      s    rX   c                 C   s   t | \} }t| r4d}|t| jjt| j}nVt| jt| j}t	| rf|dt
| j }n$t| r|d| j }n
d|}|s|S d|S )Nz{}.{}Serializer()z({})z("{}")zSerialization._{}zNullableSerializer({}))r   r   r    r   r?   r8   rU   rV   rW   r   fmt_serial_objr=   r   rY   r'   r'   r(   r[      s    
r[   N)*
__future__r   r   r   r   
contextlibr   Zstone.irr   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Zstone.backendr   Zstone.backends.swift_helpersr   r   r   r   r   rU   Zstone_warningr    baseZundocumentedr   rX   r[   r'   r'   r'   r(   <module>   sJ   P
            
Z