�`^c@s�ddlZddlZddlZddlmZmZddlmZmZdddddd gZ iej
d
6ejd6ejd6ej
d
6ejd6ejd6ejd6ejd6ejd6ejd6ejd6ejd6Zd�Zd�Zd�Zd�Zd�Zd�Zdd�Zd�Zd�Z d�Z!d Z"iZ#ej$�Z%d!e&fd"��YZ'd#e'fd$��YZ(d%e'fd&��YZ)d'e)fd(��YZ*dS()i�N(theaptRLock(tassert_spawningtForkingPicklertRawValuetRawArraytValuetArraytcopytsynchronizedtctutbtBthtHtitItltLtftdcCs.tj|�}tj|�}t||d�S(N(tctypestsizeofRt
BufferWrappert
rebuild_ctypetNone(ttype_tsizetwrapper((s2/sys/lib/python2.7/multiprocessing/sharedctypes.pyt
_new_value=scGsTtj||�}t|�}tjtj|�dtj|��|j|�|S(s>
Returns a ctypes object allocated from shared memory
i(ttypecode_to_typetgetRRtmemsett addressofRt__init__(ttypecode_or_typetargsRtobj((s2/sys/lib/python2.7/multiprocessing/sharedctypes.pyRBs
%
cCs�tj||�}t|ttf�rf||}t|�}tjtj|�dtj |��|S|t
|�}t|�}|j|�|SdS(s=
Returns a ctypes array allocated from shared memory
iN(RR t
isinstancetinttlongRRR!R"RtlenR#(R$tsize_or_initializerRR&tresult((s2/sys/lib/python2.7/multiprocessing/sharedctypes.pyRLs
%
cOs�|jdd�}|r1td|j���nt||�}|tkrP|S|tdfkrnt�}nt|d�s�t d|��nt
||�S(s6
Return a synchronization wrapper for a Value
tlocks$unrecognized keyword argument(s): %stacquires'%r' has no method 'acquire'N(tpopRt
ValueErrortkeysRtFalsetTrueRthasattrtAttributeErrorR (R$R%tkwdsR-R&((s2/sys/lib/python2.7/multiprocessing/sharedctypes.pyR\scKs�|jdd�}|r1td|j���nt||�}|tkrP|S|tdfkrnt�}nt|d�s�t d|��nt
||�S(s9
Return a synchronization wrapper for a RawArray
R-s$unrecognized keyword argument(s): %sR.s'%r' has no method 'acquire'N(R/RR0R1RR2R3RR4R5R (R$R+R6R-R&((s2/sys/lib/python2.7/multiprocessing/sharedctypes.pyRlscCs)tt|��}|tj|�d<|S(Ni(RttypeRtpointer(R&tnew_obj((s2/sys/lib/python2.7/multiprocessing/sharedctypes.pyR|scCs�t|tj�rt||�St|tj�r]|jtjkrPt||�St||�St |�}yt
|}Wnqtk
r�g|jD]}|d^q�}t
d�|D��}d|j}t |tf|�}t
|<nX|||�SdS(Nicss!|]}|t|�fVqdS(N(t
make_property(t.0tname((s2/sys/lib/python2.7/multiprocessing/sharedctypes.pys <genexpr>�stSynchronized(R'Rt_SimpleCDataR=Rt_type_tc_chartSynchronizedStringtSynchronizedArrayR7tclass_cachetKeyErrort_fields_tdictt__name__tSynchronizedBase(R&R-tclstsclstfieldtnamesRt classname((s2/sys/lib/python2.7/multiprocessing/sharedctypes.pyR �s
!cCsXt|�t|tj�r8t|j|j|jffStt|�|jdffSdS(N(
RR'RRRR?t_wrappert_length_R7R(R&((s2/sys/lib/python2.7/multiprocessing/sharedctypes.pytreduce_ctype�s
cCsK|dk r||}ntj|t�|j|j��}||_|S(N(RRtregisterRPtfrom_addresstget_addressRN(RRtlengthR&((s2/sys/lib/python2.7/multiprocessing/sharedctypes.pyR�s
cBsPye|SWn=ek
rKi}e|fd|U||e|<||SXdS(Ni(t
prop_cacheRDttemplate(R<R((s2/sys/lib/python2.7/multiprocessing/sharedctypes.pyR:�s
s�
def get%s(self):
self.acquire()
try:
return self._obj.%s
finally:
self.release()
def set%s(self, value):
self.acquire()
try:
self._obj.%s = value
finally:
self.release()
%s = property(get%s, set%s)
RHcBs8eZdd�Zd�Zd�Zd�Zd�ZRS(cCs=||_|pt�|_|jj|_|jj|_dS(N(t_objRt_lockR.trelease(tselfR&R-((s2/sys/lib/python2.7/multiprocessing/sharedctypes.pyR#�s cCs t|�t|j|jffS(N(RR RWRX(RZ((s2/sys/lib/python2.7/multiprocessing/sharedctypes.pyt
__reduce__�s
cCs|jS(N(RW(RZ((s2/sys/lib/python2.7/multiprocessing/sharedctypes.pytget_obj�scCs|jS(N(RX(RZ((s2/sys/lib/python2.7/multiprocessing/sharedctypes.pytget_lock�scCsdt|�j|jfS(Ns<%s wrapper for %s>(R7RGRW(RZ((s2/sys/lib/python2.7/multiprocessing/sharedctypes.pyt__repr__�sN(RGt
__module__RR#R[R\R]R^(((s2/sys/lib/python2.7/multiprocessing/sharedctypes.pyRH�s
R=cBseZed�ZRS(tvalue(RGR_R:R`(((s2/sys/lib/python2.7/multiprocessing/sharedctypes.pyR=�sRBcBs5eZd�Zd�Zd�Zd�Zd�ZRS(cCs
t|j�S(N(R*RW(RZ((s2/sys/lib/python2.7/multiprocessing/sharedctypes.pyt__len__�scCs+|j�z|j|SWd|j�XdS(N(R.RWRY(RZR((s2/sys/lib/python2.7/multiprocessing/sharedctypes.pyt__getitem__�s
cCs-|j�z||j|<Wd|j�XdS(N(R.RWRY(RZRR`((s2/sys/lib/python2.7/multiprocessing/sharedctypes.pyt__setitem__�s
cCs.|j�z|j||!SWd|j�XdS(N(R.RWRY(RZtstarttstop((s2/sys/lib/python2.7/multiprocessing/sharedctypes.pyt__getslice__�s
cCs0|j�z||j||+Wd|j�XdS(N(R.RWRY(RZRdRetvalues((s2/sys/lib/python2.7/multiprocessing/sharedctypes.pyt__setslice__s
(RGR_RaRbRcRfRh(((s2/sys/lib/python2.7/multiprocessing/sharedctypes.pyRB�s
RAcBs eZed�Zed�ZRS(R`traw(RGR_R:R`Ri(((s2/sys/lib/python2.7/multiprocessing/sharedctypes.pyRAs(+tsysRtweakreftmultiprocessingRRtmultiprocessing.forkingRRt__all__R@tc_wchartc_bytetc_ubytetc_shorttc_ushorttc_inttc_uinttc_longtc_ulongtc_floattc_doubleRRRRRRRRR RPRR:RVRUtWeakKeyDictionaryRCtobjectRHR=RBRA(((s2/sys/lib/python2.7/multiprocessing/sharedctypes.pyt<module>#s:
"
|