+
    :ih                      `   R t ^ RIHtHt ^ RIHt ^ RIHtHt ^ RI	H
t
 ^ RIHtHtHt ^ RIHt ^ RIHt RtR	tR
tR t]! ]]RR7      t]! ]]RR7      tR t/ tR t]! ]P8                  4      R 4       t]! ]P8                  4      R 4       t]P>                  ! ]P@                  4      R 4       t!R# )z
Implement logic relating to wrapping (box) and unwrapping (unbox) instances
of jitclasses for use inside the python interpreter.
)wrapspartial)ir)typescgutils)njit)boxunboxNativeValue)typeof_impl)_boxz;
def accessor(__numba_self_):
    return __numba_self_.{0}
zN
def mutator(__numba_self_, __numba_val):
    __numba_self_.{0} = __numba_val
zL
def method(__numba_self_, *args):
    return __numba_self_.{method}(*args)
c                `    VP                  V 4      p/ p\        W44       \        WB,          4      # )z?
Generate simple function that get/set a field of the instance
)formatexecr   )fieldtemplatefnamesourceglblss   &&&  `/var/www/html/photoedit/myenv/lib/python3.14/site-packages/numba/experimental/jitclass/boxing.py_generate_propertyr   !   s,     __U#FE    accessor)r   r   mutatorc                   a \         P                  V R7      p/ p\        W#4       \        VR,          4      o\	        V4      V3R l4       pV# )zc
Generate a wrapper for calling a method.  Note the wrapper will only
accept positional arguments.
)methodr   c                     < S! V / VB # N )argskwargsr   s   *,r   wrapper!_generate_method.<locals>.wrapper;   s    t&v&&r   )_method_code_templater   r   r   r   )namefuncr   r   r!   r   s   &&   @r   _generate_methodr&   1   sP    
 #)))6FE%/"F
4[' ' Nr   c                    V \         9   d   \         V ,          # RRIRV RV P                  P                  /pV P                   F&  p\	        V4      p\        V4      p\        W44      W&   K(  	  V P                  P                  4        F}  w  r%RpRpRV9   d   \	        V4      pRV9   d   \        V4      pVP                  R4      ;'       g    VP                  R4      ;'       g    Rp\        VRR4      p\        W4VR7      W&   K  	  0 RkR	kR
kRkRkRkRkRkRkRkRkRkRkRkRkRkRkRkRkRkRkRkRkRkR kR!kR"kR#kR$kR%kR&kR'kR(kR)kR*kR+kR,kR-kR.kR/kR0kR1kR2kR3kR4kR5kR6kR7kR8kR9kR:kR;kR<kR=kR>kR?kR@kRAkRBkRCkRDkpV P                  P                  4        F^  w  rV	RE8X  d   K  V	P                  RF4      '       d-   V	P                  RF4      '       d   W9  d   \        RGV	 RH24      h\        W4      W&   K`  	  V P                   P                  4        F  w  r\        W4      W&   K  	  \#        V P$                  \&        P(                  3V4      pV\         V &   VP                  4        F  w  r\+        V\        4      '       g   K  \        W4      pVP,                  f   K8  VP,                  pVP/                  V 34      pVP1                  4        \3        W\        VVP4                  VP6                  VP8                  R7      4       K  	  V# )Jzu
Create a subclass of Box that is specialized to the jitclass.

This function caches the result to avoid code bloat.
	__slots___numba_type___doc__Ngetset)doc__abs____annotate_func____bool____complex____contains__	__float____getitem____hash__	__index__
