ģō
\Kc           @   sk   d  Z  d Z d d k l Z l Z d Z h  Z d   Z d   Z d   Z	 d   Z
 d	   Z d
 d  Z d S(   s  
Functions to convert between Python values and C structs.
Python strings are used to hold the data representing the C struct
and also as format strings to describe the layout of data in the C struct.

The optional first format char indicates byte order, size and alignment:
 @: native order, size & alignment (default)
 =: native order, std. size & alignment
 <: little-endian, std. size & alignment
 >: big-endian, std. size & alignment
 !: same as >

The remaining chars indicate types of args and must match exactly;
these can be preceded by a decimal repeat count:
 x: pad byte (no data); c:char; b:signed byte; B:unsigned byte;
 h:short; H:unsigned short; i:int; I:unsigned int;
 l:long; L:unsigned long; f:float; d:double.
Special cases (preceding decimal count indicates length):
 s:string (array of char); p: pascal string (with count byte).
Special case (only available in native format):
 P:an integer type that is wide enough to hold a pointer.
Special case (not in native mode unless 'long long' in platform C):
 q:long long; Q:unsigned long long
Whitespace between formats is ignored.

The variable struct.error is an exception raised on errors.
s   0.1iĸĸĸĸ(   t   Structt   errorid   c         C   s;   t  t  t j o t i   n t |   } | t |  <| S(   N(   t   lent   _cachet	   _MAXCACHEt   clearR    (   t   fmtt   s(    (    s   /usr/lib/python2.5/struct.pyt   _compile#   s
    
c         C   s7   y t  |  } Wn t j
 o t |   } n X| i S(   st   
    Return size of C struct described by format string fmt.
    See struct.__doc__ for more on format strings.
    (   R   t   KeyErrorR   t   size(   R   t   o(    (    s   /usr/lib/python2.5/struct.pyt   calcsize+   s
    c         G   s=   y t  |  } Wn t j
 o t |   } n X| i |   S(   s   
    Return string containing values v1, v2, ... packed according to fmt.
    See struct.__doc__ for more on format strings.
    (   R   R	   R   t   pack(   R   t   argsR   (    (    s   /usr/lib/python2.5/struct.pyR   6   s
    c         G   sC   y t  |  } Wn t j
 o t |   } n X| i | | |  S(   sķ   
    Pack the values v1, v2, ... according to fmt, write
    the packed bytes into the writable buffer buf starting at offset.
    See struct.__doc__ for more on format strings.
    (   R   R	   R   t	   pack_into(   R   t   buft   offsetR   R   (    (    s   /usr/lib/python2.5/struct.pyR   A   s
    c         C   s=   y t  |  } Wn t j
 o t |   } n X| i |  S(   sŊ   
    Unpack the string, containing packed C structure data, according
    to fmt.  Requires len(string)==calcsize(fmt).
    See struct.__doc__ for more on format strings.
    (   R   R	   R   t   unpack(   R   R   R   (    (    s   /usr/lib/python2.5/struct.pyR   M   s
    i    c         C   s@   y t  |  } Wn t j
 o t |   } n X| i | |  S(   sĖ   
    Unpack the buffer, containing packed C structure data, according to
    fmt starting at offset. Requires len(buffer[offset:]) >= calcsize(fmt).
    See struct.__doc__ for more on format strings.
    (   R   R	   R   t   unpack_from(   R   R   R   R   (    (    s   /usr/lib/python2.5/struct.pyR   Y   s
    N(   t   __doc__t   __version__t   _structR    R   R   R   R   R   R   R   R   R   (    (    (    s   /usr/lib/python2.5/struct.pys   <module>   s   					