
    x
h&                         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 d dlmZ d dlmZmZmZmZ dZdj1                  e      ZdZd	Z G d
 de      Zy)    )absolute_importdivisionprint_functionunicode_literals)contextmanager)is_list_typeis_map_typeis_struct_typeis_union_typeis_nullable_typeis_user_defined_typeis_void_typeunwrap_nullable)CodeBackend)fmt_camel_upper	fmt_classfmt_class_prefix
fmt_importzs///
/// Copyright (c) 2016 Dropbox, Inc. All rights reserved.
///
/// Auto-generated by Stone, do not modify.
///

z{}z(no description).z/// c                       e Zd ZdZed        Zedd       Ze	 	 	 dd       Zed        Ze	 	 dd       Z	d Z
d	 Zd
 Zd Zd Z	 	 ddZd Zd Zd Zd Zy)ObjCBaseBackendz3Wrapper class over Stone generator for Obj C logic.c              #      K   | j                  dj                  |      dd      5  | j                          d  d d d        y # 1 sw Y   y xY ww)Nz@implementation {} z@endr   delimdent)blockformatemit)self
class_names     Y/var/www/html/lionshead-backend/venv/lib/python3.12/site-packages/stone/backends/obj_c.pyblock_mzObjCBaseBackend.block_m,   sH     ZZ$++J7"   IIK  s   $AA	AA	ANc              #     K   t        |      sJ dt        |      z         |sg }|j                  r0t        |      r%|j	                  t        |j                               n.t        |      r|j	                  d       n|j	                  d       |r dj                  dj                  |            nd}nO|j                  r t        |      st        |j                        nd}dj                  |dj                  |            }| j                  dj                  t        |      |      dd	
      5  | j                          d  d d d        y # 1 sw Y   y xY ww)Nz"Expected user-defined type, got %rNSObject : {}, r   
 : {} <{}>@interface {}{}r   r   r   )r   typeparent_typer
   appendr   r   r   joinr   r   )r    	data_typeprotocol
extensionsextend_suffixbases         r"   block_h_from_data_typez&ObjCBaseBackend.block_h_from_data_type5   s=    #I. 	C04	?B	C. J$$	)B!!"293H3H"IJ +%%j1%%j1 +5 $NN		*%':<  %%!), $I$9$9:3=  )//dii6IJMZZ!(($Y/@"	  
 IIK  s   D.E0E	EEEc           	   #   F  K   |sdg}|s!dj                  dj                  |            }n*dj                  dj                  |      t        |            }|rdnd}| j                  |j                  ||      dd	      5  |rj| j                  d
d      5  | j	                  d       |D ]&  \  }}| j	                  dj                  ||             ( 	 d d d        | j	                  d       | j	                          d  d d d        y # 1 sw Y   7xY w# 1 sw Y   y xY ww)Nr%   r&   r'   r(   z@interface {}{} {{r)   r   r   r   r   )r   r   )r   z
@protectedz{} _{};})r   r-   r   r   r   )	r    r!   r/   r0   	protectedr1   base_interface_str
field_name
field_types	            r"   block_hzObjCBaseBackend.block_hT   s	     $J#NN499Z+@AM(//		*0E09(0CEM 6?1DUZZ"))*mD"   ZZ(Z3IIl+2;.
J		)"2"2:z"JK 3< 4 		#IIK 
 43 s6   A=D!?D=D	-D 	D!	D	DDD!c              #      K   | j                  d      5  d  d d d        | j                  d       y # 1 sw Y   xY ww)Nz	if (self)zreturn self;)r   r   )r    s    r"   
block_initzObjCBaseBackend.block_initq   s.     ZZ$ %		.! %$s   ?3?<?c              #      K   ||ng }|sdnd}|rdnd}|j                  ||||      }| j                  |      5  d  d d d        y # 1 sw Y   y xY ww)N-+z{} ({}){}:{}z	{} ({}){})r   r   )r    funcargsreturn_type
class_funcmodifierbase_string	signatures           r"   
block_funczObjCBaseBackend.block_funcw   sV      'tR(3c(,n+&&xdDI	ZZ	" #""s   8AA	AAAc                    t        |t              s|g}|}|D ]:  }|j                  t        |             |j                  r$|j                  t        |j                               t        |      rB|j                         r2|j                         D ]  \  }}|j                  t        |             ! |j                  D ]  }t        |j                        \  }}t        |      st        |      r;t        |      r|j                  n|j                  }t        |      r/t        |      r;t        |      sx|j                  t        |              = |r$t        t        |            }|j!                          |S )zNEmits all necessary implementation file imports for the given Stone data type.)
isinstancelistr,   r   r+   r
   has_enumerated_subtypesget_all_subtypes_with_tags