__invert____int____len____setitem____str____eq____ne____ge____gt____le____lt____add____floordiv__
__lshift__
__matmul____mod____mul____neg____pos____pow__
__rshift____sub____truediv____and____or____xor____iadd____ifloordiv____ilshift____imatmul____imod____imul____ipow____irshift____isub____itruediv____iand____ior____ixor____radd____rfloordiv____rlshift____rmatmul____rmod____rmul____rpow____rrshift____rsub____rtruediv____rand____ror____rxor____init____zMethod 'z' is not supported.r   )_cache_specialized_box
class_type	class_docstruct_generate_getter_generate_setterproperty	jit_propsitemsr+   getattrmethods
startswithendswith	TypeErrorr&   static_methodstype	classnamer   Box
isinstancefgetcompiledisable_compilesetattrfsetfdelr*   )typdctr   gettersetterimpdctimpr-   supported_dundersr$   r%   subclskvpropr   	fast_fgets   &                r   _specialize_boxr   E   s    $$%c**3cnn..C
 !%(!%(f-
 
 ,,.F?%e,FF?%e,Fjj<<6::e#4<<c9d+f#6
 />>> 	> 		>
 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	>  	!>" 	#>$ 	%>& 	'>( 	)>* 	+>, 	->. 	/>0 	1>2 	3>4 	5>6 	7>8 	9>: 	;>< 	=>> 	?>@ 	A>B 	C>D 	E>F 	G>H 	I>J 	K>L 	M>N 	O>P 	Q>R 	S>T 	U>V 	W>X 	Y>Z 	[>\ 	]>^ 	_>` 	a>b 	c>d 	e>f 	g>h 	i>j 	k>l 	m>n 	o>p 	q>r 	s>t 	u>v 	w>x 	y>z 	{>~ kk'')
:OOD!!d##-htf,?@AA$T0	 * ((..0
$T0	 1 #--$((c2F"(3
 		a""6%Dyy$yy LL#0	$$& DIItyy%)\\34  Mr   c                   aaa \         P                  ! SP                  V4      w  r4\        V 4      pSP                  P                  SP                  \        V4      R R7      pSP                  P                  VSP                  P                  4      pSP                  P                  VR4      o\        P                  ! ^4      P                  4       oSP                  P                  VS4      pSP                  P                  VS4      p	VVV3R lp
V
! \        P                  V4       V
! \        P                   V	4       S# )box_class_instance)infoc                 *  < SP                   P                  \        P                  V 4      p\        P
                  ! SP                  SV4      pSP                  P                  VSP                  4       4      pSP                  P                  W4       R # r   )
contextget_constantr   uintpr   pointer_addbuilderbitcast
as_pointerstore)member_offsetvalueoffsetptrcastedr   c	llvoidptrs   &&   r   
set_member'_box_class_instance.<locals>.set_member   sd    '']C!!!))S&9""3	(<(<(>?			&r   r   )r   unpack_tupler   r   r   add_dynamic_addridr   pyapipyobjcall_function_objargsr   IntTyper   r   box_meminfoptr_offsetbox_dataptr_offset)r   valr   meminfodataptrbox_subclassedvoidptr_boxclsbox_clsaddr_meminfo	addr_datar   r   r   s   &&f        @@r   _box_class_instancer      s    ++AIIs;G %S)NYY//			
>! 0 N
 ii>G
''
'
'
4C 

1((*I99$$Wi8L		!!'95I' t))<8t&&	2Jr   c                 l  aa VV3R  lp\         P                  ! V 4      pV! SP                  SP                  4      pV! \        P
                  4      pV! \        P                  4      pSP                  P                  WeP                  P                  4      Vn        SP                  P                  WuP                  P                  4      Vn
        VP                  4       pSP                  P                  P                  SP                  W4       \        VSP                  P!                  4       R7      # )c                 l  < SP                   P                  \        P                  V 4      p\        P
                  ! ^4      P                  4       p\        P                  ! SP                  SV4      pSP                  P                  W2P                  4       4      pSP                  P                  V4      # )   )r   r   r   r   r   r   r   r   r   r   r   load)r   r   r   r   r   r   r   s   &    r   access_member,_unbox_class_instance.<locals>.access_member   s{    '']CJJqM,,.	!!!))S&9""3(<(<(>?yy~~f%%r   )is_error)r   create_struct_proxyr   r   r   r   r   r   r   r|   data	_getvaluenrtincrefr
   r   c_api_error)	r   r   r   r   
struct_clsinstptr_meminfoptr_dataptrrets	   &ff      r   _unbox_class_instancer      s    & ,,S1Jaii+D   : :;K 7 78K 99$$[,,2C2CDDL		!!+yy~~>DI
..
CIIMMC-sQWW%8%8%:;;r   c                 ,    \        \        V 4      R 4      # )r)   )rv   r|   )r   r   s   &&r   _typeof_jitclass_boxr     s    49n--r   N)"r*   	functoolsr   r   llvmliter   
numba.corer   r   numba.core.decoratorsr   numba.core.pythonapir   r	   r
   numba.core.typing.typeofr   numba.experimental.jitclassr   _getter_code_template_setter_code_templater#   r   rq   rr   r&   rm   r   ClassInstanceTyper   r   registerr~   r   r   r   r   <module>r      s   
 %  % & 8 8 0 , 
 
  -8M!+- -8M!*, "  @L U @ u<  <H dhh.  .r   