U
    Zf1                  2   @   s  d dl mZmZmZmZ d dl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mZmZmZmZ ddl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edi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edi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!e	de
dedededededededi	Z"ee	e
eeeeeeh	Z#dddddd d!d"d#d$d%d&d'd(d)d*d+d,d-dd.d/d0d1d2d3d4d5d6dd7d8dd9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIh2Z$dJdKhZ%dLdM Z&ddPdQZ'dRdS Z(ddTdUZ)dVdW Z*dXdY Z+dZd[ Z,dd\d]Z-d^d_ Z.dd`daZ/ddbdcZ0ddde Z1dfdg Z2dhdi Z3djdk Z4dldm Z5dndo Z6dpdq Z7drds Z8dtdu Z9dvdw Z:dxdy Z;ddzd{Z<d|d} Z=d~d Z>dd Z?dddZ@dd ZAdd ZBdd ZCdd ZDdddZEdd ZFdS )    )absolute_importdivisionprint_functionunicode_literalsN)BooleanBytesFloat32Float64Int32Int64ListMapString	TimestampUInt32UInt64Voidis_boolean_typeis_list_typeis_map_typeis_numeric_typeis_string_type
is_tag_refis_user_defined_typeis_void_typeunwrap_nullable   )split_wordsz
NSNumber *z
NSString *ZNSArrayZNSDictionaryzNSDate *voidZBOOLdoubleintlongzunsigned intzunsigned longZDBBoolSerializerZDBStringSerializerZDBNSNumberSerializerZDBArraySerializerZDBMapSerializerZDBNSDateSerializerZnumericValidatorZarrayValidatorZmapValidatorZstringValidatorautoelseswitchbreakenumregisterZtypedefZcaseexternreturnunioncharfloatshortZunsignedconstforsignedcontinuegotosizeofZvolatiledefaultifZstaticwhileZdostructZ_PackedprotocolZ	interfaceimplementationZNSObjectZ	NSIntegerZNSNumberZCGFloatproperty	nonatomicZretainstrongZweakZunsafe_unretainedZ	readwritedescriptioniddeletecopynewc                 C   sD   t | trtd| dkrdS | dkr*dS | d kr6dS tj| ddS )	NzOnly use for base type literalsTtrueFfalsenilr   )width)
isinstancedictAssertionErrorpprintpformat)o rL   @/tmp/pip-unpacked-wheel-vqb3mfeu/stone/backends/obj_c_helpers.pyfmt_obj   s    rN   FTc                 C   s   t | } dd t| D }|s.|d  |d< d|}|r| tkrP|d7 }tD ]<}| |rT|sndnd}||d   |dd   }qTqT|S )	Nc                 S   s   g | ]}|  qS rL   )
capitalize).0wordrL   rL   rM   
<listcomp>   s     zfmt_camel.<locals>.<listcomp>r    _dDr   )strr   lowerjoin_reserved_words_reserved_prefixes
startswithupper)nameupper_firstreservedwordsretZreserved_prefix
new_prefixrL   rL   rM   	fmt_camel   s    
rd   c                 C   s    d t|jjt|jt| S )NzDB{}{}{})formatfmt_class_caps	namespacer^   fmt_camel_upper)
field_namer*   rL   rL   rM   fmt_enum_name   s
    
 rj   c                 C   s   t | d|dS )NT)r_   r`   rd   )r^   r`   rL   rL   rM   rh      s    rh   c                 C   s   t | S Nrh   r^   rL   rL   rM   fmt_public_name   s    ro   c                 C   s   t | S rl   rm   rn   rL   rL   rM   	fmt_class   s    rp   c                 C   s   t |  S rl   )rh   r]   rn   rL   rL   rM   rf      s    rf   c                 C   s   t | \} }t| r$dt| }nt| jt| j}|rT|	dd}|	dd}t
| r~t | j\} }|dt|  }n(t| rt | j\} }|dt|  }|S )N{}z *rS   *<{}><NSString *, {}>)r   r   re   fmt_class_prefix_primitive_tableget	__class__rp   r^   replacer   	data_typefmt_typer   value_data_type)rz   Zsuppress_ptrrT   resultrL   rL   rM   fmt_class_type   s     r~   c                 C   s   t | S rl   rk   rn   rL   rL   rM   fmt_func   s    r   c           	      C   s   t | \} }t| r0|rdnd}|t| }n~t| jt| j}t	| rzt | j
\} }|rbdnd}||t|  }n4t| rt | j\} }|rdnd}||t|  }|r|s|r|sd| }|S )Nrq   {} *rs   <{}> *rt   z<NSString *, {}> *	nullable )r   r   re   ru   rv   rw   rx   rp   r^   r   rz   r{   r   r|   )	rz   taghas_defaultZno_ptris_propnullablebaser}   rT   rL   rL   rM   r{      s&    r{   c                 C   s   t | \} }t| r$dt| }nft| jt| j}t	| rbt | j
\} }|dt|  }n(t| rt | j\} }|dt|  }t| r|r|s|rd| }nt| s|d7 }|S )Nr   r   rt   r   rS   )r   r   re   ru   _primitive_table_user_interfacerw   rx   rp   r^   r   rz   r{   r   r|   r   )rz   r   r   r   r}   rT   rL   rL   rM   fmt_route_type  s$    
r   c                 C   s   d t| jjt| jS )NDB{}{})re   rf   rg   r^   rp   rz   rL   rL   rM   ru   $  s    
 ru   c                 C   s   t | jt| jS rl   )_validator_tablerw   rx   rp   r^   r   rL   rL   rM   fmt_validator)  s    r   c                 C   s:   t | \} }t| r"tt| }nt| jt| j}|S rl   )	r   r   fmt_serial_classru   _serial_tablerw   rx   rp   r^   )rz   rT   r}   rL   rL   rM   fmt_serial_obj-  s    r   c                 C   s
   d | S )Nz{}Serializerre   )