all_fieldsr   r.   r   r	   value_data_typer   setsort)r    
data_typesdefault_importsimport_classesr.   _subtypefields           r"   _get_imports_mzObjCBaseBackend._get_imports_m   sG   *d+$J(#I!!"29"=>$$%%&6y7L7L&MN#,#D#D#F"+"F"F"HJAw"))*:7*CD #I #--.u?	1 #9-Y1G#I. "+!:!:4=4G4G  #9-Y1G (	2"))*:9*EF . $, !#n"56N!    c                    t        |t              s|g}g }|D ]  }t        |      r|j                  t	        |             |j
                  D ]  }t        |j                        \  }}t        |      st        |      r;t        |      r|j                  n|j                  }t        |      r/t        |      r;t        |      sx|j                  t	        |               t        t        |            }|j                          |S )zFEmits all necessary header file imports for the given Stone data type.)rI   rJ   r   r,   r   rM   r   r.   r   r	   rN   rO   rP   )r    rQ   rS   r.   rV   rT   s         r"   _get_imports_hzObjCBaseBackend._get_imports_h   s    *d+$J#I#I.%%&6y&AB"--.u?	1 #9-Y1G#I. "+!:!:4=4G4G  #9-Y1G (	2"))*:9*EF . $  c.12rX   c                     t        t        |            }|j                          |D ]"  }| j                  dj	                  |             $ |r| j                          y y )Nz
@class {};)rJ   rO   rP   r   r   r    rS   import_classs      r"   _generate_imports_hz#ObjCBaseBackend._generate_imports_h   sQ    c.12*LIIl)),78 + IIK rX   c                     t        t        |            }|j                          |D ]  }| j                  t	        |              | j                          y N)rJ   rO   rP   r   r   r\   s      r"   _generate_imports_mz#ObjCBaseBackend._generate_imports_m   sC    c.12*LIIj./ + 			rX   c                    | j                  d       | j                          | j                  d       |j                  r8t        |      s-| j                  t        t	        |j                                     | j                          y )Nz!#import <Foundation/Foundation.h>z"#import "DBSerializableProtocol.h")r   r+   r   r   r   )r    r.   s     r"   _generate_init_imports_hz(ObjCBaseBackend._generate_init_imports_h   s[    		56				67  y)AIIj!1)2G2G!HIJ		rX   c                   	 g 		fd}|j                   D ]  }|r!t        |j                        \  }} ||       n|rt        |j                        \  }}t        |      st	        |      r	 ||       n^t        |      sS|j                  D ]D  }t        |j                        \  }}t        |      st        |      st	        |      s= ||       F  ||j                          ||j                          	S )Nc                     t        |       \  } }t        |       r/t        |       r$t        | j                        \  } }t        |       r$t        |       st	        |       rj                  |        y y y r`   )r   r   r.   r   r   r,   )r.   rT   results     r"   _unpack_and_store_data_typezQObjCBaseBackend._get_namespace_route_imports.<locals>._unpack_and_store_data_type   sf    *95LIqI&"9-#293F3F#GLIq #9-  	*/CI/Ni( 0O*rX   )routesr   arg_data_typer   r   r   rM   r.   r
   result_data_typeerror_data_type)
r    	namespaceinclude_route_argsinclude_route_deep_argsrg   router.   rT   rV   rf   s
            @r"   _get_namespace_route_importsz,ObjCBaseBackend._get_namespace_route_imports   s     	) %%E!.u/B/BC	1+I6(.u/B/BC	1 +|I/F/	:%i0!*!5!5'6u'G	1*95 -i 8 ,Y 77	B "6 ((>(>?'(=(=># && rX   c                 0    |r| j                  |d         S y)dReturns an Obj C appropriate name for a constructor based on
        the name of the first argument.r   initDefault)_cstor_name_from_field)r    fieldss     r"   _cstor_name_from_fieldsz'ObjCBaseBackend._cstor_name_from_fields  s     ..vay99 rX   c                 J    dj                  t        |j                              S )zgReturns an Obj C appropriate name for a constructor based on
        the name of the supplied argument.
initWith{})r   r   name)r    rV   s     r"   rt   z&ObjCBaseBackend._cstor_name_from_field	  s     ""?5::#>??rX   c                 H    |r dj                  t        |d   d               S y)rr   rx   r   rs   )r   r   )r    fields_namess     r"   _cstor_name_from_fields_namesz-ObjCBaseBackend._cstor_name_from_fields_names  s)     &&|Aq7I'JKK rX   c                     |j                   D cg c]%  }|j                  st        |j                        r|' c}S c c}w )z8Returns whether the given struct has any default values.)rM   has_defaultr   r.   )r    structfs      r"   _struct_has_defaultsz$ObjCBaseBackend._struct_has_defaults  sB     ((
(!}} 0 = (
 	
 
s   *<r`   )NNN)NvoidF)TF)__name__
__module____qualname____doc__r   r#   r3   r:   r<   rG   rW   rZ   r^   ra   rc   rp   rv   rt   r|   r    rX   r"   r   r   (   s    =    <  	 8 " "
 6<# !F8 9==B"H!@
!
rX   r   N)
__future__r   r   r   r   
contextlibr   stone.irr   r	   r
   r   r   r   r   r   stone.backendr   stone.backends.obj_c_helpersr   r   r   r   stone_warningr   base_file_commentundocumentedcomment_prefixr   r   rX   r"   <module>r      sa    R R %   & 
F=  #s
k s
rX   