
    Yh%U                     |   d dl Z d dlZddlmZ ddlmZmZmZ dZdZ	dZ
d Z G d d	e      Z G d
 de      Z G d de      Z e       Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z ee      Zd Z ee      Z G d d e      Z G d! d"e      Z e ed#      d      Z G d$ d%e      Z G d& d'e      Z  G d( d)e       Z! G d* d+e       Z" G d, d-e      Z#d4d.Z$d4d/Z% e       Z& ejN                         Z(d0 Z)d1 Z*d2 Z+d3 Z,y)5    N   )allocate_lock)	CDefErrorVerificationErrorVerificationMissing      c                     | t         z  rd|j                         z   }| t        z  rd|j                         z   }| t        z  rd|j                         z   }|S )Nz const z
 volatile z __restrict )Q_CONSTlstrip
Q_VOLATILE
Q_RESTRICT)qualsreplace_withs     [/var/www/django-portfolio.reubendavern.link/venv/lib/python3.12/site-packages/cffi/model.pyqualifyr      sZ    w <#6#6#88z#l&9&9&;;z &(;(;(==    c                   B    e Zd ZdZdZd
dZd Zd Zd ZddZ	d Z
d Zy	)BaseTypeByIdentityFc                 @   | j                   }|j                  d      dk(  sJ |j                         }|r'|j                  d      r
d|v rd|z  }n|d   dvrd|z   }t	        ||      }|j                  d|      }d	|v r t        d
| j                         d|d      |S )N&r   *z&[z(%s)r   z[( $zcannot generate 'z' in z: unknown type name)c_name_with_markercountstrip
startswithr   replacer   _get_c_name)selfr   contextr   results        r   
get_c_namezBaseTypeByIdentity.get_c_name   s    ((||C A%%%#))+&&s+%4!!_,"\1ul3\2&=###%w01 1 r   c                 :    | j                   j                  dd      S )Nr    )r   r   r!   s    r   r    zBaseTypeByIdentity._get_c_name/   s    &&..sB77r   c                 &    d| j                         vS )Nr   r    r'   s    r   
has_c_namezBaseTypeByIdentity.has_c_name2   s    $**,,,r   c                      yNF r'   s    r   is_integer_typez"BaseTypeByIdentity.is_integer_type5       r   c                     	 |j                   |    }|S # t        $ r8 | j                  ||      }|j                   j                  | |      }||u sJ Y |S w xY wN)_cached_btypesKeyErrorbuild_backend_type
setdefault)r!   ffi
finishlist	can_delayBTypeBType2s         r   get_cached_btypez#BaseTypeByIdentity.get_cached_btype8   sj    	#&&t,E
 	  	#++C<E''224?FU?"?		#s    =AAc                 *    d| j                         dS )N<>r)   r'   s    r   __repr__zBaseTypeByIdentity.__repr__A   s    ))+--r   c                 X    | j                   D cg c]  }|t        | |      f c}S c c}w r1   )_attrs_getattrr!   names     r   
_get_itemszBaseTypeByIdentity._get_itemsD   s&    8<EwtT*+EEEs   'N)r&   za C filer   F)__name__
__module____qualname__is_array_typeis_raw_functionr$   r    r*   r.   r;   r?   rE   r-   r   r   r   r      s0    MO$8-.Fr   r   c                       e Zd Zd Zd Zd Zy)BaseTypec                 z    | j                   |j                   k(  xr! | j                         |j                         k(  S r1   )	__class__rE   r!   others     r   __eq__zBaseType.__eq__J   s4    %//1 8!U%5%5%77	9r   c                     | |k(   S r1   r-   rP   s     r   __ne__zBaseType.__ne__N   s    5=  r   c                 ^    t        | j                  t        | j                               f      S r1   )hashrO   tuplerE   r'   s    r   __hash__zBaseType.__hash__Q   s"    T^^U4??+<%=>??r   N)rG   rH   rI   rR   rT   rX   r-   r   r   rM   rM   H   s    9!@r   rM   c                       e Zd ZdZd Zd Zy)VoidTyper-   c                     d| _         y )Nzvoid&)r   r'   s    r   __init__zVoidType.__init__X   s
    ")r   c                     t        | |d      S )Nnew_void_typeglobal_cacher!   r6   r7   s      r   r4   zVoidType.build_backend_type[   s    D#77r   NrG   rH   rI   rA   r\   r4   r-   r   r   rZ   rZ   U   s    G*8r   rZ   c                       e Zd Zd Zy)BasePrimitiveTypec                      yr,   r-   r'   s    r   is_complex_typez!BasePrimitiveType.is_complex_typeb   r/   r   N)rG   rH   rI   rf   r-   r   r   rd   rd   a   s    r   rd   c                   r   e Zd ZdZi ddddddddddd	dd
dddddddddddddddddddddi ddddddddddddddddddd dd!dd"dd#dd$dd%dd&dd'di d(dd)dd*dd+dd,dd-dd.dd/dd0dd1dd2dd3dd4dd5dd6dd7dd8dZd9 Zd: Zd; Zd< Zd= Z	d> Z
y?)@PrimitiveTyperD   charcshortiintlongz	long longzsigned charzunsigned charzunsigned shortunsigned intunsigned longzunsigned long longfloatfdoublezlong double_cffi_float_complex_tj_cffi_double_complex_t_Boolwchar_tchar16_tchar32_tint8_tuint8_tint16_tuint16_tint32_tuint32_tint64_tuint64_tint_least8_tuint_least8_tint_least16_tuint_least16_tint_least32_tuint_least32_tint_least64_tuint_least64_tint_fast8_tuint_fast8_tint_fast16_tuint_fast16_tint_fast32_tuint_fast32_tint_fast64_tuint_fast64_tintptr_t	uintptr_tintmax_t	uintmax_t	ptrdiff_tsize_tssize_tc                 F    || j                   v sJ || _        |dz   | _        y Nr   )ALL_PRIMITIVE_TYPESrD   r   rC   s     r   r\   zPrimitiveType.__init__   s)    t/////	"&*r   c                 :    | j                   | j                     dk(  S )Nrk   r   rD   r'   s    r   is_char_typezPrimitiveType.is_char_type       ''		2c99r   c                 :    | j                   | j                     dk(  S )Nrm   r   r'   s    r   r.   zPrimitiveType.is_integer_type   r   r   c                 :    | j                   | j                     dk(  S )Nrs   r   r'   s    r   is_float_typezPrimitiveType.is_float_type   r   r   c                 :    | j                   | j                     dk(  S )Nrv   r   r'   s    r   rf   zPrimitiveType.is_complex_type   r   r   c                 2    t        | |d| j                        S )Nnew_primitive_type)r`   rD   ra   s      r   r4   z PrimitiveType.build_backend_type   s    D#';TYYGGr   N)rG   rH   rI   rA   r   r\   r   r.   r   rf   r4   r-   r   r   rh   rh   f   s   G5
c5
c5
 	c5
 	c	5

 	c5
 	c5
 	c5
 	c5
 	c5
 	c5
 	c5
 	c5
 	c5
 	c5
 	 5
  	!#!5
