
    XaJj%e                        d Z dZddlZddlZddlZddlZddlmc mZ	 ddl
mZ ddlZdadD ]  Z ej                  deddd	ii        d
gZ e       ZdZg dZd Zd Z G d d      Zg Z	 ddZd Zd Zd Z	 	 	 ddZy)zu
Backward compatibility with bridgesupport files

This functionality is deprecated and will be removed in PyObjC 10.
)initFrameworkWrapperparseBridgeSupport    N)	resources)s   allocs   copys   copyWithZone:s   mutableCopys   mutableCopyWithZone:s   NSObjectretvalalready_retainedTz/System/Library/BridgeSupportzdon't use this method)r   already_cfretainedc_array_length_in_resultc_array_delimited_by_nullc_array_of_variable_lengthprintf_formatfree_resultc                      t         dd l a y y )Nr   )ctypes     ]/Users/ahmed/devFolder/claude-voice/.venv/lib/python3.12/site-packages/objc/_bridgesupport.py_get_ctypesr   5   s     ~ r   c                 H    t        | t              r| S | j                  d      S )Nascii)
isinstancebytesencode)values    r   	_as_bytesr   <   s     %<<  r   c                       e Zd ZdZi Zd Zd Zd Zej                  dkD  rd Z
nd Z
d Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zy)_BridgeSupportParserz
    Parser for the bridge support file format.

    Instances of this class will not update the bridge state,
    this makes it easier to test the class.
    c                     || _         g | _        g | _        g | _        g | _        g | _        i | _        g | _        g | _        i | _	        | j                  |       y N)frameworkNamecftypes	constantsfunc_aliases	functionsinformal_protocolsmetaopaquestructsvaluesprocess_data)selfxmldatar   s      r   __init__z_BridgeSupportParser.__init__L   sY    *"$	'"r   c                     t        j                  |j                               }|j                  dk7  rt	        j
                  d      |D ]'  }t        | d|j                   d       }|  ||       ) y )N
signaturesz'invalid root node in bridgesupport filedo_)ET
fromstringstriptagobjcerrorgetattr)r*   r+   rootnodemethods        r   r)   z!_BridgeSupportParser.process_data[   sd    }}W]]_-88|#**FGGDTS
#3T:F~4L r   c           	         t        |      }d|v r|j                  dd      d   }g }t        j                  |      D ]  }|t        j                  k(  r |j                  t        j                         7|t        j                  k(  r |j                  t        j                         j|j                  t        j                        s |j                  t        j                        r	|d d |dd  }}t        j                  t        j                  t        |dd       z   t        j                  z         \  }}|j                  |       |+|j                  t        |             |j                  d       |D ]c  \  }}	|<|j                  d       |j                  t        |             |j                  d       |j                  | j                  |	             e |j                  |       |j                  t        j                        rt        j                  d|      }
|j                  t        j                         |j                  |
j!                  d             |j                  | j                  |
j!                  d                   |j                  t        j"                         v|j                  |        d	j%                  |      S )
N   ,   r      =   "s   ^.(\d*)(.*).$   r   )r   splitr4   splitSignature_C_BOOLappend	_C_NSBOOL
startswith_C_STRUCT_B
_C_UNION_BsplitStructSignature_C_STRUCT_Etypestr2typestr_C_ARY_Brematchgroup_C_ARY_Ejoin)r*   typestrresultitemstartstopnamefieldsnmtpms              r   rK   z$_BridgeSupportParser.typestr2typestrh   s   G$
 7?mmD!,Q/G''0Dt||#dnn-'dll+!1!12doodoo6V"2AhRS	t#88$$ya'<<t?O?OO f e$#MM)D/2MM$'$FB~d+im4d+MM$"6"6r":; % d#/HH.5dmm,aggaj)d221771:>?dmm, d#G 1J xxr   l        c                 R    ||j                  |      }||S |j                  |      S r   get)r*   r8   rW   name64r   s        r   attribute_stringz%_BridgeSupportParser.attribute_string   s/    !($ L88D>!r   c                 $    |j                  |      S r   r]   )r*   r8   rW   r_   s       r   r`   z%_BridgeSupportParser.attribute_string   s    88D>!r   c                 >    | j                  |||      }||S |dk(  ryy)NtrueTF)r`   )r*   r8   rW   r_   dfltr   s         r   attribute_boolz#_BridgeSupportParser.attribute_bool   s-    %%dD&9=KF?r   c                     |j                  dd      \  }}t        |      }	 |j                  d      dd  D ]  }t        ||      } t        ||      S # t        $ r t        |      w xY w)N.r<   )rsplit
