+
    öÙ†j²,  ã                   óÎ   € R t ^ RIt^ RIt^ RIHtHt ^ RItR tR t^]P                  ! ]P                  4      ^,          ^,
          ,          ^,
          t ! R R4      tR tR tR# )	z Python implementation of computing the layout of a struct/union

This code is internal and tightly coupled to the C part. The interface
may change at any time.
N)ÚCFieldÚbuffer_infoc                 óD   € V ^ 8¼  g   Q hV^ 8”  g   Q hW,          V,          # ©é    © ©ÚnÚmultiples   &&Ú%/usr/lib/python3.14/ctypes/_layout.pyÚ
round_downr      s&   € Ø�Œ6€Mˆ6Ø�aŒ<Ðˆ<Ø�M˜XÕ%Ð%ó    c                 ó`   € V ^ 8¼  g   Q hV^ 8”  g   Q hW,           ^,
          V,          V,          # r   r   r   s   &&r   Úround_upr      s0   € Ø�Œ6€Mˆ6Ø�aŒ<Ðˆ<Ø�\˜AÕ (Õ*¨hÕ6Ð6r   c                   ó&   a € ] tR t^t o R tRtV tR# )ÚStructUnionLayoutc                ó6   € Wn         W n        W0n        W@n        R # ©N©ÚfieldsÚsizeÚalignÚformat_spec)Úselfr   r   r   r   s   &&&&&r   Ú__init__ÚStructUnionLayout.__init__   s   € àŒð Œ	ð Œ
ð 'Ör   )r   r   r   r   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   Ú__static_attributes__Ú__classdictcell__)Ú__classdict__s   @r   r   r      s   ø‡ € ÷'ð 'r   r   c                ó*  € \        V RR4      p\        V RR4      pVfz   \        P                  R8X  d   RpM„V'       dW   V'       d   RpMRp\        P                  ! RR	V P
                   R
V R2R,           R,           R,           R,           R,R7       RpM&RpM#VR8X  d   RpMVR8X  d   RpM\        RV: 24      h\        V R^4      pV^ 8  d   \        R4      hV^ 8X  d   ^pV'       d!   \        \        P                  ! V4      V4      p\        V R4      p	V	'       d   \        P                  R8H  p
M\        P                  R8H  p
VeH    \        V4      pT^ 8  d   \        R4      hT\        8”  d   \        R4      hT'       d   \        R4      h. pV'       d   R.pMR.p^ p^ p^ p^ p^ pV'       d+   \        P                  ! V4      pV'       d   V^,          pMTpTp\!        V4       EF  w  ppV'       g   ^ p^ p^ p\#        V4      p Vw  ppRp\        P                  ! V4      pV^,          pT^,          p\        P                  ! T4      ;'       g    ^pT^,          pT'       d£   Te   Q hT^ 8X  g   Q h\%        TT4      pTT,           pTT,           p T T8”  d   \'        TT4      p\%        TT4      ^,          p!T'       d   T^T!,          ,
          p"T"T8:  g   Q hMT!T^,          8X  g   Q hTT,          p\'        T^4      ^,          pMœT'       d   \)        TT4      p^ TT,           8  g   TT8w  d   \'        TT4      pTT,          pTpT) pTT8X  g   Q hYý^,          ,
          p!T'       d   ^ YÞ,           8:  g   Q hYÞ,           p"T'       d   YÞ,           T8  g   Q hTT,          pTpT'       d   T
'       d   TT,
          X",
          p"T'       d¨   T!T,
          p#TP+                  \-        T#4      4       \/        T4      w  p$p%p&T&'       d+   TP1                  R!R"P3                  R# T& 4       4      R$34       T$f   Rp$\5        T\6        4      '       d   \        R%T: R&24      hTP+                  T$ R'T R'24       TP+                  \9        TTTT!T'       d   TMRT'       d   X"MRTRR(7      4       T'       d   T'       g
   T^ 8”  g   Q h\        TT4      pTpT'       d   EKö  \        TT4      pEK  	  V'       d   Tp'MTp'\'        V'V4      p(V'       d5   V(V',
          p#VP+                  \-        V#4      4       VP+                  R)4       \;        VV(VR*P3                  V4      R+7      #   \        \        3 d    \        R4      hi ; i  \        \        3 d}     Tw  pppM%  \        \        3 d   p\        R-4      ThRp?ii ; iRpT^ 8:  d   \        R T: 24      h\        P                  ! T4      pTT^,          8”  d   \        R T: 24      h ELßi ; i).zƒReturn a StructUnionLayout for the given class.

Called by PyCStructUnionType_update_stginfo when _fields_ is assigned
to a class.
Ú_pack_NÚ_layout_Úwin32FÚ	StructureÚUnionz_pack_ without _layout_zDue to '_pack_', the 'z' z will z2use memory layout compatible with MSVC (Windows). z+If this is intended, set _layout_ to 'ms'. z8The implicit default is deprecated and slated to become zan error in Python {remove}.)ÚremoveTÚmszgcc-sysvzunknown _layout_: Ú_align_z&_align_ must be a non-negative integerÚ_swappedbytes_ÚlittleÚbigz_pack_ must be an integerz%_pack_ must be a non-negative integerz_pack_ too bigz-_pack_ is not compatible with gcc-sysv layoutzT{ÚBz%number of bits invalid for bit field Ú(Ú,c              3   ó8   "  € T F  p\        V4      x € K  	  R # 5ir   )Ústr)Ú.0r	   s   & r   Ú	<genexpr>Úget_layout.<locals>.<genexpr>  s   é € Ð6©X¨œS ŸV˜V«Xùs   ‚Ú)zfield z": name must be a string, not bytesÚ:)ÚnameÚtypeÚ	byte_sizeÚbyte_offsetÚbit_sizeÚ
bit_offsetÚindexÚ_internal_useÚ}Ú r   )é   é   zW_fields_ must be a sequence of (name, C type) pairs or (name, C type, bit size) triples)ÚgetattrÚsysÚplatformÚwarningsÚ_deprecatedr   Ú
ValueErrorÚmaxÚctypesÚ	alignmentÚhasattrÚ	byteorderÚintÚ	TypeErrorÚ_INT_MAXÚsizeofÚ	enumerateÚtupler   r   ÚminÚappendÚpadding_specr   ÚextendÚjoinÚ
isinstanceÚbytesr   r   ))ÚclsÚinput_fieldsÚ	is_structÚbaseÚpackÚlayoutÚ
gcc_layoutÚbase_type_namer   Úswapped_bytesÚ
big_endianÚresult_fieldsÚformat_spec_partsÚlast_field_bit_sizeÚnext_bit_offsetÚnext_byte_offsetÚstruct_sizeÚ
union_sizeÚ	last_sizeÚiÚfieldr9   ÚctypeÚis_bitfieldÚ	type_sizer=   ÚexcÚtype_bit_sizeÚ
type_alignÚtype_bit_alignÚslot_start_bitÚslot_end_bitÚfield_end_bitÚoffsetr>   ÚpaddingÚfieldfmtÚbf_ndimÚbf_shapeÚ
total_sizeÚaligned_sizes)   &&&&                                     r   Ú
get_layoutr‚   *   sZ  € ô8 �3˜ $Ó'€Dä�S˜* dÓ+€FØ‚~Ü�<‰<˜7Ô"Ø‰JßßØ!,‘à!(�Ü× Ò Ø)Ø(¨¯©¨°b¸Ð8HÈÐOØFõGà?õ@ð MõMð 1õ	1ð
 õð ‰Jà‰JØ	�4ŒØ‰
Ø	�:Ô	Ø‰
äÐ-¨f©ZÐ8Ó9Ð9ä�C˜ AÓ&€EØˆq„yÜÐAÓBÐBØ	�!ŒàˆçÜ”F×$Ò$ TÓ*¨EÓ2ˆä˜CÐ!1Ó2€MßÜ—]‘] hÑ.‰
ä—]‘] eÑ+ˆ
àÒð	:Ü�t“9ˆDð �!Œ8ÜÐDÓEÐEØ”(Œ?ÜÐ-Ó.Ð.ßÜÐLÓMÐMà€MçØ!˜FÑà ˜EÐàÐð €OØÐð €Kà€JçÜ—m’m DÓ)ˆßØ)¨A�o‰Oà*Ðà€IÜ˜l×+‰ˆˆ5ßà"#ÐØˆOØ Ðô �e“ˆð	%Ø‰KˆD�%ð"  ˆKÜŸš eÓ,ˆIØ  1•}ˆHà! A�ˆÜ×%Ò% eÓ,×1Ð1°ˆ
Ø# a�ˆçà’<Ð�<Ø# qÔ(Ð(Ð(ô (¨¸ÓHˆNØ)¨MÕ9ˆLà+¨hÕ6ˆMØ˜|Ô+ô #+¨?¸NÓ"K�ä °Ó@ÀAÕEˆFßØ,¨q°6­zÕ9�
Ø! ]Ô2Ð2Ñ2à °1Õ!4Ô4Ð4Ð4à˜xÕ'ˆOÜ" ?°AÓ6¸!Õ;‰KçÜ   zÓ2�
ð �_ xÕ/Ô/Ø!Ð%8Ô8ô $,Ð,<¸jÓ#IÐ à  IÕ-Ð à&3Ð#ð
 $7Ð"6�à Ð$7Ô7Ð7Ð7à%¸qÕ(@Õ@ˆFßØÐ0ÕBÔCÐCÐCØ0ÕB�
ßØ+Õ=ÀÔNÐNÐNà˜xÕ'ˆOØ*ˆKçŸ:ð '¨Õ1°JÕ>ˆJ÷ Ø˜yÕ(ˆGØ×$Ñ$¤\°'Ó%:Ô;ä*5°eÓ*<Ñ'ˆH�g˜xçØ!×(Ñ(ØØ—H‘HÑ6©XÓ6Ó6Øð*ô ð ÒØ�Ü˜$¤×&Ò&ô  Ø˜T™HÐ$FÐGóIð Ià×$Ñ$¨ z°°4°&¸Ð%:Ô;à×ÑœVØØØØß!,‘X°$ß%0‘z°dØð ô
ô 	÷ ŸzØ  1Ô$Ð$Ð$ä�E˜:Ó&ˆØˆ	ßŠyÜ˜[¨*Ó5‹Jñe ,÷h Ø ‰
àˆ
ô ˜J¨Ó.€L÷ Ø Õ+ˆØ× Ñ ¤¨gÓ!6Ô7Ø× Ñ  Ô%äØØØØ—G‘GÐ-Ó.ô	ð øôM œ:Ð&ô 	:ÜÐ8Ó9Ð9ð	:ûô^ œIÐ&ô 	FðFØ(-Ñ%��e™XøÜ¤	Ð*ô FÜ ð<ó=àBEðFûðFúð ˆKØ˜1Œ}Ü Ø;¸D¹8ÐDóFð FäŸš eÓ,ˆIØ˜) a�-Ô'Ü Ø;¸D¹8ÐDóFð Fò (ð	FúsC   ÅU% ÈVÕ%VÖXÖVÖXÖW Ö/V;Ö;W × AXØXc                 ó0   € V ^ 8:  d   R# V ^8X  d   R# V  R2# )r   rB   Úxr   )r|   s   &r   rX   rX   E  s"   € Ø�!„|ÙØ�!„|ÙØˆY�aˆ=Ðr   )Ú__doc__rF   rH   Ú_ctypesr   r   rL   r   r   rS   Úc_intrR   r   r‚   rX   r   r   r   Ú<module>rˆ      s`   ðñó Û ç 'Û ò&ò
7ð
 �&—-’- §¡Ó-°Õ1°QÕ6Õ6¸!Õ;€÷'ñ 'ò Xôvr   