" 	c#5
& 	c'5
( 	c)5
* 	c+5
, 	c-5
. 	c/5
0 	c15
2 	c35
4 	c55
6 	c75
8 	c95
: 	c;5
< 	c=5
> 	c?5
@ 	cA5
B 	cC5
D 	cE5
F 	cG5
H 	cI5
J 	cK5
L 	cM5
N 	cO5
P 	cQ5
R 	cS5
T 	cU5
V 	cW5
X 	cY5
Z 	c[5
\ 	c]5
^ 	c_5
` 	ca5
b 	cc5
d 	ce5
f 	cg5
h 	ci5
n-
::::Hr   rh   c                   "    e Zd ZdZd Zd Zd Zy)UnknownIntegerTyperi   c                 &    || _         |dz   | _        y r   rD   r   rC   s     r   r\   zUnknownIntegerType.__init__       	"&*r   c                      y)NTr-   r'   s    r   r.   z"UnknownIntegerType.is_integer_type   s    r   c                 2    t        d| j                  z        )Nz4integer type '%s' can only be used after compilationNotImplementedErrorrD   ra   s      r   r4   z%UnknownIntegerType.build_backend_type        ! #026))#< = 	=r   N)rG   rH   rI   rA   r\   r.   r4   r-   r   r   r   r      s    G-=r   r   c                       e Zd ZdZd Zd Zy)UnknownFloatTyperi   c                 &    || _         |dz   | _        y r   r   rC   s     r   r\   zUnknownFloatType.__init__   r   r   c                 2    t        d| j                  z        )Nz2float type '%s' can only be used after compilationr   ra   s      r   r4   z#UnknownFloatType.build_backend_type   r   r   Nrb   r-   r   r   r   r      s    G-=r   r   c                       e Zd ZdZddZy)BaseFunctionType)argsr#   ellipsisabiNc                    || _         || _        || _        || _        | j                   D cg c]  }|j	                          }}| j                  r|j                  d       |xs dg}| j                  dj                  |      fz  }||d d |z   dz   |dd  z   }| j                  j                  j                  d|      | _        y c c}w )N...voidz, r   r   r   )
r   r#   r   r   r    append_base_patternjoinr   r   )r!   r   r#   r   r   argreprargsr   s           r   r\   zBaseFunctionType.__init__   s    	 15;#COO%;;==OOE"'x))TYYx-@,BB?'+c1C7,qr:JJLKK**223E 	 <s   Cr1   rG   rH   rI   rA   r\   r-   r   r   r   r      s    3GGr   r   c                        e Zd ZdZdZd Zd Zy)RawFunctionTypez(&)(%s)Tc                      t        d| d      )Ncannot render the type z7: it is a function type, not a pointer-to-function type)r   ra   s      r   r4   z"RawFunctionType.build_backend_type   s    BFI J 	Jr   c                 n    t        | j                  | j                  | j                  | j                        S r1   )FunctionPtrTyper   r#   r   r   r'   s    r   as_function_pointerz#RawFunctionType.as_function_pointer   #    tyy$++t}}dhhOOr   N)rG   rH   rI   r   rK   r4   r   r-   r   r   r   r      s     MOJPr   r   c                       e Zd ZdZd Zd Zy)r   z(*&)(%s)c                 r   | j                   j                  ||      }g }| j                  D ]#  }|j                  |j                  ||             % d}| j                  dk(  r$| j
                  s	 |j                  j                  f}t        | |dt        |      || j
                  g| S # t        $ r Y /w xY w)Nr-   	__stdcallnew_function_type)r#   r;   r   r   r   r   _backendFFI_STDCALLAttributeErrorr`   rW   )r!   r6   r7   r#   r   tpabi_argss          r   r4   z"FunctionPtrType.build_backend_type   s    --c:>)) 	>BKK++C<=	>88{"== # 8 8:H D#':!$KKAIK 	K & s   /B* *	B65B6c                 n    t        | j                  | j                  | j                  | j                        S r1   )r   r   r#   r   r   r'   s    r   as_raw_functionzFunctionPtrType.as_raw_function  r   r   N)rG   rH   rI   r   r4   r   r-   r   r   r   r      s    MKPr   r   c                       e Zd ZdZddZd Zy)PointerType)totyper   c                     || _         || _        d}|j                  rd|j                         d}t	        ||      }|j
                  j                  d|      | _        y )Nz *&()r   )r   r   rJ   r   r   r   r   )r!   r   r   extras       r   r\   zPointerType.__init__  sS    