__import__rA   r6   AttributeErrorImportError)r*   rW   modulefieldr[   rY   s         r   import_namez _BridgeSupportParser.import_name   ss    C+v	$ll3'+ArN , 1e$$ 	$d##	$s   0A A(c                    d }i }|r#|r!| j                  |dd       }|yt        |      }| j                  |dd      }|r| j                  |      }||d<   | j                  |dd       }|rt        |      |d<   | j                  |dd      }|r| j                  |      |d<   | j                  |dd       }|rt        |      |d<   t        D ]&  }|d	k(  r|s| j                  ||d d
      }|s"d||<   ( | j                  |dd d      }|sd
|d<   | j                  |dd       }|rQd|v r6t        t        |j                  d            \  }}	|r
|dz  }|	dz  }	||	f|d<   nt        |      }|r|dz  }||d<   | j                  |dd d
      s| j                  |dd d
      r| j                  |dd d      }
|
|d<   i x}|d<   i x}|d<   d}| j                  |dd d
      rddi||<   |dz  }|D ]]  }|j                  dk(  r!| j                  |d
d
      \  }}|||<   |dz  }3|j                  dk(  sC| j                  |d
d
      \  }}||d<   _ ||fS )NindexNNtypetype64type_modifiersel_of_typesel_of_type64c_array_of_fixed_lengthr	   FTnull_acceptedc_array_length_in_arg,r@   function_pointerblockfunction_pointer_retainedcallable_retainedcallable	argumentsr   s   ^vr<   argr   )
