й¼]ã@s ddlZddlmZddlmZddddgZGdd„deƒZGd d„deƒZd d „Z Gd d„dƒZ Gd d„dƒZ dS)éN)ÚBytesIO)ÚwrapsÚErrorÚPackerÚUnpackerÚConversionErrorc@s4eZdZdd„Zdd„Zdd„ZdS)rcCs ||_dS)N)Úmsg)Úselfr©r ú+/opt/alt/python35/lib64/python3.5/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__r rrr r r r rs  c@seZdZdS)rN)rrrr r r r r s cs"tˆƒ‡fdd†ƒ}|S)NcsVyˆ||ƒ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ôeZdZdd„Zdd„Zdd„ZeZedd„ƒZed d „ƒZ e Z d d „Z d d„Z e Z edd„ƒZedd„ƒZdd„ZeZdd„ZeZeZdd„Zdd„Zdd„ZdS)rcCs|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_doublecCsf|dkrtdƒ‚|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#r2)r r0r/r 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|ƒ|krtdƒ‚x|D]}||ƒq%WdS)Nzwrong array size)r.r-)r r/r5r6r7r r r Ú pack_farrayws  zPacker.pack_farraycCs0t|ƒ}|j|ƒ|j|||ƒdS)N)r.r#r9)r r5r6r/r r r Ú pack_array}s  zPacker.pack_arrayN)rrrr rrZget_bufrr#r$Z pack_enumr%r(Z pack_hyperr)r*r2Z pack_fopaquer3Z pack_opaqueZ pack_bytesr8r9r:r r r r r/s(          c@seZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z e Z dd„Z dd„Z dd„Zdd„Zdd„Zdd„ZeZdd„ZeZeZdd „Zd!d"„Zd#d$„Zd%S)&rcCs|j|ƒdS)N)r)r r1r r r r ‡szUnpacker.__init__cCs||_d|_dS)Nr)Ú_Unpacker__bufÚ_Unpacker__pos)r r1r 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ƒ‚dS)Nzunextracted data remains)r<r.r;r)r r r r Údone—sz Unpacker.donecCsY|j}|d|_}|j||…}t|ƒdkrEt‚tjd|ƒdS)Nr,z>Lr)r<r;r.ÚEOFErrorrÚunpack)r ÚiÚjr1r r r Ú unpack_uint›s  zUnpacker.unpack_uintcCsY|j}|d|_}|j||…}t|ƒdkrEt‚tjd|ƒdS)Nr,z>lr)r<r;r.r@rrA)r rBrCr1r r r Ú unpack_int£s  zUnpacker.unpack_intcCst|jƒƒS)N)ÚboolrE)r r r r Ú unpack_bool­szUnpacker.unpack_boolcCs*|jƒ}|jƒ}t|ƒd>|BS)Nr&)rDÚint)r ÚhiÚlor r r Ú unpack_uhyper°s  zUnpacker.unpack_uhypercCs&|jƒ}|dkr"|d}|S)Nll)rK)r r"r r r Ú unpack_hyperµs   zUnpacker.unpack_hypercCsY|j}|d|_}|j||…}t|ƒdkrEt‚tjd|ƒdS)Nr,z>fr)r<r;r.r@rrA)r rBrCr1r r r Ú unpack_float»s  zUnpacker.unpack_floatcCsY|j}|d|_}|j||…}t|ƒdkrEt‚tjd|ƒdS)Néz>dr)r<r;r.r@rrA)r rBrCr1r r r Ú unpack_doubleÃs  zUnpacker.unpack_doublecCsp|dkrtdƒ‚|j}||ddd}|t|jƒkrRt‚||_|j|||…S)Nrz fstring size must be nonnegativer+r,)r-r<r.r;r@)r r/rBrCr r r Úunpack_fstringËs    zUnpacker.unpack_fstringcCs|jƒ}|j|ƒS)N)rDrP)r r/r r r Ú unpack_string×s zUnpacker.unpack_stringcCs_g}xR|jƒ}|dkr"P|dkrAtd|fƒ‚|ƒ}|j|ƒq W|S)Nrr4z0 or 1 expected, got %r)rDrÚappend)r Ú unpack_itemr5r"r7r r r Ú unpack_listÞs    zUnpacker.unpack_listcCs1g}x$t|ƒD]}|j|ƒƒqW|S)N)ÚrangerR)r r/rSr5rBr r r Ú unpack_farrayészUnpacker.unpack_farraycCs|jƒ}|j||ƒS)N)rDrV)r rSr/r r r Ú unpack_arrayïs zUnpacker.unpack_arrayN)rrrr rr=r>rr?rDrEZ unpack_enumrGrKrLrMrOrPZunpack_fopaquerQZ unpack_opaqueZ unpack_bytesrTrVrWr r r r r„s,                 ) rÚiorÚ functoolsrÚ__all__Ú Exceptionrrrrrr r r r Ús  U