#lln.Eu%"(";";"C"CC"Or   c                 Z    | j                   j                  ||d      }t        | |d|      S )NT)r8   new_pointer_type)r   r;   r`   )r!   r6   r7   BItems       r   r4   zPointerType.build_backend_type  s/    ,,S*,MD#'95AAr   Nr   rb   r-   r   r   r   r     s    !GPBr   r   c                 "    t        | t              S r1   )r   r   )r   s    r   ConstPointerTyper     s    vw''r   c                       e Zd ZdZddZy)NamedPointerType)r   rD   c                 T    t         j                  | ||       || _        |dz   | _        y r   )r   r\   rD   r   )r!   r   rD   r   s       r   r\   zNamedPointerType.__init__   s'    T651	"&*r   Nr   r   r-   r   r   r   r     s     G-r   r   c                   ,    e Zd ZdZdZd Zd Zd Zd Zy)	ArrayType)itemlengthTc                     || _         || _        |d}n|dk(  rd}nd|z  }| j                   j                  j                  d|      | _        y )Nz&[]r   z
&[/*...*/]z&[%s]r   )r   r   r   r   )r!   r   r   bracketss       r   r\   zArrayType.__init__*  sR    	>Hu_#H'HII((00h? 	r   c                 6    t        | j                  t              S r1   )
isinstancer   strr'   s    r   length_is_unknownzArrayType.length_is_unknown7  s    $++s++r   c                 .    t        | j                  |      S r1   )r   r   )r!   	newlengths     r   resolve_lengthzArrayType.resolve_length:  s    I..r   c                     | j                         rt        d| d      | j                  j                  ||       t	        | j                        j                  ||      }t        | |d|| j                        S )Nr   z: unknown lengthnew_array_type)r   r   r   r;   r   r`   r   )r!   r6   r7   BPtrItems       r   r4   zArrayType.build_backend_type=  sj    !!#!$ % %		""3
3tyy)::3
KD#'74;;OOr   N)	rG   rH   rI   rA   rJ   r\   r   r   r4   r-   r   r   r   r   &  s"     GMA,/Pr   r   rj   c                   &    e Zd ZdZdZd Zd Zd Zy)StructOrUnionOrEnumri   Nc                 j    | j                   xs | j                  d| j                  }|dz   | _        y )Nr   r   )	forcenamekindrD   r   rC   s     r   build_c_name_with_markerz,StructOrUnionOrEnum.build_c_name_with_markerL  s)    ~~ADIItyy!A"&*r   c                 2    || _         | j                          y r1   )r   r   )r!   r   s     r   force_the_namez"StructOrUnionOrEnum.force_the_nameP  s    "%%'r   c                 Z    | j                   j                  d      sJ | j                   d d S )Nr   )r   endswithr'   s    r   get_official_namez%StructOrUnionOrEnum.get_official_nameT  s/    &&//444&&s++r   )rG   rH   rI   rA   r   r   r   r  r-   r   r   r   r   H  s    GI-(,r   r   c                   X    e Zd ZdZdZdZdZddZd ZddZ	d Z
ddZd	 Zd
 Zd Zd Zy)StructOrUnionNr   Fc                 j    || _         || _        || _        || _        || _        | j                          y r1   )rD   fldnamesfldtypes