r`   intrK   r   _BOOLEAN_ATTRIBUTESre   maprA   r3   
xml_to_arg)r*   r8   	is_methodis_argargIdxrS   sattrrU   rV   vr%   r   idxal_ds                    r   r   z_BridgeSupportParser.xml_to_arg   s   i**4$?F~![F!!$9$$Q'AF6N!!$>&/lF?#!!$G$($8$8$;F=!!!$(A4H03AF,-'D11&##D$e<A#t ( otTB&+F?#!!$(?Fax!#qwws|4tQJEAID38$-./ FFA23./$dE
  we<##D*EtTRA*+F&'(**D6*%,..I[)C""4$>"(%	#q66U???2ue<DAq%&IcN1HCVVx'??2ue<DAq%&DN  v~r   c                 D   t                | j                  |dd       }| j                  |dd      }| j                  |dd       }| j                  |dd       }|r|sy | j                  |      }|r | j                  j	                  ||d |f       y ||d d dz   }	 t
        j                  d       }t        ||      }t
        j                  |_	        | j                  j	                  || |       f       y # t        $ r" | j                  j	                  ||d df       Y y w xY w)	NrW   rr   rs   gettypeid_functollfree	GetTypeIDNSCFType)r   r`   rK   r    rD   r   CDLLr6   c_longrestyperj   )r*   r8   rW   rR   funcnamer   dll	gettypeids           r   	do_cftypez_BridgeSupportParser.do_cftype  s   $$T648''fh?((/?F((z4@7&&w/LLwh ?@ 9{2kk$'#C2	$*MM	!
 LLw	 <=	 " ##T7D*$EFs   6C4 4(DDc                 <   | j                  |dd       }| j                  |dd      }||sy | j                  |      }|j                  t        j                        rfd |      ry | j                  |dd d      }| j                  j                  |||f       y )NrW   rr   rs   c                     t        j                  t        |             \  }}|D ]<  \  }}|dk(  r y|dk(  r y|j                  t         j                        s4 |      c S  y)N   ?Ts   ^?F)r4   rI   r   rF   rG   )rR   rY   rX   _nmrZ   has_embedded_functions        r   r   z?_BridgeSupportParser.do_constant.<locals>.has_embedded_function;  s`    !66y7IJ
F%GCTz#u#t'7'784R88  & r   magic_cookieF)r`   rK   rF   r4   rG   re   r!   rD   )r*   r8   rW   rR   magicr   s        @r   do_constantz _BridgeSupportParser.do_constant.  s    $$T648''fh?<w&&w/d../
 %W-##D.$FtWe45r   c                    | j                  |dd       }|sy |D ]  }|j                  dk7  r| j                  |dd       }|*t        |      }| j                  |dd d      }| j                  |dd d      }| j                  |dd       }| j                  |dd d      }| j                  |d	d t              }	|	t        u r| j                  |d
d d      }	i }
|rF| j                  |dd       }|st
        }||
d<   |
| j                  t        |      t        |      |	f<   |rd|
d<   |r||
d<   |rt        |      dz   |
d<   i x}|
d<   |D ]d  }|j                  dk(  r%| j                  |dd      \  }}|+|s.|||dz   <   7|j                  dk(  sG| j                  |dd      \  }}|s`||
d<   f |s|
d= |
s|
| j                  t        |      t        |      |	f<    y )NrW   r9   selectorvariadicFr
   ry   ignoreclassmethodclass_method
suggestionTr@   r   r   r   )	r`   r3   r   re   	_SENTINEL_DEFAULT_SUGGESTIONr%   r   r   )r*   r8   
class_namer9   sel_namer   c_arrayc_lengthr   is_classmetadatar   r   r   arg_idxr%   r   s                    r   do_classz_BridgeSupportParser.do_classM  s(   **4>
FzzX%,,VZFH *H**6:tUKH))3T5G ,,V5LdSH((4GF**6=$	RH9$..v~tUSH!226<N
!!4J)3&  		9Z0)H2ExPQ '+$<CH898;H8IH45022I-66U?$(OOBd$CMGT*t15	'A+.VVx'"oob$>GAt-1*  [) 		9Z0)H2ExPQ{ r   c                    | j                  |dd       }| j                  |dd      }|:t        j                  dk(  r| j                  |dd       }n| j                  |dd       }|r|sy |j                  d      s|j                  d      r|d d	 }|j	                         d
v rt        |      }nd|v rk|j                  d      s|j                  d      r|d d	 }|j                  d      s|j                  d      rt
        j                  |      }n(t        |      }nd|v rt        |      }nt        |d      }|| j                  |<   y )NrW   r   value64littlele_valuebe_valuelLr=   )z+infz-infnanrg   fF0x0Xinf
   )
r`   sys	byteorderendswithlowerfloatrF   fromhexr   r(   )r*   r8   rW   r   s       r   do_enumz_BridgeSupportParser.do_enum  s/   $$T648%%dGY?=}}(--dJE --dJE5>>#%.."5#2JE;;=33%LEE\~~c"ennS&9cr
%)9)9$)?e, ee^%LE rNE!Dr   c                    | j                  |dd       }|sy | j                  |dd d      ry i }dg}i x}|d<   | j                  |dd d      }|rCd|d<   | j                  |dd d      }|rd|d<   | j                  |d	d       }|rt        |      |d	<   |D ]  }|j                  d
k(  rB| j	                  |dd      \  }	}
d|
vr y |j                  |
d          |
|t        |      dz
  <   T|j                  dk(  sd| j	                  |dd      \  }	}
d|
vr y |
d   |d<   |
|d<    |d   s|d= | j                  j                  |dj                  |      d|f       y )NrW   r   F   vr   r   Tr
   ry   r   rr   r@   r   r   r    )	r`   re   r   r3   r   rD   lenr#   rQ   )r*   r8   rW   r%   siglistr   r   r   r   r   r   s              r   do_functionz _BridgeSupportParser.do_function  s   $$T648tXtU;&(**	D%&&tZuE#D##D*EtUSA4801%%d,CTJA03A,-Bvvr5$71?qy)./	#g,*+8#r5%81?vY
