
    8Sj                     j   S SK Jr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJ	r	  S SKJ
r
  S SKJr  S S	KJr  S S
KJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  \\\4   rS\	S\S\4S jrS\S\\/\4   S\\   4S jrS\S\4S jrS\S\S\S\4S jrS\S\S\4S jrg)     )replace)Callable)Optional)Union)GenerationContext)CppType)cpp_null_value)cpp_type)cpp_type_for_idl_type)cpp_type_for_idl_type_details)is_numeric_type)is_string_type)string_to_cpp_enum_name)DictionaryMember)IDLParameterizedType)IDLType)IDLUnionType)OperationParameterr
   default_valuereturnc                 V   U R                   S:X  a  US:X  a  S$ U S3$ U R                   S:X  a  US:X  a  S$ U S3$ U R                   S:X  a  US:X  a  S	$ U S
3$ U R                   S:X  a  US:X  a  S$ U S3$ U R                   S:X  a  US:X  a  S$ U S3$ [        SU R                    S35      e)NStringz""z	String {}_string	FlyStringzFlyString {}_fly_string
ByteStringzByteString {}svUtf16StringzUtf16String {}_utf16Utf16FlyStringzUtf16FlyString {}_utf16_fly_stringz'Unsupported string default value type '')nameRuntimeError)r
   r   s     \/mnt/mint/home/seanl/public/Repos/ladybird/Meta/Generators/libweb_bindings/default_values.pystring_default_value_expressionr&      s    }} +t3{RM?'9RR}}#!.$!6~Y}o[<YY}}$"/4"7Qb=QQ}}%#0D#8Vv>VV}}((&3t&;"dM?RcAdd
@qQ
RR    
union_type	predicatec                 L   ^ [        U4S jU R                  5        5       S 5      $ )Nc              3   F   >#    U  H  nT" U5      (       d  M  Uv   M     g 7fN ).0member_typer)   s     r%   	<genexpr>7first_flattened_member_type_matching.<locals>.<genexpr>.   s     n0SW`alWm0Ss   !	!)nextflattened_member_types)r(   r)   s    `r%   $first_flattened_member_type_matchingr4   *   s"     n
0Q0Q0Snptuur'   c                 x     [        U S5        g! [         a     Of = f [        U 5        g! [         a     gf = f)Nr   TF)int
ValueErrorfloat)r   s    r%   is_numeric_default_valuer9   1   sH    M1 m s    
, 
99contextc                   ^^ US:X  a  [        U S 5      nUb  U$ US:X  a%  S[        S[        4U4S jjn[        U U5      nUb  U$ UR                  S5      (       an  UR	                  S5      (       aX  [        U S 5      nUb  U$ UR                  S5      R                  S5      mS[        S[        4UU4S	 jjn[        U U5      nUb  U$ US
;   a  [        U S 5      n	U	b  U	$ [        U5      (       a  [        U S 5      n
U
b  U
$ US:X  a5  U R                  5       (       d  U R                  5       (       a  [        S5      $ [        SU SU  S35      e)N[]c                 N    [        U [        5      =(       a    U R                  S;   $ )NsequenceFrozenArray)
isinstancer   r#   r/   s    r%   <lambda>5union_member_type_for_default_value.<locals>.<lambda>I   s!    ;(<=q+BRBRVqBqqr'   {}r/   r   c                    > [        U [        5      =(       a    U R                  S:H  =(       d    TR                  U 5      S L$ )Nrecord)rA   r   r#   
dictionary)r/   r:   s    r%   accepts_empty_objectAunion_member_type_for_default_value.<locals>.accepts_empty_objectR   s>    ;(<= 1$$0?%%k2$>r'   "c                 ,    [        U R                  5      $ r,   )r   r#   rB   s    r%   rC   rD   c   s    {/?/? @r'   c                 Z   > TR                  U 5      nUS L=(       a    TUR                  ;   $ r,   )enumerationvalues)r/   rN   r:   
enum_values     r%   accepts_enum_value?union_member_type_for_default_value.<locals>.accepts_enum_valuej   s.    !--k:Kd*Oz[=O=O/OOr'   )truefalsec                      U R                   S:H  $ )Nboolean)r#   rB   s    r%   rC   rD   x   s     0 0I =r'   c                 ,    [        U R                  5      $ r,   )r   r#   rB   s    r%   rC   rD      s    0@0@ Ar'   null	undefinedz!Unsupported union default value 'z' for 'r"   )r4   r   bool
startswithendswithremoveprefixremovesuffixr9   includes_undefinedincludes_nullable_typer$   )r(   r   r:   sequence_typerI   object_typestring_typerQ   	enum_typeboolean_typenumeric_typerP   s     `        @r%   #union_member_type_for_default_valuerg   ?   s    <
 $  	g 	$ 	 ; 
 "$$)?)?)D)D:@
 ""//4AA#F
	PG 	P 	P 	P 9
	  ));=
 #..;A
 #J$A$A$C$CzGhGhGjGj{##
:=/Q[P\\]^
__r'   memberc                    U R                   cB  [        U [        5      (       a  SOSn[        UR	                  5        SU R
                   S35      eU R                  n[        U[        5      (       aY  [        X0R                   U5      nUR
                  S:X  a  [        X15       S3$ [        XS9n[        XQ5      n[        X15       SU S	3$ U R                   S
:X  a  UR
                   S3$ U R                   S:X  a  UR
                  S:X  a  g[        X15      $ UR
                  S:X  a  U R                   $ [        UR
                  5      (       a  U R                   $ U R                   S:X  a3  [        U[        5      (       a  UR
                  S;   a  [        X5       S3$ U R                   R!                  S5      (       a  U R                   R#                  S5      (       a  UR%                  U5      =nbD  U R                   R'                  S5      R)                  S5      nUR
                   S[+        U5       3$ [-        UR/                  5       UU R0                  S9n	[3        XR                   5      $ [        SU R
                   S35      e)Nzoperation parameterzdictionary memberz 'z' has no default valuerY   z { Empty {} })typez { z }rE   z {}rX   anyzJS::js_null()rV   r<   r>   rK   z::)extended_attributesz1Unsupported default value for dictionary member 'r"   )r   rA   r   r$   
capitalizer#   rj   r   rg   r   r   cpp_default_value_conversionr	   r   r   r
   r[   r\   rN   r]   r^   r   r   without_nullablerl   r&   )
rh   r:   member_kindr/   union_member_typeunion_member
expressionrN   unquoted_default_valuestring_cpp_types
             r%   rn   rn      s\    #/9&BT/U/U+[nk4467r&++F\]^^++K+|,,?MaMacjk!![0+KABBSTTv>1,H
'=>d:,cRRt#""#5))v%u$"k339$###{''((###${$899 ;;6+,E22&&s++0D0D0M0Mc0R0R"..{;;KH%+%9%9%F%Fs%K%X%XY\%]"!&&'r*ABX*Y)Z[[7((* & : :

 /@T@TUU
J6;;-WXY
ZZr'   N) dataclassesr   typingr   r   r   "Generators.libweb_bindings.contextr   $Generators.libweb_bindings.cpp_typesr   r	   r
   r   r   r   r   Utils.utilsr   Utils.webidl_parserr   r   r   r   r   DefaultValueMemberstrr&   rZ   r4   r9   rg   rn   r-   r'   r%   <module>r~      s
  
      @ 8 ? 9 F N @ ? / 0 4 ' , 2+-??@ Sg Sc Sc Svv	4(v gvC D I`I`I` I` 	I`X,[,[,[ 	,[r'   