fldbitsizefldqualsr   )r!   rD   r  r  r  r	  s         r   r\   zStructOrUnion.__init___  s1    	  $ %%'r   c              #      K   | j                   Dt        | j                  | j                         D ]   \  }}|dk(  st        |t              s| " y y w)Nr&   )r  zipr  r   r  )r!   rD   types      r   anonymous_struct_fieldsz%StructOrUnion.anonymous_struct_fieldsg  sL     ==$!$--? 
d2:*T="AJ %s   8AAAc              #   6  K   | j                   }|dt        | j                        z  }t        | j                  | j                  | j
                  |      D ]@  \  }}}}|dk(  r,t        |t              r|r|j                         D ]  }|  9||||f B y w)Nr   r&   )	r	  lenr  r  r  r  r   r  
enumfields)r!   expand_anonymous_struct_unionr	  rD   r  bitsizer   r#   s           r   r  zStructOrUnion.enumfieldsm  s     ==c$--00H*-dmmT]].2oox+I 	3&D$
z$>5"oo/ !F L! T7E22	3s   BBc                 R   g }g }g }g }| j                         D ]L  \  }}}}|j                  |        |j                  |       |j                  |       |j                  |       N t        |      | _        t        |      | _        t        |      | _        t        |      | _        y r1   )r  r   rW   r  r  r  r	  )	r!   namestypesbitsizesr	  rD   r  r  r   s	            r   force_flattenzStructOrUnion.force_flatten{  s     *.//*; 	#&D$LLELLOOG$OOE"		#
 ee/hr   c                 ^    t         j                  | |||      }|s| j                  ||       |S r1   )r   r;   finish_backend_type)r!   r6   r7   r8   r9   s        r   r;   zStructOrUnion.get_cached_btype  s4    #44T3