!"X! $ K [!tSXXg%6DABr   c                     | j                  |dd       }| j                  |dd       }|r|sy | j                  j                  ||f       y )NrW   original)r`   r"   rD   )r*   r8   rW   r   s       r   do_function_pointerz(_BridgeSupportParser.do_function_pointer  sK    $$T648((z4@8  $!12r   c                    | j                  |dd       }|sy g }|D ]  }| j                  |dd       }| j                  |dd      }| j                  |dd t              }|t        u r| j                  |dd d      }|r|sb| j                  |      }t	        j
                  d t        |      t        |      |      }|j                  |        |r| j                  j                  ||f       y y )	NrW   r   rr   rs   r   r   F)r   	signatureisClassMethod)	r`   re   r   rK   r4   r   r   rD   r$   )	r*   r8   rW   method_listr9   r   rR   r   sels	            r   do_informal_protocolz)_BridgeSupportParser.do_informal_protocol  s    $$T648F,,VZFH++FFHEG**6=$	RH9$..v~tUS7**73G--"8,#G,&	C s#% ( ##**D++>? r   c                 N    | j                  |dd       }|sy d | j                  |<   y )NrW   )r`   r(   )r*   r8   rW   s      r   do_null_constz"_BridgeSupportParser.do_null_const  s*    $$T648 Dr   c                     | j                  |dd       }| j                  |dd      }||sy | j                  |      }| j                  j                  ||f       y )NrW   rr   rs   )r`   rK   r&   rD   )r*   r8   rW   rR   s       r   	do_opaquez_BridgeSupportParser.do_opaque  sZ    $$T648''fh?<w&&w/D'?+r   c                    | j                  |dd       }| j                  |dd      }| j                  |dd       }|r|sy t        j                  dd|      }| j                  |      }|r1	 | j	                  |      }| j
                  j                  |||f       y | j
                  j                  ||d f       y # t        $ r Y *w xY w)NrW   rr   rs   aliasz@"[^"]*"@)r`   rM   subrK   rn   r'   rD   rk   )r*   r8   rW   rR   r   r   s         r   	do_structz_BridgeSupportParser.do_struct  s    $$T648''fh?%%dGT:7 &&c73&&w/((/ ##T7E$:;T7D12  s   *B9 9	CCc                 8   | j                  |dd       }| j                  |dd      }| j                  |dd d      }|r|sy |s	 |j                  d      }|| j                  |<   y # t        $ r,}t	        j
                  d| d| t        d	
       Y d }~y d }~ww xY w)NrW   r   r   nsstringFlatin1z.Error parsing BridgeSupport data for constant : r@   
stacklevel)r`   re   r   UnicodeErrorwarningswarnRuntimeWarningr(   )r*   r8   rW   r   r   es         r   do_string_constantz'_BridgeSupportParser.do_string_constant;  s    $$T648%%dGY?&&tZuE5X. "D   DTF"QCP" 
 s   A$ $	B-"BBN)__name__
__module____qualname____doc__TAG_MAPr,   r)   rK   r   maxsizer`   re   rn   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   B   s     G#/ b {{U	"	"
$Pd><6>DL#"J,C\3@:!	,3<"r   r   c           	         t        j                  dt        d       |r>t                t        j
                  j                  |      }t        j                  |       t        j                  d       	 t        | |      }|j                  |j                         |j                  D ]  }t        j                  | }|||d   <    |j                   D ]  \  }	}