class_namerL   rL   rM   r   9  s    r   c                 C   s   d t| S )NzDB{}RouteObjects)re   rf   )namespace_namerL   rL   rM   fmt_route_obj_class=  s    r   c                 C   s$   |}|dkrd}d t| t|S )NZnoauthuserzDB{}{}AuthRoutes)re   rf   rh   )r   Z	auth_typeZauth_type_to_userL   rL   rM   fmt_routes_classA  s     r   c                 C   s2   d t| t|j}|jdkr.d ||j}|S )Nr   r   {}V{})re   rf   rh   r^   version)r   routerb   rL   rL   rM   fmt_route_varI  s     
r   c                 C   s&   t | j}| jdkr"d|| j}|S )Nr   r   )fmt_varr^   r   re   )r   rb   rL   rL   rM   fmt_route_funcQ  s    

r   c                 C   sL   g }d}| D ]4\}}|r.| d| d}q| d|| qd|S )NTrq   Fz{}:{} appendre   rY   )arg_str_pairsr}   	first_argarg_name	arg_valuerL   rL   rM   fmt_func_argsX  s    r   c                 C   sN   g }d}| D ]6\}}|r0| d|| d}q| d|| qd|S )NT({}){}Fz{0}:({1}){0}r   r   )r   r}   r   r   Zarg_typerL   rL   rM   fmt_func_args_declarationd  s    r   c              	   C   sj   g }d}| D ]R}|r8| dt|jt|j d}q| dt|jt|jt|j qd|S )NTr   Fz	{}:({}){}r   )r   re   r{   rz   r   r^   rY   )argsr}   r   argrL   rL   rM   fmt_func_args_from_fieldsp  s      r   c                 C   s$   |rd | ||}nd | |}|S )Nz
[{} {}:{}]z[{} {}]r   )callerZcalleer   r}   rL   rL   rM   fmt_func_call~  s    r   c                 C   s
   d | S )Nz
[{} alloc]r   )r   rL   rL   rM   fmt_alloc_call  s    r   c                 C   s   t | jr&dt| jjt| jjS t| jr<d| jS t	| jr`| jrRd}nd}d|S t
| jrvd| jS tdt| j d S )Nz[[{} alloc] initWith{}]z@({})ZYESNOz@{}z@"{}"z"Can't handle default value type %r)r   r4   re   ru   Zunion_data_typerp   Ztag_namer   rz   r   r   	TypeErrortype)fieldZbool_strrL   rL   rM   fmt_default_value  s"    






r   c                 C   s|   d}t | rlt| trd}qxt| tr,d}qxt| tr<d}qxt| trLd}qxt| tr\d}qxt| trxd}nt| rxd}|S )NrS   ZnumberWithUnsignedIntZnumberWithUnsignedLongZnumberWithIntZnumberWithLongZnumberWithDoubleZnumberWithBool)	r   rF   r   r   r
   r   r   r	   r   )rz   r}   rL   rL   rM   fmt_ns_number_call  s"    





r   c                 C   s4   |sdnd}|r"d ||| |}nd ||| }|S )N-+z{} ({}){}:{}z	{} ({}){}r   )funcr   return_typeZ
class_funcmodifierr}   rL   rL   rM   fmt_signature  s
    r   c                 C   s   t | \} }| jtkS rl   )r   rx   _wrapper_primitives)rz   rT   rL   rL   rM   is_primitive_type  s    r   c                 C   s   t | S rl   rk   rn   rL   rL   rM   r     s    r   c                 C   s`   ddg}t | j\}}t|r(|d |r6|d d}|d|t| jdddt| jS )	Nr;   readonlyr@   r   z@property ({}) {}{};, T)r   r   )	r   rz   r   r   re   rY   r{   r   r^   )r   attrsrz   r   base_stringrL   rL   rM   fmt_property  s    

r   c                 C   s
   d | S )Nz#import "{}.h"r   )Zheader_filerL   rL   rM   
fmt_import  s    r   c                 C   s$   |sddg}d}| d||| S )Nr;   r   z@property ({}) {} {};r   )re   rY   )proptypr   r   rL   rL   rM   fmt_property_str  s    r   c                 C   s2   | d D ]$}|d |kr|d  |  d S qd S )NZcustom_categoriesr^   children)r   )Z
jazzy_dictlabelitemZcategory_dictrL   rL   rM   append_to_jazzy_category_dict  s
    r   )FT)T)F)FFFF)FF)N)r   F)N)G
__future__r   r   r   r   rI   Zstone.irr   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Zhelpersr   rv   r   r   r   r   rZ   r[   rN   rd   rj   rh   ro   rp   rf   r~   r   r{   r   ru   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rL   rL   rL   rM   <module>   s  `                                               6





	