5>@$$S*5r   c                 .   | j                   r)| j                   dk7  rt        d| j                  d      y |j                  |    }d| _         | j                  		 d| _         y | j
                  | j                  D cg c]  }|j                  ||       }}t        t        | j                  || j                              }d}| j                  r | j                  dk(  rd}nd| j                  f} |j                  j                  ||| ddg|  d| _         y g }| j
                  \  }}	}
}t        t        | j                              D ]t  }|	|   }| j                  |   }t!        |t"              r|j%                         r|j&                  j                  ||      }t)        ||j+                  |            \  }}|dk7  r3| j-                  d	| j                  d
| j                  |   xs dd       |j/                  |      }| j                  d | |fz   | j                  |dz   d  z   | _        |j                  ||      }t!        |t"              r|j0                  |dk(  sKJ |j+                  |      }||k7  r3| j-                  d| j                  | j                  |   xs d||fz         |j3                  |       w t        t        | j                  || j                  |            }|j                  j                  ||| |
|       d| _         y c c}w )Nr   z%recursive structure declaration for ''r   r-   )   r   r   zfield '.z{}z' has a bogus size?z=field '%s.%s' is declared as %d bytes, but is really %d bytes)	completedr   rD   r2   r  fixedlayoutr;   listr  r  r  packedr   complete_struct_or_unionranger  r   r   r   r   divmodsizeof_verification_errorr   r   r   )r!   r6   r7   r9   r   r  lstextra_flagsfieldofs	fieldsize	totalsizetotalalignmentrm   fsizeftype	BItemTypenlennrest
BFieldType	bitemsizes                       r   r  z!StructOrUnion.finish_backend_type  s   >>~~")8<		+D E E""4(== d a %"&--1 ++C< 1H 1s4==(DOODECK{{;;!#"&K#$dkk"2K1CLL11%d24bH;FHL E H=A=M=M:HiN3t}}-. ,!!a(eY/E4K4K4M %

 ; ;C LI"(

90E"FKD%z00 IIt}}Q'7'?4'?AB "006E%)]]2A%6%%A%)]]1Q34%8&9DM #33CD
eY/ELL4H A:%: #

: 6I E)00.1515q1A1IT1:E1CCD
 
