+
        ,                         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# )	zPython 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/lib64/python3.14/ctypes/_layout.py
round_downr      s&    6M6a<<MX%%    c                 `    V ^ 8  g   Q hV^ 8  g   Q hW,           ^,
          V,          V,          # r   r   r   s   &&r   round_upr      s0    6M6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MV'       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MT'       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Li ; i).zReturn 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     6XSVVXs   )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
	:	
-fZ899CA&EqyABB	!F$$T*E2C!12M]]h.
]]e+
	:t9D !8DEE(?-..LMMM!F E O KJmmD))AoO*Il+5"#O  e	%KD%"  Ke,I 1}H!A%%e,11
#a<<#q((( (HN)M9L+h6M|+ #+?N"K@AEF,q6z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: '1J>J y(G$$\'%:;*5e*<'Hgx!((HH6X66*  $&&  TH$FGI I$$z4&%:;V!,X$%0zd 
 	 z 1$$$E:&	y[*5Je ,h  

 J.L +  g!67  %GG-.	 M :& 	:899	:^ I& 	FF(-%eX	* F <=BEFF K1} ;D8DF Fe,I)a-' ;D8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"    !|!|Ya=r   )__doc__rF   rH   _ctypesr   r   rL   r   r   rS   c_intrR   r   r   rX   r   r   r   <module>r      s`      ' &
7
 &---1Q66!;' ' Xvr   