î ½ê[ã@s¦dZddlZddlmZddlmZddddgZGd d„deƒZGd d„deƒZ d d „Z Gd d„dƒZ Gdd„dƒZ dS)zRImplements (a subset of) Sun XDR -- eXternal Data Representation. See: RFC 1014 éN)ÚBytesIO)ÚwrapsÚErrorÚPackerÚUnpackerÚConversionErrorc@s:eZdZdZdd„Zdd„Zdd„ZdS) rzºException class for this module. Use: except xdrlib.Error as var: # var has the Error instance for the exception Public ivars: msg -- contains the message cCs ||_dS)N)Úmsg)Úselfr©r ú/usr/lib/python3.4/xdrlib.pyÚ__init__szError.__init__cCs t|jƒS)N)Úreprr)r r r r Ú__repr__szError.__repr__cCs t|jƒS)N)Ústrr)r r r r Ú__str__sz Error.__str__N)Ú__name__Ú __module__Ú __qualname__Ú__doc__r rrr r r r rs   c@seZdZdS)rN)rrrr r r r r s cs"tˆƒ‡fdd†ƒ}|S)z5 Wrap any raised struct.errors in a ConversionError. csVyˆ||ƒSWn>tjk rQ}zt|jdƒd‚WYdd}~XnXdS)Nr)ÚstructÚerrorrÚargs)r ÚvalueÚe)Úfunctionr r Úresult&sz&raise_conversion_error..result)r)rrr )rr Úraise_conversion_error#src@súeZdZdZdd„Zdd„Zdd„ZeZedd „ƒZ ed d „ƒZ e Z d d „Z dd„Z e Zedd„ƒZedd„ƒZdd„ZeZdd„ZeZeZdd„Zdd„Zdd„ZdS)rz0Pack various data representations into a buffer.cCs|jƒdS)N)Úreset)r r r r r 2szPacker.__init__cCstƒ|_dS)N)rÚ _Packer__buf)r r r r r5sz Packer.resetcCs |jjƒS)N)rÚgetvalue)r r r r Ú get_buffer8szPacker.get_buffercCs |jjtjd|ƒƒdS)Nz>L)rÚwriterÚpack)r Úxr r r Ú pack_uint=szPacker.pack_uintcCs |jjtjd|ƒƒdS)Nz>l)rr!rr")r r#r r r Úpack_intAszPacker.pack_intcCs-|r|jjdƒn|jjdƒdS)Nss)rr!)r r#r r r Ú pack_boolGszPacker.pack_boolcCsÀy|j|d?d@ƒWnDttjfk r_}zt|jdƒd‚WYdd}~XnXy|j|d@ƒWnDttjfk r»}zt|jdƒd‚WYdd}~XnXdS)Né lÿÿr)r$Ú TypeErrorrrrr)r r#rr r r Ú pack_uhyperKs)zPacker.pack_uhypercCs |jjtjd|ƒƒdS)Nz>f)rr!rr")r r#r r r Ú pack_floatWszPacker.pack_floatcCs |jjtjd|ƒƒdS)Nz>d)rr!rr")r r#r r r Ú pack_double[szPacker.pack_doublecCsi|dkrtdƒ‚n|d|…}|ddd}||t|ƒd}|jj|ƒdS)Nrz fstring size must be nonnegativeéés)Ú ValueErrorÚlenrr!)r ÚnÚsÚdatar r r Ú pack_fstring_s  zPacker.pack_fstringcCs-t|ƒ}|j|ƒ|j||ƒdS)N)r/r$r3)r r1r0r r r Ú pack_stringis  zPacker.pack_stringcCs9x%|D]}|jdƒ||ƒqW|jdƒdS)Nér)r$)r ÚlistÚ pack_itemÚitemr r r Ú pack_listqs  zPacker.pack_listcCs@t|ƒ|kr!tdƒ‚nx|D]}||ƒq(WdS)Nzwrong array size)r/r.)r r0r6r7r8r r r Ú pack_farrayws zPacker.pack_farraycCs0t|ƒ}|j|ƒ|j|||ƒdS)N)r/r$r:)r r6r7r0r r r Ú pack_array}s  zPacker.pack_arrayN)rrrrr rr Zget_bufrr$r%Z pack_enumr&r)Z pack_hyperr*r+r3Z pack_fopaquer4Z pack_opaqueZ pack_bytesr9r:r;r r r r r/s*          c@seZdZdZdd„Zdd„Zdd„Zdd „Zd d „Zd d „Z dd„Z dd„Z e Z dd„Z dd„Zdd„Zdd„Zdd„Zdd„ZeZdd„ZeZeZd d!„Zd"d#„Zd$d%„Zd&S)'rz;Unpacks various data representations from the given buffer.cCs|j|ƒdS)N)r)r r2r r r r ‡szUnpacker.__init__cCs||_d|_dS)Nr)Ú_Unpacker__bufÚ_Unpacker__pos)r r2r r r rŠs zUnpacker.resetcCs|jS)N)r=)r r r r Ú get_positionŽszUnpacker.get_positioncCs ||_dS)N)r=)r Zpositionr r r Ú set_position‘szUnpacker.set_positioncCs|jS)N)r<)r r r r r ”szUnpacker.get_buffercCs+|jt|jƒkr'tdƒ‚ndS)Nzunextracted data remains)r=r/r<r)r r r r Údone—sz Unpacker.donecCs\|j}|d|_}|j||…}t|ƒdkrHt‚ntjd|ƒdS)Nr-z>Lr)r=r<r/ÚEOFErrorrÚunpack)r ÚiÚjr2r r r Ú unpack_uint›s   zUnpacker.unpack_uintcCs\|j}|d|_}|j||…}t|ƒdkrHt‚ntjd|ƒdS)Nr-z>lr)r=r<r/rArrB)r rCrDr2r r r Ú unpack_int£s   zUnpacker.unpack_intcCst|jƒƒS)N)ÚboolrF)r r r r Ú unpack_bool­szUnpacker.unpack_boolcCs*|jƒ}|jƒ}t|ƒd>|BS)Nr')rEÚint)r ÚhiÚlor r r Ú unpack_uhyper°s  zUnpacker.unpack_uhypercCs)|jƒ}|dkr%|d}n|S)Nll)rL)r r#r r r Ú unpack_hyperµs   zUnpacker.unpack_hypercCs\|j}|d|_}|j||…}t|ƒdkrHt‚ntjd|ƒdS)Nr-z>fr)r=r<r/rArrB)r rCrDr2r r r Ú unpack_float»s   zUnpacker.unpack_floatcCs\|j}|d|_}|j||…}t|ƒdkrHt‚ntjd|ƒdS)Néz>dr)r=r<r/rArrB)r rCrDr2r r r Ú unpack_doubleÃs   zUnpacker.unpack_doublecCsv|dkrtdƒ‚n|j}||ddd}|t|jƒkrXt‚n||_|j|||…S)Nrz fstring size must be nonnegativer,r-)r.r=r/r<rA)r r0rCrDr r r Úunpack_fstringËs    zUnpacker.unpack_fstringcCs|jƒ}|j|ƒS)N)rErQ)r r0r r r Ú unpack_string×s zUnpacker.unpack_stringcCseg}xX|jƒ}|dkr%Pn|dkrGtd|fƒ‚n|ƒ}|j|ƒq W|S)Nrr5z0 or 1 expected, got %r)rErÚappend)r Ú unpack_itemr6r#r8r r r Ú unpack_listÞs    zUnpacker.unpack_listcCs1g}x$t|ƒD]}|j|ƒƒqW|S)N)ÚrangerS)r r0rTr6rCr r r Ú unpack_farrayészUnpacker.unpack_farraycCs|jƒ}|j||ƒS)N)rErW)r rTr0r r r Ú unpack_arrayïs zUnpacker.unpack_arrayN)rrrrr rr>r?r r@rErFZ unpack_enumrHrLrMrNrPrQZunpack_fopaquerRZ unpack_opaqueZ unpack_bytesrUrWrXr r r r r„s.                 ) rrÚiorÚ functoolsrÚ__all__Ú Exceptionrrrrrr r r r Ús  U