t        j"                  |	|
      ||	<     |j$                  D ]A  \  }	}
}||||	<   t        j&                  |	|
|       &t        j(                  |	|
d       x||	<   }C |j*                  D ]2  \  }	}
}	 t        j,                  |	|
j/                  d      |      }|||	<   4 |j2                  D ]-  \  }}}t        j4                  |||j2                  |||f          / |j6                  rDt        j8                  d ||j6                         |!t        j:                  |||j6                         |j<                  D ]  \  }	}	 ||   ||	<    	 t        j                  d       y # t0        $ r Y w xY w# t>        $ r Y Cw xY w# t        j                  d       w xY w)NzPThis function will be removed in PyObjC 10, switch to the modern metadata systemr@   r   Tr   r   F) r   r   DeprecationWarningr   r   cdllLoadLibrary
_librariesrD   r4   _updatingMetadatar   updater(   r    registerCFSignaturer&   createOpaquePointerTyper'   createStructAliascreateStructTyper!   _loadConstantdecoderj   r%   registerMetaDataForSelectorr#   loadBundleFunctionsloadFunctionListr"   KeyError)r+   globalsr   
dylib_path	inlineTablibprsentryrZ   rW   rR   r   r   r   r   r   r   origs                     r   r   r   T  sH    MMZ kk%%j1#4 -&"7M:szz"[[E))51B "GE!H !
 !ZZMD' 88wGGDM ( %(KK D'5  %&&tWe<(,(=(=dGT(RR %0 %(MM D'5**41H%P "GDM %2 /2hh*J(,,Hchh
Hh/O&P /7
 ==$$T7CMMB$%%i#--H**JD$ ' + 	u%/ " &   	u%sV   3C"I" &I<B%I" "I*I" 	II" II" 	II" II" "I9c                     	 t        j                  | ||g|i | y # t         j                  $ r-}dd l} |j                  d| d| t
        d       Y d }~y d }~ww xY w)Nr   z%Error parsing BridgeSupport data for r   r@   r   )r4   r   internal_errorr   r   r   )datar  r   argskwdsr   r   s          r   _parseBridgeSupportr    se    	
g}LtLtL 
3M?"QCH	
 	

s    A#AAc                     	 t        j                  |       j                  |      j                         S # t        $ r Y yw xY w)NF)r   filesjoinpathis_filerk   packageresources     r   resource_existsr    s<    w'00:BBDD s   14 	A A c                 f    t        j                  |       j                  |      j                         S r   )r   r  r  	read_textr  s     r   resource_stringr    s%    ??7#,,X6@@BBr   c                    t        j                  dt        d       || }|5|t        j                  | ||      }nOt        j                  | |||      }n5	 |t        j                  | ||      }nt        j                  | |||      }t        |d	<   t        j                  |d
<   t        |d      rt        |d      }t        ||| |       |S |j                  | dd      }	|	|j                  | dd      }
t        |	d      5 }|j                         }ddd       |
t        || |
       nt        ||        t        |d      rt        |d      }t        ||| |       |S | dz   }t        D ]  }t        j                  j!                  ||      }	t        j                  j#                  |	      sCt        |	d      5 }|j                         }ddd       t        j                  j!                  || dz         }
t        j                  j#                  |
      rt        || |
       nt        ||        t        |d      rt        |d      }t        ||| |       |c S  |S # t
        $ r8 |t        j                  | ||      }nt        j                  | |||      }Y w xY w# 1 sw Y   xY w# 1 sw Y   xY w)z
    Load the named framework, using the identifier if that has result otherwise
    using the path. Also loads the information in the bridgesupport file (
    either one embedded in the framework or one in a BrigeSupport library
    directory).
    zOThis function will be removed in PyObjC 9, switch to the modern metadata systemr@   r   N)bundle_path)r  scan_classes)bundle_identifier)r!  r   r4   superzPyObjC.bridgesupport)r  bridgesupportBridgeSupportdylibrb)r  zPyObjCOverrides.bridgesupportz.bridgesupportz.dylib)r   r   r   r4   
loadBundlerk   r"  r  r  r  #pathForResource_ofType_inDirectory_openreadBRIDGESUPPORT_DIRECTORIESospathrQ   exists)r   frameworkPathframeworkIdentifierr  r  r   frameworkResourceNamebundler  r-  r  fpfndns                 r   r   r     s    MMY
 $ -"__]GWF__))	F	#!7>Q
 !&9!-	, GFO zzGG
 ,.DE46LMD'=IN 55D ??7O

 $779D !g}Tg}= 02QR"%'FD  g}	R 
)	)B'ww||B#77>>$dD!Rwwy " b-(*BCJww~~j)#D'=ZX#D'=A 46UV&)+J $D'=IVM' (* M[  	#!7 ! -!-		J , "!s*   4I' J+J8'=J('J(+J58K	rq   )NNN)r   __all__r,  rM   r   r   xml.etree.ElementTreeetreeElementTreer0   	importlibr   r4   r   r9   r  r+  objectr   r   r   r   r   r   r   r   r  r  r  r   r   r   r   <module>r<     s    9 	 	 
  " "  	F %D$$Vh);T(BC$ == H	-  !L" L"^ 
 AE<&~

C ~r   