+7,: s4==(DOOXNOCLL11%d2;^M_1s   ;Lc                     t        |      r1   )r   )r!   msgs     r   r&  z!StructOrUnion._verification_error  s    $$r   c                 h    | j                   r&| j                  t        | j                               y y r1   )partialr  r   r    r'   s    r   check_not_partialzStructOrUnion.check_not_partial  s/    <<D,,4%d&6&6&899 5<r   c                     | j                          |j                  |        t        | |d| j                  z  | j	                         |       S )Nznew_%s_typekey)r8  r   r`   r   r  ra   s      r   r4   z StructOrUnion.build_backend_type  sH     $D#}tyy'@ 224$@ 	@r   r1   )TrF   )rG   rH   rI   r  r  r7  r!  r\   r  r  r  r;   r  r&  r8  r4   r-   r   r   r  r  Y  sE    KIGF(3($=~%:@r   r  c                       e Zd ZdZy)
StructTypestructNrG   rH   rI   r   r-   r   r   r=  r=    s    Dr   r=  c                       e Zd ZdZy)	UnionTypeunionNr?  r-   r   r   rA  rA    s    Dr   rA  c                   8    e Zd ZdZdZdZd	dZd Zd Zd Z	d Z
y)
EnumTypeenumFNc                 \    || _         || _        || _        || _        | j	                          y r1   )rD   enumerators
enumvaluesbaseinttyper   )r!   rD   rG  rH  rI  s        r   r\   zEnumType.__init__  s,    	&$&%%'r   c                     t         j                  | |       | j                  +| j                         }d|j	                  dd      z   | _        y y )Nr   r   _)r   r   r   r  r   )r!   r   rD   s      r   r   zEnumType.force_the_name  sF    **4;>>!))+D 4<<S#99DN "r   c                 h    | j                   r&| j                  st        | j                               y y r1   )r7  partial_resolvedr   r    r'   s    r   r8  zEnumType.check_not_partial  s,    << 5 5%d&6&6&899 !6<r   c           
          | j                          | j                  ||      }t        | |d| j                         | j                  | j
                  ||       S )Nnew_enum_typer:  )r8  build_baseinttyper`   r  rG  rH  )r!   r6   r7   
base_btypes       r   r4   zEnumType.build_backend_type   sS     ++C<
D# 224 ,,doo&D2 	2r   c                    | j                   | j                   j                  ||      S | j                  r+t        | j                        }t	        | j                        }n?dd l}	 t        j                          |j                  d| j                         z         dx}}|dk  rd}t        d      }t        d      }nd}t        d      }t        d      }|j                  ||      }	|j                  ||      }
|j                  |	      }|j                  |
      }|dd	|z  dz
  z  k\  r|dd	|z  |z
  z  k  r|	S |dd	|z  dz
  z  k\  r|dd	|z  |z
  z  k  r|
S t        d
| j                         z        # t        $ r Y w xY w)Nr   zU%r has no values explicitly defined; guessing that it is equivalent to 'unsigned int'r   rn   ro   rp   rq   r   r  z=%s values don't all fit into either 'long' or 'unsigned long')rI  r;   rH  minmaxwarnings__warningregistry__clear	NameErrorwarnr    rh   r%  r   )r!   r6   r7   smallest_valuelargest_valuerU  sign
candidate1
candidate2btype1btype2size1size2s                r   rP  zEnumType.build_baseinttype  s   '##44S*EE?? 1N0M $))+ MM M ,,./ 0 ./.N]AD&u-J&v.JD&~6J&7J,,S*=,,S*=

6"

6"%	23Q1U74<01M%	23Q1U74<01M -/3/?/?/AB C 	C1  s   %E3 3	F ?F r1   )rG   rH   rI   r   r7  rM  r\   r   r8  r4   rP  r-   r   r   rD  rD    s,    DG(::2'Cr   rD  c                 `    |d| z  }t        |d d d       }|j                  |        d|_        |S )Nz$%sunknown_type)r=  r   originrD   
structnamer   s      r   rd  rd  1  s;    T\
	JdD	1BdBIIr   c                 D    |d| z  }t        |d d d       }t        ||       S )Nz$$%s)r=  r   rf  s      r   unknown_ptr_typeri  9  s.    d]
	JdD	1BB%%r   c                    t        | t        j                        rt        S t        5  t        t        |       d      s"t        j                         t        |       _	        t        |       j                  cd d d        S # 1 sw Y   y xY w)N__typecache)
r   r  
ModuleType_typecache_cffi_backendglobal_lockhasattrr  weakrefWeakValueDictionaryrk  )backends    r   get_typecachers  C  sb     '5++,&&	 )tG}m4(/(C(C(EDM%G}(() ) )s   AA==Bc                    |j                  d||f      }|rJ 	 |j                  |   S # t        $ r Y nw xY w	  t        |j                  |      | }n$# t
        $ r}t        |d| d|      d }~ww xY w|j                  }t        5  |j                  |      }	|	|||<   |cd d d        S |	cd d d        S # 1 sw Y   y xY w)Nr;  : )pop
_typecacher3   rB   r   r   rn  get)
srctyper6   funcnamer   kwdsr;  resecacheres1s
             r   r`   r`   N  s    
((58T*
+CO8~~c"" I-gcllH-t4 I!(GQ"GHHI
 NNE	 yy~<E#J	    s5   ) 	55A 	A4A//A4	B8-B88Cc                     t        d| d|      S )N?r   r_   )r6   r9   s     r   pointer_cacher  e  s    S"4e<<r   c                     | j                   rJt        | j                   d         t        u r+|d| j                   d   f| j                   dd  z   | _         y y y )Nr   ru  r   )r   r  r   )r}  rD   s     r   attach_exception_infor  h  sI    vv$qvvay/S("AFF1I.0166!":= )vr   r1   )-r  rp  lockr   errorr   r   r   r   r   r   r   objectr   rM   rZ   	void_typerd   rh   r   r   r   r   r   r   
voidp_typer   const_voidp_typer   r   char_array_typer   r  r=  rA  rD  rd  ri  rn  rq  rm  rs  r`   r  r  r-   r   r   <module>r     s      D D 


,F ,F^
@! 
@8x 8 J	 
IH% IHX=* =	=( 	=Gx G(P& PP& P,B( B  #
( $I. -{ -P P> M&148,, ,"F@' F@R  EC" ECN& o5'557 	).=>r   