From 165f36049525ca83d30f8533037dfa09fa1e6a9c Mon Sep 17 00:00:00 2001 From: changliao1025 Date: Mon, 1 Jul 2024 15:14:29 -0700 Subject: [PATCH] remove tinyr --- .../auxiliary/find_index_in_list.py | 68 +- .../auxiliary/find_vertex_in_list.py | 30 +- .../temp.linux-x86_64-cpython-311/kernel.o | Bin 152264 -> 0 bytes .../temp.linux-x86_64-cpython-312/kernel.o | Bin 184416 -> 175608 bytes pyflowline/algorithms/cython/kernel.cpp | 18 +- pyflowline/algorithms/cython/kernel.pyx | 122 +- .../algorithms/index/define_stream_order.py | 70 +- .../intersect/intersect_flowline_with_mesh.py | 170 +- .../calculate_potentiometric.py | 45 + pyflowline/classes/_visual.py | 11 +- pyflowline/classes/_visual_basin.py | 5 +- pyflowline/classes/basin.py | 21 +- pyflowline/classes/pycase.py | 39 +- pyflowline/classes/vertex.py | 94 +- pyflowline/external/readme.md | 1 + .../tinyr/tinyr.o | Bin 434232 -> 0 bytes pyflowline/external/tinyr/requirements.txt | 1 - pyflowline/external/tinyr/setup.py | 27 - pyflowline/external/tinyr/tinyr/__init__.pxd | 0 pyflowline/external/tinyr/tinyr/__init__.pyx | 0 pyflowline/external/tinyr/tinyr/tinyr.c | 34547 ---------------- pyflowline/external/tinyr/tinyr/tinyr.pyx | 1106 - pyflowline/mesh/dggrid/create_dggrid_mesh.py | 115 +- pyflowline/mesh/mpas/create_mpas_mesh.py | 471 +- 24 files changed, 728 insertions(+), 36233 deletions(-) delete mode 100644 pyflowline/algorithms/cython/build/temp.linux-x86_64-cpython-311/kernel.o create mode 100644 pyflowline/algorithms/potentiometric/calculate_potentiometric.py create mode 100644 pyflowline/external/readme.md delete mode 100644 pyflowline/external/tinyr/build/temp.linux-x86_64-cpython-312/tinyr/tinyr.o delete mode 100644 pyflowline/external/tinyr/requirements.txt delete mode 100755 pyflowline/external/tinyr/setup.py delete mode 100644 pyflowline/external/tinyr/tinyr/__init__.pxd delete mode 100644 pyflowline/external/tinyr/tinyr/__init__.pyx delete mode 100644 pyflowline/external/tinyr/tinyr/tinyr.c delete mode 100644 pyflowline/external/tinyr/tinyr/tinyr.pyx diff --git a/pyflowline/algorithms/auxiliary/find_index_in_list.py b/pyflowline/algorithms/auxiliary/find_index_in_list.py index a6fdd9de..d9194dc0 100644 --- a/pyflowline/algorithms/auxiliary/find_index_in_list.py +++ b/pyflowline/algorithms/auxiliary/find_index_in_list.py @@ -1,10 +1,10 @@ import copy import numpy as np import importlib.util -iFlag_cython = importlib.util.find_spec("cython") +iFlag_cython = importlib.util.find_spec("cython") if iFlag_cython is not None: from pyflowline.algorithms.cython.kernel import find_vertex_in_list - from pyflowline.external.tinyr.tinyr.tinyr import RTree + from tinyr import RTree iFlag_use_rtree = 1 else: iFlag_use_rtree =0 @@ -17,26 +17,26 @@ def find_vertex_on_edge(aVertex_in, pEdge_in): aIndex_order=list() aDistance=list() nVertex= len(aVertex_in) - npoint = 0 + npoint = 0 if nVertex > 0 : if iFlag_use_rtree == 1: index_vertex = RTree(max_cap=5, min_cap=2) for i in range(nVertex): - lID = i + lID = i x = aVertex_in[i].dLongitude_degree - y = aVertex_in[i].dLatitude_degree + y = aVertex_in[i].dLatitude_degree left = x - 1E-5 right = x + 1E-5 bottom = y - 1E-5 top = y + 1E-5 pBound= (left, bottom, right, top) - index_vertex.insert(lID, pBound) # + index_vertex.insert(lID, pBound) # pass #now the new vertex pVertex_start = pEdge_in.pVertex_start pVertex_end = pEdge_in.pVertex_end x1=pVertex_start.dLongitude_degree - y1=pVertex_start.dLatitude_degree + y1=pVertex_start.dLatitude_degree x2=pVertex_end.dLongitude_degree y2=pVertex_end.dLatitude_degree left = np.min([x1, x2]) @@ -48,12 +48,12 @@ def find_vertex_on_edge(aVertex_in, pEdge_in): for k in aIntersect: pVertex = aVertex_in[k] iFlag_overlap, dDistance, diff = pEdge_in.check_vertex_on_edge(pVertex) - if iFlag_overlap == 1: - iFlag_exist = 1 + if iFlag_overlap == 1: + iFlag_exist = 1 aDistance.append(dDistance) - aIndex.append(k) - npoint = npoint + 1 - else: + aIndex.append(k) + npoint = npoint + 1 + else: if diff < 1.0: iFlag_overlap = pEdge_in.check_vertex_on_edge(pVertex) @@ -64,27 +64,27 @@ def find_vertex_on_edge(aVertex_in, pEdge_in): for i in np.arange( nVertex): pVertex = aVertex_in[i] iFlag_overlap, dDistance, diff = pEdge_in.check_vertex_on_edge(pVertex) - if iFlag_overlap == 1: - iFlag_exist = 1 + if iFlag_overlap == 1: + iFlag_exist = 1 aDistance.append(dDistance) - aIndex.append(i) - npoint = npoint + 1 - else: + aIndex.append(i) + npoint = npoint + 1 + else: if diff < 1.0: iFlag_overlap = pEdge_in.check_vertex_on_edge(pVertex) pass - #re-order + #re-order if iFlag_exist == 1 : x = np.array(aDistance) b = np.argsort(x) c = np.array(aIndex) d= c[b] - aIndex_order = list(d) + aIndex_order = list(d) else: pass - + return iFlag_exist, npoint , aIndex_order @@ -106,11 +106,11 @@ def find_edge_in_list(aEdge_in, pEdge_in): for i in np.arange( nEdge): pEdge = aEdge_in[i] if pEdge == pEdge_in: - iFlag_exist = 1 - lIndex = i - break - - + iFlag_exist = 1 + lIndex = i + break + + return iFlag_exist, lIndex @@ -132,10 +132,10 @@ def find_flowline_in_list(aFlowline_in, pFlowline_in): for i in np.arange( nFlowline): pFlowline = aFlowline_in[i] if pFlowline == pFlowline_in: - iFlag_exist = 1 - lIndex = i - break - + iFlag_exist = 1 + lIndex = i + break + return iFlag_exist, lIndex def find_hexagon_through_edge(aHexagon_in, pEdge_in): @@ -154,7 +154,7 @@ def find_hexagon_through_edge(aHexagon_in, pEdge_in): for i in range(nHexagon): pHexagon = aHexagon_in[i] if pHexagon.has_this_edge(pEdge_in) ==1: - aHexagon_out.append(pHexagon) + aHexagon_out.append(pHexagon) return aHexagon_out @@ -170,7 +170,7 @@ def check_if_duplicates(aList_in): # iFlag_unique = 0 # break # else: - # pass + # pass #return iFlag_unique return int(len(aList_in) == len(set(aList_in))) @@ -186,7 +186,7 @@ def add_unique_vertex(aVertex_in, pVertex_in, dThreshold_in = 1.0E-6): [type]: [description] """ iFlag_exist = 0 - nVertex = len(aVertex_in) + nVertex = len(aVertex_in) iFlag_exist, dummy = find_vertex_in_list(aVertex_in, pVertex_in, dThreshold_in) @@ -208,9 +208,9 @@ def find_list_in_list(aList_in, pList_in): b = copy.deepcopy(a) b.sort() if (b == c ): - iFlag =1 + iFlag =1 break else: iFlag = 0 - + return iFlag diff --git a/pyflowline/algorithms/auxiliary/find_vertex_in_list.py b/pyflowline/algorithms/auxiliary/find_vertex_in_list.py index 99dec2e9..e3aa2a08 100644 --- a/pyflowline/algorithms/auxiliary/find_vertex_in_list.py +++ b/pyflowline/algorithms/auxiliary/find_vertex_in_list.py @@ -1,9 +1,9 @@ import importlib.util import numpy as np -iFlag_cython = importlib.util.find_spec("cython") +iFlag_cython = importlib.util.find_spec("cython") if iFlag_cython is not None: - from pyflowline.external.tinyr.tinyr.tinyr import RTree + from tinyr import RTree iFlag_use_rtree = 1 else: iFlag_use_rtree =0 @@ -28,20 +28,20 @@ def find_vertex_in_list(aVertex_in, pVertex_in, dThreshold_in=1.0E-6): #index_vertex = rtree.index.Index() index_vertex = RTree(max_cap=5, min_cap=2) for i in range(nVertex): - lID = i + lID = i x=aVertex_in[i].dLongitude_degree - y=aVertex_in[i].dLatitude_degree + y=aVertex_in[i].dLatitude_degree left = x - 1E-5 right = x + 1E-5 bottom = y - 1E-5 top = y + 1E-5 pBound = (left, bottom, right, top) - index_vertex.insert(lID, pBound) # + index_vertex.insert(lID, pBound) # pass #now the new vertex x=pVertex_in.dLongitude_degree - y=pVertex_in.dLatitude_degree + y=pVertex_in.dLatitude_degree left = x - 1E-5 right = x + 1E-5 bottom = y-1E-5 @@ -53,10 +53,10 @@ def find_vertex_in_list(aVertex_in, pVertex_in, dThreshold_in=1.0E-6): pVertex = aVertex_in[k] #dDistance = pVertex.calculate_distance(pVertex_in) if pVertex == pVertex_in: #if dDistance < dThreshold_in: - - iFlag_exist = 1 + + iFlag_exist = 1 lIndex = k - break + break else: pass pass @@ -67,16 +67,16 @@ def find_vertex_in_list(aVertex_in, pVertex_in, dThreshold_in=1.0E-6): pVertex = aVertex_in[i] #dDistance = pVertex.calculate_distance(pVertex_in) if pVertex == pVertex_in: #if dDistance < dThreshold_in: - - iFlag_exist = 1 - lIndex = i - break + + iFlag_exist = 1 + lIndex = i + break else: pass - pass + pass else: pass - + return iFlag_exist, lIndex \ No newline at end of file diff --git a/pyflowline/algorithms/cython/build/temp.linux-x86_64-cpython-311/kernel.o b/pyflowline/algorithms/cython/build/temp.linux-x86_64-cpython-311/kernel.o deleted file mode 100644 index f7398f3778f3cd61b671383d14a12055b518a688..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 152264 zcmdSC34B!5`97XV)VTG=9WCnAjv6;4E-e9t#w5h!w#;93n*4_Ddsxhf(nR*{GaDN=iGZ|k^r_}`}fD^L*|}y&+?vk zKkr%YRTZ(*w#(1YGyn4QPR{dFCO0o{N@P1PQ6^7ic@=r(Qnm}ytaG6L4e8%Q^>4BM zJwpE;rGLBX-){Q%Sp9pv{{4;q?XG`&=-(6ZYyL%?uOf{t`4fjkD;GLn*|R<>DD7tz zPX1j*vN`^{l69Hgt%Dj^_KMP`vH6kGudY0-+?jRw*UrLOEeGWR!haK z!qPXdTpDqjQS7SsO5e2ZoNYb3B!BT7>!7l{)LDfk&3<0ybKS0;I=#?NHB3bpHo7cq zT{*%!s5~#vWvA9bd4281)kQ3{uHjMSykRXvpwtM1MQt=+m$ani|x`khe0c%C?)z!`)-RPv=-u zJlxG*P#!KOK(VIL;bNvJS9yG(0Oi>zSvb{B#lwX$=j)jBdCXC$c6y8r)l0UvJz*rit|3;Ms|^1 zdU{d(G`n#&3U8-cjn@K6cIo>16*lPEEq3_F0Bi3&w+d(%{<2g3n7z_=`fZ=*o{4NF zPe_N06y;H(2=GmDFeoeWOLi$;2=uz2`e|A|qop6z|H{1`MRhv{u94BkxrG2KR{BYN zQZ!W%)_{FT2tW}nNJ^|c!iq#eLhL~oLTO57%DpGCDS_$2^Sl2ja;rJ8n#?71S3v+9`gMd5K_uDt^x)HoF`Wx~o_!?n#mCh&a zV~PQ_g)&I_Q{Q6HTE8>!AZ0TjXhHSI6FE2Pyc_8sbvD_~`bfY2)c<96O1P=zZ&V%> zt)~j|@=PO8h0=1=nJe$E!8_ZTZswAmXQs_F1O4gF=1XUXu#Pi7=6t3`Cu-SBtblJSjN#%z{JlmX&Hko2I47Vd%w*ytNT)_lhF^ zy@EV3ISkK$G*)k}0NOq$YQY1B^d~aiIJYe3v>2)P`~$S`yCU~0Pks$$-H##j)XSPg zS=3F=!^_Ou)bBox>vts=k-#dyAp9Z|iUY`RiwH*3WN4A5e&OymZIBeVQ_M@Y#tZDm z9rLMYy4lHfOznUaizb&awOzgxe+kWKx1#AJ_MjVKL8;5;z{rx_JNc=VC`Ju4uB>q+ z4kbtsmE;42G`ZYLyiJkwahIISw8lYO9G3a=wF~H%)p&9f+C;Y{%LNiq?jxoG-~Ef+ zQ-D9EFBSf;3#Re@pmLZyA2)x%0EaVl9}vc}z6y)Rkr=HY3o zmHZWY1LJ2)v?!My3FiA4D)`Py9@h5R zxoQ7w(>~=hrkw?}j7Mp|v(!0~bxsSmKStGq8zpE*Sv*SFzAU@HYTw|%Z9#gfukY>D zd642$$D%@fPw{5)u(R*K!vxsQcW`ZgP!oYuM@iGWk%i#|_NF!9phyQfm0iG$giO2kX-)Wzs< zjg^>7=1o+_&6oanS|Z=I@qWT`b+5~nnmJZF-H)vmW^XD$4Z`~bmG6+)w<1oqzJtxKSO!YF} zk(C%Mh?ikli6Km+Mk(ZwF=RX!-EJvM==qiWIOQ8K?qEap!Nzmx+%Y5 zEBW(T*X@TgBc_`18_O;Tbrz^WI`gwN*2Sm-L6?>_8ql)a7ujY!V4lrZ;z;)2xM4dh zc^$@>MPBzlFnoaD4OwqQ!IE_zVV^}Q61HSf$r5*#B!vF9v%pRrE1g3y4$)9l6nYMJ zAAcg`)7!n7Eoemu^163Riy(=@pgV#9laF-z@ACe0H5Em;CG)c3?ByK!!3*jVsiYDcB6cZ|o3%tBVobioW^ zI_aEQ0D9@Uq6R_o0m9?D`ON)>9|@?&4xTdi>3nF9P0$`+050em(d9WIhXeF%dU^cU zfD#zOUWbiHbtO!8uaS{OA+)@=N8pxLts!5dnRw^rd!VMQx_8D#U~_zLOva zsOwMBOr2WvaAEw6Sn8s}heKBKT`;4a8U)qh!$=ur$OR$={6$*dHjcLV1(aq%71SB& z>U$wdvf_1iV+B;6GYSKTkf$DQV2$LO_!YUG+<_Nh6lX=uS=IVZRxcEiph(u=VC-(@ z8buF9aup3Zp=7xM$)g|a>|sQaC$G+mk|pTK)XUs$2;s4yymAjhEzlG7Ck5-9dgSX* zI;eVvR8{&;_`zd_mtb)uq@`Jvx@$VesBkqW26ROm3&Qy^XJ`o8tx%8{OWoaoLgKsK zkB4jo)?Z5GeF$j>jRJliauAx989kVRunIv5ld0#{0x2Eft6vabDqa(HUT4UrKf*Q6H;`Qw zkBd6<;FBhwNBgwNEu4^~WR}!BxyVX9jC8q*6EQmTM!EBDOP5S*YkBEnt0{$-_B4Ce z%7SRqiTOQi;U-LER_Y*;I907=5il9^p{5Z@ya%E=ql%%46{b9I*!S#$JZdEt(!pq) z+g;&WVjMpIHHw7gS&4mUo8bAw{f~!3oCqifDySzk!Y^iQMeB>w(>q(qeF_M<(nJJt zJbLsz+?DYIOjIH9XQ0Xe&VtGxVW&{q;4ssv`#l%GViFkL52aFCB(az0FFc+9A9R11s{#T@Nc7C}t43=cSaz{B6ur2QHfF$6Lc-(9yZ8`y3AGke{fZQ8>o5RmCK4s5U z%PK+>4$DHob9fpcuiO4{)UZOL-7YX;i@cb|VJ-0vIf>jEK-+ zI-+CCouS|*%w)hsucDmPk7A&|YudHMy-~quL_T>NdN3-Ha{Hoyohk)) z1~FWRhSeCW35wEjx}D4m3Q%XZJK4Z5{-#llrxnJ}G7i2MkBl*jg_xv_VXbx4EW}F} zt+kFo-awrZ0b;4OZqj?+%((p>t^ z9m(H9)|R8bZ*9f=>k;FBOy?q;E}fphf?QTGr8jSAZIw1miKhcieT0{49yUM>W&>J+ zzX>Y|KaWPzwo^6m=*z<)zVX&GsH>CxsGb@(K`}4kyVQ8NWqm_-(_qK|L_YaBgAkax zhwv8>?3bXu8BN1tf*P=j3E(f{cbW>a0yRWxdG1X76x->A00LUls|~=;k;r4aCPYAt z?Tfr(;M&$6oAGn~xQUgJML`t+pUydcx?vAE7MM{g)V{eMQ-q;*>XIVpDdpcQsWLkL z1frpTOtlbs9y-)u-d|}NkiHm=o^R+Up#;@F;#9ThAsa@_ACoI8 zLZb7&p5U~+@M&vnvUy@Zzf*S+ErrZ$G{!}cbcKuab5O1=gqhn7yf8fwICrN2==24A zy3*Hok@M7Io#N@MS5F~YHCy+=v#|95^Dxvrj4}^n&BH`_AnTXV`Dom<119I<@F~`h zr7kIsrRutYf4av~m1RUhA5!=7&p7E{8^fH@Splw%h5O*|;P3$aog5x2g1`{jUc9KXr)e9 zoxVaKh1baE$ETof!{0q<`E;5MT* zrpQX2Diwnr-HnQBWNc;}0h4fE;#cTA+IUnLk-dLHET{({>0)_Qc}DlxcQP%nsYkTl zJ%)OB^IptQT6fS|8Z`G0eml~HXf{!}RCCa8St_iLG%o8dqOQxfMPCDc14d9^w*VMV zUlTk7*{rV#nSJ%#DX18jdx@Xo>FwFZuT?(1EG5u>m{o&Uj2{DqaoxGl%GB`Q=90ha z%_Y>cWkldaL^rU+UmhNdhi-frg$GO)%fmzQ5Yl)afM?OgeLQS6Zra|u?qeCFQjnDe zrgf#qJL|fB70-@jA$Ndq&67f7;@waotI$v>RI%kkqomM#V0=Zvc3T=Ng^s3d37Ok1 zG*Jqjp%O1q zhxCL>(|ZVaiB?V@5$NkY^yR*f2DpBt-PJz>O5F6Wq9N%;05>wgC5Cz{CRriiDau$YghvE?I7f#R+?I z4`jI^X$A6D(u}YVrB)F}w52%PR`L@NL{E6i@}?6D=`#ei+UZexvDX@u(o;jU7fHu* zfU0*q-k2=CHULIX?*vRpG6hN^?sz6jfxo_qq|ZiEnSY2Li=_J_;lmwCpU?DW@u1MJ z;cva|fwqwD=-rrxMA8?s=&w-Jr#GT$c-4j_h4_Er++}$rJ&e^#1ZJ?!hE^--012r{ z#zmc%xz(EwPd|zH8O<8Yg(1bOYTvOO`aT^?Ysw&0p>wG;L%T|$a$Ob&8D3E_+l#mN z98Sepdkbd0O-FDz-ylE>FrEM#dVHt&u#;g+P1c-7A_LQN&`9Kbw;{V3tu%CN7jL(f zW(K8aqM1Q%k1e*6zvWggNIyqd2D{&KPN-Fya$Ms3+v^7uX)$&m#tbI?76<>b%pPSE zguB+)hj7`x!vF7q7dWZ||Be6O;6EnF1DoO8t;f5KcwT~M`k$NB9fnh>^0 z`!7fc_SqRKylJJbz$@j}4)lu&lcw;7!6}Bc!T+Y}T5HI==x28336);>A~d2bi&1ZNh%n0Tr0%l5VI{AC0CdpCzuCr)yF*B)Pv6AnJ^B0uqzXF;#qSQ` z?_lx1u|EaRSfUaGpwJ1=8pYs&qZmAJ`r%Rx-glvUKjqabo`YIy?@YTb$g4oDsiF|d z@`AIe#?^31RD_@#pbTtnM9iSfor!4+E3ats6EfV)K4Zun5AM|F`1n(vasnrU4yf!wdJNtT&he)m2w(SjX~5rG2HSps-V>q z!>Tym5pB{Nkvf|F0JWTk4VM0is)#kX85z>?U|8hAtC+P64@>d?^_G9Z)))`pq5Ew@ zOuY)@RBn`?=ZRzI28H{i!S5a#<@d{PYQ<0L+8DUGBZ{5f_mFGkH*_n zjOxcPI`D@d+B4t}?@6*~1O4|^7z4U3Y4$qi`ZwlmyBCCw`%w^f`+~7O{VmkJt_E3K z_Iv5jir)*Rt^8g@pOoKQh6m&KcE_{$z1^fk&Jx7$-3$boac23w@OizGo+sO8KG99^ z`VtL{S18Nf?Jflh;Bs!kNiCB?cWl{{wWZKj++CU9B=!UHx6qyP)BmCiiBDW1Qp62j z@QLB~fI(^g%IFgVpNIg^Cm!Jb4eY4&*z_Y&CH*VVJV#&6L6l~?BENE2XG$66oIHq^ zIjo@L%T}@+#vq3!WXMM$-}eTs#5Ew9>iySfIn$uwIg0QcgBy7Le#VVNL@kwvKinVfXI#Vao-gitpqU@-XG}&jgWQjEMKd7kPKMY?*eO77O97NSnT13xEjnJiSRhm;Qfdh6NTcNrNh*nDWBV!e+k1F*hNzo{DHHw5c>js$AAp!U(KHv0plvV#!t(ni7%Z2S(~%7Br> z#vA93Qr5!vr_Q6f-7D%bEw?b2G1B zpQY1DzTZ#R|08nRh?Vr!z_Qn}>>8LBWzVeSovM5rp;CT1vZd~L*1e8(xpgi$pVs~5 zc>V#AhRCQ^@PJZQVien&!nUeBIJD)NP6kcii+488C>Ty%`T;lp2Eg`JXM*Ul!}>*uZCc0-<~d zHj=~8%piBoe`h2I5thO3Lue(q9t)kYjrNdptLe0PjhhOv4}(wJWc>oR?iGlYW-?{# zPNc2V*6SDAZfINgoGAuIp8xPUGmx1Ddm16J63>C_i_AHoPW|A$Ik|u-lD_ z%KCRyX%es)^*9`WBZ*TrmH(lBt zkUd-{sk4}My0FeW9zCq&x2AkifM29MR}9hzu>1po@@rLj;lDP*hLA~TsrxGH9>}`Y ztn0yN?8M=;6E7h|5VRA2dlz#;MLH4jbaymhjL0o`DMsXKWpol~feWkKKL7qBDt15& zHUH*riY+(?$`|y$ITrQ985h~t|jTB@zVoJ-@;o|K)W2KsIyJE2;+JIqAgJ=OzylSc$%)Nr5r`H%g zP!Mp=XEW!!6BLK+>IH3f4ZDxP)^Ht{@jV=tENPW(KsYP!vvdi$-S*R+x*|Um5Z^P} zI6uF4>8kiI*>2`3!hyIFbEQ$ds{a=>M3J3!z^;M(#buiGXkgte)7S52mPJ&yUf-kP z(wthdre)PzL}Ye@O8=>y&(baDFkG+=t^{$5uG&oi_|r9Bzn$uD1H?EppwGtRA(P-Z z(j!pD9q-Lg0{c<8!Kx?W!eHa!&Q_wRkmDIr6m>S+jXz+!;7DX(Y3auEKvyW@a|%t^ zPz9;Pk`>#fW3hwxX%yAl+GJn%a99}G`7J{+ds3g39sm(LIze^4KuU1kq>$pS&&8WC zm{Mtcy9eq5NNAiS2e_ zdvHQ!;gAOy@5V3#>sE;dq`B)1!SuYmre3WTC5WM7??;sTkPzSk56Ku}siPL-5dJ$X z1`aBe-S1p}^X`GL62uR88e<;``W`Q1QF|TKT4P+sE@s&-(tzM3+k}9ebQ% ziKSC3btwm(wMuvj8d1P$xWb(UV|oidwqcozDX@W8073xM;D8n;F@}KAGbi)eK1@-8 z=`0|`>?RkO+Bi=A+YD?^Gy>icpCaI*pyuF1h%k5;89X1Lp5ZXj=i%Z2cIUJ()9k(J zfu_+A5TUcx@#sfQwkk~msTs{i^+HgJPRvTET2-^DzeBO0tm9PQ6og{8+sYFdOIUK)Bnz+mw}$KF2L(WqE2i9btjHt zbjsJKFrv=jrK-D9AS_pi#sEN`FToz>oZ}c);%dB$HXZ}NW&%c_x8@9%M{dnYT#837 zgF>IIu$xZHw@b0?VI^+jn1O*J_i36F$QSy>UgMHad7jjhw@4Z~3$F{peCwNWMfG<; zxoG9)tbzXu?Z|-?ovXHNU4mRt6BL~o;=Y*Fu3+v(@xAR7%mBR+*Z zz(cc#UxQg4H`jhwInS<1ixn_ar@V$e0550zXJ)@iDX7E#%|0Ur%Ot%*(C_|W(r>8r zJu0mdPq9rkFNj!0S8%|Xf4NV{7#oNO58#p|6*xn<9N?6!Ngs`&s8O{Uhf!nd?t?#| z35x8VzQ~G7`={iCjI{Jh^K+*M*SB~uW7jCSLhM0)`~=x=^C=+Zof*Oh*ljH5$DO4# zm@*XbcW0LiH{SmCH}DQ>1G6<#AVg!)IrBH#V=yw_Blg=b9Ev%ZbD2WLEEI}CR6Dz; z3T_(!6v}_O_40xHE5I*XFTXJeuW~2ctFV3_r03H*trrT_BujBsZ@`6ZEdse=qx7DI z0it=-aqoxYsmCql-A7fs#*DZtRoZVky?47UnU36Z(4s$I5cVK*EcZEPO}ZNAu)=Y7X9R$1Wbw%X>fBq}6=Ky+)-y`Fu;&k8({3O3vt7 z41gLwl0Jvso`t0Qff}@eSA#jvEeC|?4|`?spmOOWOhSq(Q5sF3gZfce3TX{gq1b4@ z*64Y5EXb7MVLuRniKP3Y_ukHD=}I(^c?RR*DhO-bvJ2w&4)y|qxMM~9v*-(REc(%6tJJt{M5>*kxl^RK2DFb#%1LNpLhr;* zen{qUX2)>(jUm4PU$Pv-QJ@2}=}*|{8h1EaQ}~HGvj8xfCI*xXt2O5wv!VG9Pw0BpNuBDf7I38YiavyfD z1Y$v@YtBm$LG-(RL@N7TPefe>9{x(y15*T?0vIfyivQIOZx9*7Yy`p6!MY6nGKFe| zW!!PL8BI%3KUk|KhpI#flPZiGC9qpaRV9^Z=s8b;in9_&r~-hA1vypm`~x*(U}?CR za1c-hoM|OEqmbzforpqdmxVAxH-#Y5R-%?DclyBlwc&2?(C?^je&hp_U`!Us@*NQW zAXIN%3~`qE$hR126dp3JxDXf7O7;QBy^(_n1i}TUA{E6Z4@_8a&kv7)XFFy0%9M$N zM}Pr-=b@l{}JAlz!sSkLDO#XEyaUNj9odmfjCAnOT$ult6XRNq>>f8c?9$3vt%;1Uu&r+{% zU1IQ&=1ePhUU;oELlT-0M%J{u5fBoi3j|~5AQk0>1_q(L2c|dfDCoS!c%DiT5}y4tj9I$gO7OlZ;dFXTPaqMzq(L1^ zy_ej8!OQ(LQ73}<$LXNNlm?W>v=7JHz{7fmL&?!N!&^+dkz~t*P=w~}b@*0-!`3%N zp-R`pIU-OZyg=g=2_gv^qYlvc1gGrI_bz8Uz{WVvY@h?(uVJgAsq@r56;`4br?#mx z3VBxrr^$F_?y3;USCk}F1gM{&nsUwAh9>LMHc)}C^^LF^g72uK&+3tpjs#Z3sz;sG z>AR4Kq(`D{cOfvX=PdyC)FStQEU*jRX8^X=x#AGO`A~*LJ2_?&0E`z&2cC&a(_f%_ z>sAVF6*TT{Y*2&dPLjkM9I?`1f?T&AjXi5e|*e~%)h4k<|1HwsY1 z4tefJLDyNDN%a{ej9(6P+l`lZhA{BtzQN5TIPV+wtkzR-?TKCTx_vmJ zp__5f(qE}7$wQO*&^Rld@Dvh0#|uk}&-S`>11^&b)ts>^=4Yp-HK2khQ(>T- z@aTa60vBz7qi~JJXRU8R5lc@}VG>8kS2nKr6V)Pm0{8qKgU({kzucjqotoDz5Gn+T zNa3KE$lj_bo($WcENp+Vu>C5aEs7wC;d^hG4-lV-7@_;3)_2fX5VB+oJRb$8K9ZLK zsK#SufYvyga2hWZPOk(O+z)ZW#ZxfPq77q7+}DDMui?j;P?LK$-gwiiky6a_0WTnG zO;_pGLUb`5=SLVnQZstEy>5lLzh0feS#{R3&b4jo+(wr(dA8Jq#H*nKg&`qzX?Ba* zP~>B{?&%n)C;+;T%GX6)Xm$E#U+R~jQ)w4g$gRh?tmFvv8l)hIC;go%`5laa?tr_L zBM@&=eB+C<#@LMz-HU@HR`N~3AI8x}n8_+?bdRG9^p=2M0xP>(%|p^u>RMy%v!(8i zXLl!Tsl>4?5k?7IN_7J`IOc2!@D6$usY)lM!x3bh2LQc_O^}b$eelMkySrdDNv+n~O4ss98j|grgEeIF}INf8u;<){ry1dDSKH|iQXQAKf8lWPG z)3edA6u~Wc5!~a3(69RqI2(Xpc2EH5x_!Brab_yKQX=5)RA3jcGoJv}MoQ)G7MQr> zL~G#U()BsE8f61+O0t)5w6;dSkp=?>2&P+Uu4OD1P=Gp2yhHuY6mey40-PgrRA1fr z95Mpe_2B4JXOIPuyO+YgBE)DAPwdidNM4S7T(lul>5f6d_#e66J-s>K+bDxRrMGc} z3~Gf`hup@G1?A2glYz5pL5$IG9QZ9^hDWFslxU}bPjWnNZs-`Z?%sH<0g3lE4?TE? zirDnz^8A(agE)QM6&LvAkUV1xkxL4qKjSLG43~DRtyoQ=VX&Q_IWJLO7h3Ht+EiM0I zp%3yW9v{u0>#l|%XjF0mgBPXycG$3?mE4Im7)xMvfR;{_0giq6+YrSR|ACexE0${t zx7&VVZ!{esgY9I*oO+zC)PZ{~F8W~zhJhMHAy|Xb?hb$g^H?ge4``mF4w^+7UIL7| zr%D?}1+jXT?e@BK_d~(<$KakVk^qu`tBeVe{)JA&W6yx#B)}P~0G~dxJvhB+!1M8`+L_O&SmK0f2MQMw1jMw@BQ*y`|aU zy@>S(020xV?hE20E77KfSr57^#PSw81q;CrXk%~3g=%2}TJYoL-ul1XLW)CjcIra8 zV?`FZiR;b+4jw}CfXQNV0hMdx57@QzIA?{8Kj0#K?k~r7cHB8J9;mqx+uA3S1vo*W zJ0RB$y-~sQBU*GVDhc%dJn|oSZSK{<#nHNWd?&kfj+LyzOFkr?;X~u3A{fBy z>F#28C!z?rGhqb)Ekdi9dveQLOP3WSmsr7FGU)>MXz*>yPyLYdt)9ytf3e+MFYTiD)|CM6Kla@*gjzp$zpyrWIU zy)}6-agxSmD;?t3NMm1JJxq;`Tdq;R*%6z+h_g}QkA9Pk9=m6}!OtOYqRMcC> zgVyuR>~*&@(LQdQ;ddW!d5>H*`=jtaHGP+kP_s?O_iuv4$kG;V^kx*li|Hk}Ezq7D;q z9WWa=dtl(%qj}^P@Ka}e1iHNVtOdpPD=<$4tkNX{Re)Lmp_V#-@tm4Em`co}sRL0uto+NU8$E#dfRUXe02! zK*>Zcv6;o>X2|Y^c*XjJ+dW+p4FoK=y~@R=v4c6>zZ*Z$?GJ+$fZKgQrM*cXuRgpqL~8Z~`L4W_S`GI!i$>#x(b%Sp7^!Ic3TQLAQv|L6uIfdmip6q2O5+dt@fy~} zDHCE3>-;^4+MAB1G+Q}oAL?B3hQF||H=lxxj;#^mUSaIQid1h9Z$)tnDn4^&sMeuniTt_`u<5G zSOsBcc1bghz!iAw-T_ENuUN^`kyb@XC+HKsYv>r{r^}(K+;aqMQ9F?tD^TdgiC{Qw zv<&5O2O=)}%s#8U08zr}O23K9Ojn~hvo+ zYmow;mT>pMAH6=Px7GO!Hp{EXiv<0OJ&Sg9Rk#{-)LL8y-X8<@dV--uj!@7T#x@AC}G5g1YN|fkW3cD>v6}tIw#(jOu^GOiR zEOB?qDt??)7}~YrP@{j@Wu?ZQrPy-E?CvN!El-N7m+rTqw|FwP^B(xc+*GEVx|Thr zshz-&LyFQTP@cAvX@lOcu^lR-fA}{;h2o!yEH^Y@FmESzKKBdJ>0PT>#VCoGXb);Y%o^`gJ2$1 zdj}G}s`xEg1N(y!5W|x%@dJ=@tMLct4-CHPy7=F)vJxkYHT=@YH;-7uE#D%(KY{EC zzVB;;Z?13T;=3X>l180&GKiqgK?Ln02xGfwOfl_x z<{^Vz;M2S~7cYp=`s)oc;|-Zxm0!&J%SDttlEUyE=aeb6uTJ)SCHDaH zzW6AG{wkQD7w;2A@e$DIrXWHk%YBr^CmV3ABrj2;JvW-nc|RMTpgQw3m@J2KR+J6F zGsuC=z4#BWYw5@B45joUG-jSV5ePAOawj06Rlzz?&4=l1i9TuM2v&?-xC~kO1<&JI zSA)guf+xzWQ!n4@R(WV`3Q+f>SAb$%<@R;RA>U++uBwWyp%nVn6p>7@imN2?K6v| z_6le2WHXuDavSj^|1$F7^XQnB1xu{v%lAOTj<@E_D~2tJ4gEYHN-50c9Q}Ip}#}QL+C0bvJrZBI|xNsDu~ftVS+r2wgRISsf(x! zGVkYNL*^G+*l{06kc)_x2qSqxq~5`nGQZDl#uwsxV)fZ}uxg~dpF!)*S!iu!S1xsG zEOn~#QyV!@1=5zjx|giM0I?!>a!(eLC|p4v<;`0j zk8+=UGzTqh{Fvas4x_uYF!*7a6nMhL8NDyu!s_z`U_*cZ3k~-PM2^?^9^Kx zE@3GT=8LM^ETjA`BhRi$;eg<~FCtSWy0i-Z6t{$w`6d2nk>rPWVhCEHm%VTdMy6YedUXczNR)A3i zk!yPdDU;B;JC4$6ycY4>1B5sPgz10~I}6Q>25Smfzi7E zWTyZ1O-p^3s9jwk6o-z==3OhfKOhqR9g4Qvryap;Um$|*1!z~CL%XjP?63$Pq1=Nd zFEAJ(o!q{brCxK)mHRo2`hQ5di_xVU7s_b`9;7@myG2Qy2^sbz@ku27`6ll-`7yCy z`Rb=cIwE8UiIm9qq9pb^A{2=I4iCnDUl9YSfS1@WsV6w~W54GG%it!e-RzzRfPjcX z?aenT$h)d-koUKXfLJQjKcevTlSp$FKuD)>=!h>{JGAjH~xw z$79E!H!mKmz~JA!mL1S*FdplFpCp!2DD&d6|5o!j6_4cy*;Jg*i&IqsZC6$kY!jy{ z6}H&sIMoQ&#c3U432~}piMX43kd`X)L#kmNFXUFB^QjV_T8gJ16Q8=5<-H(QAnJsO zJiAN$fX+>PYD&8$Reb6`0?F{3icj6jqz9$@I6W}A?+f&7d1{ITsPJeaRJ`ie<)&B6 zi>)MAHQR1BAT$o%q(^{uZW#(Ie78IAr*g=h_s0kXIkVkK`vm|BT{w56;q-az;-4(v z;ql$AUoGC7jZ8x$3QlkRM()VJdbJ!Qmundk;i(`h|Je%?VSc_to*BBk9m+#aohKiF zK=LXEupz=6D8}MSiA75(Hd>+K)fBvn?-VVaYb948{>w(ck|x#jhQKp7D)Jx8$YP9s z?i|Pu1)jSFp1TL0%L31R0?z{i&qMWdtmpj#qLmmZ(P^$Z$)VLAh{E&G>anuJQ7IrD z@+h@&Qgsjb0x|Vf7zu9gkJ%(Qtcq?jOGgJFGy5oN;HxuJmU7yjbx_p=ut57MZ|+Jn zg}9uS2=%EbIbJzyZ&b|Li1o}q$m4fH)?oq>VZ;s_Iw1lAPj7scFEJfUash`lakl_h zAs&tGFcf$tbIjVEoK(dr0qi&CLRIH-=dtjoq=rr-mEG5`!3G|*xTQR?2O2k_!gip& zOj__q`;CGXTdD!^A>?lS-YSq|i#G4kKmoZ5$4VPOT;UQ|iQgB*0 zOoDc(zgXL_+j#JWWSb=hr4Eb08pswNmVM#Hx)zrosmY$-SMLIsd~yzR&j7#JT=C)_ z1ulEx>|-&FU{Tb;MPq@}kH9Q1m&bC*U_lqmfQNeSoAr+i+xsbWi;lpkXeScaq9e0V zWa89yC>X?ha=-nVaS05;8Y?mFmrP*ojue%%t2Q?`gIBS=9p@xzFa)GdNVjDh7PLOiMaDPCi zK0F3vh>eFF55Q4$5=HTV!0vMhzqZ0fen5_|jC+v7)*d5oWH-JZn?dvTcoS`^z&a+D zhhjZ(#@R~j-vxO%ZE}{(1^D%kax@$?8Q=~AEb{~Z{!F+?#_#c++X3mlq2D~GBq3$Q zDdG1&eh*u8_1x!ySMM_=YWc*!e*<_gLnZ7(^+% zi*A2x`|a;0ukqOt9=`x|JBo}c{Na=}Pc^{gk%IoG#lM$X0yJy;0DUfX+8pWqL~8Nc z(EuKNIQa!KBDqidaL$w0lX0(qyKt)eae2d7yEuAC_uakyzNbL`5JBc4nX>kc&V!cDGPtKw(<+BVe^3=ZU_<~;W)x^(EN34Mlt#!l=0NU*g z#Av_Xd|u1FM9mwB2M$cm#c_Sj?8=rogFugX7U(s~!?vnH*}FEnXgeyK_8 z@~c!@HMRi>Ll<3sqbaZ3+X+(wz-P>_Tcpz7cn&gY-F{b|KB@FR&4t^EJD8vbtfjDG^QaWRUhgezx+?=~-}M9ReVnahIeU;D5dT zJsgt+|E>(t03fYA;P-%LxAe8=CFQ9L;vJjIvy& z4fxK?2*mb{oNK=Afh^%;y^mnDPV4Wa>J@&y2VrxP9Eiy%-RKawCvHIq-8ZrS-{{Yu zH@>u!xN8nG>-pv$n0g#QLV0hIyRS-ncJy|GXKk0hF#M?P z+FX;?bois8!(=@d6DaC^5O!rcq%O7o#2QWQs;6hGsB4m?Y)DEmn~?4+l1KR4a2M|X10=*|SigXHAl8j?rM zi>~uv4kfoo9fgX|d9>%c_a&wUW*vI&<< zwuf`bb|w#!{hWz)wLeZq81y+(9jsMSCgu@gx8y*cT>6=c8j;)?129pOJ^XPoYU0j= znh26EmvDd0A>1E+#%jeID<48z81&+wyOcHhR1)s{-OnB1WDdZMIO*w02?AD-5?&hI zeo*1(EIV6bBL`=4y%mJ&;ZgkUIfLiKllsWh*m?{2$IxHAe68fxQDzxPNxZ{#a*G-pZr$ zO{@QWD{KL|$!cMnSgQzNAxI`2xlvevxsvmK|9iUKmxGF14A^pLt7MHaQJioVxjO?h zf$?m~cm3ZFWp2(;uEmK?QWck=;F2Iu;~@qQjkoY$KckUowtORJ0AG_2$wESlY)UlX zV_QF4O5_ft7z6R}k3|mPzX7xM_ASoOVN`|GO&w5W5IBb`0@F~WgLT&4#3Y;qsmZJv1CPGEnfsT zfGm@J2`V3W!?IGdl{l7}T#5z?iaP*n2A1RfEeDU{E2LaOLg}1E-rr)UfqxK{@mluq zDOPc@4->Iwy}X9HW9`%=&}}<3fF-*8eD6MX8ygmO75Eh~c>Prdu|8pKGWCZ@_?H18 zD93%SvP_-876YES;Bijw^XTo=qR)qgYFvV^EyMeq#qVfmE`H0kY%BCt=|GHC7ApTjr<4wmtA z-7j~I^DA_Q!0pp&ABkR}Qf*`B1rJ`zPM=fTBlIegZ7YQS2g)e%09ByXF{USldOo$g zsnH>De=aG31wXS!p{Q-OOYH!q9lKEPO_=Ci|CXp0p7Kdvja3VekAU1NG^e*DlwGD7LQY89E#F5ILb=g zb2@n;NPAxMV`$$QZ-bj6G@h_O^`4?zQHD%UcSJEd zR;X7%oB7lhWQlZ#PG&EZ?taj7fOlw6tcBPLgi`KBx*kyS-VLlbt!UW~$EVm(S=9Nb zRzH5HHoo?q_>{^Ij93Qr7lB2x(JvqS1!Bvx#On^NFv~hZ?3E`H27I=*jd-1fs%^zf zh$iBNuP*fgVtyI#8UrX3~N9VDQ+4Ba{ctf!_(TRR=dwY9xQz^7I&uWDXe=&)GF` zjaFa8@XIo;Aj@+jCp#(2!tie;7gXs8!{5tRs2Ho|Sco-2)&;5&oDr7Qf(MI1eh^f} zdI&MF*+#mdH4%m+8t0Yjclu&c&A7cxwrb8So6hPE{9cmpY#j9WUtBJXA|gWe47GF~g!2x1uUSh^qDGh?T6!Ap(Bo$pqP!1;8^qQi(K~e| z#HUj}_gDs-4T}tL9}BP5Y;Cz$Cl3hG)8EEEz4m64#RU0I=$F9XCi@cB)_liCZiJ6xgOG>PNQe{aert#ld|FQ>#b^ zWpC=ZixjOBzTln}T@^}Xsh~!aQTdcDXAY!P%x0(9$^u?^4Xk67C9eTZ?uiBUSn6_h z!Rro4*s1gN{jRt}HCK!l0=yXavf_T%6)lVL1znh_He0g7gq0MvWi-B{aHOOwysM{@ z5n(+!xs5YE3H3UJjr?F5k@*T}P(>7_1bDHlXdj&^&p}cCyR_Jk+k*VvQ{9vff|1%w zy2#lUq+i3$<70|7LAC*kRCwycr*0&r%_pHHh01+ff`om|y^(w3EGw8$?v4Cd z+z4zZ&2eR#fJuDo2m3W5txKu$(5ljZ;uSxIYFTD8c|IF8tCkTtEh~uZV|wLvb9PGI zR#}YJ71$~4tIg>;fwrY<@tx=RJ&O)p20fSE^9N|y>v;|mz$y^Hj{{apog zp>UDA0!v`qI2Q+xf)dct-OWQc^Dw|X^f3>%c_=myL(Rij^DvPQ8q9TmROBznb-#Ki z3(QumR{j49CXG%50OLOm^5;Ite@3o*l7Ot$JIlHI{G6aBah<_P-`!5(q!+43$y!R2t_updgP#sfp$ zQY`ep7%s6j6azH0`Gr63yOHaDyhH&tN(kXzz$HWFbhnHchG!~VJq=7ggO@)U#F{RL z`taRL_)Zo0)GQ!-8`EzAo{I^{PX`ilCrU=cw!aVCJ%sJSH?wfp4-0uv`r;|TKGzjl z*RSKwt>jn2E8d(6wh@<2;q1H0*M}%RL+w~<5?nhRqL91x1HqQTzZDk@b9y?}y)V*) zi8()r%XOMiE#OQfk7tgtgNMm$&(iDx#cU>4*(m*Vh;G$sG z=y~{>A!oS(3Qh85>K8V)B_2nSoXjZJ_qwl=t)IZQ7o99Bp>N8 zlJC}F5jGp+6A+WzMvVW*LmlN0RT%Q6*Md5x&8B#TVBq$@(9#;oNBTVr<8?#N0gF+_ zHEFG!7h$?C-=+_||E(-T@=`?H|ALA7by9v5R0=0hJZ*=MMks~Oqb-;jrQp|NYNx+X z`rQR+U*0>6vapF3X~LV#C6_U6ywq2a@QKkeV*X=F^!4!}lsMs4A^+)awc*?>G(UUC%8s;l<@bt%pxSQU3 zcB4B=`n^>Jwwh*yc}hvRz+H?txSRoh4Odu+8?vF~HPMQm*|7OAld?jzGLFEbUWahr z?8EsuD!6MG5G`K3>tW=TEK%_2nAu~n5Oz;QAOz>arW)styfHYR#8ei}r+kmGX2)b| zn8PrL1ZI8^Kg#QzOxE&I1prck2^U3u zMu{Jagdi|;J=aaT%cqrFTLzx1d*yx8Wtl%3UMyJ?klGHZ9F*E_=v~ZC8)1FjC+<@y z}$_mCX0HqEOhs*(#VFAc!a%fKEjP_Aw8(c_`+CR@E=&fY}XTZo#C9 z>(-V(w!OdSbNXwZO|;Of#Mijs5?+R#Lw2gISE<+h5dT&hk1KMx1Q;y#=e~-%So=c# zK2qP;MrBMJZFC$GTNoThQD$(IZP&JdP>sj?a>ms%i~YVKy3g%R1!JV)UQjh417P`_ zBlCRu-xGGd570vxlzSuq3a+KS*9G^e&j>f;9WF2ZBT~k$csnkzU|Si;S5^Xix%8K` z3p6aSUB+Gl$H$$*Vbbc5d;74ITCjyd(x=^zLS~6J@!F*RMHZP7YGvWbg!ly1RkJp9 z!b(-|(tqK03NfAP)!I{WZS+dPt66pb3S)p}EwX!7gs$j;YkP4a1m+}87k%$L-gwat zoD*-Ho1b}D5#}J$LUTt3w?+v=p*4I%E&d9Pb!5f~dvmY^pF0^CF!dY5x8a!9=cTD^ z%AHjv)PDlC4%GgW$j;Jh0e{7#v}h-!ve{1a)^6B9fX8WQXdeE%H@w7_3EXi(;F5I# zHlr{k0YR&aX_q%fw+|C)SsGOVyX>fVsxu~P_#Q`@gn&M4nSLf$33FDE8c;~qMLOdl znhG96{~mXWXzq#1#a;hIhEc`sEGG5B>)^8Np-96(bhs^}NNvklDGQcrZs0LvKW4VW zj1Qj3VXKwSSBWOYiU>DqR{Rq((J5q2GZU~cjC-h*R^7;@HBZRm7`{YL8U71|SsW($ zga%w1?Otgf$C6$>i)*)OXFO-)D#ML8+Jg&9+H-+?3{HV^yzJ6Zl7@~>5R!pk7xh#? zC`s#F=nc=8v~Ria3KyHg(emEqB&fRQyGd4LDW$gg=x|vK9E@Q;7gIfS&xU^4 z4r*-OAq!XWIct$|sN}?{6o8nPU!U&xx*qs6_aT|x1;>cXgT6t8QNB5`9%Zrdv9p~jSjaE@*^Yimo&+Ijmf`^gWFuev`Wx(@+?YQ{|OBiW856nL|>CELef3;MNko4`SQ+yCdB0XXxMQA}+R+`GplR3M1|q-l@Ho{NAIQ}Fik9J(I<0_obPaNRYGQ#4>NA_PKRe^~~j zg#>Qg!zQR(9>(kSvsIZLS>{?+K$(pQKHI6Of=%29mqs61;LrKemSmaiw`4CrlH*!!WwtuH(ncUswjv!7XUL#RnQwLbB~t>Fsa1- z@olb;pTq0ppETMxJG`W*3dbe+0>Ey3r8RSd7)to2F0`kJ$y5$ZO~VeKq-Homsc>&EE~sH@RFTN9z~@1JESdJ6x0SvyryXk%VdMyD|# zFcL8@j2bU$V)wl0PvoG2S?Ezy(mSX#lBC@DC(Xe@@aZm(%mF0gSv5i6sSAQ zTzh?Fd8ft)4UnOCPB$x`*4Du-6lz0waYuXLigw(tPEo`6g}_Vh4fun*fqEFpRNU;9 zIY9W0Ur?yTlX}VdLw}^)5mHHiui|>fqXIV(UoL6LI!%}I^hQb+cQGFz$SPfCCHF&~ zca!>fiZJI2o`pSPfihsRaXw=XE0!dn~{dMpe49bk!?EAbSBk4CPNWU+Iek_+N z6JH4qz44VEX@`>81NE5hpHP*es{;2+$IsQ4VGH-n*W>Q=ib9vy%9;UN$yuT=U?9mz zLI+%~C$HTHgRey4ni9^-{tbND7#qhrM$1)60#mV<6xlagi3Y54!e^<^*gc`<>8ZX7 zaNKHSL(Dpf5deae1udoprMC%$i9f0*KoB>6BgdECkRYZ{Kc`ws+A|7Qs?x z{y@`)-Ei${gL-I-%nN`Khg(%=3Wpw5`Z1r}q&~I)?ucKX`HROm59Bb;A0!PU$&XSf z`M)N}IL8GUho2$DYHvXB<(ldo!4I&5mEfw?Hn7BC89ksZlrM_;eDRGauXg!j8D2$1 zP_tH`ljneX-ugCgS5{7dGTxeW_%O{KsID07reGgiU@-sAN!Hj?Wl|_9=Ls*c)&{DjB+4l zp_|H54Ic){ldT%&$SX`3D5wf9C9CGJfq_-6rYFUTHq(mvBCeV$9g;nVx6q+MzFQ%^ zW7kec@{S{SAXbMm?~1H)2QD3CI6No{z&nuq!^i;t00SH-1QhD;}Fr9h@Dluz!OQQ=+39Pua#1a9!06<6BXYJZ7+ z1gmOr?F}u)p_yRxDMl*p*t6K{7Pc?Bd(ge%C6&_Mj2jI`o@Cl1ioSW!=TaE2z> z5R}lftPUmgl*eivva=zkhNqd>k!T*^sWxKg4iV8%D?j2mkN_|4M*ol#a*na!W06y`eCFe5 zS%=Ne#$E~aIP+2VcRtbqDVQfKoBnLRTU!+(e4j=2Eph$MISAhA0rsc3ejy?|l+bQ^ zAtPB7=p8+5yRf$jS`_AVo4()cHb;a013(DZ8>TkeL@t{3`PJ~V=oPmB8kyVaf%QCh z|4*3M(jk@{tpH9Oz?y8mk9n}oLopw;SiI^lus(=f_oMrMvaVjv=_>Wpb+s_3tI$@v zQp&ciC~rF^=jZhK*u4-9eYJqnZltjL#7k6pljj6gUJX)Prtg0b-tT?zI3sj-19;xo z397MwA(pxXdZvOK>+vVJJp4={I7x!N+*|);%h$&$vBD|~wria#dmjS!IN6Ok#?t+o zO>dER%K(mW>W?3!X5vXXW9xDc008Br<@Pt|@O5^7x~;?DxM_9wSHR`oe|MlQ=!~Ca zo5L!901vU#vFOy3{>uz^h%LhBHVr#D21-1UITvug|I28g3K-J!*)z#;#&B{Flm@s;lPgdA!=`xmyZSG|s8 z>n5>+iN=kctedW7%gH4ZySDufbnu(0UJOlt%?;pn>|t&l(vx!_-Ib8475M2`%?-rt zbbpx}%>r_w9|H?oAib#zXPV#2R4^dBiFc3_)6>n|Z)}^LD)+FAgKup6q0aODEPVi$ z&2uNG6if?*`1baLNAgCvi4lFh1Pn9pQNhe-7|Cj;xu}-so+X6V{_?4k&@50VWmP}K zs_du*VLc;VmP_V~a*+4NomlY!QlQpweVzQuy$Ax2?D~HanM!LjaGhikd^z5HK+XBw z#M(8L1E2o(KHukqmd%l6XiQi$TWB>$UYrAJn4ki?d3x82nxc9iYK`Ba#Nt9YVji#d zV!|jmoG95xUTRbx$O$oC3K%8Jjnw3-!(0>&$bsvIKapVOg!;!452(QM0l)i?B*EfIajj)*bxQpHaBmS1S(?icSDpfp8|_(Qe{BhvQk?FHDYbk56*N z^q<~ljrTzldwj(oJ%Dl?$Z-Hqc2-I-CSXg0?yI%~LR2M|oo zK@4f?-M-NHE`l@4$D~&XykbpH?*xjtJG(RCNtPaZXjdeq2o`K8k&f999m20waS)v)20p`Xgp81?WAc9y0h<3`r?kS7jx*tyci5Oi2PD1O=4stXS9 z5gIhSs;+We_1HKNaDi8J?AD7)SvB}TAFAEFMvSW+BWM~GkB{wf%rO%tOz2uYd~{{)Wwr6D zu9dZ8ju|s-?2vf%*t%oDqLqq~yN-&F8Qt!9hsO*bZ;6EeS9CE1lJ( zfmw&eLzUIzD#7lTj0L#N)g*0`~?{uj2RRBUT={D92C+y-RYH|w$5FTfhbF7O%5{sHXWE3{iXxw6Yo z>1Pw~QcI5U*Ud6LwjjuQOY1^jZ�-Rh2%)R4+r^a ze7^VHw>chJtz;p5K!tB?l4*Sz4*ky7b$1bS-iqqYvXw#;1vFpKdJg{1H`Y!ge2^HF zt(D3w+iHntw^~B4DyKSx#jS-Q+gda38QW6mkZmbM)4A2|mV*{sE%fZR6uQ|j)ULyE zDc)!H$P{IMk=Zq~bEYt}L#80JU52J#0igYu-1MM1k#nQYW(s2ezW9Dw{l0pOKersq z!hHSCnEz*LpdIjC2JJgiduSOtQa8^JUd9iMIUkW@o!P>zY9=e2m)F$q3bg=ndJ3%} z`q|nWVrJMBD;C)J+qw&Ll)E)3=Bx}V3BZOM4X$3z&SI&f*+0Ip8b7?GIa<2ON_?^d z#lAhnG%jp)=i#k_vT1a9hsg80p!N%$@Q0A;{khJUCCzCzAO%aBua9k?7rB0~g2bZw z-5Njd*06D>@q4+H{O)ho?_#$$+l?Cv>fg^?Me&>*-sJ^W{pPQ+rdW8Fl4e$H*x0rH zR9xy6jWrDq7o`{CJrU#T4xun&O#-m$uyr~W3N~;{65i#ML3o=vsA=5dvWCq&jo&fz z9GAoMB2)ItH{DOm+~=LgkfuNa+(Ly%e7G@iX^~_f(SG*9$cB;x-fiaqv~LuH-<~BU zpc_>; zIae@V-sn9JLT8Auw1!TcU!bv>Qw@IPPyr2PL70Y8`2qagaq{o%v{9<(#n14b_SI&^ zdEeiyDu60bxP|*9dx4-rW$!2s#g6rd2?Uvt8CFLp>LFLUSL~r%zs!AyfgiK)JvblNy&m&WALXmc{5@Gw=6cx0#&fk+2XXocUWXDQ|mv$x;?R(Muk| zR20l6mtwG7?^q4WO)gxh=& z9``{|Zk9WNQlfn>_hKYa0{@~l@v3oS$5r8PsB#oS8JOB3Q5nZX_GrxD)Wo(PGrr1U zHHdV&0uzXg@WE?kELs{nuC}tOt_~5CA(*trhYSg!2gFNIr>3^% zXk>+o8HxxU()HMG-RchS8VdDeB;}&&(be(G817Kz5k5iNdZsBMg1Y#)>dJViuKuFR z(TLYDZot+6=I|;EqY{(V;fUlQwlHRxfI6;fOzn7qH8c$KbwE+Ys0t%Ltla0a_^8^N zu7LB9uE*Eq0?NE>NEO!d^2QGvU5{yTZ7pI>6SW!*o4CFzV_uh*Q)fj074IlQkpjG@M@hz<7O)2TzABd&8-{=wglo z1Ykr8bWw4oVHb_AV$H9NEoZjVEnaX#sa`NqKzKg9U^Rtc#-sUNY@gGz+s``wN(m-V}`{mM}@}K z*W^?Z02Nb!p7CLqp!^|SyW`L0!x06o11J*BG+cm&!MuDa!BK@WHLk9eCbBcc1agMN zYln;-J*-BkmY1i?No;e7j%^Onam^u>wcxhu8pxVqA5-3MH&C+%6&c3l00P-n%$GoE zI}Q2`c>rECtgdSKklLCdUSM~KiT8T&{@7}H3WBa2{AFE-;Lk(=BcWvtoZ#g$YB9mT zW_M@~k=(=1g!=0TO{O@d2I`=yrWmNMsRC1vsfDtML#qmjgrkKh9#cb)2nM#^|M1#+ zktkiBF~$xd)-MI-nqgzApxi`Zj~g;1Pdy-K1h^9E+Hut*t80*^j13#ftg*w!L19T& zd=%1JZJV9EHZ9X2EN9dHriHsi~b%6RMh6StYULJmN`2J5F(?S{PS#X?^v$ zs{gOOa{;faxcdH1PQYk1L_x(%Yf#j9DUu5}MNJ@qL<6J{g(`Xyk^_l^B<2DEK_a3; z1x*!|Dpjng)GJkN(R#s35v>>x7N&>bN*R5Q}g!qeV^z1o^Kuw z`|RId^Pe?qX3w6zch26GL3#A*vg<9}kko`6;_S+RU8OF(#FWwX+4}l` zcAbo)8&5u(27se0`yK7J1;M1|Y8n^Gr3y2khh_JnTDUD#6B&%`E}U-4J9?axr=}w8!95s558V5`w=y4m~RFIq*xOvw_m2!@v^cq++16IVROXoa&ABFv>~1z zGTP4~l~dvt?>5B=joC;3|9}7QN1%Qt_2?ON%#HMmw9w>_Zlm?1{cmOi{tsb*yBPMe ze>U~vf44pB2exPa!1j)tgUVvLH5iUte5dWI_)gnZ@j*pZq++VuKiv+}p?)39SMCKB z97=-WrUtqfIf({i$V^{j1BN>ucHG`6z8yDr^51QCxBO_1-M~k<%F-&DEmhUkR9X++ z_DF4|$>P>sGi;Mv4(pM`=?6T5v83YLVreMy#~ZeN9h*F)W|NDAg9(Yf(8 z{NKJo%A9@X>^&!W&R%o6&*?TNX-;TP;+%vz&f~5xzrSf?Lc-Gte@|SN{N$E|;HG_# z34-<>-T3>4UcH0hk^`Ua&MRLWHk{7Q)1OS_l^uQi1i?*5uTA5X2M3Wu&zxeiTrrfs zuQ>gxpYVo-=XHBwOF}~1`FqUjEpxiPLaX=BdFNo>dgs!F%JsCo>&Ao=c>Svz6OQ2Z zn{P@mQn%im@Ma=|mu^j17-EaI+Y|oLi^(?+C;ZuX`{JJyx-n>bD&d|(*o02cDSdy_ z(Fuo+Ay4KdbZZR-S0r>x2rf(Pwm200GLgPoBeKgIpLe!g`@i%f`U93Qy}Tft)|Afg z19>WG;qX0$3khAiuD8ABkavDw_$l-L?LPc|0}_~(qt^!kpXgs1baOzJykab>@x;R}=c6%P4p)1<Ntn~Xj3`WN<{~Sk5j3f==biQ&$x^(2R9!}FIJ$x z6WP&b{H81N5AV32UY^aDm8t&b4JjY|f^rlu9{LwX9~9FHf8hl2q5BV)(wiHH{HtkF z@s$@R7hljm>XRgJgrN^$Tdi$dmfA{EhwcH=uu2&cRqj%(WOrCnsvy(ce|0TPw#wE3*ci#5s zYCqkpi+X!^(T?s~c1)i5b#?#vvGuxI54x|{F?s6I)%~}t<zF*{cD24gcE9Rsd;Gs**Re4=uf;z)b+-GTBD#G3>-hgp>eOyZtkZa*w*OH6|J%2# z>i+-L|D^~VT=V2XHBU}|!W7p!IoB4OJKQdJKGFMU`K90X*_(Op9i#(F^cQYL(^x{9@$r;U}kOj2wN|ap{BmW%e_F;!mZz z`BTEIu|YyhTEb!b?v>1Us?%s2JqFjLnX+W&^8G{@{}Fz^e4oq9VX0|XB^IRiUK}b& zO<$BWGBxA!Zh5KwFYTUKo|-W{HGNoWZ!#H{N;@>?ZRI?art*M78x|*$!J<%pYWn3# zd8rwfa^BGRgwzZod9kcf-x6k(6dTX?x`|~DbN=_G75;GIXJIArm%P-pOA`}I_eo7I zNC`cjz&;EmoFs$UZeAK2Dl9Q?pVYLx)a0U+x%Nw8%K46rbi~#nU-I9|WyI<~jO$Nz zaP_~^R08VHv2T^Ur*hu>)U+0Is*=9)WB)ku^IU53@RTwlWJ7I49f+$C^rp``(OF2} zDTe9eO#=r(2CcTswrRYL@?D;opW6G<(8$#E$UdpPDd5z^XOK`KZQfT75>0Gt`eI?U zFH*%W<(N0_)3Ga#NEzJ`P*(2O6GV$23&~niw==nJiIb>kTZe*_#4DpK?8ihhUm|%k zB=2Hwd)X(7#E-;g<;WQ+=PHt)GSL#MF?m1{D@-wcYnSMsz>_)JB7KYYSLs{Sk1p>% zocq>@)cVBLaeLMoDWONH#pCoj(=Hr?iDsvxHsZ;kiKp4Ose{PAeMV|qVkluR(`R7k z<~Cg_dB3Lb+@^^?r$#+9C8(m+)w1mwZrgaeBdymR#*7guvr}8nrd=hR+CsIWeYwNt zVJV^1gw&St)*vsno}^dNC!PB}rE2bMCRS7j+z(Bx@;Fv!q^?Z}Z4RYwNH{xnBNekD zVFZ!#xG@@$61vP;mXYO1&f6`KzKxf>c|=Cby0a*Pb=G$4Tox;ki|O>)BtFwcO}YS- znw$6-#cpIu;yBqaHWJ<~HfKp6xQfT!#XP>?m^CuB%?>R*uHcTHpHiB-lbaEa z*_J?kt^e?jM#ED=|Kh!0;lh-}X_C2&mRyDb<3%lxz-ZdQ>&~DE*10sd&ZV<}X{+bt z8!4WNC#CXu#{7n?k?87+CrXvxAwvfZr* zK`Hsvi^hIV{3~7V^U^nH%*4KtPaSJf=dryo<>Jn8WJ)nf)rjstkFdH|bDxX9FXeNs zXLqB0hsIoWOe^ADaVdQs6}_+c;)!?PG{;CjK+UH8n{}tU0U*xUMf>Fe)IZ{E$xjJA z5~3}`JNZK+;XU1O=-?PmkQ09MV{0`=$+4s?l$MZMMV?Jfts0S9#v>ATOOpMXwvSJ( z52se;rIy(_*(%X>*9iy*>xA`|_WHMREuq6ioa)hm=<>K5=$KJRWn|Dx+&P{4!)1)5 zjxm+AI=9?NtJNf0!=hSroW*`%<~C+b9hq8|xX$MnkI~7ZHGyu{n!|#(AIKQJGZfm~ zEp>N@4h2bJT8>EF8R9Xzv$toagk~H}7IaK7mU(1p=9IIg%p1vnQzmb@bg#?1FY2~9 z>8jAxGUYJw(*JRllY-B_*PPcwX4c(#ODO1c_0kxHf=*X)>Fyp)<3PvF-Omu-YH|jF zo4@mFD0&tk8)?x@pG4qhZZDfdL8q&vW=klbKe|=vPFiOjm*33uiM>Xj1gMwn%E18? zpaiN{nFP`CpAu)C4>^F8cuwz9$jk!WT5K5#=q(#64Kg}u!E)hd&QISbh<-@s7Prdw z`OaR-GxK!XwoZ7va5GOQz7MT){LAF{YUb6%i-otzG0M!RiO(m_^<7KfIl21YBs_zb z$R8A)Rv7@y+?fpc`LbMYNt(4cb7A_r7tQsUw+lD(VB*IU=WF2zMa~Qlj9E%=YF+Sad0}bXq|O( zv#hCy z{x2fV{+A4~+{~lt>)T=<(2`SzT?BlN&Gu_gx4_JC>FXuJ)AKAhb5#2J4RQ8!xy8{q zG}8FXe5vA}39nM^n7p60=i>|~Y9^D85WYt7T;c7CmkDoGe7f*t#TNrmydbeVW>T1G9arWv+O3GM{+vHl-tvsqw%_H zuRDY3rw(mHnACRpoLgD1Ni>62(6fUa0u#=1|cy*s02`5T2{- ze=mHn;z=~mV1KBQO>%KNM0kH?KSg+k;*SXDM*whgIxh)NH#EkNpmS0#*R{8^Zy?U| zjSV!eaN=_amqI)~tMri3=^c!c`HAcX0l#@Bfz-Ft{D_mt1?|Fni@huNOW`AxPBKm9 zS*JvFC{iY62;V97rR*l1A-un`zd(4KaOxf=EfBs@>D(oJmEzAi9mPKpo+kPfc9VM0 zDF^#sFPyrQN&SSEhz?~p>F2`xE6zVtWt}v|Z*cm`pNEC7k#cGHGHH|HJ%a_R-+n0e z{U!dcz5XTqSm881FzEp5IP6c0a2Y;=zQQjPE{kA*@H7Fg-OmtyiLyUec(Ssu7hWaY zl{-)PO~R$x!8OA3guDKEyYSs&=yd)he1mW~jR`gh-z?n4=Of`Og}XTKb%>2myTthz ziCd2FQq^y)akm-7Y*=D&)qqZw)^nXcfmBBtCgG&*t;)<8kM9U%Efk#S;r%?^MX}@N zP>|IT$XY1K@$i8jKG?%g_He#S**S#*nZ&A1p&(Zgx)*BBqYet({KOd?Z}`DMlLNBs zFZN}M4;1@)#fOT$n}52^!<>%vAIA$t=Sl};Ia=&jD*IBWFa6eKJ4d+dw~m(?-Zy%j zc6_qoo%>sj*rz!|SvCl#VW>lD5#9mP%Eg8s99*w9%r~6kul)a|@G`~QgtsYvz3AVq z^p}bKT4n!R;q8jA6rFWS=RV;tD!$tAzR~k8xA_sVKT5UNTHz-vzFzqGia%%gLBT3F z&`JR>i+!oG-z@xW#s48XJC)8>v9D3~9}0KJYgezGhWCyBy@TWb6n!_pa(s{I+@SOm z%}w@$f?;GSgLs|9`dv`o?n-3MfLFuF$esJ)R^5+<_59m4#rV|bC zYp(Sp&k~(KE1kij(_iVFCid?s`+VVVDt?CWPZTc^9;kkMw&8t)5_FQjPZaz26`y4I zLBRy&XO-CFb!5(3EBt4w+$Q09iq8`LR;Ax6oZmr->2l%7`1_TjuX&qrB@1#Uj?Hm?)= zzdInyXT`ou?bjQ{zFpbBCVac%TZDh6_&dVgJjZR`E}WkWgy|FE`zgN5@V-Gh8q@c0 zgl8zutD(UCIatSyA?=K84(XjD%2jZpTn!FUu6vc;5DMHZUJRr5Zq}^1JKNCQ&89V% zi*g+?#lg+`J8lS>yILI?uZ04-SQRIQ_+nL@6bk4fjZSnUOz%T%a*&4~>*1$)_$Uvb zYW5)Z%K!yokUbsoOi!$0xxgd^g|^QRvBG_voL7#p2koHGoMoxeCf((u@MljD;N z@87AtS`Ck#H#z%dhR4p=9A9U6?EJ{_t%k?W%N*x{vrl41r*aQ9Ja#_i>@y9IoliMl zL_A(U9Pi;39zNT{7kl`P9)7!ruk!GhJp4@$|G>k)_3-3A@#Axtho9i#r+fI%J^a9< z7C7_}3o3Z{PTFKFY&S^YAeqex8RWkMi(L4?o?*$9Q-d@dN07)}u0Ych~c4J@#{n9|`wudneci z`>n@*rH8Nb@IM-TnjA?of3Ha2H+k$oHumYxJTQNgNNYtjm5DchDDm)!hc|opZ8ZOh zr@t4u5|5Ae*zfT0D?Gf~!%yrT~E!^LQrJg#}^r&3D?PwBO>}W+zk!h%J+@U_h zVWDmGxW<;Iv&^F+3u-He^W&JJ)-}df`U~~hVfJBhqv^>(Q5!Z9Cnp(m*&D)SZ#&+| znz~8lH61dQOyh_{R@1$BCo_$OkCz-%8=IMd_>VE0=9W*2fg z?7V$Y6?-D$4DEBP7*ZeR7#L^<-%M(3M|fm1B?99oSs4a$_R&`)mm{9ATtDoIwO~~c{YT*T$u97q9Ib9iImmwfT2K=Am>yAQZLvcS7djdp{r~Hq`U} zd*Sf~z0;8do`f0y(Xf>!$#Esi?65g*(g002Al7ss=^n1xx$&rm|6LVN9S6kepqb!P z{Azagu)|nFPq3qw!_kGFY^Ml4@lFwX^qnH~NIXU8QF%PL|0rI2A~H~hI~*@!%@y6# z{>`I)J4ff7;vZers4KnBR!|Cz9~#YRpYaH-LSE zpC$Wa`pie?AK7Pnz(=3y*|+~;De+GG!gg-(V|LR2Tr#eM+5c&E{T+cNJIvbcwI=&E z1AY^Mc|!V+8D+lM^CR~RbN$E-e7u|5XDa`P<-`p=pBewiUfYvx8L6z-_QBErVM%fQ z9{A(?&64qsSzS1y(EP2Yl3oU4=jF01PYp+}0Jthl4R<`gyS61R57#CaGNbujb4TYf zQ|Uq6?(G9^#?4;4xe0BL_b_v|keLu!bbeepZOr`0uT!xAk#m`J%hxI!89D;}OX!2F+M{?9c3XPN)A&HsbU{{zkc zgZclg{^t7-^WE5FnY>v>C(Br78HFs9H_PTS_Sq(Hwkajs*kl`pY@?8E6b6{BIVSG_ zV?V%b9bmVbTmww50Y-U%DRF?Y&oQM8F#iuUc?TM`fhN~LqchOt9ca`Bn!E!|-hn39 zAe+l54>Fd6Ox{5z?;w+FkoC}54l)XZjKUzB%jnR%awt}Vjivc&zS%1C7F#9$W(ABj z|7UV%nk?C7Q?}90Hay#ukYmd?VmZdg9LtSpj`1;vj>aR4#|+CW4v!fzVq8IKxHNBA zaX~o1`$~KRvlAF+UXB*f?UpdV;fYq8E1JkEpYMc>i!|}gD6q+o&Fujkjs-bR%tWAp0OQUESK{XMFM$v2b8aN|W*yf-U zy$%+9+cWAgRpD&DAB3Q2OougoIUIs9H0|bh&LGQcpjW!lP*`1obgX@KnnmHWYG?4P zlg83J;OO>>tN1ykMdO-=#NJ!gfoBeArqWGm;fSeH$IY4Mpb&Rc4!vy9pD~MGKNqf> zEO(ATbo98U!PRw*W+WaoxxBiDUQ;-1Kt)SSW@bT0pECzm*V3)D>PnvNnO6&{?OBy| z=C*e{$NNtzuQa!s={`7=PKEP^3VxMT2Rwwa>)Je9qWj>yphh=q+@{h2^5yl5^meQ9 zb2z@TjWTTE29ubj!fxc5$Yoa&5ktuH}q1P-n6|~TrbC7+A?yGDvp1N`5tlEb1>PGY4 zL>dnGZf00KH=#C}_+5!%uB+TFrrnuGA_C%O5$`p$Ds43`nt_WMSv@^c8*dzVPq zT|M7Lr^}o4dNMo6@U3pj$9uH2kdzlbli&JQSl-Bc|L_sbwH2JpxyxRMiyFr@PinH= zBTRon5@{G4p#i0lTo}$TTcm-tI8r`6qN%O8?Fn#8Ts#^#vyrN6eWK=VAP1!bnOoPx z=(S1V!U%<)9FB#EJ4p!*@;sW4D6eUB!#S^WTSrHC$uhbQyAuaK+GSl6<~5#GI$|)_ zp8tY|+%4dn(6lZRG#blsg$73I5N;phwNY+`N8_{Qt~%u$7jCSr=gu;jYs=k&_8il3 zhRvkuWjNMt@@gx`QBNQ<=TE$CvLn%73)sD=lXuZR=v2%hr#7Yq1>{F~--<~{<43zD zf1!b&uanz(Xt3*)m8GXswP*t$ z3(tu()bZ}hf1TjEhBKPfSXV;_Vs3il>TvpVq@cW_t}$r5kls60PJcE;DrQ8R#{WRe}B|DU->w)r$6nXjpLg5W`;Q;laLJ2Dpw`l zfT}DgAj45~^frA?Zch}QG4@Q_QZRiqof1u{ZKeZ!3+vVLC|wh#v51C&x`v{XN-C|O zAisW0DZNiCGOdDQ7Y)GJ>WZq^NGnk(YUKTijE2#>I)#}*Eck0+Qz9++S3()GzK{HU zBL9*pm%j7MnK*o}-R@n-aAig4CH7veBoIQz4aK2HBqu*d!4w_wlvuluFhM&K`j&Sv1K z{|WGy!9KM+tx#frQ0E}vsMFuW3xsnV&V%}n0{d5Jo2&15;HdAObEe}t6YMvE&Pw2% z=TZ7_dR+0oTtQ0fg|qEM@bgXJVc-YIPeVC7>i1LJ>1PYq`ey(~{kg(*Klv5dmw`XO z5zhW#Jpbgef8JyN4%nB2{#PD;NHP^jiR*>_94%b?Gu&f;mdE}Aut$I90-pqa-U=N3 z`JG39HQ1w0Uk*Gat{0BmIUeqw)2HpP2Kx%|^Ksynz&8Mo0Dn<9$MaSCxcy}l*iQ!g z9l%k45AZ2qKUjXEto?8H@Yg(itB3Cp&c)-nmn6TV(B&Q_ob8VXKQq7{{T~V(+pE~a zt2}%$a2&V)xKm{NGo83eFsl?}q@dg19XMj`qI; zj`n{Aj`M-ngmXW9jXtg)whQO_;&E^n@M`cUMSil*_7?y@3OL5$Lf{zB%Y^GVTmu~I zwF`9k+04%WWcjH)`%?q_c;M(yqi|jBJm6UFGT=C`z7zDPLAk4dp9K6*!a4qbqmT1{ zJ?Nhf_8UP5+vP3bSl`3aNR$%S3;oOx&hg=AL%4EJ0gis21036HF6i@bm7LB(;asoH z^l|)J&_Vxi1D#sXxf|@!&xe7dpDzH%_We{i`@?nS=UH>=v%g(3%YbsTg>&5MfS)Ry zv%gLsSFe$vgY}vQ_FP7(l-mII^`Jl7WB)s_$N0Z4oc-i;H0RF_ux|jq{{du3iQV95 zlsNl?gtL#0V1E+uCg7uiHv^yU(Z2}nQU5yNsJ|LGw&Rn)F%Dk?pAP{d}aXO zS2)Mv4TwW8;T#7%|IGxB<>q?yM|$+ffDY=<1dj3iBj{jzJqq?1&sTtBJo!1IoVZ>X z&z>HB9B`~}IdF_~y>K1p8Nzj(=YkH#;dj9MLwh|1I$Vbw*^gdP{6yjV$OAulmF?Yr zcd&3~Euh~I_)Or#fMeVmmHu!k_bRZ*`QdfSK40u_1p8S~?mfz0rVYVkigP_UJujT& ze-Y@s4tzH7_l0x*Ilw~)v6_t;&NF)ocky)oAFB9P(&AJEI;cNQxc0LNIQrQJI_S?0 z!ks^^Km1N{*B`cm4z|nZV84a@cH`mKz~2P^FVMLd;&y;Mu!`e37kCEnR^StWW4*${ zb-h{?clEkgara!<4-|Ly{9b!b>?ihTel9B~%?AU=t(=_yu0Q--ao2y& z2K`GQJ{JJT_*@Ab+i@vyj59y4l@r$s?KcC*I1H!fj&gGTyLe6%&N}nJ&jw}h;yhDv z*FWbg?(|oHKKk=}4}a3bUs3ul{#(Ev=Ns=Ud#)d+&lPv$PxnLZcDB0|;*c)f#m&|C zSjAm@%7p9wQxEzWhwD82R?xw5VJ?Vl4t|2W}Ve=ykNarq3ee+%@_1>O$aKL6A9bF^RRvA+>G+TQ^j z^#>eIg;C;ug7cX|;8*>tF+Cv%ZtLfzYT>r+vn`rIJ^z^ zZ-UM{z_$T^7x?GEw*ucIoa2D!1^dwR$2e*K`MGV5qyIU=SqJxvGT_%jy{3Q;=UGDA zIL!ik90#se_K%AFO&}#xfaJ$F;ez51VH%Ytv3GA_5HYxiRV&Cqu=jT3gV*gqHIkE57m#Jl_|5M@4 zewo-G@39}Q?AM7sKMyLN{)1qT?a0q-;>6`*JMIDnCZ#S?7KF zINn=$60vNs?+f!IK7m%-jxe{ep08t|*Y zewuLh6XP=j_&nO?-p%@eaNS-HgFVK7EpTkdXMkfnz6KoqX&0{B>nq{fpMQZ4>UTSi zqhrSt^rsha^#3s6=+Du@wLhl`-KTiX{0pc_7cy1NjF57A8#-BwV{wv|EzZ7(S4fedP zZzBCi=|SLl9=Zl}aNe~E>~Wsx<(jIP2s5Hdi=@9piQ`*khcp z27TOLt_PhDNz29IH^8yq-VPl5?E}EKg3hDD*?%1Wp9Ontm)C&r0G+Qv2gm>Peq=<6 z%l5zcYL{(L!b?9YpVZ>2nLzqkQ7?k_hBXFsu@uLh3& z_EnG0TfpaWxyke&r9(6AQrD}GaIP2nnE@Q@n+Y82dm3=8SD|oSFM6(;N!p*upo99; zfTKUNfusMI0!M!q3)lYKAzb@&FX&*otAV4RPXR}No&}EnY!a^h`AE3-=L^t5f4%{Z z{_LG)&A3VOi1NL})*#-J|d`Zo={;)pUA1R#uMEjv0`x1}+ z1s?n99{cM(_A5R1FL>;CW!*yA|deSob9*Xsk&IT3gd;%lr~FiSY=cZiR&-z4_; zdhGuQ_N>Kq;Pe#OV?4Jgd#AtMW1le4>bdsfSaaG>IG2g~$0++P#ySY-C%`6Y`!kjO zb7DW<^`@=KBb$@;h?6Kdz1swbB zd%(HPUH{(+9QTW_gme7yID61wTVM7c?SBG%9&MY*4pTZ^xb~lZ{ACjBpg*I4W4+D> zj`gYlj{Zy&uKk}cT>En+=%D^Jz|o&ufusK`fulbU2-p7nRk-%&WzfNLUk8qUZU>J3 zd`C7R4Xa6C#U9>;Fg>!qMKSuyZfBFGOf9PlRCb16sbGmTt&lAGgA3UDE0QPu% zYzO^UD39ys-+1i1pKRPQ=QU`5jBxe`^>aP;Wgh!lkNs@m8^O={z`1O9zP}py$6)`2 zaJI$2hu;Jo{|^5H58ng&=ugHeBut6h3(NhPa9!>Nz;A@}@#&z$c@AemN*94Wo=3kg zT=&CIK<5+6@7niE;MhOE1CIT3pP{CBQ?IR{(@Qw}h~wUoV2|T=Kj5E&PAPCcj&on< z)CT%^9RCB@bJ^~E^Uq+9$Ib77<8kL_r&h5C9K5l%w1^8#cpBB#gH-SIffMdCdd1OdQ`;#f0BUF zN>z$4vpATm_!8mQ2xkp`C$6j4?aF?I*x#dgCFS9?S~%-mL(J(srR?u9)rl9{z%GE*Fpc+dO=a zhaZqn0+cwO=+94tYyE8C&Co7Qpu>4)OWc-&J?_^J3Fmk&1D$_@J?alDAVW&*C-$F_ z!nsWBKa+rC|9JyA`tzxWcN@W_+P;SVYyyts!&VRfLOA=+zV_lTluj9Gm%REGeO!Mi z0R9E=O5v=5hv6A?f0g|3~2X5g>yT;K_Ayojug&u!+vrq*z-1bJemypcs!Z|I(WRe9(3?{u?9Hn zZy{efz3tK8?a|-A#OC9Aq5c5iIR58(_%A%XQaJlK5#o7?hu`Aik9qW8_Sk;~9Q)77 zKabUyeM*wJRSD;I$K%dB!rAsW;Q!*W9d&kz&cnjB>WTT zgMR)RIF|c9=wSQq1djT}=i7R*KQo|SXA9TkZKZH-FC1^z1IPOA0{vXjPYB22*$;Rs zaQuDc5yG{f#|YPc_5&UCa}jX#^IebrhaUaUK?n8sEsNC)_0JQo{jU_R{l5@&P=7V( zU_74ydwkBuX5iRww*kjE?-b7d{Ea?tzy6nS_WyKfujFz9l=S|-L^#{yyy!Nt$9d7+ z!nxd6=;O*=13K8Bp8}58-wvKcnJIC(*v~H#&iXyrAc6l2f*XK;N$alMn}Pom_-f!^ z0e?a`my6@%da!>7?4JkzF7Uqz*YVs2_HTjxXTWy@KfHogC?(S8Yx=l)wE*Wh^pZGS zC!EX0@#ItBc>SbXB^gp;dz?R<0UZ1P?}c-Ga;Z$`&l=(E=X&}$z7}+_{~s11BT7m1 zLH%Oj=zpV!uMn>Nxm&pQ=Rwdxe|7=Ka+4+-H;tdjdwKZzz^{e)-0R_g6wZEfEcWFu zl%58AyzjF`+4q%p-|n&RKE>)e{Y7GbfN(Ao^_zfWyId<=?-#d&{w~sT?S3!lV4NQY zd+h&ffn)!F2{_un2^{T{s%(9^UL_F!KESbFLxH3HIl$3=5pe7e&jY_1$~~hx<`3F8 z2bnH=(a*=h9>?du0G~%X%eWv)TR{iwb@Wuboz3vPtV}rj z&*NtX)tS>G;ap$TSq(Zk?)?dL)>9r=uctr<`~MrjQUAyqF5Si%`ANXBe-;DB{&}5n zUEhtuU48l3#%T}eV7W(6v)fq*>wBVb*1`Jb2r{yRZ9 z*BAGrNy4>1ZNM?kcY64vz|sHbgzGrJBAn~>G<{q=-vAwK_ieyY|4Wbl9*=%f9Ti4N z_p7PG*&p72xesx=3hXfsj|$)Mp}wny zbGaMnvp+a)oFtt6d4@jDpMk)i1wI_~@i-Os z=uZY6)Sm_%^=EnXmjK5&uMn>5bvNkae)=HjV1IrLIO;#|(ck3J-vTPe@JSi z;8N24p{H=&jzz+CeM>+G<2)WX#<>dgu^s0F$Nea&$@YRjdUuXV zx?XL-QUABVv0eTkT*u)t;ao1Z`!k?}?ee-uryX=Kp6>(4cftFLtq6s~oS5U%5YCUErgJm47r3x(_Ww+PqqzZ7&Z{?~eRZUh~S z|E<6={`Y}C#{U(M{@+0d_1^}L`k#CBQ)k3)-!|bKAG}_43)q*zIDe;bj@v8rapUl6 z(823PPXfp5Mc;r9o+qZXSU*|+3(!9n_?N)@0sklPeBgV4j}fl>!`Wc}4%nXu9Os8q zgmeGIc5DWFtk)&Lv0nE8$Mdr8Gf9{d>t74;ALZfWg>&3EkGn201?=lVXST9;*CiHs z?C((ai%5&p10MSWXW8xS3+|5vz_DHvg|q)()5rCzM&Q_vvw+Vd`z_p{l$HtC?Ry*8 zV?VhIIJWzPz_H!e0!M$I6|Vckz>BP3><{i2!+_&{vHxsq@7l4HzfkI}_#%sg;}oAS z{1oBr&)LxKqm}&%u|G?3H(xyubgluN8fAZv=rk(M`v#|rJUUk?d-r#Yw*&t><#+wz zF3@QNfBp)*3HVRvnBvX6g=4W={Fx-2+XctHCgE(0BLyd>Gc=)x#x!j2mpSwK#Ne_S3qu=ha-whnESLe?qM<}^| zK3n3}ES&ws>)s25b3B)U|C_-c^-pXiLrScV{U@`PsU0J+|BP)l*o>Xne_j;MWJ-pJxn>>8JhcEH)6&}9Y!=Lo>XH-vNl=RWG@X`g^S&eOUtwDooN zIn<{)9Uz=F(Eji%&1R#GaX8V#PZ93)d+`@a!xWd@JSbA!%|mkJ3;ToR=6m=!;kw-7 z#in@UKgO-f!)F7>au<2{G7rDU!yonV=REu$9{$-?v3l{n3pZZvb#;v6Jb4drw12EE zzWuaoVjTZo<=X3F9Q9WU=W%rg_;bH-ZkIRc8_=A$^8WD^@wmb!{h9e!dZVSeVjiVfWHI$CE$3R{ReRLbGvZ%2amIt-AI5EbBt%V zWd<9L@jO(xj%Od?>_5iyIMBg(ZUK8P`*63v|HhWfI?TDRb1G1LweX7--y;0?iaYzQ ziaYxQZnovPa^3mJA&SqoX2J1_%jKq^Q1OZ4&sD;?PG=Ew?fax~j^{GqF9XNFw`>QU z2C)AeI36#KyCqgHoFDcR&i*ul&M4qbz?TbWKk+do*@$lUq-s5)bPZBLq=V;*AZ_g3V{&1coDx1>` z;kv$GfDZnyq0gN*pVRqBbVdl*IvapjL4D`1?5MNat_Dkmvkv~f#2+G=zj$EI1YRU_Bh`5xGPpJjssc1`55T>!xZ7{59-%| zJ?bw6j{5fiNByTfe4~fI<>4QB__rQ@z}>Mppg*gC<2-8oJu!Ra``sI#Kj-0Ffa5&p zH}}PK(4W;F{-lR*^zg|2F@5y^Lg8*d%BQyHl(Hly}u zwTD0M;V%M5{jI_|4l`hX+##Inh4bDoKnLf&i4Vp6#Q3KQ*YP>hV}A{BjQ^59#Pres z<-)c9cM8}3-w!(I|8v0ceBmSD=uiD0WBwqY1swfcB3%1jG-UB)~&OZV6 zzk_ysXpQw#_w%QLv}Z{=j@!v`7>Mb!>w$vSn*!M?^fLPlW&FVa;N>pW=x_5&hy)Z zvwan``>Vk5{_j!itq$8GUm=|9)q_4Qq{XTC({{<_;(pgxIP26xxdXr+|1NO~@Y})u zD&Q-C@AB~O8)E*TeF|{&GZQ$LI{`TM^N5Exc=%io|Kb_zC&woj>h+Cqjx&ec_4CAM ztv$yXkDGe|$9hc#{#(%h74X}D-v%7x_O)>K2giqQf3^NF4?yP};p`{I?Ew$p_c^Ph z?PqxSCJ!I@e0-e?ftP@vR{_Vk{Y^Nx3!b-jf5Gaz{=bN{I4u*-{^RfLo)*qJcSE^5 zz#ikX|BI|<$3yH7y@l)kkS<*Jhb-V&-;uzvz8gWm2bI5E>b2iSsM&Q_vi-2Q1Lz`^5tk3PZLE5peaNUmCV2}Ih zsls(TjsuS6R)9Xn^8(Pvc5DD0Y{&b7V>|xIqyJ~n$M$*#IJVboppWgf6F8Q8#H%)* zx*d-ZuG_JnaNUm6fnz&f4IJay>or?0>!3fG!gV|53TJ9rW`<;24Kpz|sGtzs1@M{ZA3j@j?H43fJv*GH@(+ zghziA=wm-D1&;l&9Q3gt{?eoWE6_pxrNB}Dc8~tEz_DJhfey#Qopx~Zr$GBbF9<#@Kz4~^1KIWbH{521M*TZ*u_~>`z>!0i4vxFy7Hva176_)`22KXZ3 zJkI0qF|P&tZ^8aI!a2@3o_yue32h}qO6(8sg3h1)glnCHgtI?*zTX$@u^&DM9NX)4 z4}Z_YOSe&hl#=L!{h>;@j%NdKjOR??7`OStb)2sf&gEh}KLC5YUhx^&_k-i?H^A{a z#$NAntvb*D`+E4D9)A4$@pT3Y=lF0P+<5-9hrghBsg(_0ReYlG$aedMwXuEcfMa{j z7tV2>0r9y~IQz*%pzDX%f)36rQa&IfO1j+M9{y`+&;qhrX~LV!i~FJuM@!j z=b(e_bq?tK4D2IdkNvq8IQHjX0`Ctx*8G0xogII;Zzu+I~2;sAU! z@Fd`sz`FtGzj5NkI^BU^0emmuOMoW>=X+b6SZ8nGtAXzW{0-q;FRbrJz;PV-2KZpm z*YNT7b;g1Y?}M(todfo$Qwbb(W_Wbwf<5Xi1dck(KxY{E zvjXf<=RV-5^N>g9QQ_P?DWJa&bWndA@KeD4W8lMqe+eAzzXOi;2XTW_;sxHv%o5Ii z^4E#dp9X*ojOFaCK!nHpy2Td< zzXkRj2OhIHZ3WJ4vn9>oU>9(<=Q$In)MUG4TjuV3^FYPje)kjMYAl&z69d7A3ILTwY#(L z1swa~;lf!5&rb`1W8B69$9X~o^jWKywEHa0rC!TH2lemN_M-Cua7MG~!|6%kyukD2 zXN0pac)q*|?6G~{70%kdAfBItPATw%_aQ?{tdIU@31=OQ!w|*YewPP2xZj-*9Q7ML zd=}^*2!37yoc-x5@mv7>Ah5q0INKjC_Dh5_!+G7E%6<=R=X9UquD*W&9jxywz_Gqh z$n_g`V;+4TmE+mpg|j~^!2gdt{9hiPCf9Yej=Mg@9Ouc$d+djL_z2*5UQhxY=jYD= zNBdWRqkZvydVajFht{>$nzFpP_E1n}dLlqB%=PKSV^Ywhi z*9k9Fe2ws8#ZQ#|u0-*jVqdCw?vWNuP<+`@7EDyUQh1r-Vd0gEpCi0V@w0^2C|)AG zUhy-<&nCrJiG7RWuM3~8c%pQWR>e;cK40-t;R_UR>u13t#Y?5*v?)GO?3XA$UiebQ z#|mGj_$cAa6)zONLh+k~uT*@U@Ou>hSokW%4?4+$)ry}ke2wB&!XH(TQ=<4(;XF6y zMyk7B_gf}UE`h`}f zMe!oxvlV~o8EfCF_!8ms6|Z^T+AmQ2=w~for1%)IZ&Q5N3)X&#;+upoRs5BW)_$4d z175Uzx#AxSU!nNk^7pAL6@N|i?@@e)*soH2jPTWppC^2c;)(KimX9hvTmJ5It>X1! zzfSRD;TshHh4AMT|5^t4jf&3|zDe;5U$ybvtoR7wTNEEJyv1fS`$d7+Fq#c~1n^ei zBZ1EcUI-lL8%4kuf&Cf4+kl@5d;rT;Qzl#s#-;@@BSo_kF9By&HGxfwTQ8@xKi? z>u-?trNE6pV!sAB+pm>%x8zl}PZR&!mA%XF;^ge>#oo0)bJkxa`CUJ9_9fy^e_1;F zm0~{_IQ!%5-1S{&zg+Cgl)Wpj6*&9j;<5lZ>(|TrO5kko;=2ks+pm%OZUoNu3&fwz zz>WXBkC zwoe!P7T^YneJgObpCI~W{yMRD*Rj|QM%(Gb$=&Z} z&i2=ceQ&uQ=Iq;P8>e*OY=5=b=K^Q6nT;tG0%!Y0VqXQEkvneH184h%V!s_YUrKMM zk4b#dlM?$mk3Oxko~(GTth@WRY|m&eeK<`3d;YpY%5{2d&$mik{1<>d4|OF&=s!wJ zfpgbvmHxRLIQ#GJTdf4nI%^N5|0t~i&JxRIJY5T%bq*1}0XU=d8T22e&A?fwoh!mi z;H>jA(b*21QTr^mrj%?KoSp4I5uIeO`RrSQ#)Zxr6H_;TUf72hD-bYk*@SJ9tjZVXC}JAcv?cmDKN z-1(EPxbr7NapzC2;!DL(cYoITvsQSSvUlTTmEzlNb%J`u-MG}ExEnuP6>k@v1&X`z zYPsTWKDJWv4Do-J;%&m$D(-YPC_Y&1+ZA{A+ZA`^?o`~BYj$R6_f?{w%sT_{Xn#;V z+8-2m{lTi(e&w#2IOg>4l`=KI&%^KcaOb<$`Mt;f0S|xB!`(F;t^bh6{tq6W4?JDO zc+B9BOF8nz@m5(c1TI6hA@db?$F;u#9|+~P181ENW!ne9)8soZl4ZN|XSr-E1kO4k z8PDef=REHCrLW7iOQn-!>GaEF9^>xkJKiSqfL3MSy03L;gW@GpiLHva3r{l#r`UDc zlKrjDM8!7>cjpDppR%6T-pz|0Z|h}wnZ$!R$H&bpmI3E&(c`}6a{THm@rdfn@ny5( z!SS}-J&L!>@oS^R&*`}1?0o4=j=TAcJB~ZP_H?UXFUJ?h)AKBM$Ga#mw|t_EKT$68 zlhwf4g-27Yy&Lz~zS1J||A{irFpmIl0X`Y{I^dkg&1aqm&Rt=J9A0^qbV!81#$Me$BNt)l(xi zGl|u)0ZU}|8{Ba3As{VJ&>{epu0`Z1-h7!v^s zPCrsBuc5MSOez|iViBR0%z@%oNBe&H<0-O}srIEsRR6)%b&XWt#>k+_<<&LK4Uu63 z*ptkHAIv7<;-SkMqy4zc&s~X=w@9M;aRIYRUJenc?aEgMJlt)2#osbxo0e zBS)Y0v&JUcSwtyP6`tHsK8^OWDGhba^)gcY_ZIxS205g35XzM`8D4{7w0nktkQAKI^$uBr zqf5WBrw#G)7baMXI#qv{&n>GYzcLHfhOEWSuEU4}>9TZ-3i=YS{;fZ;in%i1&S5V$~_1|!u6)dFfoVfhM>7&bkgjl@t(^G80{99H`y8MS|W4!Xyj<@Bnl+0W{ zpK9sy-ys&S{IY#*!NY!_e11$xyzP?p;dw&hPy+~s%6$)5bV(s6WqxplXk zDfvUz-DqhglHZl%Ht6*x${(-(tK^2P+t0ZEJl4AWj`Ou0`WNW(Cv>rVz9to~{0(u+ z&xlk0Hc$CwT`a%dQ+|7#@{f;G{(%(tc=fO9V)=Z%GG6_6$0^?(tH=#A7V>h0r~LXZ zmY?S-KWzwYpyb+l7=7nI?bYo+!&81s7t3$(l%El&{Qhyuzspm8YZuGE-BW&Uobve? ztLy&{Px%YFSpMst@+ZV8pRa}L@_W+27q9=db+PNSS;*`&SVy)x<7b&0j z4NR+~e0^Nvw&LWLFGzk%WB>nI^2dn%=JGlIuH>g~+#zj{{1asU<~BP2-TFT~_1`G< zUrXCL4WmykeO!JwF0ntlY(hbLU+ZbcalA&q?V``Igmiws>?%dDSu_>OA2nXV2R%r- U{(S8sUjDXItyjC$MxFov0Bz8?SpWb4 diff --git a/pyflowline/algorithms/cython/build/temp.linux-x86_64-cpython-312/kernel.o b/pyflowline/algorithms/cython/build/temp.linux-x86_64-cpython-312/kernel.o index 5db51e035f1b99af0e6be36a743fc70eef1c4ca5..cb2429f25a117f592cbbef94fe152fc46d0ea660 100644 GIT binary patch literal 175608 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 aFBp9MCQlPg?p*}6Z^IXYj+l+M{XYO3pL3`H literal 184416 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 diff --git a/pyflowline/algorithms/cython/kernel.cpp b/pyflowline/algorithms/cython/kernel.cpp index 69716298..b0bc9f02 100644 --- a/pyflowline/algorithms/cython/kernel.cpp +++ b/pyflowline/algorithms/cython/kernel.cpp @@ -2299,6 +2299,7 @@ static const char __pyx_k_RTree[] = "RTree"; static const char __pyx_k_array[] = "array"; static const char __pyx_k_numpy[] = "numpy"; static const char __pyx_k_range[] = "range"; +static const char __pyx_k_tinyr[] = "tinyr"; static const char __pyx_k_import[] = "__import__"; static const char __pyx_k_insert[] = "insert"; static const char __pyx_k_kernel[] = "kernel"; @@ -2339,7 +2340,6 @@ static const char __pyx_k_dLongitude_degree2_in[] = "dLongitude_degree2_in"; static const char __pyx_k_dLongitude_degree3_in[] = "dLongitude_degree3_in"; static const char __pyx_k_calculate_distance_to_plane[] = "calculate_distance_to_plane"; static const char __pyx_k_calculate_angle_betwen_vertex[] = "calculate_angle_betwen_vertex"; -static const char __pyx_k_pyflowline_external_tinyr_tinyr[] = "pyflowline.external.tinyr.tinyr.tinyr"; static const char __pyx_k_angle_between_vectors_coordinate[] = "angle_between_vectors_coordinates"; static const char __pyx_k_calculate_distance_based_on_long[] = "calculate_distance_based_on_longitude_latitude"; /* #### Code section: decls ### */ @@ -2439,11 +2439,11 @@ typedef struct { PyObject *__pyx_n_s_pVertex_end; PyObject *__pyx_n_s_pVertex_in; PyObject *__pyx_n_s_pVertex_start; - PyObject *__pyx_n_s_pyflowline_external_tinyr_tinyr; PyObject *__pyx_n_s_range; PyObject *__pyx_n_s_search; PyObject *__pyx_n_s_spec; PyObject *__pyx_n_s_test; + PyObject *__pyx_n_s_tinyr; PyObject *__pyx_n_s_x1; PyObject *__pyx_n_s_x2; PyObject *__pyx_n_s_y1; @@ -2568,11 +2568,11 @@ static int __pyx_m_clear(PyObject *m) { Py_CLEAR(clear_module_state->__pyx_n_s_pVertex_end); Py_CLEAR(clear_module_state->__pyx_n_s_pVertex_in); Py_CLEAR(clear_module_state->__pyx_n_s_pVertex_start); - Py_CLEAR(clear_module_state->__pyx_n_s_pyflowline_external_tinyr_tinyr); Py_CLEAR(clear_module_state->__pyx_n_s_range); Py_CLEAR(clear_module_state->__pyx_n_s_search); Py_CLEAR(clear_module_state->__pyx_n_s_spec); Py_CLEAR(clear_module_state->__pyx_n_s_test); + Py_CLEAR(clear_module_state->__pyx_n_s_tinyr); Py_CLEAR(clear_module_state->__pyx_n_s_x1); Py_CLEAR(clear_module_state->__pyx_n_s_x2); Py_CLEAR(clear_module_state->__pyx_n_s_y1); @@ -2675,11 +2675,11 @@ static int __pyx_m_traverse(PyObject *m, visitproc visit, void *arg) { Py_VISIT(traverse_module_state->__pyx_n_s_pVertex_end); Py_VISIT(traverse_module_state->__pyx_n_s_pVertex_in); Py_VISIT(traverse_module_state->__pyx_n_s_pVertex_start); - Py_VISIT(traverse_module_state->__pyx_n_s_pyflowline_external_tinyr_tinyr); Py_VISIT(traverse_module_state->__pyx_n_s_range); Py_VISIT(traverse_module_state->__pyx_n_s_search); Py_VISIT(traverse_module_state->__pyx_n_s_spec); Py_VISIT(traverse_module_state->__pyx_n_s_test); + Py_VISIT(traverse_module_state->__pyx_n_s_tinyr); Py_VISIT(traverse_module_state->__pyx_n_s_x1); Py_VISIT(traverse_module_state->__pyx_n_s_x2); Py_VISIT(traverse_module_state->__pyx_n_s_y1); @@ -2798,11 +2798,11 @@ static int __pyx_m_traverse(PyObject *m, visitproc visit, void *arg) { #define __pyx_n_s_pVertex_end __pyx_mstate_global->__pyx_n_s_pVertex_end #define __pyx_n_s_pVertex_in __pyx_mstate_global->__pyx_n_s_pVertex_in #define __pyx_n_s_pVertex_start __pyx_mstate_global->__pyx_n_s_pVertex_start -#define __pyx_n_s_pyflowline_external_tinyr_tinyr __pyx_mstate_global->__pyx_n_s_pyflowline_external_tinyr_tinyr #define __pyx_n_s_range __pyx_mstate_global->__pyx_n_s_range #define __pyx_n_s_search __pyx_mstate_global->__pyx_n_s_search #define __pyx_n_s_spec __pyx_mstate_global->__pyx_n_s_spec #define __pyx_n_s_test __pyx_mstate_global->__pyx_n_s_test +#define __pyx_n_s_tinyr __pyx_mstate_global->__pyx_n_s_tinyr #define __pyx_n_s_x1 __pyx_mstate_global->__pyx_n_s_x1 #define __pyx_n_s_x2 __pyx_mstate_global->__pyx_n_s_x2 #define __pyx_n_s_y1 __pyx_mstate_global->__pyx_n_s_y1 @@ -3420,7 +3420,7 @@ PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ -PyDoc_STRVAR(__pyx_doc_6kernel_calculate_distance_based_on_longitude_latitude, "\n Calculate the great circle distance between two points \n on the earth (specified in decimal degrees)\n "); +PyDoc_STRVAR(__pyx_doc_6kernel_calculate_distance_based_on_longitude_latitude, "\n Calculate the great circle distance between two points\n on the earth (specified in decimal degrees)\n "); static PyMethodDef __pyx_mdef_6kernel_1calculate_distance_based_on_longitude_latitude = {"calculate_distance_based_on_longitude_latitude", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6kernel_1calculate_distance_based_on_longitude_latitude, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6kernel_calculate_distance_based_on_longitude_latitude}; static PyObject *__pyx_pw_6kernel_1calculate_distance_based_on_longitude_latitude(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL @@ -7724,11 +7724,11 @@ static int __Pyx_CreateStringTabAndInitStrings(void) { {&__pyx_n_s_pVertex_end, __pyx_k_pVertex_end, sizeof(__pyx_k_pVertex_end), 0, 0, 1, 1}, {&__pyx_n_s_pVertex_in, __pyx_k_pVertex_in, sizeof(__pyx_k_pVertex_in), 0, 0, 1, 1}, {&__pyx_n_s_pVertex_start, __pyx_k_pVertex_start, sizeof(__pyx_k_pVertex_start), 0, 0, 1, 1}, - {&__pyx_n_s_pyflowline_external_tinyr_tinyr, __pyx_k_pyflowline_external_tinyr_tinyr, sizeof(__pyx_k_pyflowline_external_tinyr_tinyr), 0, 0, 1, 1}, {&__pyx_n_s_range, __pyx_k_range, sizeof(__pyx_k_range), 0, 0, 1, 1}, {&__pyx_n_s_search, __pyx_k_search, sizeof(__pyx_k_search), 0, 0, 1, 1}, {&__pyx_n_s_spec, __pyx_k_spec, sizeof(__pyx_k_spec), 0, 0, 1, 1}, {&__pyx_n_s_test, __pyx_k_test, sizeof(__pyx_k_test), 0, 0, 1, 1}, + {&__pyx_n_s_tinyr, __pyx_k_tinyr, sizeof(__pyx_k_tinyr), 0, 0, 1, 1}, {&__pyx_n_s_x1, __pyx_k_x1, sizeof(__pyx_k_x1), 0, 0, 1, 1}, {&__pyx_n_s_x2, __pyx_k_x2, sizeof(__pyx_k_x2), 0, 0, 1, 1}, {&__pyx_n_s_y1, __pyx_k_y1, sizeof(__pyx_k_y1), 0, 0, 1, 1}, @@ -8243,7 +8243,7 @@ if (!__Pyx_RefNanny) { /* "kernel.pyx":5 * from libcpp.vector cimport vector * from libc.math cimport sin, cos, asin,acos, sqrt, abs - * from pyflowline.external.tinyr.tinyr.tinyr import RTree # <<<<<<<<<<<<<< + * from tinyr import RTree # <<<<<<<<<<<<<< * * """ Low-level function for pyflowline */ @@ -8252,7 +8252,7 @@ if (!__Pyx_RefNanny) { __Pyx_INCREF(__pyx_n_s_RTree); __Pyx_GIVEREF(__pyx_n_s_RTree); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_RTree)) __PYX_ERR(0, 5, __pyx_L1_error); - __pyx_t_3 = __Pyx_Import(__pyx_n_s_pyflowline_external_tinyr_tinyr, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5, __pyx_L1_error) + __pyx_t_3 = __Pyx_Import(__pyx_n_s_tinyr, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_RTree); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5, __pyx_L1_error) diff --git a/pyflowline/algorithms/cython/kernel.pyx b/pyflowline/algorithms/cython/kernel.pyx index 6a6e6c0a..004b33e4 100644 --- a/pyflowline/algorithms/cython/kernel.pyx +++ b/pyflowline/algorithms/cython/kernel.pyx @@ -2,7 +2,7 @@ import numpy as np cimport cython from libcpp.vector cimport vector from libc.math cimport sin, cos, asin,acos, sqrt, abs -from pyflowline.external.tinyr.tinyr.tinyr import RTree +from tinyr import RTree """ Low-level function for pyflowline """ @@ -11,32 +11,32 @@ from pyflowline.external.tinyr.tinyr.tinyr import RTree #constant cdef double pi = 3.14159265358979323846264338327 -cdef double dRadius = 6378137.0 +cdef double dRadius = 6378137.0 @cython.boundscheck(False) # deactivate bnds checking cpdef calculate_distance_based_on_longitude_latitude(double dLongitude_degree1_in, double dLatitude_degree1_in, double dLongitude_degree2_in, double dLatitude_degree2_in): """ - Calculate the great circle distance between two points + Calculate the great circle distance between two points on the earth (specified in decimal degrees) """ - # convert decimal degrees to radians - + # convert decimal degrees to radians + cdef double dLongitude_radian1_in, dLatitude_radian1_in cdef double dLongitude_radian2_in, dLatitude_radian2_in cdef double dLongtitude_diff, dLatitude_diff, a, b, c - - # Radius of earth in kilometers. Use 3956 for miles - + + # Radius of earth in kilometers. Use 3956 for miles + dLongitude_radian1_in = dLongitude_degree1_in /180.0 * pi dLatitude_radian1_in = dLatitude_degree1_in /180.0 * pi dLongitude_radian2_in = dLongitude_degree2_in /180.0 * pi dLatitude_radian2_in = dLatitude_degree2_in /180.0 * pi - - # haversine formula - dLongtitude_diff = dLongitude_radian2_in - dLongitude_radian1_in - dLatitude_diff = dLatitude_radian2_in - dLatitude_radian1_in + + # haversine formula + dLongtitude_diff = dLongitude_radian2_in - dLongitude_radian1_in + dLatitude_diff = dLatitude_radian2_in - dLatitude_radian1_in a = sin(dLatitude_diff/2)*sin(dLatitude_diff/2) + cos(dLatitude_radian1_in) * cos(dLatitude_radian2_in) * sin(dLongtitude_diff/2)*sin(dLongtitude_diff/2) - b = 2 * asin(sqrt(a)) + b = 2 * asin(sqrt(a)) c = b * dRadius return c @@ -50,8 +50,8 @@ cpdef convert_360_to_180(double dLongitude_in): Returns: [type]: [description] - """ - cdef int a + """ + cdef int a cdef double dLongitude_out a = int(dLongitude_in /180.0) dLongitude_out = dLongitude_in - a * 360.0 @@ -80,17 +80,17 @@ cpdef find_vertex_in_list(list aVertex_in, pVertex_in, double dThreshold_in = 1 index_vertex = RTree( max_cap=5, min_cap=2) for i in range(nVertex): x = aVertex_in[i].dLongitude_degree - y = aVertex_in[i].dLatitude_degree + y = aVertex_in[i].dLatitude_degree left = x - 1E-5 right = x + 1E-5 bottom = y - 1E-5 top = y + 1E-5 pBound= (left, bottom, right, top) - index_vertex.insert(i, pBound) + index_vertex.insert(i, pBound) #now the new vertex x=pVertex_in.dLongitude_degree - y=pVertex_in.dLatitude_degree + y=pVertex_in.dLatitude_degree left = x - 1E-5 right = x + 1E-5 bottom = y - 1E-5 @@ -103,13 +103,13 @@ cpdef find_vertex_in_list(list aVertex_in, pVertex_in, double dThreshold_in = 1 dDistance = pVertex.calculate_distance(pVertex_in) #if pVertex == pVertex_in: if dDistance < dThreshold_in: - iFlag_exist = 1 + iFlag_exist = 1 lIndex = k - break + break else: pass pass - + #if nVertex > 0 : # for i in range(nVertex): @@ -117,15 +117,15 @@ cpdef find_vertex_in_list(list aVertex_in, pVertex_in, double dThreshold_in = 1 # dDistance = pVertex.calculate_distance(pVertex_in) # #if pVertex == pVertex_in: # if dDistance < dThreshold_in: - # iFlag_exist = 1 - # lIndex = i - # break + # iFlag_exist = 1 + # lIndex = i + # break # else: # pass - # pass + # pass #else: # pass - + return iFlag_exist, lIndex @cython.boundscheck(False) # deactivate bnds checking @@ -134,29 +134,29 @@ cpdef find_vertex_on_edge(list aVertex_in, pEdge_in): cdef int iFlag_exist = 0 cdef int nVertex, npoint cdef vector[int] aIndex ,aIndex_order - cdef vector[double] aDistance + cdef vector[double] aDistance cdef double x, y, left, right, bottom, top - + nVertex= len(aVertex_in) - npoint = 0 + npoint = 0 if nVertex > 0 : index_vertex = RTree(max_cap=5, min_cap=2) for i in range(nVertex): - lID = i + lID = i x = aVertex_in[i].dLongitude_degree - y = aVertex_in[i].dLatitude_degree + y = aVertex_in[i].dLatitude_degree left = x - 1E-5 right= x + 1E-5 bottom= y -1E-5 top= y + 1E-5 pBound= (left, bottom, right, top) - index_vertex.insert(lID, pBound) # + index_vertex.insert(lID, pBound) # pass #now the new vertex pVertex_start = pEdge_in.pVertex_start pVertex_end = pEdge_in.pVertex_end x1=pVertex_start.dLongitude_degree - y1=pVertex_start.dLatitude_degree + y1=pVertex_start.dLatitude_degree x2=pVertex_end.dLongitude_degree y2=pVertex_end.dLatitude_degree left = np.min([x1, x2]) @@ -168,12 +168,12 @@ cpdef find_vertex_on_edge(list aVertex_in, pEdge_in): for k in aIntersect: pVertex = aVertex_in[k] iFlag_overlap, dDistance, diff = pEdge_in.check_vertex_on_edge(pVertex) - if iFlag_overlap == 1: - iFlag_exist = 1 + if iFlag_overlap == 1: + iFlag_exist = 1 aDistance.push_back(dDistance) aIndex.push_back(i) - npoint = npoint + 1 - else: + npoint = npoint + 1 + else: if diff < 1.0: iFlag_overlap = pEdge_in.check_vertex_on_edge(pVertex) pass @@ -182,27 +182,27 @@ cpdef find_vertex_on_edge(list aVertex_in, pEdge_in): #for i in range( nVertex): # pVertex = aVertex_in[i] # iFlag_overlap, dDistance, diff = pEdge_in.check_vertex_on_edge(pVertex) - # if iFlag_overlap == 1: - # iFlag_exist = 1 + # if iFlag_overlap == 1: + # iFlag_exist = 1 # aDistance.push_back(dDistance) # aIndex.push_back(i) - # npoint = npoint + 1 - # else: + # npoint = npoint + 1 + # else: # if diff < 1.0: - # iFlag_overlap = pEdge_in.check_vertex_on_edge(pVertex) + # iFlag_overlap = pEdge_in.check_vertex_on_edge(pVertex) # pass # - #re-order + #re-order if iFlag_exist == 1 : x = np.array(aDistance) b = np.argsort(x) c = np.array(aIndex) d= c[b] - aIndex_order = list(d) + aIndex_order = list(d) else: pass - + return iFlag_exist, npoint, aIndex_order @cython.boundscheck(False) # deactivate bnds checking @@ -220,7 +220,7 @@ cpdef add_unique_vertex(list aVertex_in, pVertex_in, double dThreshold_in = 1.0E cdef int nVertex cdef int dummy iFlag_exist = 0 - nVertex = len(aVertex_in) + nVertex = len(aVertex_in) iFlag_exist, dummy = find_vertex_in_list(aVertex_in, pVertex_in, dThreshold_in) @@ -239,10 +239,10 @@ cpdef angle_between_vectors_coordinates(double x1, double y1, double z1, double """Return the angle between two vectors in any dimension space, in degrees. """ - cdef double a, b, c, d, e, f + cdef double a, b, c, d, e, f a = x1*x2 + y1*y2 + z1*z2 - b = sqrt( x1*x1 + y1*y1 + z1*z1 ) - c = sqrt( x2*x2 + y2*y2 + z2*z2 ) + b = sqrt( x1*x1 + y1*y1 + z1*z1 ) + c = sqrt( x2*x2 + y2*y2 + z2*z2 ) d = a / (b* c) if d > 1: d = 1 @@ -250,7 +250,7 @@ cpdef angle_between_vectors_coordinates(double x1, double y1, double z1, double d = -1 e = acos(d) f = e / pi * 180.0 - return f + return f @cython.boundscheck(False) # deactivate bnds checking cpdef (double, double, double) longlat_to_3d(dLongitude_degree_in, dLatitude_degree_in): @@ -267,7 +267,7 @@ cpdef (double, double, double) longlat_to_3d(dLongitude_degree_in, dLatitude_deg x = cos(dLatitude_radian) * cos(dLongitude_radian) y = cos(dLatitude_radian) * sin(dLongitude_radian) z = sin(dLatitude_radian) - + return x, y, z @@ -277,21 +277,21 @@ cpdef calculate_angle_betwen_vertex(dLongitude_degree1_in, dLatitude_degree1_in, cdef double angle3deg cdef double x1, y1, z1 - cdef double x2, y2, z2 - cdef double x3, y3, z3 + cdef double x2, y2, z2 + cdef double x3, y3, z3 cdef double x4, y4, z4 cdef double x5, y5, z5 - + # The points in 3D space x1, y1, z1 = longlat_to_3d(dLongitude_degree1_in, dLatitude_degree1_in) x2, y2, z2 = longlat_to_3d(dLongitude_degree2_in, dLatitude_degree2_in) x3, y3, z3 = longlat_to_3d(dLongitude_degree3_in, dLatitude_degree3_in) # Vectors in 3D space - + x4 = x1 - x2 y4 = y1 - y2 z4 = z1 - z2 - #c3vec[i] = aCoordinate3[i] - aCoordinate2[i] + #c3vec[i] = aCoordinate3[i] - aCoordinate2[i] x5 = x3 - x2 y5 = y3 - y2 z5 = z3 - z2 @@ -300,17 +300,17 @@ cpdef calculate_angle_betwen_vertex(dLongitude_degree1_in, dLatitude_degree1_in, return angle3deg @cython.boundscheck(False) # deactivate bnds checking -cpdef calculate_distance_to_plane(dLongitude_degree1_in, dLatitude_degree1_in, dLongitude_degree2_in, dLatitude_degree2_in, dLongitude_degree3_in, dLatitude_degree3_in): +cpdef calculate_distance_to_plane(dLongitude_degree1_in, dLatitude_degree1_in, dLongitude_degree2_in, dLatitude_degree2_in, dLongitude_degree3_in, dLatitude_degree3_in): cdef double x1, y1, z1 - cdef double x2, y2, z2 - cdef double x3, y3, z3 + cdef double x2, y2, z2 + cdef double x3, y3, z3 cdef double distance - cdef b, c + cdef b, c # The points in 3D space x1, y1, z1 = longlat_to_3d(dLongitude_degree1_in, dLatitude_degree1_in) x2, y2, z2 = longlat_to_3d(dLongitude_degree2_in, dLatitude_degree2_in) x3, y3, z3 = longlat_to_3d(dLongitude_degree3_in, dLatitude_degree3_in) - #The formula is x+b*y+c*z=0 + #The formula is x+b*y+c*z=0 c = (-x1*y3 + x3* y1)/( z1*y3 - z3*y1 ) b = (-x1*z3 + x3 * z1 ) / (y1 * z3 - y3*z1) distance = abs( x2 + b * y2 + c * z2 ) diff --git a/pyflowline/algorithms/index/define_stream_order.py b/pyflowline/algorithms/index/define_stream_order.py index 749f2a59..4e0be6de 100644 --- a/pyflowline/algorithms/index/define_stream_order.py +++ b/pyflowline/algorithms/index/define_stream_order.py @@ -1,10 +1,10 @@ -import numpy as np +import numpy as np import importlib.util -from pyflowline.algorithms.auxiliary.check_head_water import check_head_water #this function should not be used since stream order of headwater is available -iFlag_cython = importlib.util.find_spec("cython") +from pyflowline.algorithms.auxiliary.check_head_water import check_head_water #this function should not be used since stream order of headwater is available +iFlag_cython = importlib.util.find_spec("cython") if iFlag_cython is not None: - from pyflowline.external.tinyr.tinyr.tinyr import RTree + from tinyr import RTree iFlag_use_rtree = 1 else: iFlag_use_rtree =0 @@ -24,13 +24,13 @@ def update_head_water_stream_order(aFlowline_in): #nFlowline = len(aFlowline_in) #aFlowline_out = list() #for i in range(nFlowline): - # pFlowline = aFlowline_in[i] - # pVertex_start = pFlowline.pVertex_start + # pFlowline = aFlowline_in[i] + # pVertex_start = pFlowline.pVertex_start # if check_head_water(aFlowline_in, pVertex_start)==1: # pFlowline.iStream_order = 1 # else: # pFlowline.iStream_order = -1 - # + # # aFlowline_out.append(pFlowline) #return aFlowline_out @@ -47,42 +47,42 @@ def define_stream_order(aFlowline_in, aConfluence_in): """ nFlowline = len(aFlowline_in) nSegment = nFlowline - aFlowline_out = list() - if iFlag_use_rtree == 1: - iMethod = 1 + aFlowline_out = list() + if iFlag_use_rtree == 1: + iMethod = 1 else: iMethod = 2 pass - + if nFlowline == 0 : print ('data incomplete') - else: - aStream_order = np.full(nFlowline, 0, dtype=int) + else: + aStream_order = np.full(nFlowline, 0, dtype=int) if iMethod == 1: #the new method nConfleunce = len(aConfluence_in) aFlag_confluence_treated = np.full(nConfleunce, 0, dtype=int) #build rtree for confluence - index_confluence = RTree( max_cap=5, min_cap=2) + index_confluence = RTree( max_cap=5, min_cap=2) for i, confluence in enumerate(aConfluence_in): - pVertex_confluence = confluence.pVertex_confluence + pVertex_confluence = confluence.pVertex_confluence x, y = pVertex_confluence.dLongitude_degree, pVertex_confluence.dLatitude_degree pBound = (x - 1E-5, y - 1E-5, x + 1E-5, y + 1E-5) index_confluence.insert(i, pBound) - + while aFlowline_in[0].iStream_order < 0: for i in range(nConfleunce): if aFlag_confluence_treated[i] == 1: continue pConfluence = aConfluence_in[i] - aFlowline_upstream = pConfluence.aFlowline_upstream + aFlowline_upstream = pConfluence.aFlowline_upstream pFlowline_downstream = pConfluence.pFlowline_downstream iStream_segment = pFlowline_downstream.iStream_segment #iFlag_upstream_done = 1 #nUpstream = len(aFlowline_upstream) aStrord = [upstream.iStream_order for upstream in aFlowline_upstream if upstream.iStream_order >= 1] - + #aStrord = list() #for j in range(nUpstream): # pFlowline_upstream = aFlowline_upstream[j] @@ -91,26 +91,26 @@ def define_stream_order(aFlowline_in, aConfluence_in): # iFlag_upstream_done = 0 # break # else: - # aStrord.append( iStream_order_upstream ) + # aStrord.append( iStream_order_upstream ) #if iFlag_upstream_done == 1: if len(aStrord) == len(aFlowline_upstream): aFlag_confluence_treated[i] = 1 #now we can process the downstream #get unique value - iStream_order = max(aStrord) if len(set(aStrord)) > 1 else aStrord[0] + 1 - + iStream_order = max(aStrord) if len(set(aStrord)) > 1 else aStrord[0] + 1 + #update pFlowline_downstream.iStream_order = iStream_order aFlowline_in[nSegment-iStream_segment].iStream_order = iStream_order #update confluence #x = pFlowline_downstream.pVertex_end.dLongitude_degree - #y = pFlowline_downstream.pVertex_end.dLatitude_degree + #y = pFlowline_downstream.pVertex_end.dLatitude_degree #left = x - 1E-5 #right = x + 1E-5 #bottom = y - 1E-5 #top = y + 1E-5 - #pBound= (left, bottom, right, top) + #pBound= (left, bottom, right, top) #aIntersect = list(index_confluence.search(pBound)) #update confluence @@ -127,21 +127,21 @@ def define_stream_order(aFlowline_in, aConfluence_in): break pass - - - for i, flowline in enumerate(aFlowline_in): + + + for i, flowline in enumerate(aFlowline_in): aFlowline_out.append(flowline) aStream_order[i] = flowline.iStream_order - - - else: #the old method, not computationally efficient enough + + + else: #the old method, not computationally efficient enough for i in range(nFlowline): pFlowline = aFlowline_in[i] pVertex_start=pFlowline.pVertex_start - if check_head_water(aFlowline_in, pVertex_start)==1: + if check_head_water(aFlowline_in, pVertex_start)==1: aStream_order[i] = 1 - pass - + pass + while aStream_order[0] == 0: for i in range(nFlowline): if aStream_order[i] !=0: @@ -171,11 +171,11 @@ def define_stream_order(aFlowline_in, aConfluence_in): if len(dummy1) == 1: #all upstreams have the same order aStream_order[i] = aStrord[0] + 1 else: - aStream_order[i] = np.max(dummy) + aStream_order[i] = np.max(dummy) for i in range(nFlowline): - pFlowline = aFlowline_in[i] - pFlowline.iStream_order = aStream_order[i] + pFlowline = aFlowline_in[i] + pFlowline.iStream_order = aStream_order[i] aFlowline_out.append(pFlowline) return aFlowline_out, aStream_order \ No newline at end of file diff --git a/pyflowline/algorithms/intersect/intersect_flowline_with_mesh.py b/pyflowline/algorithms/intersect/intersect_flowline_with_mesh.py index 263054a0..8d1e5091 100644 --- a/pyflowline/algorithms/intersect/intersect_flowline_with_mesh.py +++ b/pyflowline/algorithms/intersect/intersect_flowline_with_mesh.py @@ -9,25 +9,25 @@ from pyflowline.formats.convert_coordinates import convert_gcs_coordinates_to_flowline from pyearth.gis.location.get_geometry_coordinates import get_geometry_coordinates -iFlag_cython = importlib.util.find_spec("cython") +iFlag_cython = importlib.util.find_spec("cython") if iFlag_cython is not None: - from pyflowline.external.tinyr.tinyr.tinyr import RTree + from tinyr import RTree iFlag_use_rtree = 1 else: iFlag_use_rtree =0 pass def intersect_flowline_with_mesh(iMesh_type_in, sFilename_mesh_in, sFilename_flowline_in, sFilename_output_in): - if os.path.exists(sFilename_mesh_in) and os.path.exists(sFilename_flowline_in) : + if os.path.exists(sFilename_mesh_in) and os.path.exists(sFilename_flowline_in) : pass else: print('The input file does not exist') return - if os.path.exists(sFilename_output_in): + if os.path.exists(sFilename_output_in): os.remove(sFilename_output_in) - + pDriver_geojson = ogr.GetDriverByName( "GeoJSON") aCell=list() aCell_intersect=list() @@ -37,19 +37,19 @@ def intersect_flowline_with_mesh(iMesh_type_in, sFilename_mesh_in, sFilename_flo pSpatial_reference_mesh = pLayer_mesh.GetSpatialRef() nfeature_mesh = pLayer_mesh.GetFeatureCount() - pDataset_flowline = pDriver_geojson.Open(sFilename_flowline_in, 0) + pDataset_flowline = pDriver_geojson.Open(sFilename_flowline_in, 0) pLayer_flowline = pDataset_flowline.GetLayer(0) pSpatial_reference_flowline = pLayer_flowline.GetSpatialRef() nfeature_flowline = pLayer_flowline.GetFeatureCount() pLayerDefinition = pLayer_flowline.GetLayerDefn() - + comparison = pSpatial_reference_mesh.IsSame(pSpatial_reference_flowline) if(comparison != 1): iFlag_transform = 1 transform = osr.CoordinateTransformation(pSpatial_reference_mesh, pSpatial_reference_flowline) else: iFlag_transform = 0 - + pDataset_out = pDriver_geojson.CreateDataSource(sFilename_output_in) pLayerOut = pDataset_out.CreateLayer('flowline', pSpatial_reference_flowline, ogr.wkbMultiLineString) @@ -58,21 +58,21 @@ def intersect_flowline_with_mesh(iMesh_type_in, sFilename_mesh_in, sFilename_flo pLayerOut.CreateField(ogr.FieldDefn('stream_segment', ogr.OFTInteger)) #long type for high resolution pLayerOut.CreateField(ogr.FieldDefn('stream_order', ogr.OFTInteger)) #long type for high resolution pLayerDefn = pLayerOut.GetLayerDefn() - pFeatureOut = ogr.Feature(pLayerDefn) + pFeatureOut = ogr.Feature(pLayerDefn) - lFlowlineID = 0 - aFlowline_intersect_all=list() - if iFlag_use_rtree ==1: #use the rtree to speed up + lFlowlineID = 0 + aFlowline_intersect_all=list() + if iFlag_use_rtree ==1: #use the rtree to speed up #index_flowline = rtree.index.Index() interleaved = True index_flowline = RTree(interleaved=interleaved, max_cap=5, min_cap=2) for i in range(nfeature_flowline): - lID = i + lID = i pFeature_flowline = pLayer_flowline.GetFeature(i) - pGeometry_flowline = pFeature_flowline.GetGeometryRef() - left, right, bottom, top= pGeometry_flowline.GetEnvelope() + pGeometry_flowline = pFeature_flowline.GetGeometryRef() + left, right, bottom, top= pGeometry_flowline.GetEnvelope() pBound= (left, bottom, right, top) - index_flowline.insert(lID, pBound) # + index_flowline.insert(lID, pBound) # #now intersect using rtree for j in range (nfeature_mesh): @@ -81,48 +81,48 @@ def intersect_flowline_with_mesh(iMesh_type_in, sFilename_mesh_in, sFilename_flo aCoords_gcs = get_geometry_coordinates(pGeometry_mesh) lCellID = pFeature_mesh.GetField("cellid") dLon = pFeature_mesh.GetField("longitude") - dLat = pFeature_mesh.GetField("latitude") + dLat = pFeature_mesh.GetField("latitude") dArea = pFeature_mesh.GetField("area") if (pGeometry_mesh.IsValid()): pass else: - print('Geometry issue') + print('Geometry issue') pGeometrytype_mesh = pGeometry_mesh.GetGeometryName() - if(pGeometrytype_mesh == 'POLYGON'): - pCell = convert_gcs_coordinates_to_cell(iMesh_type_in, dLon, dLat, aCoords_gcs) - pCell.lCellID = lCellID - pCell.dArea = dArea + if(pGeometrytype_mesh == 'POLYGON'): + pCell = convert_gcs_coordinates_to_cell(iMesh_type_in, dLon, dLat, aCoords_gcs) + pCell.lCellID = lCellID + pCell.dArea = dArea pCell.dLength = pCell.calculate_edge_length() - pCell.dLength_flowline = pCell.dLength + pCell.dLength_flowline = pCell.dLength aFlowline_intersect = list() - iFlag_intersected = 0 + iFlag_intersected = 0 - left, right, bottom, top= pGeometry_mesh.GetEnvelope() + left, right, bottom, top= pGeometry_mesh.GetEnvelope() pBound= (left, bottom, right, top) - + aIntersect = list(index_flowline.search(pBound)) for k in aIntersect: pFeature_flowline = pLayer_flowline.GetFeature(k) - pGeometry_flowline = pFeature_flowline.GetGeometryRef() + pGeometry_flowline = pFeature_flowline.GetGeometryRef() iFlag_intersect = pGeometry_flowline.Intersects( pGeometry_mesh ) if( iFlag_intersect == True): iFlag_intersected = 1 - pGeometry_intersect = pGeometry_flowline.Intersection(pGeometry_mesh) + pGeometry_intersect = pGeometry_flowline.Intersection(pGeometry_mesh) pGeometrytype_intersect = pGeometry_intersect.GetGeometryName() iStream_segment = pFeature_flowline.GetField("stream_segment") iStream_order = pFeature_flowline.GetField("stream_order") if pGeometrytype_intersect == 'LINESTRING': pFeatureOut.SetGeometry(pGeometry_intersect) - pFeatureOut.SetField("lineid", lFlowlineID) - pFeatureOut.SetField("stream_segment", iStream_segment) - pFeatureOut.SetField("stream_order", iStream_order) - pLayerOut.CreateFeature(pFeatureOut) + pFeatureOut.SetField("lineid", lFlowlineID) + pFeatureOut.SetField("stream_segment", iStream_segment) + pFeatureOut.SetField("stream_order", iStream_order) + pLayerOut.CreateFeature(pFeatureOut) aCoords = list() - for i in range(0, pGeometry_intersect.GetPointCount()): + for i in range(0, pGeometry_intersect.GetPointCount()): pt = pGeometry_intersect.GetPoint(i) - aCoords.append( [ pt[0], pt[1]]) + aCoords.append( [ pt[0], pt[1]]) dummy1= np.array(aCoords) pFlowline = convert_gcs_coordinates_to_flowline(dummy1) @@ -138,16 +138,16 @@ def intersect_flowline_with_mesh(iMesh_type_in, sFilename_mesh_in, sFilename_flo if(pGeometrytype_intersect == 'MULTILINESTRING'): nLine = pGeometry_intersect.GetGeometryCount() for i in range(nLine): - Line = pGeometry_intersect.GetGeometryRef(i) + Line = pGeometry_intersect.GetGeometryRef(i) pFeatureOut.SetGeometry(Line) - pFeatureOut.SetField("lineid", lFlowlineID) - pFeatureOut.SetField("stream_segment", iStream_segment) - pFeatureOut.SetField("stream_order", iStream_order) - pLayerOut.CreateFeature(pFeatureOut) + pFeatureOut.SetField("lineid", lFlowlineID) + pFeatureOut.SetField("stream_segment", iStream_segment) + pFeatureOut.SetField("stream_order", iStream_order) + pLayerOut.CreateFeature(pFeatureOut) aCoords = list() - for i in range(0, Line.GetPointCount()): + for i in range(0, Line.GetPointCount()): pt = Line.GetPoint(i) - aCoords.append( [ pt[0], pt[1]]) + aCoords.append( [ pt[0], pt[1]]) dummy1= np.array(aCoords) pFlowline = convert_gcs_coordinates_to_flowline(dummy1) @@ -160,41 +160,41 @@ def intersect_flowline_with_mesh(iMesh_type_in, sFilename_mesh_in, sFilename_flo lFlowlineID = lFlowlineID + 1 pass else: - pass + pass + + pass - pass - #now add back to the cell object pCell.aFlowline = aFlowline_intersect pCell.nFlowline = len(aFlowline_intersect) - if iFlag_intersected ==1: - pCell.iFlag_intersected = 1 + if iFlag_intersected ==1: + pCell.iFlag_intersected = 1 pCell.dLength_flowline = 0.0 #reset the flowline length for i in range (pCell.nFlowline): pFlowline = pCell.aFlowline[i] - dLength_flowline = pFlowline.dLength + dLength_flowline = pFlowline.dLength if ( dLength_flowline > pCell.dLength_flowline ): pCell.dLength_flowline = dLength_flowline - #replace flowline length if there is an actual flowline + #replace flowline length if there is an actual flowline aCell_intersect.append(pCell) aCell.append(pCell) else: - pCell.iFlag_intersected = 0 + pCell.iFlag_intersected = 0 aCell.append(pCell) pass - else: - - for pFeature_mesh in pLayer_mesh: - pGeometry_mesh = pFeature_mesh.GetGeometryRef() + else: + + for pFeature_mesh in pLayer_mesh: + pGeometry_mesh = pFeature_mesh.GetGeometryRef() aCoords_gcs = get_geometry_coordinates(pGeometry_mesh) lCellID = pFeature_mesh.GetField("cellid") dLon = pFeature_mesh.GetField("longitude") - dLat = pFeature_mesh.GetField("latitude") + dLat = pFeature_mesh.GetField("latitude") dArea = pFeature_mesh.GetField("area") - if (iFlag_transform ==1): + if (iFlag_transform ==1): pGeometry_mesh.Transform(transform) if (pGeometry_mesh.IsValid()): pass @@ -202,14 +202,14 @@ def intersect_flowline_with_mesh(iMesh_type_in, sFilename_mesh_in, sFilename_flo print('Geometry issue') pGeometrytype_mesh = pGeometry_mesh.GetGeometryName() - if(pGeometrytype_mesh == 'POLYGON'): - pCell = convert_gcs_coordinates_to_cell(iMesh_type_in, dLon, dLat, aCoords_gcs) - pCell.lCellID = lCellID - pCell.dArea = dArea + if(pGeometrytype_mesh == 'POLYGON'): + pCell = convert_gcs_coordinates_to_cell(iMesh_type_in, dLon, dLat, aCoords_gcs) + pCell.lCellID = lCellID + pCell.dArea = dArea pCell.dLength = pCell.calculate_edge_length() - pCell.dLength_flowline = pCell.dLength + pCell.dLength_flowline = pCell.dLength aFlowline_intersect = list() - iFlag_intersected = 0 + iFlag_intersected = 0 for j in range (nfeature_flowline): pFeature_flowline = pLayer_flowline.GetFeature(j) pGeometry_flowline = pFeature_flowline.GetGeometryRef() @@ -218,24 +218,24 @@ def intersect_flowline_with_mesh(iMesh_type_in, sFilename_mesh_in, sFilename_flo if (pGeometry_flowline.IsValid()): pass else: - print('Geometry issue') + print('Geometry issue') iFlag_intersect = pGeometry_flowline.Intersects( pGeometry_mesh ) if( iFlag_intersect == True): iFlag_intersected = 1 - pGeometry_intersect = pGeometry_flowline.Intersection(pGeometry_mesh) + pGeometry_intersect = pGeometry_flowline.Intersection(pGeometry_mesh) pGeometrytype_intersect = pGeometry_intersect.GetGeometryName() if pGeometrytype_intersect == 'LINESTRING': pFeatureOut.SetGeometry(pGeometry_intersect) - pFeatureOut.SetField("lineid", lFlowlineID) - pFeatureOut.SetField("stream_segment", iStream_segment) - pFeatureOut.SetField("stream_order", iStream_order) - pLayerOut.CreateFeature(pFeatureOut) + pFeatureOut.SetField("lineid", lFlowlineID) + pFeatureOut.SetField("stream_segment", iStream_segment) + pFeatureOut.SetField("stream_order", iStream_order) + pLayerOut.CreateFeature(pFeatureOut) aCoords = list() - for i in range(0, pGeometry_intersect.GetPointCount()): + for i in range(0, pGeometry_intersect.GetPointCount()): pt = pGeometry_intersect.GetPoint(i) - aCoords.append( [ pt[0], pt[1]]) + aCoords.append( [ pt[0], pt[1]]) dummy1= np.array(aCoords) pFlowline = convert_gcs_coordinates_to_flowline(dummy1) @@ -251,16 +251,16 @@ def intersect_flowline_with_mesh(iMesh_type_in, sFilename_mesh_in, sFilename_flo if(pGeometrytype_intersect == 'MULTILINESTRING'): nLine = pGeometry_intersect.GetGeometryCount() for i in range(nLine): - Line = pGeometry_intersect.GetGeometryRef(i) + Line = pGeometry_intersect.GetGeometryRef(i) pFeatureOut.SetGeometry(Line) - pFeatureOut.SetField("lineid", lFlowlineID) - pFeatureOut.SetField("stream_segment", iStream_segment) - pFeatureOut.SetField("stream_order", iStream_order) - pLayerOut.CreateFeature(pFeatureOut) + pFeatureOut.SetField("lineid", lFlowlineID) + pFeatureOut.SetField("stream_segment", iStream_segment) + pFeatureOut.SetField("stream_order", iStream_order) + pLayerOut.CreateFeature(pFeatureOut) aCoords = list() - for i in range(0, Line.GetPointCount()): + for i in range(0, Line.GetPointCount()): pt = Line.GetPoint(i) - aCoords.append( [ pt[0], pt[1]]) + aCoords.append( [ pt[0], pt[1]]) dummy1= np.array(aCoords) pFlowline = convert_gcs_coordinates_to_flowline(dummy1) @@ -273,33 +273,33 @@ def intersect_flowline_with_mesh(iMesh_type_in, sFilename_mesh_in, sFilename_flo lFlowlineID = lFlowlineID + 1 pass else: - pass + pass else: pass - + #now add back to the cell object pCell.aFlowline = aFlowline_intersect pCell.nFlowline = len(aFlowline_intersect) - if iFlag_intersected ==1: - pCell.iFlag_intersected = 1 + if iFlag_intersected ==1: + pCell.iFlag_intersected = 1 pCell.dLength_flowline = 0.0 for i in range (pCell.nFlowline): pFlowline = pCell.aFlowline[i] - dLength_flowline = pFlowline.dLength + dLength_flowline = pFlowline.dLength if ( dLength_flowline > pCell.dLength_flowline ): pCell.dLength_flowline = dLength_flowline - #replace flowline length if there is an actual flowline + #replace flowline length if there is an actual flowline aCell_intersect.append(pCell) aCell.append(pCell) else: - pCell.iFlag_intersected = 0 + pCell.iFlag_intersected = 0 aCell.append(pCell) pass - + else: pass - + return aCell, aCell_intersect, aFlowline_intersect_all \ No newline at end of file diff --git a/pyflowline/algorithms/potentiometric/calculate_potentiometric.py b/pyflowline/algorithms/potentiometric/calculate_potentiometric.py new file mode 100644 index 00000000..6ce7be05 --- /dev/null +++ b/pyflowline/algorithms/potentiometric/calculate_potentiometric.py @@ -0,0 +1,45 @@ +def calculate_potentiometric(dElevation_bedrock_in, dThickness_ice_in, dDensity_ice_in=None): + #calculate potentiometric surface + + #if both are missing value, keep it as missing + if dElevation_bedrock_in == -9999 or dThickness_ice_in == -9999: + return -9999 + + if dDensity_ice_in is None: + dDensity_ice = 917.0 #unit + else: + dDensity_ice = dDensity_ice_in + + dDensity_water = 1000.0 #unit + + iOption = 1 + dGravity = 9.81 + if iOption == 1: + #reference + #https://www.tandfonline.com/doi/full/10.1080/15481603.2016.1230084 + dRatio_k = 1.0 + dDummy0 = dDensity_ice / dDensity_water + dDummy1 = dRatio_k * dDummy0 * dThickness_ice_in + dPotentiometric = dDummy1 + dElevation_bedrock_in + + else: + #unit and quality check? + #reference + #use equation 1 from https://onlinelibrary.wiley.com/doi/epdf/10.1002/hyp.7343 + dFactor = 0.1 + dElevation_ice = dElevation_bedrock_in + dThickness_ice_in + dDummy= dElevation_ice + dElevation_bedrock_in * dFactor + dPotentiometric = dDensity_ice * dGravity * dDummy + + return dPotentiometric + + +if __name__ == "__main__": + + dElevation_bedrock = 100.0 + dThickness_ice = 1000.0 + dDensity_ice = 917.0 + + dPotentiometric = calculate_potentiometric(dElevation_bedrock, dThickness_ice, dDensity_ice) + + print(dPotentiometric) \ No newline at end of file diff --git a/pyflowline/classes/_visual.py b/pyflowline/classes/_visual.py index 72980a9e..4b6fc9cb 100644 --- a/pyflowline/classes/_visual.py +++ b/pyflowline/classes/_visual.py @@ -10,10 +10,12 @@ def plot(self, iFlag_type_in = None, iFlag_title_in = None, + iDPI_in = None, sFilename_output_in = None, sVariable_in = None, aExtent_in = None, - pProjection_map_in = None): + pProjection_map_in = None, + pProjection_data_in=None): """_summary_ Args: @@ -76,6 +78,8 @@ def plot(self, if sVariable_in == 'mesh': self._plot_mesh(sFilename_output_in=sFilename_output_in, aExtent_in = aExtent_in, + iDPI_in = iDPI_in, + pProjection_data_in = pProjection_data_in, pProjection_map_in = pProjection_map_in) else: @@ -97,6 +101,8 @@ def plot(self, def _plot_mesh(self, sFilename_output_in=None, aExtent_in=None, + iDPI_in=None, + pProjection_data_in = None, pProjection_map_in = None): sFilename_in = self.sFilename_mesh @@ -106,9 +112,11 @@ def _plot_mesh(self, iFlag_zebra_in= 1, iFlag_color_in = 0, iFlag_fill_in= False, + iDPI_in=iDPI_in, sFilename_output_in = sFilename_output_in, sTitle_in = sMesh_type, aExtent_in = aExtent_in, + pProjection_data_in= pProjection_data_in, pProjection_map_in = pProjection_map_in) return @@ -153,6 +161,7 @@ def _plot_mesh_with_flowline(self, aFlag_discrete_in = aFlag_discrete, aExtent_in = aExtent_in, aVariable_in = aVariable_in, + pProjection_map_in = pProjection_map_in) return diff --git a/pyflowline/classes/_visual_basin.py b/pyflowline/classes/_visual_basin.py index f3de3c07..f5bd8982 100644 --- a/pyflowline/classes/_visual_basin.py +++ b/pyflowline/classes/_visual_basin.py @@ -29,8 +29,9 @@ def basin_plot(self, dData_max_in = None, sVariable_in=None, aExtent_in = None, - aLegend_in = None, - pProjection_map_in = None): + aLegend_in = None, + pProjection_map_in = None, + pProjection_data_in = None): """_summary_ Args: diff --git a/pyflowline/classes/basin.py b/pyflowline/classes/basin.py index 235b5b50..b279a706 100644 --- a/pyflowline/classes/basin.py +++ b/pyflowline/classes/basin.py @@ -40,9 +40,8 @@ #cython for performance improvement iFlag_cython = importlib.util.find_spec("cython") if iFlag_cython is not None: - from pyflowline.algorithms.cython.kernel import find_vertex_in_list - from pyflowline.external.tinyr.tinyr.tinyr import RTree + from tinyr import RTree iFlag_use_rtree = 1 else: from pyflowline.algorithms.auxiliary.find_vertex_in_list import find_vertex_in_list @@ -163,7 +162,7 @@ class pybasin(object): sFilename_stream_segment='' sFilename_stream_edge='' - + sFilename_variable_polygon='' sFilename_variable_polyline='' @@ -336,7 +335,7 @@ def __init__(self, aParameter): self.sFilename_confluence_simplified_info = os.path.join(str(self.sWorkspace_output_basin ),'confluence_simplified_info.json') #geojson, full path of the file - #full paths are required for the following files + #full paths are required for the following files self.sFilename_flowline_segment_index_before_intersect = os.path.join(str(self.sWorkspace_output_basin ),'flowline_segment_index_before_intersect.geojson') self.sFilename_flowline_simplified = os.path.join(str(self.sWorkspace_output_basin ),'flowline_simplified.geojson') self.sFilename_flowline_split = os.path.join(str(self.sWorkspace_output_basin ),'flowline_split.geojson') @@ -486,7 +485,7 @@ def basin_flowline_simplification(self): print('Basin ', self.sBasinID, ' has dam', nFlowline_before, nFlowline_after) ptimer.stop() else: - print('Basin ', self.sBasinID, ' has no dam') + print('Basin ', self.sBasinID, ' has no dam') sFilename_flowline_filter = self.sFilename_flowline_filter_geojson #sFilename_flowline_filter = self.sFilename_flowline_filter aFlowline_basin_filtered, pSpatial_reference = read_flowline_geojson( sFilename_flowline_filter ) #aVertex_filtered = find_flowline_vertex(aFlowline_basin_filtered) @@ -529,7 +528,7 @@ def basin_flowline_simplification(self): print('Basin ', self.sBasinID, 'split flowline') sys.stdout.flush() ptimer.start() - + nFlowline_before = len(aFlowline_basin_filtered) aFlowline_basin_simplified = split_flowline(aFlowline_basin_filtered, aVertex) nFlowline_after = len(aFlowline_basin_simplified) @@ -727,7 +726,7 @@ def basin_reconstruct_topological_relationship(self, iMesh_type, sFilename_mesh) Returns: list [pyflowline]: A list of intersected cells """ - print('Basin ', self.sBasinID, 'Start topology reconstruction') + print('Basin ', self.sBasinID, 'Start topology reconstruction') ptimer = pytimer() sWorkspace_output_basin = self.sWorkspace_output_basin sFilename_flowline_in = self.sFilename_flowline_simplified @@ -740,7 +739,7 @@ def basin_reconstruct_topological_relationship(self, iMesh_type, sFilename_mesh) aCell, aCell_intersect_basin, aFlowline_intersect_all = intersect_flowline_with_mesh(iMesh_type, sFilename_mesh, \ sFilename_flowline_in, sFilename_flowline_intersect_out) ptimer.stop() - + if self.iFlag_debug ==1: sFilename_out = 'flowline_intersect_flowline_with_mesh.geojson' sFilename_out = os.path.join(sWorkspace_output_basin, sFilename_out) @@ -751,7 +750,7 @@ def basin_reconstruct_topological_relationship(self, iMesh_type, sFilename_mesh) #not an ideal setup, but it could be improved if self.iFlag_simplification_done ==1: pVertex_outlet_initial = self.pVertex_outlet - else: + else: point= dict() point['dLongitude_degree'] = self.dLongitude_outlet_degree point['dLatitude_degree'] = self.dLatitude_outlet_degree @@ -767,7 +766,7 @@ def basin_reconstruct_topological_relationship(self, iMesh_type, sFilename_mesh) print('Outlet ID', lCellID_outlet) #this outlet is the one intersect outlet cell, not cell center print('Outlet location', pVertex_outlet.dLongitude_degree, pVertex_outlet.dLatitude_degree) - ptimer.stop() + ptimer.stop() if self.iFlag_debug ==1: sFilename_out = 'flowline_simplified_after_intersect.geojson' sFilename_out = os.path.join(sWorkspace_output_basin, sFilename_out) @@ -795,7 +794,7 @@ def basin_reconstruct_topological_relationship(self, iMesh_type, sFilename_mesh) sys.stdout.flush() ptimer.start() aFlowline_basin_conceptual = remove_duplicate_flowline(aFlowline_basin_conceptual) - ptimer.stop() + ptimer.stop() if self.iFlag_debug ==1: sFilename_out = 'flowline_edge_remove_duplicate_flowline.geojson' sFilename_out = os.path.join(sWorkspace_output_basin, sFilename_out) diff --git a/pyflowline/classes/pycase.py b/pyflowline/classes/pycase.py index eecab3e7..af67a755 100644 --- a/pyflowline/classes/pycase.py +++ b/pyflowline/classes/pycase.py @@ -45,7 +45,7 @@ iFlag_cython = importlib.util.find_spec("cython") if iFlag_cython is not None: - from pyflowline.external.tinyr.tinyr.tinyr import RTree + from tinyr import RTree iFlag_use_rtree = 1 else: iFlag_use_rtree =0 @@ -110,6 +110,7 @@ class flowlinecase(object): iFlag_flowline = 1 iFlag_global = 0 iFlag_antarctic = 0 + iFlag_arctic = 0 iFlag_multiple_outlet = 0 iFlag_mesh_boundary = 0 iFlag_user_provided_binary = 0 @@ -229,6 +230,9 @@ def __init__(self, aConfig_in, if 'iFlag_antarctic' in aConfig_in: self.iFlag_antarctic = int(aConfig_in[ 'iFlag_antarctic']) + if 'iFlag_arctic' in aConfig_in: + self.iFlag_arctic = int(aConfig_in[ 'iFlag_arctic']) + if 'iFlag_mesh_boundary' in aConfig_in: self.iFlag_mesh_boundary = int(aConfig_in[ 'iFlag_mesh_boundary']) else: @@ -245,6 +249,8 @@ def __init__(self, aConfig_in, self.iFlag_simplification = 1 if self.iFlag_simplification ==1: self.iFlag_flowline = 1 + else: + self.iFlag_flowline = 0 if 'iFlag_create_mesh' in aConfig_in: self.iFlag_create_mesh = int(aConfig_in['iFlag_create_mesh']) @@ -551,6 +557,9 @@ def pyflowline_check_parameters(self): #other requirements maybe needed pass else: + if self.iFlag_antarctic==1 and self.iFlag_arctic==1: + print('Both antarctic and arctic flags are on, please check the parameters!') + if self.iFlag_mesh_boundary == 1: if not os.path.isfile(self.sFilename_mesh_boundary ): print("The mesh boundary file does not exist, you should update this parameter before running the model!") @@ -561,7 +570,6 @@ def pyflowline_check_parameters(self): self.dLatitude_mean = 0.5 * (aExtent[1] + aExtent[3]) pass - if sMesh_type =='hexagon': #hexagon #need spatial referece #check boundary if self.iFlag_mesh_boundary == 1: @@ -741,7 +749,7 @@ def pyflowline_flowline_simplification(self): return aFlowline_out - def pyflowline_mesh_generation(self, iFlag_antarctic_in=None): + def pyflowline_mesh_generation(self, iFlag_antarctic_in=None, iFlag_arctic_in=None): """ The mesh generation operation @@ -751,10 +759,15 @@ def pyflowline_mesh_generation(self, iFlag_antarctic_in=None): print('Start mesh generation.') if iFlag_antarctic_in is None: - iFlag_antarctic = 0 + iFlag_antarctic = self.iFlag_antarctic else: iFlag_antarctic = iFlag_antarctic_in + if iFlag_arctic_in is None: + iFlag_arctic = self.iFlag_arctic + else: + iFlag_arctic = iFlag_arctic_in + if self.iFlag_create_mesh ==1: iFlag_global = self.iFlag_global iMesh_type = self.iMesh_type @@ -867,10 +880,11 @@ def pyflowline_mesh_generation(self, iFlag_antarctic_in=None): dLongitude_left = self.dLongitude_left dLongitude_right = self.dLongitude_right - if iFlag_antarctic ==1: + if iFlag_antarctic ==1 or iFlag_arctic ==1: aMpas = create_mpas_mesh(iFlag_global, iFlag_use_mesh_dem, iFlag_save_mesh, sFilename_mesh_netcdf, sFilename_mesh, - iFlag_antarctic_in=iFlag_antarctic_in ) + iFlag_antarctic_in=iFlag_antarctic, + iFlag_arctic_in=iFlag_arctic) pass else: if iFlag_mesh_boundary ==1: @@ -881,6 +895,7 @@ def pyflowline_mesh_generation(self, iFlag_antarctic_in=None): aMpas = create_mpas_mesh(iFlag_global, iFlag_use_mesh_dem, iFlag_save_mesh, sFilename_mesh_netcdf, sFilename_mesh, iFlag_antarctic_in=iFlag_antarctic_in, + iFlag_arctic_in=iFlag_arctic_in, pBoundary_in = pBoundary_wkt) pass else: @@ -898,6 +913,7 @@ def pyflowline_mesh_generation(self, iFlag_antarctic_in=None): aMpas = create_mpas_mesh(iFlag_global, iFlag_use_mesh_dem, iFlag_save_mesh, sFilename_mesh_netcdf, sFilename_mesh, iFlag_antarctic_in= iFlag_antarctic_in, + iFlag_arctic_in=iFlag_arctic_in, pBoundary_in = pBoundary_wkt ) pass @@ -927,6 +943,7 @@ def pyflowline_mesh_generation(self, iFlag_antarctic_in=None): sWorkspace_output, iResolution_index_in= self.iResolution_index, iFlag_antarctic_in=iFlag_antarctic_in, + iFlag_arctic_in=iFlag_arctic_in, sDggrid_type_in = self.sDggrid_type, sFilename_boundary_in = self.sFilename_mesh_boundary) @@ -1135,7 +1152,7 @@ def pyflowline_run(self): pass if self.iFlag_create_mesh: - self.aCell = self.pyflowline_mesh_generation(iFlag_antarctic_in= self.iFlag_antarctic) + self.aCell = self.pyflowline_mesh_generation(iFlag_antarctic_in= self.iFlag_antarctic, iFlag_arctic_in=self.iFlag_arctic) aCell_out = self.aCell pass else: @@ -1233,10 +1250,10 @@ def tojson(self): obj.pop(sKey, None) pass - sJson = json.dumps(obj,\ - sort_keys=True, \ - indent = 4, \ - ensure_ascii=True, \ + sJson = json.dumps(obj, + sort_keys=True, + indent = 4, + ensure_ascii=True, cls=CaseClassEncoder) return sJson diff --git a/pyflowline/classes/vertex.py b/pyflowline/classes/vertex.py index 9873507b..1610199a 100644 --- a/pyflowline/classes/vertex.py +++ b/pyflowline/classes/vertex.py @@ -4,7 +4,7 @@ import importlib.util import numpy as np -iFlag_cython = importlib.util.find_spec("cython") +iFlag_cython = importlib.util.find_spec("cython") if iFlag_cython is not None: from pyflowline.algorithms.cython.kernel import calculate_distance_based_on_longitude_latitude else: @@ -17,7 +17,7 @@ def default(self, obj): if isinstance(obj, np.integer): return int(obj) if isinstance(obj, np.ndarray): - return obj.tolist() + return obj.tolist() return JSONEncoder.default(self, obj) class pyvertex(object): @@ -30,10 +30,10 @@ class pyvertex(object): Returns: pyvertex: A vertex object """ - - - - lVerterIndex=-1 #this index will be used for array - class variable + + + + lVerterIndex=-1 #this index will be used for array - class variable lVertexID=-1 lFlowlineID = -1 #we use this id only for intersect dX_meter=-9999 @@ -43,53 +43,53 @@ class pyvertex(object): dLatitude_degree=0.0 dLongitude_radian=0.0 dLatitude_radian=0.0 - dElevation=0.0 - + dElevation=0.0 + def __init__(self, aParameter): """ Initilize a vertex object - Args: + Args: aParameter (dict): A dictionary parameters """ - if 'x' in aParameter: + if 'x' in aParameter: self.dX_meter = float(aParameter['x']) - - if 'y' in aParameter: + + if 'y' in aParameter: self.dY_meter = float(aParameter['y']) - - if 'z' in aParameter: + + if 'z' in aParameter: self.dZ_meter = float(aParameter['z']) - - #dLongitude and dLatitude are always required - try: - self.dLongitude_degree = float(aParameter['dLongitude_degree']) - """dLongitude_degree - object variable""" + + #dLongitude and dLatitude are always required + try: + self.dLongitude_degree = float(aParameter['dLongitude_degree']) + """dLongitude_degree - object variable""" self.dLatitude_degree = float(aParameter['dLatitude_degree']) """dLatitude_degree - object variable""" self.dLongitude_radian = np.radians(self.dLongitude_degree) self.dLatitude_radian = np.radians(self.dLatitude_degree) - + except: print('Initialization of vertex failed!') - + return - def toNvector(self): + def toNvector(self): """ Note: replicated in LatLon_NvectorEllipsoidal Returns: pynvector: A nvector object """ - + a = self.dLatitude_radian b = self.dLongitude_radian c = np.sin(a) e = np.cos(a) - d = np.sin(b) + d = np.sin(b) f = np.cos(b) #// right-handed vector: x -> 0°E,0°N; y -> 90°E,0°N, z -> 90°N x = e * f @@ -101,7 +101,7 @@ def toNvector(self): point['z'] = z pNvector = pynvector(point) return pNvector - + def __hash__(self, precision=iPrecision_default): #design a hash function that uses both dLongitude and dLatitude @@ -116,10 +116,10 @@ def __hash__(self, precision=iPrecision_default): # Combine the scaled values into a single hash code hash_code = (scaled_latitude << 32) | scaled_longitude - + return hash_code - + def __eq__(self, other): """ Check whether two vertices are equivalent @@ -131,21 +131,21 @@ def __eq__(self, other): int: 1 if equivalent, 0 if not """ iFlag = False - dThreshold_in = 10 ** (-1 * iPrecision_default) - if isinstance(other, pyvertex): + dThreshold_in = 10 ** (-1 * iPrecision_default) + if isinstance(other, pyvertex): if (self.dLongitude_degree == other.dLongitude_degree) and \ (self.dLatitude_degree == other.dLatitude_degree): iFlag = True - else: + else: #use absolute difference to check whether two vertices are the same if (abs(self.dLongitude_degree - other.dLongitude_degree) < dThreshold_in) and \ - (abs(self.dLatitude_degree - other.dLatitude_degree) < dThreshold_in): + (abs(self.dLatitude_degree - other.dLatitude_degree) < dThreshold_in): iFlag = True else: - iFlag = False - + iFlag = False + else: - iFlag = False + iFlag = False return iFlag @@ -160,7 +160,7 @@ def __ne__(self, other): int: 0 if equivalent, 1 if not """ return not self.__eq__(other) - + def calculate_distance(self, other): """ Calculate the distance between two vertices @@ -173,12 +173,12 @@ def calculate_distance(self, other): """ dDistance = 0.0 lon1 = self.dLongitude_degree - lat1 = self.dLatitude_degree + lat1 = self.dLatitude_degree lon2 = other.dLongitude_degree lat2 = other.dLatitude_degree - dDistance = calculate_distance_based_on_longitude_latitude(lon1, lat1, lon2, lat2) + dDistance = calculate_distance_based_on_longitude_latitude(lon1, lat1, lon2, lat2) return dDistance - + def tojson(self): """ Convert a vecter object to a json string @@ -192,7 +192,7 @@ def tojson(self): obj = self.__dict__.copy() for sKey in aSkip: obj.pop(sKey, None) - + #sJson = json.dumps(self.__dict__, \ sJson = json.dumps(obj, \ sort_keys=True, \ @@ -201,7 +201,7 @@ def tojson(self): cls=VertexClassEncoder) return sJson - + class pynvector(object): """ The vector class @@ -217,13 +217,13 @@ class pynvector(object): dZ=-9999 def __init__(self, aParameter): - if 'x' in aParameter: + if 'x' in aParameter: self.dX = float(aParameter['x']) - - if 'y' in aParameter: + + if 'y' in aParameter: self.dY = float(aParameter['y']) - - if 'z' in aParameter: + + if 'z' in aParameter: self.dZ = float(aParameter['z']) self.dLength = self.calculate_length() self.dX = self.dX/self.dLength @@ -254,11 +254,11 @@ def toLatLon(self): a = np.arctan2(z, np.sqrt(x*x + y*y)) b = np.arctan2(y, x) - point0= dict() + point0= dict() point0['dLongitude_degree'] = np.degrees(b) point0['dLatitude_degree'] = np.degrees(a) pv = pyvertex(point0) return pv - + diff --git a/pyflowline/external/readme.md b/pyflowline/external/readme.md new file mode 100644 index 00000000..15766202 --- /dev/null +++ b/pyflowline/external/readme.md @@ -0,0 +1 @@ +Both PyEarth and Tinyr should be installed independently. \ No newline at end of file diff --git a/pyflowline/external/tinyr/build/temp.linux-x86_64-cpython-312/tinyr/tinyr.o b/pyflowline/external/tinyr/build/temp.linux-x86_64-cpython-312/tinyr/tinyr.o deleted file mode 100644 index ee695b5c143e24e297f8e383e062e5baa5020431..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 434232 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 L 0x03030000 - #define Py_LIMITED_API CYTHON_LIMITED_API - #else - #define Py_LIMITED_API 0x03030000 - #endif - #endif -#endif - -#include "Python.h" -#ifndef Py_PYTHON_H - #error Python headers needed to compile C extensions, please install development version of Python. -#elif PY_VERSION_HEX < 0x02070000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000) - #error Cython requires Python 2.7+ or Python 3.3+. -#else -#if defined(CYTHON_LIMITED_API) && CYTHON_LIMITED_API -#define __PYX_EXTRA_ABI_MODULE_NAME "limited" -#else -#define __PYX_EXTRA_ABI_MODULE_NAME "" -#endif -#define CYTHON_ABI "3_0_8" __PYX_EXTRA_ABI_MODULE_NAME -#define __PYX_ABI_MODULE_NAME "_cython_" CYTHON_ABI -#define __PYX_TYPE_MODULE_PREFIX __PYX_ABI_MODULE_NAME "." -#define CYTHON_HEX_VERSION 0x030008F0 -#define CYTHON_FUTURE_DIVISION 1 -#include -#ifndef offsetof - #define offsetof(type, member) ( (size_t) & ((type*)0) -> member ) -#endif -#if !defined(_WIN32) && !defined(WIN32) && !defined(MS_WINDOWS) - #ifndef __stdcall - #define __stdcall - #endif - #ifndef __cdecl - #define __cdecl - #endif - #ifndef __fastcall - #define __fastcall - #endif -#endif -#ifndef DL_IMPORT - #define DL_IMPORT(t) t -#endif -#ifndef DL_EXPORT - #define DL_EXPORT(t) t -#endif -#define __PYX_COMMA , -#ifndef HAVE_LONG_LONG - #define HAVE_LONG_LONG -#endif -#ifndef PY_LONG_LONG - #define PY_LONG_LONG LONG_LONG -#endif -#ifndef Py_HUGE_VAL - #define Py_HUGE_VAL HUGE_VAL -#endif -#define __PYX_LIMITED_VERSION_HEX PY_VERSION_HEX -#if defined(GRAALVM_PYTHON) - /* For very preliminary testing purposes. Most variables are set the same as PyPy. - The existence of this section does not imply that anything works or is even tested */ - #define CYTHON_COMPILING_IN_PYPY 0 - #define CYTHON_COMPILING_IN_CPYTHON 0 - #define CYTHON_COMPILING_IN_LIMITED_API 0 - #define CYTHON_COMPILING_IN_GRAAL 1 - #define CYTHON_COMPILING_IN_NOGIL 0 - #undef CYTHON_USE_TYPE_SLOTS - #define CYTHON_USE_TYPE_SLOTS 0 - #undef CYTHON_USE_TYPE_SPECS - #define CYTHON_USE_TYPE_SPECS 0 - #undef CYTHON_USE_PYTYPE_LOOKUP - #define CYTHON_USE_PYTYPE_LOOKUP 0 - #if PY_VERSION_HEX < 0x03050000 - #undef CYTHON_USE_ASYNC_SLOTS - #define CYTHON_USE_ASYNC_SLOTS 0 - #elif !defined(CYTHON_USE_ASYNC_SLOTS) - #define CYTHON_USE_ASYNC_SLOTS 1 - #endif - #undef CYTHON_USE_PYLIST_INTERNALS - #define CYTHON_USE_PYLIST_INTERNALS 0 - #undef CYTHON_USE_UNICODE_INTERNALS - #define CYTHON_USE_UNICODE_INTERNALS 0 - #undef CYTHON_USE_UNICODE_WRITER - #define CYTHON_USE_UNICODE_WRITER 0 - #undef CYTHON_USE_PYLONG_INTERNALS - #define CYTHON_USE_PYLONG_INTERNALS 0 - #undef CYTHON_AVOID_BORROWED_REFS - #define CYTHON_AVOID_BORROWED_REFS 1 - #undef CYTHON_ASSUME_SAFE_MACROS - #define CYTHON_ASSUME_SAFE_MACROS 0 - #undef CYTHON_UNPACK_METHODS - #define CYTHON_UNPACK_METHODS 0 - #undef CYTHON_FAST_THREAD_STATE - #define CYTHON_FAST_THREAD_STATE 0 - #undef CYTHON_FAST_GIL - #define CYTHON_FAST_GIL 0 - #undef CYTHON_METH_FASTCALL - #define CYTHON_METH_FASTCALL 0 - #undef CYTHON_FAST_PYCALL - #define CYTHON_FAST_PYCALL 0 - #ifndef CYTHON_PEP487_INIT_SUBCLASS - #define CYTHON_PEP487_INIT_SUBCLASS (PY_MAJOR_VERSION >= 3) - #endif - #undef CYTHON_PEP489_MULTI_PHASE_INIT - #define CYTHON_PEP489_MULTI_PHASE_INIT 1 - #undef CYTHON_USE_MODULE_STATE - #define CYTHON_USE_MODULE_STATE 0 - #undef CYTHON_USE_TP_FINALIZE - #define CYTHON_USE_TP_FINALIZE 0 - #undef CYTHON_USE_DICT_VERSIONS - #define CYTHON_USE_DICT_VERSIONS 0 - #undef CYTHON_USE_EXC_INFO_STACK - #define CYTHON_USE_EXC_INFO_STACK 0 - #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC - #define CYTHON_UPDATE_DESCRIPTOR_DOC 0 - #endif -#elif defined(PYPY_VERSION) - #define CYTHON_COMPILING_IN_PYPY 1 - #define CYTHON_COMPILING_IN_CPYTHON 0 - #define CYTHON_COMPILING_IN_LIMITED_API 0 - #define CYTHON_COMPILING_IN_GRAAL 0 - #define CYTHON_COMPILING_IN_NOGIL 0 - #undef CYTHON_USE_TYPE_SLOTS - #define CYTHON_USE_TYPE_SLOTS 0 - #ifndef CYTHON_USE_TYPE_SPECS - #define CYTHON_USE_TYPE_SPECS 0 - #endif - #undef CYTHON_USE_PYTYPE_LOOKUP - #define CYTHON_USE_PYTYPE_LOOKUP 0 - #if PY_VERSION_HEX < 0x03050000 - #undef CYTHON_USE_ASYNC_SLOTS - #define CYTHON_USE_ASYNC_SLOTS 0 - #elif !defined(CYTHON_USE_ASYNC_SLOTS) - #define CYTHON_USE_ASYNC_SLOTS 1 - #endif - #undef CYTHON_USE_PYLIST_INTERNALS - #define CYTHON_USE_PYLIST_INTERNALS 0 - #undef CYTHON_USE_UNICODE_INTERNALS - #define CYTHON_USE_UNICODE_INTERNALS 0 - #undef CYTHON_USE_UNICODE_WRITER - #define CYTHON_USE_UNICODE_WRITER 0 - #undef CYTHON_USE_PYLONG_INTERNALS - #define CYTHON_USE_PYLONG_INTERNALS 0 - #undef CYTHON_AVOID_BORROWED_REFS - #define CYTHON_AVOID_BORROWED_REFS 1 - #undef CYTHON_ASSUME_SAFE_MACROS - #define CYTHON_ASSUME_SAFE_MACROS 0 - #undef CYTHON_UNPACK_METHODS - #define CYTHON_UNPACK_METHODS 0 - #undef CYTHON_FAST_THREAD_STATE - #define CYTHON_FAST_THREAD_STATE 0 - #undef CYTHON_FAST_GIL - #define CYTHON_FAST_GIL 0 - #undef CYTHON_METH_FASTCALL - #define CYTHON_METH_FASTCALL 0 - #undef CYTHON_FAST_PYCALL - #define CYTHON_FAST_PYCALL 0 - #ifndef CYTHON_PEP487_INIT_SUBCLASS - #define CYTHON_PEP487_INIT_SUBCLASS (PY_MAJOR_VERSION >= 3) - #endif - #if PY_VERSION_HEX < 0x03090000 - #undef CYTHON_PEP489_MULTI_PHASE_INIT - #define CYTHON_PEP489_MULTI_PHASE_INIT 0 - #elif !defined(CYTHON_PEP489_MULTI_PHASE_INIT) - #define CYTHON_PEP489_MULTI_PHASE_INIT 1 - #endif - #undef CYTHON_USE_MODULE_STATE - #define CYTHON_USE_MODULE_STATE 0 - #undef CYTHON_USE_TP_FINALIZE - #define CYTHON_USE_TP_FINALIZE (PY_VERSION_HEX >= 0x030400a1 && PYPY_VERSION_NUM >= 0x07030C00) - #undef CYTHON_USE_DICT_VERSIONS - #define CYTHON_USE_DICT_VERSIONS 0 - #undef CYTHON_USE_EXC_INFO_STACK - #define CYTHON_USE_EXC_INFO_STACK 0 - #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC - #define CYTHON_UPDATE_DESCRIPTOR_DOC 0 - #endif -#elif defined(CYTHON_LIMITED_API) - #ifdef Py_LIMITED_API - #undef __PYX_LIMITED_VERSION_HEX - #define __PYX_LIMITED_VERSION_HEX Py_LIMITED_API - #endif - #define CYTHON_COMPILING_IN_PYPY 0 - #define CYTHON_COMPILING_IN_CPYTHON 0 - #define CYTHON_COMPILING_IN_LIMITED_API 1 - #define CYTHON_COMPILING_IN_GRAAL 0 - #define CYTHON_COMPILING_IN_NOGIL 0 - #undef CYTHON_CLINE_IN_TRACEBACK - #define CYTHON_CLINE_IN_TRACEBACK 0 - #undef CYTHON_USE_TYPE_SLOTS - #define CYTHON_USE_TYPE_SLOTS 0 - #undef CYTHON_USE_TYPE_SPECS - #define CYTHON_USE_TYPE_SPECS 1 - #undef CYTHON_USE_PYTYPE_LOOKUP - #define CYTHON_USE_PYTYPE_LOOKUP 0 - #undef CYTHON_USE_ASYNC_SLOTS - #define CYTHON_USE_ASYNC_SLOTS 0 - #undef CYTHON_USE_PYLIST_INTERNALS - #define CYTHON_USE_PYLIST_INTERNALS 0 - #undef CYTHON_USE_UNICODE_INTERNALS - #define CYTHON_USE_UNICODE_INTERNALS 0 - #ifndef CYTHON_USE_UNICODE_WRITER - #define CYTHON_USE_UNICODE_WRITER 0 - #endif - #undef CYTHON_USE_PYLONG_INTERNALS - #define CYTHON_USE_PYLONG_INTERNALS 0 - #ifndef CYTHON_AVOID_BORROWED_REFS - #define CYTHON_AVOID_BORROWED_REFS 0 - #endif - #undef CYTHON_ASSUME_SAFE_MACROS - #define CYTHON_ASSUME_SAFE_MACROS 0 - #undef CYTHON_UNPACK_METHODS - #define CYTHON_UNPACK_METHODS 0 - #undef CYTHON_FAST_THREAD_STATE - #define CYTHON_FAST_THREAD_STATE 0 - #undef CYTHON_FAST_GIL - #define CYTHON_FAST_GIL 0 - #undef CYTHON_METH_FASTCALL - #define CYTHON_METH_FASTCALL 0 - #undef CYTHON_FAST_PYCALL - #define CYTHON_FAST_PYCALL 0 - #ifndef CYTHON_PEP487_INIT_SUBCLASS - #define CYTHON_PEP487_INIT_SUBCLASS 1 - #endif - #undef CYTHON_PEP489_MULTI_PHASE_INIT - #define CYTHON_PEP489_MULTI_PHASE_INIT 0 - #undef CYTHON_USE_MODULE_STATE - #define CYTHON_USE_MODULE_STATE 1 - #ifndef CYTHON_USE_TP_FINALIZE - #define CYTHON_USE_TP_FINALIZE 0 - #endif - #undef CYTHON_USE_DICT_VERSIONS - #define CYTHON_USE_DICT_VERSIONS 0 - #undef CYTHON_USE_EXC_INFO_STACK - #define CYTHON_USE_EXC_INFO_STACK 0 - #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC - #define CYTHON_UPDATE_DESCRIPTOR_DOC 0 - #endif -#elif defined(Py_GIL_DISABLED) || defined(Py_NOGIL) - #define CYTHON_COMPILING_IN_PYPY 0 - #define CYTHON_COMPILING_IN_CPYTHON 0 - #define CYTHON_COMPILING_IN_LIMITED_API 0 - #define CYTHON_COMPILING_IN_GRAAL 0 - #define CYTHON_COMPILING_IN_NOGIL 1 - #ifndef CYTHON_USE_TYPE_SLOTS - #define CYTHON_USE_TYPE_SLOTS 1 - #endif - #undef CYTHON_USE_PYTYPE_LOOKUP - #define CYTHON_USE_PYTYPE_LOOKUP 0 - #ifndef CYTHON_USE_ASYNC_SLOTS - #define CYTHON_USE_ASYNC_SLOTS 1 - #endif - #undef CYTHON_USE_PYLIST_INTERNALS - #define CYTHON_USE_PYLIST_INTERNALS 0 - #ifndef CYTHON_USE_UNICODE_INTERNALS - #define CYTHON_USE_UNICODE_INTERNALS 1 - #endif - #undef CYTHON_USE_UNICODE_WRITER - #define CYTHON_USE_UNICODE_WRITER 0 - #undef CYTHON_USE_PYLONG_INTERNALS - #define CYTHON_USE_PYLONG_INTERNALS 0 - #ifndef CYTHON_AVOID_BORROWED_REFS - #define CYTHON_AVOID_BORROWED_REFS 0 - #endif - #ifndef CYTHON_ASSUME_SAFE_MACROS - #define CYTHON_ASSUME_SAFE_MACROS 1 - #endif - #ifndef CYTHON_UNPACK_METHODS - #define CYTHON_UNPACK_METHODS 1 - #endif - #undef CYTHON_FAST_THREAD_STATE - #define CYTHON_FAST_THREAD_STATE 0 - #undef CYTHON_FAST_PYCALL - #define CYTHON_FAST_PYCALL 0 - #ifndef CYTHON_PEP489_MULTI_PHASE_INIT - #define CYTHON_PEP489_MULTI_PHASE_INIT 1 - #endif - #ifndef CYTHON_USE_TP_FINALIZE - #define CYTHON_USE_TP_FINALIZE 1 - #endif - #undef CYTHON_USE_DICT_VERSIONS - #define CYTHON_USE_DICT_VERSIONS 0 - #undef CYTHON_USE_EXC_INFO_STACK - #define CYTHON_USE_EXC_INFO_STACK 0 -#else - #define CYTHON_COMPILING_IN_PYPY 0 - #define CYTHON_COMPILING_IN_CPYTHON 1 - #define CYTHON_COMPILING_IN_LIMITED_API 0 - #define CYTHON_COMPILING_IN_GRAAL 0 - #define CYTHON_COMPILING_IN_NOGIL 0 - #ifndef CYTHON_USE_TYPE_SLOTS - #define CYTHON_USE_TYPE_SLOTS 1 - #endif - #ifndef CYTHON_USE_TYPE_SPECS - #define CYTHON_USE_TYPE_SPECS 0 - #endif - #ifndef CYTHON_USE_PYTYPE_LOOKUP - #define CYTHON_USE_PYTYPE_LOOKUP 1 - #endif - #if PY_MAJOR_VERSION < 3 - #undef CYTHON_USE_ASYNC_SLOTS - #define CYTHON_USE_ASYNC_SLOTS 0 - #elif !defined(CYTHON_USE_ASYNC_SLOTS) - #define CYTHON_USE_ASYNC_SLOTS 1 - #endif - #ifndef CYTHON_USE_PYLONG_INTERNALS - #define CYTHON_USE_PYLONG_INTERNALS 1 - #endif - #ifndef CYTHON_USE_PYLIST_INTERNALS - #define CYTHON_USE_PYLIST_INTERNALS 1 - #endif - #ifndef CYTHON_USE_UNICODE_INTERNALS - #define CYTHON_USE_UNICODE_INTERNALS 1 - #endif - #if PY_VERSION_HEX < 0x030300F0 || PY_VERSION_HEX >= 0x030B00A2 - #undef CYTHON_USE_UNICODE_WRITER - #define CYTHON_USE_UNICODE_WRITER 0 - #elif !defined(CYTHON_USE_UNICODE_WRITER) - #define CYTHON_USE_UNICODE_WRITER 1 - #endif - #ifndef CYTHON_AVOID_BORROWED_REFS - #define CYTHON_AVOID_BORROWED_REFS 0 - #endif - #ifndef CYTHON_ASSUME_SAFE_MACROS - #define CYTHON_ASSUME_SAFE_MACROS 1 - #endif - #ifndef CYTHON_UNPACK_METHODS - #define CYTHON_UNPACK_METHODS 1 - #endif - #ifndef CYTHON_FAST_THREAD_STATE - #define CYTHON_FAST_THREAD_STATE 1 - #endif - #ifndef CYTHON_FAST_GIL - #define CYTHON_FAST_GIL (PY_MAJOR_VERSION < 3 || PY_VERSION_HEX >= 0x03060000 && PY_VERSION_HEX < 0x030C00A6) - #endif - #ifndef CYTHON_METH_FASTCALL - #define CYTHON_METH_FASTCALL (PY_VERSION_HEX >= 0x030700A1) - #endif - #ifndef CYTHON_FAST_PYCALL - #define CYTHON_FAST_PYCALL 1 - #endif - #ifndef CYTHON_PEP487_INIT_SUBCLASS - #define CYTHON_PEP487_INIT_SUBCLASS 1 - #endif - #if PY_VERSION_HEX < 0x03050000 - #undef CYTHON_PEP489_MULTI_PHASE_INIT - #define CYTHON_PEP489_MULTI_PHASE_INIT 0 - #elif !defined(CYTHON_PEP489_MULTI_PHASE_INIT) - #define CYTHON_PEP489_MULTI_PHASE_INIT 1 - #endif - #ifndef CYTHON_USE_MODULE_STATE - #define CYTHON_USE_MODULE_STATE 0 - #endif - #if PY_VERSION_HEX < 0x030400a1 - #undef CYTHON_USE_TP_FINALIZE - #define CYTHON_USE_TP_FINALIZE 0 - #elif !defined(CYTHON_USE_TP_FINALIZE) - #define CYTHON_USE_TP_FINALIZE 1 - #endif - #if PY_VERSION_HEX < 0x030600B1 - #undef CYTHON_USE_DICT_VERSIONS - #define CYTHON_USE_DICT_VERSIONS 0 - #elif !defined(CYTHON_USE_DICT_VERSIONS) - #define CYTHON_USE_DICT_VERSIONS (PY_VERSION_HEX < 0x030C00A5) - #endif - #if PY_VERSION_HEX < 0x030700A3 - #undef CYTHON_USE_EXC_INFO_STACK - #define CYTHON_USE_EXC_INFO_STACK 0 - #elif !defined(CYTHON_USE_EXC_INFO_STACK) - #define CYTHON_USE_EXC_INFO_STACK 1 - #endif - #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC - #define CYTHON_UPDATE_DESCRIPTOR_DOC 1 - #endif -#endif -#if !defined(CYTHON_FAST_PYCCALL) -#define CYTHON_FAST_PYCCALL (CYTHON_FAST_PYCALL && PY_VERSION_HEX >= 0x030600B1) -#endif -#if !defined(CYTHON_VECTORCALL) -#define CYTHON_VECTORCALL (CYTHON_FAST_PYCCALL && PY_VERSION_HEX >= 0x030800B1) -#endif -#define CYTHON_BACKPORT_VECTORCALL (CYTHON_METH_FASTCALL && PY_VERSION_HEX < 0x030800B1) -#if CYTHON_USE_PYLONG_INTERNALS - #if PY_MAJOR_VERSION < 3 - #include "longintrepr.h" - #endif - #undef SHIFT - #undef BASE - #undef MASK - #ifdef SIZEOF_VOID_P - enum { __pyx_check_sizeof_voidp = 1 / (int)(SIZEOF_VOID_P == sizeof(void*)) }; - #endif -#endif -#ifndef __has_attribute - #define __has_attribute(x) 0 -#endif -#ifndef __has_cpp_attribute - #define __has_cpp_attribute(x) 0 -#endif -#ifndef CYTHON_RESTRICT - #if defined(__GNUC__) - #define CYTHON_RESTRICT __restrict__ - #elif defined(_MSC_VER) && _MSC_VER >= 1400 - #define CYTHON_RESTRICT __restrict - #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L - #define CYTHON_RESTRICT restrict - #else - #define CYTHON_RESTRICT - #endif -#endif -#ifndef CYTHON_UNUSED - #if defined(__cplusplus) - /* for clang __has_cpp_attribute(maybe_unused) is true even before C++17 - * but leads to warnings with -pedantic, since it is a C++17 feature */ - #if ((defined(_MSVC_LANG) && _MSVC_LANG >= 201703L) || __cplusplus >= 201703L) - #if __has_cpp_attribute(maybe_unused) - #define CYTHON_UNUSED [[maybe_unused]] - #endif - #endif - #endif -#endif -#ifndef CYTHON_UNUSED -# if defined(__GNUC__) -# if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)) -# define CYTHON_UNUSED __attribute__ ((__unused__)) -# else -# define CYTHON_UNUSED -# endif -# elif defined(__ICC) || (defined(__INTEL_COMPILER) && !defined(_MSC_VER)) -# define CYTHON_UNUSED __attribute__ ((__unused__)) -# else -# define CYTHON_UNUSED -# endif -#endif -#ifndef CYTHON_UNUSED_VAR -# if defined(__cplusplus) - template void CYTHON_UNUSED_VAR( const T& ) { } -# else -# define CYTHON_UNUSED_VAR(x) (void)(x) -# endif -#endif -#ifndef CYTHON_MAYBE_UNUSED_VAR - #define CYTHON_MAYBE_UNUSED_VAR(x) CYTHON_UNUSED_VAR(x) -#endif -#ifndef CYTHON_NCP_UNUSED -# if CYTHON_COMPILING_IN_CPYTHON -# define CYTHON_NCP_UNUSED -# else -# define CYTHON_NCP_UNUSED CYTHON_UNUSED -# endif -#endif -#ifndef CYTHON_USE_CPP_STD_MOVE - #if defined(__cplusplus) && (\ - __cplusplus >= 201103L || (defined(_MSC_VER) && _MSC_VER >= 1600)) - #define CYTHON_USE_CPP_STD_MOVE 1 - #else - #define CYTHON_USE_CPP_STD_MOVE 0 - #endif -#endif -#define __Pyx_void_to_None(void_result) ((void)(void_result), Py_INCREF(Py_None), Py_None) -#ifdef _MSC_VER - #ifndef _MSC_STDINT_H_ - #if _MSC_VER < 1300 - typedef unsigned char uint8_t; - typedef unsigned short uint16_t; - typedef unsigned int uint32_t; - #else - typedef unsigned __int8 uint8_t; - typedef unsigned __int16 uint16_t; - typedef unsigned __int32 uint32_t; - #endif - #endif - #if _MSC_VER < 1300 - #ifdef _WIN64 - typedef unsigned long long __pyx_uintptr_t; - #else - typedef unsigned int __pyx_uintptr_t; - #endif - #else - #ifdef _WIN64 - typedef unsigned __int64 __pyx_uintptr_t; - #else - typedef unsigned __int32 __pyx_uintptr_t; - #endif - #endif -#else - #include - typedef uintptr_t __pyx_uintptr_t; -#endif -#ifndef CYTHON_FALLTHROUGH - #if defined(__cplusplus) - /* for clang __has_cpp_attribute(fallthrough) is true even before C++17 - * but leads to warnings with -pedantic, since it is a C++17 feature */ - #if ((defined(_MSVC_LANG) && _MSVC_LANG >= 201703L) || __cplusplus >= 201703L) - #if __has_cpp_attribute(fallthrough) - #define CYTHON_FALLTHROUGH [[fallthrough]] - #endif - #endif - #ifndef CYTHON_FALLTHROUGH - #if __has_cpp_attribute(clang::fallthrough) - #define CYTHON_FALLTHROUGH [[clang::fallthrough]] - #elif __has_cpp_attribute(gnu::fallthrough) - #define CYTHON_FALLTHROUGH [[gnu::fallthrough]] - #endif - #endif - #endif - #ifndef CYTHON_FALLTHROUGH - #if __has_attribute(fallthrough) - #define CYTHON_FALLTHROUGH __attribute__((fallthrough)) - #else - #define CYTHON_FALLTHROUGH - #endif - #endif - #if defined(__clang__) && defined(__apple_build_version__) - #if __apple_build_version__ < 7000000 - #undef CYTHON_FALLTHROUGH - #define CYTHON_FALLTHROUGH - #endif - #endif -#endif -#ifdef __cplusplus - template - struct __PYX_IS_UNSIGNED_IMPL {static const bool value = T(0) < T(-1);}; - #define __PYX_IS_UNSIGNED(type) (__PYX_IS_UNSIGNED_IMPL::value) -#else - #define __PYX_IS_UNSIGNED(type) (((type)-1) > 0) -#endif -#if CYTHON_COMPILING_IN_PYPY == 1 - #define __PYX_NEED_TP_PRINT_SLOT (PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x030A0000) -#else - #define __PYX_NEED_TP_PRINT_SLOT (PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000) -#endif -#define __PYX_REINTERPRET_FUNCION(func_pointer, other_pointer) ((func_pointer)(void(*)(void))(other_pointer)) - -#ifndef CYTHON_INLINE - #if defined(__clang__) - #define CYTHON_INLINE __inline__ __attribute__ ((__unused__)) - #elif defined(__GNUC__) - #define CYTHON_INLINE __inline__ - #elif defined(_MSC_VER) - #define CYTHON_INLINE __inline - #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L - #define CYTHON_INLINE inline - #else - #define CYTHON_INLINE - #endif -#endif - -#define __PYX_BUILD_PY_SSIZE_T "n" -#define CYTHON_FORMAT_SSIZE_T "z" -#if PY_MAJOR_VERSION < 3 - #define __Pyx_BUILTIN_MODULE_NAME "__builtin__" - #define __Pyx_DefaultClassType PyClass_Type - #define __Pyx_PyCode_New(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ - PyCode_New(a+k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) -#else - #define __Pyx_BUILTIN_MODULE_NAME "builtins" - #define __Pyx_DefaultClassType PyType_Type -#if CYTHON_COMPILING_IN_LIMITED_API - static CYTHON_INLINE PyObject* __Pyx_PyCode_New(int a, int p, int k, int l, int s, int f, - PyObject *code, PyObject *c, PyObject* n, PyObject *v, - PyObject *fv, PyObject *cell, PyObject* fn, - PyObject *name, int fline, PyObject *lnos) { - PyObject *exception_table = NULL; - PyObject *types_module=NULL, *code_type=NULL, *result=NULL; - #if __PYX_LIMITED_VERSION_HEX < 0x030B0000 - PyObject *version_info; - PyObject *py_minor_version = NULL; - #endif - long minor_version = 0; - PyObject *type, *value, *traceback; - PyErr_Fetch(&type, &value, &traceback); - #if __PYX_LIMITED_VERSION_HEX >= 0x030B0000 - minor_version = 11; - #else - if (!(version_info = PySys_GetObject("version_info"))) goto end; - if (!(py_minor_version = PySequence_GetItem(version_info, 1))) goto end; - minor_version = PyLong_AsLong(py_minor_version); - Py_DECREF(py_minor_version); - if (minor_version == -1 && PyErr_Occurred()) goto end; - #endif - if (!(types_module = PyImport_ImportModule("types"))) goto end; - if (!(code_type = PyObject_GetAttrString(types_module, "CodeType"))) goto end; - if (minor_version <= 7) { - (void)p; - result = PyObject_CallFunction(code_type, "iiiiiOOOOOOiOO", a, k, l, s, f, code, - c, n, v, fn, name, fline, lnos, fv, cell); - } else if (minor_version <= 10) { - result = PyObject_CallFunction(code_type, "iiiiiiOOOOOOiOO", a,p, k, l, s, f, code, - c, n, v, fn, name, fline, lnos, fv, cell); - } else { - if (!(exception_table = PyBytes_FromStringAndSize(NULL, 0))) goto end; - result = PyObject_CallFunction(code_type, "iiiiiiOOOOOOOiOO", a,p, k, l, s, f, code, - c, n, v, fn, name, name, fline, lnos, exception_table, fv, cell); - } - end: - Py_XDECREF(code_type); - Py_XDECREF(exception_table); - Py_XDECREF(types_module); - if (type) { - PyErr_Restore(type, value, traceback); - } - return result; - } - #ifndef CO_OPTIMIZED - #define CO_OPTIMIZED 0x0001 - #endif - #ifndef CO_NEWLOCALS - #define CO_NEWLOCALS 0x0002 - #endif - #ifndef CO_VARARGS - #define CO_VARARGS 0x0004 - #endif - #ifndef CO_VARKEYWORDS - #define CO_VARKEYWORDS 0x0008 - #endif - #ifndef CO_ASYNC_GENERATOR - #define CO_ASYNC_GENERATOR 0x0200 - #endif - #ifndef CO_GENERATOR - #define CO_GENERATOR 0x0020 - #endif - #ifndef CO_COROUTINE - #define CO_COROUTINE 0x0080 - #endif -#elif PY_VERSION_HEX >= 0x030B0000 - static CYTHON_INLINE PyCodeObject* __Pyx_PyCode_New(int a, int p, int k, int l, int s, int f, - PyObject *code, PyObject *c, PyObject* n, PyObject *v, - PyObject *fv, PyObject *cell, PyObject* fn, - PyObject *name, int fline, PyObject *lnos) { - PyCodeObject *result; - PyObject *empty_bytes = PyBytes_FromStringAndSize("", 0); - if (!empty_bytes) return NULL; - result = - #if PY_VERSION_HEX >= 0x030C0000 - PyUnstable_Code_NewWithPosOnlyArgs - #else - PyCode_NewWithPosOnlyArgs - #endif - (a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, name, fline, lnos, empty_bytes); - Py_DECREF(empty_bytes); - return result; - } -#elif PY_VERSION_HEX >= 0x030800B2 && !CYTHON_COMPILING_IN_PYPY - #define __Pyx_PyCode_New(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ - PyCode_NewWithPosOnlyArgs(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) -#else - #define __Pyx_PyCode_New(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ - PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) -#endif -#endif -#if PY_VERSION_HEX >= 0x030900A4 || defined(Py_IS_TYPE) - #define __Pyx_IS_TYPE(ob, type) Py_IS_TYPE(ob, type) -#else - #define __Pyx_IS_TYPE(ob, type) (((const PyObject*)ob)->ob_type == (type)) -#endif -#if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_Is) - #define __Pyx_Py_Is(x, y) Py_Is(x, y) -#else - #define __Pyx_Py_Is(x, y) ((x) == (y)) -#endif -#if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_IsNone) - #define __Pyx_Py_IsNone(ob) Py_IsNone(ob) -#else - #define __Pyx_Py_IsNone(ob) __Pyx_Py_Is((ob), Py_None) -#endif -#if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_IsTrue) - #define __Pyx_Py_IsTrue(ob) Py_IsTrue(ob) -#else - #define __Pyx_Py_IsTrue(ob) __Pyx_Py_Is((ob), Py_True) -#endif -#if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_IsFalse) - #define __Pyx_Py_IsFalse(ob) Py_IsFalse(ob) -#else - #define __Pyx_Py_IsFalse(ob) __Pyx_Py_Is((ob), Py_False) -#endif -#define __Pyx_NoneAsNull(obj) (__Pyx_Py_IsNone(obj) ? NULL : (obj)) -#if PY_VERSION_HEX >= 0x030900F0 && !CYTHON_COMPILING_IN_PYPY - #define __Pyx_PyObject_GC_IsFinalized(o) PyObject_GC_IsFinalized(o) -#else - #define __Pyx_PyObject_GC_IsFinalized(o) _PyGC_FINALIZED(o) -#endif -#ifndef CO_COROUTINE - #define CO_COROUTINE 0x80 -#endif -#ifndef CO_ASYNC_GENERATOR - #define CO_ASYNC_GENERATOR 0x200 -#endif -#ifndef Py_TPFLAGS_CHECKTYPES - #define Py_TPFLAGS_CHECKTYPES 0 -#endif -#ifndef Py_TPFLAGS_HAVE_INDEX - #define Py_TPFLAGS_HAVE_INDEX 0 -#endif -#ifndef Py_TPFLAGS_HAVE_NEWBUFFER - #define Py_TPFLAGS_HAVE_NEWBUFFER 0 -#endif -#ifndef Py_TPFLAGS_HAVE_FINALIZE - #define Py_TPFLAGS_HAVE_FINALIZE 0 -#endif -#ifndef Py_TPFLAGS_SEQUENCE - #define Py_TPFLAGS_SEQUENCE 0 -#endif -#ifndef Py_TPFLAGS_MAPPING - #define Py_TPFLAGS_MAPPING 0 -#endif -#ifndef METH_STACKLESS - #define METH_STACKLESS 0 -#endif -#if PY_VERSION_HEX <= 0x030700A3 || !defined(METH_FASTCALL) - #ifndef METH_FASTCALL - #define METH_FASTCALL 0x80 - #endif - typedef PyObject *(*__Pyx_PyCFunctionFast) (PyObject *self, PyObject *const *args, Py_ssize_t nargs); - typedef PyObject *(*__Pyx_PyCFunctionFastWithKeywords) (PyObject *self, PyObject *const *args, - Py_ssize_t nargs, PyObject *kwnames); -#else - #define __Pyx_PyCFunctionFast _PyCFunctionFast - #define __Pyx_PyCFunctionFastWithKeywords _PyCFunctionFastWithKeywords -#endif -#if CYTHON_METH_FASTCALL - #define __Pyx_METH_FASTCALL METH_FASTCALL - #define __Pyx_PyCFunction_FastCall __Pyx_PyCFunctionFast - #define __Pyx_PyCFunction_FastCallWithKeywords __Pyx_PyCFunctionFastWithKeywords -#else - #define __Pyx_METH_FASTCALL METH_VARARGS - #define __Pyx_PyCFunction_FastCall PyCFunction - #define __Pyx_PyCFunction_FastCallWithKeywords PyCFunctionWithKeywords -#endif -#if CYTHON_VECTORCALL - #define __pyx_vectorcallfunc vectorcallfunc - #define __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET PY_VECTORCALL_ARGUMENTS_OFFSET - #define __Pyx_PyVectorcall_NARGS(n) PyVectorcall_NARGS((size_t)(n)) -#elif CYTHON_BACKPORT_VECTORCALL - typedef PyObject *(*__pyx_vectorcallfunc)(PyObject *callable, PyObject *const *args, - size_t nargsf, PyObject *kwnames); - #define __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET ((size_t)1 << (8 * sizeof(size_t) - 1)) - #define __Pyx_PyVectorcall_NARGS(n) ((Py_ssize_t)(((size_t)(n)) & ~__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)) -#else - #define __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET 0 - #define __Pyx_PyVectorcall_NARGS(n) ((Py_ssize_t)(n)) -#endif -#if PY_MAJOR_VERSION >= 0x030900B1 -#define __Pyx_PyCFunction_CheckExact(func) PyCFunction_CheckExact(func) -#else -#define __Pyx_PyCFunction_CheckExact(func) PyCFunction_Check(func) -#endif -#define __Pyx_CyOrPyCFunction_Check(func) PyCFunction_Check(func) -#if CYTHON_COMPILING_IN_CPYTHON -#define __Pyx_CyOrPyCFunction_GET_FUNCTION(func) (((PyCFunctionObject*)(func))->m_ml->ml_meth) -#elif !CYTHON_COMPILING_IN_LIMITED_API -#define __Pyx_CyOrPyCFunction_GET_FUNCTION(func) PyCFunction_GET_FUNCTION(func) -#endif -#if CYTHON_COMPILING_IN_CPYTHON -#define __Pyx_CyOrPyCFunction_GET_FLAGS(func) (((PyCFunctionObject*)(func))->m_ml->ml_flags) -static CYTHON_INLINE PyObject* __Pyx_CyOrPyCFunction_GET_SELF(PyObject *func) { - return (__Pyx_CyOrPyCFunction_GET_FLAGS(func) & METH_STATIC) ? NULL : ((PyCFunctionObject*)func)->m_self; -} -#endif -static CYTHON_INLINE int __Pyx__IsSameCFunction(PyObject *func, void *cfunc) { -#if CYTHON_COMPILING_IN_LIMITED_API - return PyCFunction_Check(func) && PyCFunction_GetFunction(func) == (PyCFunction) cfunc; -#else - return PyCFunction_Check(func) && PyCFunction_GET_FUNCTION(func) == (PyCFunction) cfunc; -#endif -} -#define __Pyx_IsSameCFunction(func, cfunc) __Pyx__IsSameCFunction(func, cfunc) -#if __PYX_LIMITED_VERSION_HEX < 0x030900B1 - #define __Pyx_PyType_FromModuleAndSpec(m, s, b) ((void)m, PyType_FromSpecWithBases(s, b)) - typedef PyObject *(*__Pyx_PyCMethod)(PyObject *, PyTypeObject *, PyObject *const *, size_t, PyObject *); -#else - #define __Pyx_PyType_FromModuleAndSpec(m, s, b) PyType_FromModuleAndSpec(m, s, b) - #define __Pyx_PyCMethod PyCMethod -#endif -#ifndef METH_METHOD - #define METH_METHOD 0x200 -#endif -#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc) - #define PyObject_Malloc(s) PyMem_Malloc(s) - #define PyObject_Free(p) PyMem_Free(p) - #define PyObject_Realloc(p) PyMem_Realloc(p) -#endif -#if CYTHON_COMPILING_IN_LIMITED_API - #define __Pyx_PyCode_HasFreeVars(co) (PyCode_GetNumFree(co) > 0) - #define __Pyx_PyFrame_SetLineNumber(frame, lineno) -#else - #define __Pyx_PyCode_HasFreeVars(co) (PyCode_GetNumFree(co) > 0) - #define __Pyx_PyFrame_SetLineNumber(frame, lineno) (frame)->f_lineno = (lineno) -#endif -#if CYTHON_COMPILING_IN_LIMITED_API - #define __Pyx_PyThreadState_Current PyThreadState_Get() -#elif !CYTHON_FAST_THREAD_STATE - #define __Pyx_PyThreadState_Current PyThreadState_GET() -#elif PY_VERSION_HEX >= 0x030d00A1 - #define __Pyx_PyThreadState_Current PyThreadState_GetUnchecked() -#elif PY_VERSION_HEX >= 0x03060000 - #define __Pyx_PyThreadState_Current _PyThreadState_UncheckedGet() -#elif PY_VERSION_HEX >= 0x03000000 - #define __Pyx_PyThreadState_Current PyThreadState_GET() -#else - #define __Pyx_PyThreadState_Current _PyThreadState_Current -#endif -#if CYTHON_COMPILING_IN_LIMITED_API -static CYTHON_INLINE void *__Pyx_PyModule_GetState(PyObject *op) -{ - void *result; - result = PyModule_GetState(op); - if (!result) - Py_FatalError("Couldn't find the module state"); - return result; -} -#endif -#define __Pyx_PyObject_GetSlot(obj, name, func_ctype) __Pyx_PyType_GetSlot(Py_TYPE(obj), name, func_ctype) -#if CYTHON_COMPILING_IN_LIMITED_API - #define __Pyx_PyType_GetSlot(type, name, func_ctype) ((func_ctype) PyType_GetSlot((type), Py_##name)) -#else - #define __Pyx_PyType_GetSlot(type, name, func_ctype) ((type)->name) -#endif -#if PY_VERSION_HEX < 0x030700A2 && !defined(PyThread_tss_create) && !defined(Py_tss_NEEDS_INIT) -#include "pythread.h" -#define Py_tss_NEEDS_INIT 0 -typedef int Py_tss_t; -static CYTHON_INLINE int PyThread_tss_create(Py_tss_t *key) { - *key = PyThread_create_key(); - return 0; -} -static CYTHON_INLINE Py_tss_t * PyThread_tss_alloc(void) { - Py_tss_t *key = (Py_tss_t *)PyObject_Malloc(sizeof(Py_tss_t)); - *key = Py_tss_NEEDS_INIT; - return key; -} -static CYTHON_INLINE void PyThread_tss_free(Py_tss_t *key) { - PyObject_Free(key); -} -static CYTHON_INLINE int PyThread_tss_is_created(Py_tss_t *key) { - return *key != Py_tss_NEEDS_INIT; -} -static CYTHON_INLINE void PyThread_tss_delete(Py_tss_t *key) { - PyThread_delete_key(*key); - *key = Py_tss_NEEDS_INIT; -} -static CYTHON_INLINE int PyThread_tss_set(Py_tss_t *key, void *value) { - return PyThread_set_key_value(*key, value); -} -static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) { - return PyThread_get_key_value(*key); -} -#endif -#if PY_MAJOR_VERSION < 3 - #if CYTHON_COMPILING_IN_PYPY - #if PYPY_VERSION_NUM < 0x07030600 - #if defined(__cplusplus) && __cplusplus >= 201402L - [[deprecated("`with nogil:` inside a nogil function will not release the GIL in PyPy2 < 7.3.6")]] - #elif defined(__GNUC__) || defined(__clang__) - __attribute__ ((__deprecated__("`with nogil:` inside a nogil function will not release the GIL in PyPy2 < 7.3.6"))) - #elif defined(_MSC_VER) - __declspec(deprecated("`with nogil:` inside a nogil function will not release the GIL in PyPy2 < 7.3.6")) - #endif - static CYTHON_INLINE int PyGILState_Check(void) { - return 0; - } - #else // PYPY_VERSION_NUM < 0x07030600 - #endif // PYPY_VERSION_NUM < 0x07030600 - #else - static CYTHON_INLINE int PyGILState_Check(void) { - PyThreadState * tstate = _PyThreadState_Current; - return tstate && (tstate == PyGILState_GetThisThreadState()); - } - #endif -#endif -#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030d0000 || defined(_PyDict_NewPresized) -#define __Pyx_PyDict_NewPresized(n) ((n <= 8) ? PyDict_New() : _PyDict_NewPresized(n)) -#else -#define __Pyx_PyDict_NewPresized(n) PyDict_New() -#endif -#if PY_MAJOR_VERSION >= 3 || CYTHON_FUTURE_DIVISION - #define __Pyx_PyNumber_Divide(x,y) PyNumber_TrueDivide(x,y) - #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceTrueDivide(x,y) -#else - #define __Pyx_PyNumber_Divide(x,y) PyNumber_Divide(x,y) - #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceDivide(x,y) -#endif -#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX > 0x030600B4 && PY_VERSION_HEX < 0x030d0000 && CYTHON_USE_UNICODE_INTERNALS -#define __Pyx_PyDict_GetItemStrWithError(dict, name) _PyDict_GetItem_KnownHash(dict, name, ((PyASCIIObject *) name)->hash) -static CYTHON_INLINE PyObject * __Pyx_PyDict_GetItemStr(PyObject *dict, PyObject *name) { - PyObject *res = __Pyx_PyDict_GetItemStrWithError(dict, name); - if (res == NULL) PyErr_Clear(); - return res; -} -#elif PY_MAJOR_VERSION >= 3 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07020000) -#define __Pyx_PyDict_GetItemStrWithError PyDict_GetItemWithError -#define __Pyx_PyDict_GetItemStr PyDict_GetItem -#else -static CYTHON_INLINE PyObject * __Pyx_PyDict_GetItemStrWithError(PyObject *dict, PyObject *name) { -#if CYTHON_COMPILING_IN_PYPY - return PyDict_GetItem(dict, name); -#else - PyDictEntry *ep; - PyDictObject *mp = (PyDictObject*) dict; - long hash = ((PyStringObject *) name)->ob_shash; - assert(hash != -1); - ep = (mp->ma_lookup)(mp, name, hash); - if (ep == NULL) { - return NULL; - } - return ep->me_value; -#endif -} -#define __Pyx_PyDict_GetItemStr PyDict_GetItem -#endif -#if CYTHON_USE_TYPE_SLOTS - #define __Pyx_PyType_GetFlags(tp) (((PyTypeObject *)tp)->tp_flags) - #define __Pyx_PyType_HasFeature(type, feature) ((__Pyx_PyType_GetFlags(type) & (feature)) != 0) - #define __Pyx_PyObject_GetIterNextFunc(obj) (Py_TYPE(obj)->tp_iternext) -#else - #define __Pyx_PyType_GetFlags(tp) (PyType_GetFlags((PyTypeObject *)tp)) - #define __Pyx_PyType_HasFeature(type, feature) PyType_HasFeature(type, feature) - #define __Pyx_PyObject_GetIterNextFunc(obj) PyIter_Next -#endif -#if CYTHON_COMPILING_IN_LIMITED_API - #define __Pyx_SetItemOnTypeDict(tp, k, v) PyObject_GenericSetAttr((PyObject*)tp, k, v) -#else - #define __Pyx_SetItemOnTypeDict(tp, k, v) PyDict_SetItem(tp->tp_dict, k, v) -#endif -#if CYTHON_USE_TYPE_SPECS && PY_VERSION_HEX >= 0x03080000 -#define __Pyx_PyHeapTypeObject_GC_Del(obj) {\ - PyTypeObject *type = Py_TYPE((PyObject*)obj);\ - assert(__Pyx_PyType_HasFeature(type, Py_TPFLAGS_HEAPTYPE));\ - PyObject_GC_Del(obj);\ - Py_DECREF(type);\ -} -#else -#define __Pyx_PyHeapTypeObject_GC_Del(obj) PyObject_GC_Del(obj) -#endif -#if CYTHON_COMPILING_IN_LIMITED_API - #define CYTHON_PEP393_ENABLED 1 - #define __Pyx_PyUnicode_READY(op) (0) - #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GetLength(u) - #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_ReadChar(u, i) - #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) ((void)u, 1114111U) - #define __Pyx_PyUnicode_KIND(u) ((void)u, (0)) - #define __Pyx_PyUnicode_DATA(u) ((void*)u) - #define __Pyx_PyUnicode_READ(k, d, i) ((void)k, PyUnicode_ReadChar((PyObject*)(d), i)) - #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GetLength(u)) -#elif PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND) - #define CYTHON_PEP393_ENABLED 1 - #if PY_VERSION_HEX >= 0x030C0000 - #define __Pyx_PyUnicode_READY(op) (0) - #else - #define __Pyx_PyUnicode_READY(op) (likely(PyUnicode_IS_READY(op)) ?\ - 0 : _PyUnicode_Ready((PyObject *)(op))) - #endif - #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_LENGTH(u) - #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i) - #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) PyUnicode_MAX_CHAR_VALUE(u) - #define __Pyx_PyUnicode_KIND(u) ((int)PyUnicode_KIND(u)) - #define __Pyx_PyUnicode_DATA(u) PyUnicode_DATA(u) - #define __Pyx_PyUnicode_READ(k, d, i) PyUnicode_READ(k, d, i) - #define __Pyx_PyUnicode_WRITE(k, d, i, ch) PyUnicode_WRITE(k, d, i, (Py_UCS4) ch) - #if PY_VERSION_HEX >= 0x030C0000 - #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_LENGTH(u)) - #else - #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03090000 - #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : ((PyCompactUnicodeObject *)(u))->wstr_length)) - #else - #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : PyUnicode_GET_SIZE(u))) - #endif - #endif -#else - #define CYTHON_PEP393_ENABLED 0 - #define PyUnicode_1BYTE_KIND 1 - #define PyUnicode_2BYTE_KIND 2 - #define PyUnicode_4BYTE_KIND 4 - #define __Pyx_PyUnicode_READY(op) (0) - #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_SIZE(u) - #define __Pyx_PyUnicode_READ_CHAR(u, i) ((Py_UCS4)(PyUnicode_AS_UNICODE(u)[i])) - #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) ((sizeof(Py_UNICODE) == 2) ? 65535U : 1114111U) - #define __Pyx_PyUnicode_KIND(u) ((int)sizeof(Py_UNICODE)) - #define __Pyx_PyUnicode_DATA(u) ((void*)PyUnicode_AS_UNICODE(u)) - #define __Pyx_PyUnicode_READ(k, d, i) ((void)(k), (Py_UCS4)(((Py_UNICODE*)d)[i])) - #define __Pyx_PyUnicode_WRITE(k, d, i, ch) (((void)(k)), ((Py_UNICODE*)d)[i] = (Py_UNICODE) ch) - #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_SIZE(u)) -#endif -#if CYTHON_COMPILING_IN_PYPY - #define __Pyx_PyUnicode_Concat(a, b) PyNumber_Add(a, b) - #define __Pyx_PyUnicode_ConcatSafe(a, b) PyNumber_Add(a, b) -#else - #define __Pyx_PyUnicode_Concat(a, b) PyUnicode_Concat(a, b) - #define __Pyx_PyUnicode_ConcatSafe(a, b) ((unlikely((a) == Py_None) || unlikely((b) == Py_None)) ?\ - PyNumber_Add(a, b) : __Pyx_PyUnicode_Concat(a, b)) -#endif -#if CYTHON_COMPILING_IN_PYPY - #if !defined(PyUnicode_DecodeUnicodeEscape) - #define PyUnicode_DecodeUnicodeEscape(s, size, errors) PyUnicode_Decode(s, size, "unicode_escape", errors) - #endif - #if !defined(PyUnicode_Contains) || (PY_MAJOR_VERSION == 2 && PYPY_VERSION_NUM < 0x07030500) - #undef PyUnicode_Contains - #define PyUnicode_Contains(u, s) PySequence_Contains(u, s) - #endif - #if !defined(PyByteArray_Check) - #define PyByteArray_Check(obj) PyObject_TypeCheck(obj, &PyByteArray_Type) - #endif - #if !defined(PyObject_Format) - #define PyObject_Format(obj, fmt) PyObject_CallMethod(obj, "__format__", "O", fmt) - #endif -#endif -#define __Pyx_PyString_FormatSafe(a, b) ((unlikely((a) == Py_None || (PyString_Check(b) && !PyString_CheckExact(b)))) ? PyNumber_Remainder(a, b) : __Pyx_PyString_Format(a, b)) -#define __Pyx_PyUnicode_FormatSafe(a, b) ((unlikely((a) == Py_None || (PyUnicode_Check(b) && !PyUnicode_CheckExact(b)))) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b)) -#if PY_MAJOR_VERSION >= 3 - #define __Pyx_PyString_Format(a, b) PyUnicode_Format(a, b) -#else - #define __Pyx_PyString_Format(a, b) PyString_Format(a, b) -#endif -#if PY_MAJOR_VERSION < 3 && !defined(PyObject_ASCII) - #define PyObject_ASCII(o) PyObject_Repr(o) -#endif -#if PY_MAJOR_VERSION >= 3 - #define PyBaseString_Type PyUnicode_Type - #define PyStringObject PyUnicodeObject - #define PyString_Type PyUnicode_Type - #define PyString_Check PyUnicode_Check - #define PyString_CheckExact PyUnicode_CheckExact -#ifndef PyObject_Unicode - #define PyObject_Unicode PyObject_Str -#endif -#endif -#if PY_MAJOR_VERSION >= 3 - #define __Pyx_PyBaseString_Check(obj) PyUnicode_Check(obj) - #define __Pyx_PyBaseString_CheckExact(obj) PyUnicode_CheckExact(obj) -#else - #define __Pyx_PyBaseString_Check(obj) (PyString_Check(obj) || PyUnicode_Check(obj)) - #define __Pyx_PyBaseString_CheckExact(obj) (PyString_CheckExact(obj) || PyUnicode_CheckExact(obj)) -#endif -#if CYTHON_COMPILING_IN_CPYTHON - #define __Pyx_PySequence_ListKeepNew(obj)\ - (likely(PyList_CheckExact(obj) && Py_REFCNT(obj) == 1) ? __Pyx_NewRef(obj) : PySequence_List(obj)) -#else - #define __Pyx_PySequence_ListKeepNew(obj) PySequence_List(obj) -#endif -#ifndef PySet_CheckExact - #define PySet_CheckExact(obj) __Pyx_IS_TYPE(obj, &PySet_Type) -#endif -#if PY_VERSION_HEX >= 0x030900A4 - #define __Pyx_SET_REFCNT(obj, refcnt) Py_SET_REFCNT(obj, refcnt) - #define __Pyx_SET_SIZE(obj, size) Py_SET_SIZE(obj, size) -#else - #define __Pyx_SET_REFCNT(obj, refcnt) Py_REFCNT(obj) = (refcnt) - #define __Pyx_SET_SIZE(obj, size) Py_SIZE(obj) = (size) -#endif -#if CYTHON_ASSUME_SAFE_MACROS - #define __Pyx_PySequence_ITEM(o, i) PySequence_ITEM(o, i) - #define __Pyx_PySequence_SIZE(seq) Py_SIZE(seq) - #define __Pyx_PyTuple_SET_ITEM(o, i, v) (PyTuple_SET_ITEM(o, i, v), (0)) - #define __Pyx_PyList_SET_ITEM(o, i, v) (PyList_SET_ITEM(o, i, v), (0)) - #define __Pyx_PyTuple_GET_SIZE(o) PyTuple_GET_SIZE(o) - #define __Pyx_PyList_GET_SIZE(o) PyList_GET_SIZE(o) - #define __Pyx_PySet_GET_SIZE(o) PySet_GET_SIZE(o) - #define __Pyx_PyBytes_GET_SIZE(o) PyBytes_GET_SIZE(o) - #define __Pyx_PyByteArray_GET_SIZE(o) PyByteArray_GET_SIZE(o) -#else - #define __Pyx_PySequence_ITEM(o, i) PySequence_GetItem(o, i) - #define __Pyx_PySequence_SIZE(seq) PySequence_Size(seq) - #define __Pyx_PyTuple_SET_ITEM(o, i, v) PyTuple_SetItem(o, i, v) - #define __Pyx_PyList_SET_ITEM(o, i, v) PyList_SetItem(o, i, v) - #define __Pyx_PyTuple_GET_SIZE(o) PyTuple_Size(o) - #define __Pyx_PyList_GET_SIZE(o) PyList_Size(o) - #define __Pyx_PySet_GET_SIZE(o) PySet_Size(o) - #define __Pyx_PyBytes_GET_SIZE(o) PyBytes_Size(o) - #define __Pyx_PyByteArray_GET_SIZE(o) PyByteArray_Size(o) -#endif -#if PY_VERSION_HEX >= 0x030d00A1 - #define __Pyx_PyImport_AddModuleRef(name) PyImport_AddModuleRef(name) -#else - static CYTHON_INLINE PyObject *__Pyx_PyImport_AddModuleRef(const char *name) { - PyObject *module = PyImport_AddModule(name); - Py_XINCREF(module); - return module; - } -#endif -#if PY_MAJOR_VERSION >= 3 - #define PyIntObject PyLongObject - #define PyInt_Type PyLong_Type - #define PyInt_Check(op) PyLong_Check(op) - #define PyInt_CheckExact(op) PyLong_CheckExact(op) - #define __Pyx_Py3Int_Check(op) PyLong_Check(op) - #define __Pyx_Py3Int_CheckExact(op) PyLong_CheckExact(op) - #define PyInt_FromString PyLong_FromString - #define PyInt_FromUnicode PyLong_FromUnicode - #define PyInt_FromLong PyLong_FromLong - #define PyInt_FromSize_t PyLong_FromSize_t - #define PyInt_FromSsize_t PyLong_FromSsize_t - #define PyInt_AsLong PyLong_AsLong - #define PyInt_AS_LONG PyLong_AS_LONG - #define PyInt_AsSsize_t PyLong_AsSsize_t - #define PyInt_AsUnsignedLongMask PyLong_AsUnsignedLongMask - #define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask - #define PyNumber_Int PyNumber_Long -#else - #define __Pyx_Py3Int_Check(op) (PyLong_Check(op) || PyInt_Check(op)) - #define __Pyx_Py3Int_CheckExact(op) (PyLong_CheckExact(op) || PyInt_CheckExact(op)) -#endif -#if PY_MAJOR_VERSION >= 3 - #define PyBoolObject PyLongObject -#endif -#if PY_MAJOR_VERSION >= 3 && CYTHON_COMPILING_IN_PYPY - #ifndef PyUnicode_InternFromString - #define PyUnicode_InternFromString(s) PyUnicode_FromString(s) - #endif -#endif -#if PY_VERSION_HEX < 0x030200A4 - typedef long Py_hash_t; - #define __Pyx_PyInt_FromHash_t PyInt_FromLong - #define __Pyx_PyInt_AsHash_t __Pyx_PyIndex_AsHash_t -#else - #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t - #define __Pyx_PyInt_AsHash_t __Pyx_PyIndex_AsSsize_t -#endif -#if CYTHON_USE_ASYNC_SLOTS - #if PY_VERSION_HEX >= 0x030500B1 - #define __Pyx_PyAsyncMethodsStruct PyAsyncMethods - #define __Pyx_PyType_AsAsync(obj) (Py_TYPE(obj)->tp_as_async) - #else - #define __Pyx_PyType_AsAsync(obj) ((__Pyx_PyAsyncMethodsStruct*) (Py_TYPE(obj)->tp_reserved)) - #endif -#else - #define __Pyx_PyType_AsAsync(obj) NULL -#endif -#ifndef __Pyx_PyAsyncMethodsStruct - typedef struct { - unaryfunc am_await; - unaryfunc am_aiter; - unaryfunc am_anext; - } __Pyx_PyAsyncMethodsStruct; -#endif - -#if defined(_WIN32) || defined(WIN32) || defined(MS_WINDOWS) - #if !defined(_USE_MATH_DEFINES) - #define _USE_MATH_DEFINES - #endif -#endif -#include -#ifdef NAN -#define __PYX_NAN() ((float) NAN) -#else -static CYTHON_INLINE float __PYX_NAN() { - float value; - memset(&value, 0xFF, sizeof(value)); - return value; -} -#endif -#if defined(__CYGWIN__) && defined(_LDBL_EQ_DBL) -#define __Pyx_truncl trunc -#else -#define __Pyx_truncl truncl -#endif - -#define __PYX_MARK_ERR_POS(f_index, lineno) \ - { __pyx_filename = __pyx_f[f_index]; (void)__pyx_filename; __pyx_lineno = lineno; (void)__pyx_lineno; __pyx_clineno = __LINE__; (void)__pyx_clineno; } -#define __PYX_ERR(f_index, lineno, Ln_error) \ - { __PYX_MARK_ERR_POS(f_index, lineno) goto Ln_error; } - -#ifdef CYTHON_EXTERN_C - #undef __PYX_EXTERN_C - #define __PYX_EXTERN_C CYTHON_EXTERN_C -#elif defined(__PYX_EXTERN_C) - #ifdef _MSC_VER - #pragma message ("Please do not define the '__PYX_EXTERN_C' macro externally. Use 'CYTHON_EXTERN_C' instead.") - #else - #warning Please do not define the '__PYX_EXTERN_C' macro externally. Use 'CYTHON_EXTERN_C' instead. - #endif -#else - #ifdef __cplusplus - #define __PYX_EXTERN_C extern "C" - #else - #define __PYX_EXTERN_C extern - #endif -#endif - -#define __PYX_HAVE__tinyr -#define __PYX_HAVE_API__tinyr -/* Early includes */ -#include -#ifdef _OPENMP -#include -#endif /* _OPENMP */ - -#if defined(PYREX_WITHOUT_ASSERTIONS) && !defined(CYTHON_WITHOUT_ASSERTIONS) -#define CYTHON_WITHOUT_ASSERTIONS -#endif - -typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* encoding; - const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry; - -#define __PYX_DEFAULT_STRING_ENCODING_IS_ASCII 0 -#define __PYX_DEFAULT_STRING_ENCODING_IS_UTF8 0 -#define __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT (PY_MAJOR_VERSION >= 3 && __PYX_DEFAULT_STRING_ENCODING_IS_UTF8) -#define __PYX_DEFAULT_STRING_ENCODING "" -#define __Pyx_PyObject_FromString __Pyx_PyBytes_FromString -#define __Pyx_PyObject_FromStringAndSize __Pyx_PyBytes_FromStringAndSize -#define __Pyx_uchar_cast(c) ((unsigned char)c) -#define __Pyx_long_cast(x) ((long)x) -#define __Pyx_fits_Py_ssize_t(v, type, is_signed) (\ - (sizeof(type) < sizeof(Py_ssize_t)) ||\ - (sizeof(type) > sizeof(Py_ssize_t) &&\ - likely(v < (type)PY_SSIZE_T_MAX ||\ - v == (type)PY_SSIZE_T_MAX) &&\ - (!is_signed || likely(v > (type)PY_SSIZE_T_MIN ||\ - v == (type)PY_SSIZE_T_MIN))) ||\ - (sizeof(type) == sizeof(Py_ssize_t) &&\ - (is_signed || likely(v < (type)PY_SSIZE_T_MAX ||\ - v == (type)PY_SSIZE_T_MAX))) ) -static CYTHON_INLINE int __Pyx_is_valid_index(Py_ssize_t i, Py_ssize_t limit) { - return (size_t) i < (size_t) limit; -} -#if defined (__cplusplus) && __cplusplus >= 201103L - #include - #define __Pyx_sst_abs(value) std::abs(value) -#elif SIZEOF_INT >= SIZEOF_SIZE_T - #define __Pyx_sst_abs(value) abs(value) -#elif SIZEOF_LONG >= SIZEOF_SIZE_T - #define __Pyx_sst_abs(value) labs(value) -#elif defined (_MSC_VER) - #define __Pyx_sst_abs(value) ((Py_ssize_t)_abs64(value)) -#elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L - #define __Pyx_sst_abs(value) llabs(value) -#elif defined (__GNUC__) - #define __Pyx_sst_abs(value) __builtin_llabs(value) -#else - #define __Pyx_sst_abs(value) ((value<0) ? -value : value) -#endif -static CYTHON_INLINE Py_ssize_t __Pyx_ssize_strlen(const char *s); -static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject*); -static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject*, Py_ssize_t* length); -static CYTHON_INLINE PyObject* __Pyx_PyByteArray_FromString(const char*); -#define __Pyx_PyByteArray_FromStringAndSize(s, l) PyByteArray_FromStringAndSize((const char*)s, l) -#define __Pyx_PyBytes_FromString PyBytes_FromString -#define __Pyx_PyBytes_FromStringAndSize PyBytes_FromStringAndSize -static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char*); -#if PY_MAJOR_VERSION < 3 - #define __Pyx_PyStr_FromString __Pyx_PyBytes_FromString - #define __Pyx_PyStr_FromStringAndSize __Pyx_PyBytes_FromStringAndSize -#else - #define __Pyx_PyStr_FromString __Pyx_PyUnicode_FromString - #define __Pyx_PyStr_FromStringAndSize __Pyx_PyUnicode_FromStringAndSize -#endif -#define __Pyx_PyBytes_AsWritableString(s) ((char*) PyBytes_AS_STRING(s)) -#define __Pyx_PyBytes_AsWritableSString(s) ((signed char*) PyBytes_AS_STRING(s)) -#define __Pyx_PyBytes_AsWritableUString(s) ((unsigned char*) PyBytes_AS_STRING(s)) -#define __Pyx_PyBytes_AsString(s) ((const char*) PyBytes_AS_STRING(s)) -#define __Pyx_PyBytes_AsSString(s) ((const signed char*) PyBytes_AS_STRING(s)) -#define __Pyx_PyBytes_AsUString(s) ((const unsigned char*) PyBytes_AS_STRING(s)) -#define __Pyx_PyObject_AsWritableString(s) ((char*)(__pyx_uintptr_t) __Pyx_PyObject_AsString(s)) -#define __Pyx_PyObject_AsWritableSString(s) ((signed char*)(__pyx_uintptr_t) __Pyx_PyObject_AsString(s)) -#define __Pyx_PyObject_AsWritableUString(s) ((unsigned char*)(__pyx_uintptr_t) __Pyx_PyObject_AsString(s)) -#define __Pyx_PyObject_AsSString(s) ((const signed char*) __Pyx_PyObject_AsString(s)) -#define __Pyx_PyObject_AsUString(s) ((const unsigned char*) __Pyx_PyObject_AsString(s)) -#define __Pyx_PyObject_FromCString(s) __Pyx_PyObject_FromString((const char*)s) -#define __Pyx_PyBytes_FromCString(s) __Pyx_PyBytes_FromString((const char*)s) -#define __Pyx_PyByteArray_FromCString(s) __Pyx_PyByteArray_FromString((const char*)s) -#define __Pyx_PyStr_FromCString(s) __Pyx_PyStr_FromString((const char*)s) -#define __Pyx_PyUnicode_FromCString(s) __Pyx_PyUnicode_FromString((const char*)s) -#if CYTHON_COMPILING_IN_LIMITED_API -static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const wchar_t *u) -{ - const wchar_t *u_end = u; - while (*u_end++) ; - return (size_t)(u_end - u - 1); -} -#else -static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const Py_UNICODE *u) -{ - const Py_UNICODE *u_end = u; - while (*u_end++) ; - return (size_t)(u_end - u - 1); -} -#endif -#define __Pyx_PyUnicode_FromOrdinal(o) PyUnicode_FromOrdinal((int)o) -#define __Pyx_PyUnicode_FromUnicode(u) PyUnicode_FromUnicode(u, __Pyx_Py_UNICODE_strlen(u)) -#define __Pyx_PyUnicode_FromUnicodeAndLength PyUnicode_FromUnicode -#define __Pyx_PyUnicode_AsUnicode PyUnicode_AsUnicode -#define __Pyx_NewRef(obj) (Py_INCREF(obj), obj) -#define __Pyx_Owned_Py_None(b) __Pyx_NewRef(Py_None) -static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b); -static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*); -static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref(PyObject*); -static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x); -#define __Pyx_PySequence_Tuple(obj)\ - (likely(PyTuple_CheckExact(obj)) ? __Pyx_NewRef(obj) : PySequence_Tuple(obj)) -static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*); -static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t); -static CYTHON_INLINE Py_hash_t __Pyx_PyIndex_AsHash_t(PyObject*); -#if CYTHON_ASSUME_SAFE_MACROS -#define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x)) -#else -#define __pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x) -#endif -#define __pyx_PyFloat_AsFloat(x) ((float) __pyx_PyFloat_AsDouble(x)) -#if PY_MAJOR_VERSION >= 3 -#define __Pyx_PyNumber_Int(x) (PyLong_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Long(x)) -#else -#define __Pyx_PyNumber_Int(x) (PyInt_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Int(x)) -#endif -#if CYTHON_USE_PYLONG_INTERNALS - #if PY_VERSION_HEX >= 0x030C00A7 - #ifndef _PyLong_SIGN_MASK - #define _PyLong_SIGN_MASK 3 - #endif - #ifndef _PyLong_NON_SIZE_BITS - #define _PyLong_NON_SIZE_BITS 3 - #endif - #define __Pyx_PyLong_Sign(x) (((PyLongObject*)x)->long_value.lv_tag & _PyLong_SIGN_MASK) - #define __Pyx_PyLong_IsNeg(x) ((__Pyx_PyLong_Sign(x) & 2) != 0) - #define __Pyx_PyLong_IsNonNeg(x) (!__Pyx_PyLong_IsNeg(x)) - #define __Pyx_PyLong_IsZero(x) (__Pyx_PyLong_Sign(x) & 1) - #define __Pyx_PyLong_IsPos(x) (__Pyx_PyLong_Sign(x) == 0) - #define __Pyx_PyLong_CompactValueUnsigned(x) (__Pyx_PyLong_Digits(x)[0]) - #define __Pyx_PyLong_DigitCount(x) ((Py_ssize_t) (((PyLongObject*)x)->long_value.lv_tag >> _PyLong_NON_SIZE_BITS)) - #define __Pyx_PyLong_SignedDigitCount(x)\ - ((1 - (Py_ssize_t) __Pyx_PyLong_Sign(x)) * __Pyx_PyLong_DigitCount(x)) - #if defined(PyUnstable_Long_IsCompact) && defined(PyUnstable_Long_CompactValue) - #define __Pyx_PyLong_IsCompact(x) PyUnstable_Long_IsCompact((PyLongObject*) x) - #define __Pyx_PyLong_CompactValue(x) PyUnstable_Long_CompactValue((PyLongObject*) x) - #else - #define __Pyx_PyLong_IsCompact(x) (((PyLongObject*)x)->long_value.lv_tag < (2 << _PyLong_NON_SIZE_BITS)) - #define __Pyx_PyLong_CompactValue(x) ((1 - (Py_ssize_t) __Pyx_PyLong_Sign(x)) * (Py_ssize_t) __Pyx_PyLong_Digits(x)[0]) - #endif - typedef Py_ssize_t __Pyx_compact_pylong; - typedef size_t __Pyx_compact_upylong; - #else - #define __Pyx_PyLong_IsNeg(x) (Py_SIZE(x) < 0) - #define __Pyx_PyLong_IsNonNeg(x) (Py_SIZE(x) >= 0) - #define __Pyx_PyLong_IsZero(x) (Py_SIZE(x) == 0) - #define __Pyx_PyLong_IsPos(x) (Py_SIZE(x) > 0) - #define __Pyx_PyLong_CompactValueUnsigned(x) ((Py_SIZE(x) == 0) ? 0 : __Pyx_PyLong_Digits(x)[0]) - #define __Pyx_PyLong_DigitCount(x) __Pyx_sst_abs(Py_SIZE(x)) - #define __Pyx_PyLong_SignedDigitCount(x) Py_SIZE(x) - #define __Pyx_PyLong_IsCompact(x) (Py_SIZE(x) == 0 || Py_SIZE(x) == 1 || Py_SIZE(x) == -1) - #define __Pyx_PyLong_CompactValue(x)\ - ((Py_SIZE(x) == 0) ? (sdigit) 0 : ((Py_SIZE(x) < 0) ? -(sdigit)__Pyx_PyLong_Digits(x)[0] : (sdigit)__Pyx_PyLong_Digits(x)[0])) - typedef sdigit __Pyx_compact_pylong; - typedef digit __Pyx_compact_upylong; - #endif - #if PY_VERSION_HEX >= 0x030C00A5 - #define __Pyx_PyLong_Digits(x) (((PyLongObject*)x)->long_value.ob_digit) - #else - #define __Pyx_PyLong_Digits(x) (((PyLongObject*)x)->ob_digit) - #endif -#endif -#if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII -#include -static int __Pyx_sys_getdefaultencoding_not_ascii; -static int __Pyx_init_sys_getdefaultencoding_params(void) { - PyObject* sys; - PyObject* default_encoding = NULL; - PyObject* ascii_chars_u = NULL; - PyObject* ascii_chars_b = NULL; - const char* default_encoding_c; - sys = PyImport_ImportModule("sys"); - if (!sys) goto bad; - default_encoding = PyObject_CallMethod(sys, (char*) "getdefaultencoding", NULL); - Py_DECREF(sys); - if (!default_encoding) goto bad; - default_encoding_c = PyBytes_AsString(default_encoding); - if (!default_encoding_c) goto bad; - if (strcmp(default_encoding_c, "ascii") == 0) { - __Pyx_sys_getdefaultencoding_not_ascii = 0; - } else { - char ascii_chars[128]; - int c; - for (c = 0; c < 128; c++) { - ascii_chars[c] = (char) c; - } - __Pyx_sys_getdefaultencoding_not_ascii = 1; - ascii_chars_u = PyUnicode_DecodeASCII(ascii_chars, 128, NULL); - if (!ascii_chars_u) goto bad; - ascii_chars_b = PyUnicode_AsEncodedString(ascii_chars_u, default_encoding_c, NULL); - if (!ascii_chars_b || !PyBytes_Check(ascii_chars_b) || memcmp(ascii_chars, PyBytes_AS_STRING(ascii_chars_b), 128) != 0) { - PyErr_Format( - PyExc_ValueError, - "This module compiled with c_string_encoding=ascii, but default encoding '%.200s' is not a superset of ascii.", - default_encoding_c); - goto bad; - } - Py_DECREF(ascii_chars_u); - Py_DECREF(ascii_chars_b); - } - Py_DECREF(default_encoding); - return 0; -bad: - Py_XDECREF(default_encoding); - Py_XDECREF(ascii_chars_u); - Py_XDECREF(ascii_chars_b); - return -1; -} -#endif -#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT && PY_MAJOR_VERSION >= 3 -#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_DecodeUTF8(c_str, size, NULL) -#else -#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_Decode(c_str, size, __PYX_DEFAULT_STRING_ENCODING, NULL) -#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT -#include -static char* __PYX_DEFAULT_STRING_ENCODING; -static int __Pyx_init_sys_getdefaultencoding_params(void) { - PyObject* sys; - PyObject* default_encoding = NULL; - char* default_encoding_c; - sys = PyImport_ImportModule("sys"); - if (!sys) goto bad; - default_encoding = PyObject_CallMethod(sys, (char*) (const char*) "getdefaultencoding", NULL); - Py_DECREF(sys); - if (!default_encoding) goto bad; - default_encoding_c = PyBytes_AsString(default_encoding); - if (!default_encoding_c) goto bad; - __PYX_DEFAULT_STRING_ENCODING = (char*) malloc(strlen(default_encoding_c) + 1); - if (!__PYX_DEFAULT_STRING_ENCODING) goto bad; - strcpy(__PYX_DEFAULT_STRING_ENCODING, default_encoding_c); - Py_DECREF(default_encoding); - return 0; -bad: - Py_XDECREF(default_encoding); - return -1; -} -#endif -#endif - - -/* Test for GCC > 2.95 */ -#if defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))) - #define likely(x) __builtin_expect(!!(x), 1) - #define unlikely(x) __builtin_expect(!!(x), 0) -#else /* !__GNUC__ or GCC < 2.95 */ - #define likely(x) (x) - #define unlikely(x) (x) -#endif /* __GNUC__ */ -static CYTHON_INLINE void __Pyx_pretend_to_initialize(void* ptr) { (void)ptr; } - -#if !CYTHON_USE_MODULE_STATE -static PyObject *__pyx_m = NULL; -#endif -static int __pyx_lineno; -static int __pyx_clineno = 0; -static const char * __pyx_cfilenm = __FILE__; -static const char *__pyx_filename; - -/* #### Code section: filename_table ### */ - -static const char *__pyx_f[] = { - "tinyr/tinyr.pyx", - "", -}; -/* #### Code section: utility_code_proto_before_types ### */ -/* ForceInitThreads.proto */ -#ifndef __PYX_FORCE_INIT_THREADS - #define __PYX_FORCE_INIT_THREADS 0 -#endif - -/* #### Code section: numeric_typedefs ### */ - -/* "tinyr.pyx":42 - * from libc.float cimport DBL_MAX as Dfloat_max, DBL_MIN as Dfloat_min - * - * ctypedef double Dfloat # <<<<<<<<<<<<<< - * ctypedef unsigned Duint - * - */ -typedef double __pyx_t_5tinyr_Dfloat; - -/* "tinyr.pyx":43 - * - * ctypedef double Dfloat - * ctypedef unsigned Duint # <<<<<<<<<<<<<< - * - * - */ -typedef unsigned int __pyx_t_5tinyr_Duint; -/* #### Code section: complex_type_declarations ### */ -/* #### Code section: type_declarations ### */ - -/*--- Type declarations ---*/ -struct __pyx_obj_5tinyr__Record; -struct __pyx_obj_5tinyr__ChildRecord; -struct __pyx_obj_5tinyr__InnerRecord; -struct __pyx_obj_5tinyr__Node; -struct __pyx_obj_5tinyr_RTree; -struct __pyx_obj_5tinyr__Iterator; -struct __pyx_obj_5tinyr__NodeIter; -struct __pyx_obj_5tinyr__RectangleIter; -struct __pyx_obj_5tinyr__ChildRecordIter; -struct __pyx_obj_5tinyr__KVIIter; -struct __pyx_obj_5tinyr__KeysIter; -struct __pyx_obj_5tinyr__ValuesIter; -struct __pyx_obj_5tinyr__ItemsIter; -struct __pyx_obj_5tinyr_RTreeInfo; - -/* "tinyr.pyx":50 - * ############################################################################### - * - * cdef class _Record # <<<<<<<<<<<<<< - * cdef class _ChildRecord(_Record) - * cdef class _InnerRecord(_Record) - */ -struct __pyx_obj_5tinyr__Record { - PyObject_HEAD - struct __pyx_vtabstruct_5tinyr__Record *__pyx_vtab; - __pyx_t_5tinyr_Dfloat coords[4]; -}; - - -/* "tinyr.pyx":51 - * - * cdef class _Record - * cdef class _ChildRecord(_Record) # <<<<<<<<<<<<<< - * cdef class _InnerRecord(_Record) - * cdef class _Node - */ -struct __pyx_obj_5tinyr__ChildRecord { - struct __pyx_obj_5tinyr__Record __pyx_base; - PyObject *identifier; -}; - - -/* "tinyr.pyx":52 - * cdef class _Record - * cdef class _ChildRecord(_Record) - * cdef class _InnerRecord(_Record) # <<<<<<<<<<<<<< - * cdef class _Node - * cdef class RTree - */ -struct __pyx_obj_5tinyr__InnerRecord { - struct __pyx_obj_5tinyr__Record __pyx_base; - struct __pyx_obj_5tinyr__Node *child; -}; - - -/* "tinyr.pyx":53 - * cdef class _ChildRecord(_Record) - * cdef class _InnerRecord(_Record) - * cdef class _Node # <<<<<<<<<<<<<< - * cdef class RTree - * cdef class _Iterator - */ -struct __pyx_obj_5tinyr__Node { - PyObject_HEAD - struct __pyx_vtabstruct_5tinyr__Node *__pyx_vtab; - struct __pyx_obj_5tinyr__Node *parent; - PyObject *records; - int is_leaf; -}; - - -/* "tinyr.pyx":54 - * cdef class _InnerRecord(_Record) - * cdef class _Node - * cdef class RTree # <<<<<<<<<<<<<< - * cdef class _Iterator - * cdef class _ChildRecordIter(_Iterator) - */ -struct __pyx_obj_5tinyr_RTree { - PyObject_HEAD - struct __pyx_vtabstruct_5tinyr_RTree *__pyx_vtab; - struct __pyx_obj_5tinyr__Node *root; - __pyx_t_5tinyr_Duint _leaf_level; - __pyx_t_5tinyr_Duint _node_cnt; - int M_cap; - int m_cap; - PyObject *(*find_overlapping_leafs)(struct __pyx_obj_5tinyr_RTree *, __pyx_t_5tinyr_Dfloat *); - int (*PickSeeds)(struct __pyx_obj_5tinyr__Node *, PyObject *, struct __pyx_obj_5tinyr__Node *); - void (*tuple_to_array)(PyObject *, __pyx_t_5tinyr_Dfloat *); - PyObject *(*array_to_tuple)(__pyx_t_5tinyr_Dfloat *); -}; - - -/* "tinyr.pyx":55 - * cdef class _Node - * cdef class RTree - * cdef class _Iterator # <<<<<<<<<<<<<< - * cdef class _ChildRecordIter(_Iterator) - * cdef class _KVIIter(_Iterator) - */ -struct __pyx_obj_5tinyr__Iterator { - PyObject_HEAD - struct __pyx_obj_5tinyr_RTree *rtree; -}; - - -/* "tinyr.pyx":892 - * return self - * - * cdef class _NodeIter(_Iterator): # <<<<<<<<<<<<<< - * cdef: - * list nodeset - */ -struct __pyx_obj_5tinyr__NodeIter { - struct __pyx_obj_5tinyr__Iterator __pyx_base; - PyObject *nodeset; -}; - - -/* "tinyr.pyx":917 - * return level, next - * - * cdef class _RectangleIter(_Iterator): # <<<<<<<<<<<<<< - * cdef: - * _NodeIter ni - */ -struct __pyx_obj_5tinyr__RectangleIter { - struct __pyx_obj_5tinyr__Iterator __pyx_base; - struct __pyx_obj_5tinyr__NodeIter *ni; - PyObject *leafrecords; - int l_level; -}; - - -/* "tinyr.pyx":56 - * cdef class RTree - * cdef class _Iterator - * cdef class _ChildRecordIter(_Iterator) # <<<<<<<<<<<<<< - * cdef class _KVIIter(_Iterator) - * cdef class _KeysIter(_KVIIter) - */ -struct __pyx_obj_5tinyr__ChildRecordIter { - struct __pyx_obj_5tinyr__Iterator __pyx_base; - PyObject *nodeset; - PyObject *current_crs; - PyObject *(*returner)(struct __pyx_obj_5tinyr__ChildRecordIter *, struct __pyx_obj_5tinyr__ChildRecord *); -}; - - -/* "tinyr.pyx":57 - * cdef class _Iterator - * cdef class _ChildRecordIter(_Iterator) - * cdef class _KVIIter(_Iterator) # <<<<<<<<<<<<<< - * cdef class _KeysIter(_KVIIter) - * cdef class _ValuesIter(_KVIIter) - */ -struct __pyx_obj_5tinyr__KVIIter { - struct __pyx_obj_5tinyr__Iterator __pyx_base; - struct __pyx_obj_5tinyr__ChildRecordIter *cri; -}; - - -/* "tinyr.pyx":58 - * cdef class _ChildRecordIter(_Iterator) - * cdef class _KVIIter(_Iterator) - * cdef class _KeysIter(_KVIIter) # <<<<<<<<<<<<<< - * cdef class _ValuesIter(_KVIIter) - * cdef class _ItemsIter(_KVIIter) - */ -struct __pyx_obj_5tinyr__KeysIter { - struct __pyx_obj_5tinyr__KVIIter __pyx_base; -}; - - -/* "tinyr.pyx":59 - * cdef class _KVIIter(_Iterator) - * cdef class _KeysIter(_KVIIter) - * cdef class _ValuesIter(_KVIIter) # <<<<<<<<<<<<<< - * cdef class _ItemsIter(_KVIIter) - * - */ -struct __pyx_obj_5tinyr__ValuesIter { - struct __pyx_obj_5tinyr__KVIIter __pyx_base; -}; - - -/* "tinyr.pyx":60 - * cdef class _KeysIter(_KVIIter) - * cdef class _ValuesIter(_KVIIter) - * cdef class _ItemsIter(_KVIIter) # <<<<<<<<<<<<<< - * - * class RTreeInvalid(Exception): - */ -struct __pyx_obj_5tinyr__ItemsIter { - struct __pyx_obj_5tinyr__KVIIter __pyx_base; -}; - - -/* "tinyr.pyx":1007 - * - * - * cdef class RTreeInfo: # <<<<<<<<<<<<<< - * '''Provides some meta-info about an existing RTree - * - */ -struct __pyx_obj_5tinyr_RTreeInfo { - PyObject_HEAD - struct __pyx_obj_5tinyr_RTree *rtree; -}; - - - -/* "tinyr.pyx":129 - * return (coords[2] - coords[0]) * (coords[3] - coords[1]) - * - * cdef class _Record: # <<<<<<<<<<<<<< - * cdef: - * Dfloat coords[4] - */ - -struct __pyx_vtabstruct_5tinyr__Record { - int (*overlaps)(struct __pyx_obj_5tinyr__Record *, __pyx_t_5tinyr_Dfloat *); - void (*copy_coords_to)(struct __pyx_obj_5tinyr__Record *, __pyx_t_5tinyr_Dfloat *); - struct __pyx_obj_5tinyr__Record *(*copy)(struct __pyx_obj_5tinyr__Record *, struct __pyx_obj_5tinyr__Node *); -}; -static struct __pyx_vtabstruct_5tinyr__Record *__pyx_vtabptr_5tinyr__Record; -static CYTHON_INLINE int __pyx_f_5tinyr_7_Record_overlaps(struct __pyx_obj_5tinyr__Record *, __pyx_t_5tinyr_Dfloat *); -static CYTHON_INLINE void __pyx_f_5tinyr_7_Record_copy_coords_to(struct __pyx_obj_5tinyr__Record *, __pyx_t_5tinyr_Dfloat *); - - -/* "tinyr.pyx":143 - * raise NotImplemented - * - * cdef class _ChildRecord(_Record): # <<<<<<<<<<<<<< - * cdef: - * object identifier - */ - -struct __pyx_vtabstruct_5tinyr__ChildRecord { - struct __pyx_vtabstruct_5tinyr__Record __pyx_base; -}; -static struct __pyx_vtabstruct_5tinyr__ChildRecord *__pyx_vtabptr_5tinyr__ChildRecord; - - -/* "tinyr.pyx":158 - * return ret - * - * cdef class _InnerRecord(_Record): # <<<<<<<<<<<<<< - * cdef: - * _Node child - */ - -struct __pyx_vtabstruct_5tinyr__InnerRecord { - struct __pyx_vtabstruct_5tinyr__Record __pyx_base; -}; -static struct __pyx_vtabstruct_5tinyr__InnerRecord *__pyx_vtabptr_5tinyr__InnerRecord; - - -/* "tinyr.pyx":173 - * return ret - * - * cdef class _Node(object): # <<<<<<<<<<<<<< - * cdef: - * _Node parent - */ - -struct __pyx_vtabstruct_5tinyr__Node { - struct __pyx_obj_5tinyr__Node *(*copy)(struct __pyx_obj_5tinyr__Node *, struct __pyx_obj_5tinyr__Node *); - void (*common_boundaries)(struct __pyx_obj_5tinyr__Node *, __pyx_t_5tinyr_Dfloat *); - struct __pyx_obj_5tinyr__Record *(*choose_subtree_least_enlargement)(struct __pyx_obj_5tinyr__Node *, struct __pyx_obj_5tinyr__Record *); - void (*find_overlapping_leafs_recursive)(struct __pyx_obj_5tinyr__Node *, PyObject *, __pyx_t_5tinyr_Dfloat *); - void (*addChild)(struct __pyx_obj_5tinyr__Node *, struct __pyx_obj_5tinyr__Node *); -}; -static struct __pyx_vtabstruct_5tinyr__Node *__pyx_vtabptr_5tinyr__Node; -static CYTHON_INLINE void __pyx_f_5tinyr_5_Node_common_boundaries(struct __pyx_obj_5tinyr__Node *, __pyx_t_5tinyr_Dfloat *); -static CYTHON_INLINE struct __pyx_obj_5tinyr__Record *__pyx_f_5tinyr_5_Node_choose_subtree_least_enlargement(struct __pyx_obj_5tinyr__Node *, struct __pyx_obj_5tinyr__Record *); - - -/* "tinyr.pyx":329 - * # raise NotImplemented - * - * cdef class RTree(object): # <<<<<<<<<<<<<< - * '''RTree - structure for 2D-indexed items. - * - */ - -struct __pyx_vtabstruct_5tinyr_RTree { - int (*insert_at_node)(struct __pyx_obj_5tinyr_RTree *, struct __pyx_obj_5tinyr__Record *, struct __pyx_obj_5tinyr__Node *); - void (*after_remove)(struct __pyx_obj_5tinyr_RTree *, struct __pyx_obj_5tinyr__Node *); - struct __pyx_obj_5tinyr__Node *(*FindLeaf_and_remove)(struct __pyx_obj_5tinyr_RTree *, PyObject *, __pyx_t_5tinyr_Dfloat *); - int (*CondenseTree)(struct __pyx_obj_5tinyr_RTree *, struct __pyx_obj_5tinyr__Node *); - struct __pyx_obj_5tinyr__Node *(*find_inner_node)(struct __pyx_obj_5tinyr_RTree *, struct __pyx_obj_5tinyr__InnerRecord *); - __pyx_t_5tinyr_Duint (*subtree_len)(struct __pyx_obj_5tinyr_RTree *, struct __pyx_obj_5tinyr__InnerRecord *); - int (*is_full)(struct __pyx_obj_5tinyr_RTree *, struct __pyx_obj_5tinyr__Node *); - struct __pyx_obj_5tinyr__Node *(*_ChooseLeaf)(struct __pyx_obj_5tinyr_RTree *, struct __pyx_obj_5tinyr__Record *); - PyObject *(*_AdjustTree)(struct __pyx_obj_5tinyr_RTree *, struct __pyx_obj_5tinyr__Node *, struct __pyx_obj_5tinyr__Node *); - struct __pyx_obj_5tinyr__Node *(*SplitNode)(struct __pyx_obj_5tinyr_RTree *, struct __pyx_obj_5tinyr__Node *, struct __pyx_obj_5tinyr__Record *); - int (*PickNext)(struct __pyx_obj_5tinyr_RTree *, struct __pyx_obj_5tinyr__Node *, PyObject *, struct __pyx_obj_5tinyr__Node *); -}; -static struct __pyx_vtabstruct_5tinyr_RTree *__pyx_vtabptr_5tinyr_RTree; -static CYTHON_INLINE int __pyx_f_5tinyr_5RTree_insert_at_node(struct __pyx_obj_5tinyr_RTree *, struct __pyx_obj_5tinyr__Record *, struct __pyx_obj_5tinyr__Node *); -static CYTHON_INLINE void __pyx_f_5tinyr_5RTree_after_remove(struct __pyx_obj_5tinyr_RTree *, struct __pyx_obj_5tinyr__Node *); -static CYTHON_INLINE struct __pyx_obj_5tinyr__Node *__pyx_f_5tinyr_5RTree_FindLeaf_and_remove(struct __pyx_obj_5tinyr_RTree *, PyObject *, __pyx_t_5tinyr_Dfloat *); -static CYTHON_INLINE int __pyx_f_5tinyr_5RTree_CondenseTree(struct __pyx_obj_5tinyr_RTree *, struct __pyx_obj_5tinyr__Node *); -static CYTHON_INLINE int __pyx_f_5tinyr_5RTree_is_full(struct __pyx_obj_5tinyr_RTree *, struct __pyx_obj_5tinyr__Node *); -static CYTHON_INLINE struct __pyx_obj_5tinyr__Node *__pyx_f_5tinyr_5RTree__ChooseLeaf(struct __pyx_obj_5tinyr_RTree *, struct __pyx_obj_5tinyr__Record *); -static CYTHON_INLINE PyObject *__pyx_f_5tinyr_5RTree__AdjustTree(struct __pyx_obj_5tinyr_RTree *, struct __pyx_obj_5tinyr__Node *, struct __pyx_obj_5tinyr__Node *); -static CYTHON_INLINE int __pyx_f_5tinyr_5RTree_PickNext(struct __pyx_obj_5tinyr_RTree *, struct __pyx_obj_5tinyr__Node *, PyObject *, struct __pyx_obj_5tinyr__Node *); -/* #### Code section: utility_code_proto ### */ - -/* --- Runtime support code (head) --- */ -/* Refnanny.proto */ -#ifndef CYTHON_REFNANNY - #define CYTHON_REFNANNY 0 -#endif -#if CYTHON_REFNANNY - typedef struct { - void (*INCREF)(void*, PyObject*, Py_ssize_t); - void (*DECREF)(void*, PyObject*, Py_ssize_t); - void (*GOTREF)(void*, PyObject*, Py_ssize_t); - void (*GIVEREF)(void*, PyObject*, Py_ssize_t); - void* (*SetupContext)(const char*, Py_ssize_t, const char*); - void (*FinishContext)(void**); - } __Pyx_RefNannyAPIStruct; - static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL; - static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname); - #define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL; -#ifdef WITH_THREAD - #define __Pyx_RefNannySetupContext(name, acquire_gil)\ - if (acquire_gil) {\ - PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\ - __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), (__LINE__), (__FILE__));\ - PyGILState_Release(__pyx_gilstate_save);\ - } else {\ - __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), (__LINE__), (__FILE__));\ - } - #define __Pyx_RefNannyFinishContextNogil() {\ - PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\ - __Pyx_RefNannyFinishContext();\ - PyGILState_Release(__pyx_gilstate_save);\ - } -#else - #define __Pyx_RefNannySetupContext(name, acquire_gil)\ - __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), (__LINE__), (__FILE__)) - #define __Pyx_RefNannyFinishContextNogil() __Pyx_RefNannyFinishContext() -#endif - #define __Pyx_RefNannyFinishContextNogil() {\ - PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\ - __Pyx_RefNannyFinishContext();\ - PyGILState_Release(__pyx_gilstate_save);\ - } - #define __Pyx_RefNannyFinishContext()\ - __Pyx_RefNanny->FinishContext(&__pyx_refnanny) - #define __Pyx_INCREF(r) __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), (__LINE__)) - #define __Pyx_DECREF(r) __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), (__LINE__)) - #define __Pyx_GOTREF(r) __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), (__LINE__)) - #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), (__LINE__)) - #define __Pyx_XINCREF(r) do { if((r) == NULL); else {__Pyx_INCREF(r); }} while(0) - #define __Pyx_XDECREF(r) do { if((r) == NULL); else {__Pyx_DECREF(r); }} while(0) - #define __Pyx_XGOTREF(r) do { if((r) == NULL); else {__Pyx_GOTREF(r); }} while(0) - #define __Pyx_XGIVEREF(r) do { if((r) == NULL); else {__Pyx_GIVEREF(r);}} while(0) -#else - #define __Pyx_RefNannyDeclarations - #define __Pyx_RefNannySetupContext(name, acquire_gil) - #define __Pyx_RefNannyFinishContextNogil() - #define __Pyx_RefNannyFinishContext() - #define __Pyx_INCREF(r) Py_INCREF(r) - #define __Pyx_DECREF(r) Py_DECREF(r) - #define __Pyx_GOTREF(r) - #define __Pyx_GIVEREF(r) - #define __Pyx_XINCREF(r) Py_XINCREF(r) - #define __Pyx_XDECREF(r) Py_XDECREF(r) - #define __Pyx_XGOTREF(r) - #define __Pyx_XGIVEREF(r) -#endif -#define __Pyx_Py_XDECREF_SET(r, v) do {\ - PyObject *tmp = (PyObject *) r;\ - r = v; Py_XDECREF(tmp);\ - } while (0) -#define __Pyx_XDECREF_SET(r, v) do {\ - PyObject *tmp = (PyObject *) r;\ - r = v; __Pyx_XDECREF(tmp);\ - } while (0) -#define __Pyx_DECREF_SET(r, v) do {\ - PyObject *tmp = (PyObject *) r;\ - r = v; __Pyx_DECREF(tmp);\ - } while (0) -#define __Pyx_CLEAR(r) do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0) -#define __Pyx_XCLEAR(r) do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0) - -/* PyErrExceptionMatches.proto */ -#if CYTHON_FAST_THREAD_STATE -#define __Pyx_PyErr_ExceptionMatches(err) __Pyx_PyErr_ExceptionMatchesInState(__pyx_tstate, err) -static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err); -#else -#define __Pyx_PyErr_ExceptionMatches(err) PyErr_ExceptionMatches(err) -#endif - -/* PyThreadStateGet.proto */ -#if CYTHON_FAST_THREAD_STATE -#define __Pyx_PyThreadState_declare PyThreadState *__pyx_tstate; -#define __Pyx_PyThreadState_assign __pyx_tstate = __Pyx_PyThreadState_Current; -#if PY_VERSION_HEX >= 0x030C00A6 -#define __Pyx_PyErr_Occurred() (__pyx_tstate->current_exception != NULL) -#define __Pyx_PyErr_CurrentExceptionType() (__pyx_tstate->current_exception ? (PyObject*) Py_TYPE(__pyx_tstate->current_exception) : (PyObject*) NULL) -#else -#define __Pyx_PyErr_Occurred() (__pyx_tstate->curexc_type != NULL) -#define __Pyx_PyErr_CurrentExceptionType() (__pyx_tstate->curexc_type) -#endif -#else -#define __Pyx_PyThreadState_declare -#define __Pyx_PyThreadState_assign -#define __Pyx_PyErr_Occurred() (PyErr_Occurred() != NULL) -#define __Pyx_PyErr_CurrentExceptionType() PyErr_Occurred() -#endif - -/* PyErrFetchRestore.proto */ -#if CYTHON_FAST_THREAD_STATE -#define __Pyx_PyErr_Clear() __Pyx_ErrRestore(NULL, NULL, NULL) -#define __Pyx_ErrRestoreWithState(type, value, tb) __Pyx_ErrRestoreInState(PyThreadState_GET(), type, value, tb) -#define __Pyx_ErrFetchWithState(type, value, tb) __Pyx_ErrFetchInState(PyThreadState_GET(), type, value, tb) -#define __Pyx_ErrRestore(type, value, tb) __Pyx_ErrRestoreInState(__pyx_tstate, type, value, tb) -#define __Pyx_ErrFetch(type, value, tb) __Pyx_ErrFetchInState(__pyx_tstate, type, value, tb) -static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb); -static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); -#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A6 -#define __Pyx_PyErr_SetNone(exc) (Py_INCREF(exc), __Pyx_ErrRestore((exc), NULL, NULL)) -#else -#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc) -#endif -#else -#define __Pyx_PyErr_Clear() PyErr_Clear() -#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc) -#define __Pyx_ErrRestoreWithState(type, value, tb) PyErr_Restore(type, value, tb) -#define __Pyx_ErrFetchWithState(type, value, tb) PyErr_Fetch(type, value, tb) -#define __Pyx_ErrRestoreInState(tstate, type, value, tb) PyErr_Restore(type, value, tb) -#define __Pyx_ErrFetchInState(tstate, type, value, tb) PyErr_Fetch(type, value, tb) -#define __Pyx_ErrRestore(type, value, tb) PyErr_Restore(type, value, tb) -#define __Pyx_ErrFetch(type, value, tb) PyErr_Fetch(type, value, tb) -#endif - -/* PyObjectGetAttrStr.proto */ -#if CYTHON_USE_TYPE_SLOTS -static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name); -#else -#define __Pyx_PyObject_GetAttrStr(o,n) PyObject_GetAttr(o,n) -#endif - -/* PyObjectGetAttrStrNoError.proto */ -static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStrNoError(PyObject* obj, PyObject* attr_name); - -/* GetBuiltinName.proto */ -static PyObject *__Pyx_GetBuiltinName(PyObject *name); - -/* GetTopmostException.proto */ -#if CYTHON_USE_EXC_INFO_STACK && CYTHON_FAST_THREAD_STATE -static _PyErr_StackItem * __Pyx_PyErr_GetTopmostException(PyThreadState *tstate); -#endif - -/* SaveResetException.proto */ -#if CYTHON_FAST_THREAD_STATE -#define __Pyx_ExceptionSave(type, value, tb) __Pyx__ExceptionSave(__pyx_tstate, type, value, tb) -static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); -#define __Pyx_ExceptionReset(type, value, tb) __Pyx__ExceptionReset(__pyx_tstate, type, value, tb) -static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb); -#else -#define __Pyx_ExceptionSave(type, value, tb) PyErr_GetExcInfo(type, value, tb) -#define __Pyx_ExceptionReset(type, value, tb) PyErr_SetExcInfo(type, value, tb) -#endif - -/* FastTypeChecks.proto */ -#if CYTHON_COMPILING_IN_CPYTHON -#define __Pyx_TypeCheck(obj, type) __Pyx_IsSubtype(Py_TYPE(obj), (PyTypeObject *)type) -#define __Pyx_TypeCheck2(obj, type1, type2) __Pyx_IsAnySubtype2(Py_TYPE(obj), (PyTypeObject *)type1, (PyTypeObject *)type2) -static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b); -static CYTHON_INLINE int __Pyx_IsAnySubtype2(PyTypeObject *cls, PyTypeObject *a, PyTypeObject *b); -static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject *type); -static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *type1, PyObject *type2); -#else -#define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type) -#define __Pyx_TypeCheck2(obj, type1, type2) (PyObject_TypeCheck(obj, (PyTypeObject *)type1) || PyObject_TypeCheck(obj, (PyTypeObject *)type2)) -#define __Pyx_PyErr_GivenExceptionMatches(err, type) PyErr_GivenExceptionMatches(err, type) -#define __Pyx_PyErr_GivenExceptionMatches2(err, type1, type2) (PyErr_GivenExceptionMatches(err, type1) || PyErr_GivenExceptionMatches(err, type2)) -#endif -#define __Pyx_PyErr_ExceptionMatches2(err1, err2) __Pyx_PyErr_GivenExceptionMatches2(__Pyx_PyErr_CurrentExceptionType(), err1, err2) -#define __Pyx_PyException_Check(obj) __Pyx_TypeCheck(obj, PyExc_Exception) - -/* GetItemInt.proto */ -#define __Pyx_GetItemInt(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ - (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ - __Pyx_GetItemInt_Fast(o, (Py_ssize_t)i, is_list, wraparound, boundscheck) :\ - (is_list ? (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL) :\ - __Pyx_GetItemInt_Generic(o, to_py_func(i)))) -#define __Pyx_GetItemInt_List(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ - (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ - __Pyx_GetItemInt_List_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\ - (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL)) -static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i, - int wraparound, int boundscheck); -#define __Pyx_GetItemInt_Tuple(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ - (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ - __Pyx_GetItemInt_Tuple_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\ - (PyErr_SetString(PyExc_IndexError, "tuple index out of range"), (PyObject*)NULL)) -static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i, - int wraparound, int boundscheck); -static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j); -static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, - int is_list, int wraparound, int boundscheck); - -/* ListCompAppend.proto */ -#if CYTHON_USE_PYLIST_INTERNALS && CYTHON_ASSUME_SAFE_MACROS -static CYTHON_INLINE int __Pyx_ListComp_Append(PyObject* list, PyObject* x) { - PyListObject* L = (PyListObject*) list; - Py_ssize_t len = Py_SIZE(list); - if (likely(L->allocated > len)) { - Py_INCREF(x); - #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030d0000 - L->ob_item[len] = x; - #else - PyList_SET_ITEM(list, len, x); - #endif - __Pyx_SET_SIZE(list, len + 1); - return 0; - } - return PyList_Append(list, x); -} -#else -#define __Pyx_ListComp_Append(L,x) PyList_Append(L,x) -#endif - -/* ExtTypeTest.proto */ -static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type); - -/* RaiseException.proto */ -static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause); - -/* TupleAndListFromArray.proto */ -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyList_FromArray(PyObject *const *src, Py_ssize_t n); -static CYTHON_INLINE PyObject* __Pyx_PyTuple_FromArray(PyObject *const *src, Py_ssize_t n); -#endif - -/* IncludeStringH.proto */ -#include - -/* BytesEquals.proto */ -static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals); - -/* UnicodeEquals.proto */ -static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals); - -/* fastcall.proto */ -#if CYTHON_AVOID_BORROWED_REFS - #define __Pyx_Arg_VARARGS(args, i) PySequence_GetItem(args, i) -#elif CYTHON_ASSUME_SAFE_MACROS - #define __Pyx_Arg_VARARGS(args, i) PyTuple_GET_ITEM(args, i) -#else - #define __Pyx_Arg_VARARGS(args, i) PyTuple_GetItem(args, i) -#endif -#if CYTHON_AVOID_BORROWED_REFS - #define __Pyx_Arg_NewRef_VARARGS(arg) __Pyx_NewRef(arg) - #define __Pyx_Arg_XDECREF_VARARGS(arg) Py_XDECREF(arg) -#else - #define __Pyx_Arg_NewRef_VARARGS(arg) arg - #define __Pyx_Arg_XDECREF_VARARGS(arg) -#endif -#define __Pyx_NumKwargs_VARARGS(kwds) PyDict_Size(kwds) -#define __Pyx_KwValues_VARARGS(args, nargs) NULL -#define __Pyx_GetKwValue_VARARGS(kw, kwvalues, s) __Pyx_PyDict_GetItemStrWithError(kw, s) -#define __Pyx_KwargsAsDict_VARARGS(kw, kwvalues) PyDict_Copy(kw) -#if CYTHON_METH_FASTCALL - #define __Pyx_Arg_FASTCALL(args, i) args[i] - #define __Pyx_NumKwargs_FASTCALL(kwds) PyTuple_GET_SIZE(kwds) - #define __Pyx_KwValues_FASTCALL(args, nargs) ((args) + (nargs)) - static CYTHON_INLINE PyObject * __Pyx_GetKwValue_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues, PyObject *s); -#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030d0000 - CYTHON_UNUSED static PyObject *__Pyx_KwargsAsDict_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues); - #else - #define __Pyx_KwargsAsDict_FASTCALL(kw, kwvalues) _PyStack_AsDict(kwvalues, kw) - #endif - #define __Pyx_Arg_NewRef_FASTCALL(arg) arg /* no-op, __Pyx_Arg_FASTCALL is direct and this needs - to have the same reference counting */ - #define __Pyx_Arg_XDECREF_FASTCALL(arg) -#else - #define __Pyx_Arg_FASTCALL __Pyx_Arg_VARARGS - #define __Pyx_NumKwargs_FASTCALL __Pyx_NumKwargs_VARARGS - #define __Pyx_KwValues_FASTCALL __Pyx_KwValues_VARARGS - #define __Pyx_GetKwValue_FASTCALL __Pyx_GetKwValue_VARARGS - #define __Pyx_KwargsAsDict_FASTCALL __Pyx_KwargsAsDict_VARARGS - #define __Pyx_Arg_NewRef_FASTCALL(arg) __Pyx_Arg_NewRef_VARARGS(arg) - #define __Pyx_Arg_XDECREF_FASTCALL(arg) __Pyx_Arg_XDECREF_VARARGS(arg) -#endif -#if CYTHON_COMPILING_IN_CPYTHON && CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS -#define __Pyx_ArgsSlice_VARARGS(args, start, stop) __Pyx_PyTuple_FromArray(&__Pyx_Arg_VARARGS(args, start), stop - start) -#define __Pyx_ArgsSlice_FASTCALL(args, start, stop) __Pyx_PyTuple_FromArray(&__Pyx_Arg_FASTCALL(args, start), stop - start) -#else -#define __Pyx_ArgsSlice_VARARGS(args, start, stop) PyTuple_GetSlice(args, start, stop) -#define __Pyx_ArgsSlice_FASTCALL(args, start, stop) PyTuple_GetSlice(args, start, stop) -#endif - -/* RaiseArgTupleInvalid.proto */ -static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact, - Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found); - -/* KeywordStringCheck.proto */ -static int __Pyx_CheckKeywordStrings(PyObject *kw, const char* function_name, int kw_allowed); - -/* GetAttr3.proto */ -static CYTHON_INLINE PyObject *__Pyx_GetAttr3(PyObject *, PyObject *, PyObject *); - -/* PyDictVersioning.proto */ -#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS -#define __PYX_DICT_VERSION_INIT ((PY_UINT64_T) -1) -#define __PYX_GET_DICT_VERSION(dict) (((PyDictObject*)(dict))->ma_version_tag) -#define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var)\ - (version_var) = __PYX_GET_DICT_VERSION(dict);\ - (cache_var) = (value); -#define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP) {\ - static PY_UINT64_T __pyx_dict_version = 0;\ - static PyObject *__pyx_dict_cached_value = NULL;\ - if (likely(__PYX_GET_DICT_VERSION(DICT) == __pyx_dict_version)) {\ - (VAR) = __pyx_dict_cached_value;\ - } else {\ - (VAR) = __pyx_dict_cached_value = (LOOKUP);\ - __pyx_dict_version = __PYX_GET_DICT_VERSION(DICT);\ - }\ -} -static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version(PyObject *obj); -static CYTHON_INLINE PY_UINT64_T __Pyx_get_object_dict_version(PyObject *obj); -static CYTHON_INLINE int __Pyx_object_dict_version_matches(PyObject* obj, PY_UINT64_T tp_dict_version, PY_UINT64_T obj_dict_version); -#else -#define __PYX_GET_DICT_VERSION(dict) (0) -#define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var) -#define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP) (VAR) = (LOOKUP); -#endif - -/* GetModuleGlobalName.proto */ -#if CYTHON_USE_DICT_VERSIONS -#define __Pyx_GetModuleGlobalName(var, name) do {\ - static PY_UINT64_T __pyx_dict_version = 0;\ - static PyObject *__pyx_dict_cached_value = NULL;\ - (var) = (likely(__pyx_dict_version == __PYX_GET_DICT_VERSION(__pyx_d))) ?\ - (likely(__pyx_dict_cached_value) ? __Pyx_NewRef(__pyx_dict_cached_value) : __Pyx_GetBuiltinName(name)) :\ - __Pyx__GetModuleGlobalName(name, &__pyx_dict_version, &__pyx_dict_cached_value);\ -} while(0) -#define __Pyx_GetModuleGlobalNameUncached(var, name) do {\ - PY_UINT64_T __pyx_dict_version;\ - PyObject *__pyx_dict_cached_value;\ - (var) = __Pyx__GetModuleGlobalName(name, &__pyx_dict_version, &__pyx_dict_cached_value);\ -} while(0) -static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value); -#else -#define __Pyx_GetModuleGlobalName(var, name) (var) = __Pyx__GetModuleGlobalName(name) -#define __Pyx_GetModuleGlobalNameUncached(var, name) (var) = __Pyx__GetModuleGlobalName(name) -static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name); -#endif - -/* RaiseDoubleKeywords.proto */ -static void __Pyx_RaiseDoubleKeywordsError(const char* func_name, PyObject* kw_name); - -/* ParseKeywords.proto */ -static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject *const *kwvalues, - PyObject **argnames[], - PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args, - const char* function_name); - -/* RaiseUnexpectedTypeError.proto */ -static int __Pyx_RaiseUnexpectedTypeError(const char *expected, PyObject *obj); - -/* PyFunctionFastCall.proto */ -#if CYTHON_FAST_PYCALL -#if !CYTHON_VECTORCALL -#define __Pyx_PyFunction_FastCall(func, args, nargs)\ - __Pyx_PyFunction_FastCallDict((func), (args), (nargs), NULL) -static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, Py_ssize_t nargs, PyObject *kwargs); -#endif -#define __Pyx_BUILD_ASSERT_EXPR(cond)\ - (sizeof(char [1 - 2*!(cond)]) - 1) -#ifndef Py_MEMBER_SIZE -#define Py_MEMBER_SIZE(type, member) sizeof(((type *)0)->member) -#endif -#if !CYTHON_VECTORCALL -#if PY_VERSION_HEX >= 0x03080000 - #include "frameobject.h" -#if PY_VERSION_HEX >= 0x030b00a6 && !CYTHON_COMPILING_IN_LIMITED_API - #ifndef Py_BUILD_CORE - #define Py_BUILD_CORE 1 - #endif - #include "internal/pycore_frame.h" -#endif - #define __Pxy_PyFrame_Initialize_Offsets() - #define __Pyx_PyFrame_GetLocalsplus(frame) ((frame)->f_localsplus) -#else - static size_t __pyx_pyframe_localsplus_offset = 0; - #include "frameobject.h" - #define __Pxy_PyFrame_Initialize_Offsets()\ - ((void)__Pyx_BUILD_ASSERT_EXPR(sizeof(PyFrameObject) == offsetof(PyFrameObject, f_localsplus) + Py_MEMBER_SIZE(PyFrameObject, f_localsplus)),\ - (void)(__pyx_pyframe_localsplus_offset = ((size_t)PyFrame_Type.tp_basicsize) - Py_MEMBER_SIZE(PyFrameObject, f_localsplus))) - #define __Pyx_PyFrame_GetLocalsplus(frame)\ - (assert(__pyx_pyframe_localsplus_offset), (PyObject **)(((char *)(frame)) + __pyx_pyframe_localsplus_offset)) -#endif -#endif -#endif - -/* PyObjectCall.proto */ -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw); -#else -#define __Pyx_PyObject_Call(func, arg, kw) PyObject_Call(func, arg, kw) -#endif - -/* PyObjectCallMethO.proto */ -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg); -#endif - -/* PyObjectFastCall.proto */ -#define __Pyx_PyObject_FastCall(func, args, nargs) __Pyx_PyObject_FastCallDict(func, args, (size_t)(nargs), NULL) -static CYTHON_INLINE PyObject* __Pyx_PyObject_FastCallDict(PyObject *func, PyObject **args, size_t nargs, PyObject *kwargs); - -/* PyObjectCallOneArg.proto */ -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg); - -/* ArgTypeTest.proto */ -#define __Pyx_ArgTypeTest(obj, type, none_allowed, name, exact)\ - ((likely(__Pyx_IS_TYPE(obj, type) | (none_allowed && (obj == Py_None)))) ? 1 :\ - __Pyx__ArgTypeTest(obj, type, name, exact)) -static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact); - -/* SetItemInt.proto */ -#define __Pyx_SetItemInt(o, i, v, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ - (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ - __Pyx_SetItemInt_Fast(o, (Py_ssize_t)i, v, is_list, wraparound, boundscheck) :\ - (is_list ? (PyErr_SetString(PyExc_IndexError, "list assignment index out of range"), -1) :\ - __Pyx_SetItemInt_Generic(o, to_py_func(i), v))) -static int __Pyx_SetItemInt_Generic(PyObject *o, PyObject *j, PyObject *v); -static CYTHON_INLINE int __Pyx_SetItemInt_Fast(PyObject *o, Py_ssize_t i, PyObject *v, - int is_list, int wraparound, int boundscheck); - -/* RaiseUnboundLocalError.proto */ -static CYTHON_INLINE void __Pyx_RaiseUnboundLocalError(const char *varname); - -/* ListAppend.proto */ -#if CYTHON_USE_PYLIST_INTERNALS && CYTHON_ASSUME_SAFE_MACROS -static CYTHON_INLINE int __Pyx_PyList_Append(PyObject* list, PyObject* x) { - PyListObject* L = (PyListObject*) list; - Py_ssize_t len = Py_SIZE(list); - if (likely(L->allocated > len) & likely(len > (L->allocated >> 1))) { - Py_INCREF(x); - #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030d0000 - L->ob_item[len] = x; - #else - PyList_SET_ITEM(list, len, x); - #endif - __Pyx_SET_SIZE(list, len + 1); - return 0; - } - return PyList_Append(list, x); -} -#else -#define __Pyx_PyList_Append(L,x) PyList_Append(L,x) -#endif - -/* RaiseTooManyValuesToUnpack.proto */ -static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected); - -/* RaiseNeedMoreValuesToUnpack.proto */ -static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index); - -/* IterFinish.proto */ -static CYTHON_INLINE int __Pyx_IterFinish(void); - -/* UnpackItemEndCheck.proto */ -static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected); - -/* UnpackUnboundCMethod.proto */ -typedef struct { - PyObject *type; - PyObject **method_name; - PyCFunction func; - PyObject *method; - int flag; -} __Pyx_CachedCFunction; - -/* CallUnboundCMethod1.proto */ -static PyObject* __Pyx__CallUnboundCMethod1(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg); -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_CallUnboundCMethod1(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg); -#else -#define __Pyx_CallUnboundCMethod1(cfunc, self, arg) __Pyx__CallUnboundCMethod1(cfunc, self, arg) -#endif - -/* PyFloatBinop.proto */ -#if !CYTHON_COMPILING_IN_PYPY -static PyObject* __Pyx_PyFloat_TrueDivideObjC(PyObject *op1, PyObject *op2, double floatval, int inplace, int zerodivision_check); -#else -#define __Pyx_PyFloat_TrueDivideObjC(op1, op2, floatval, inplace, zerodivision_check)\ - (inplace ? PyNumber_InPlaceTrueDivide(op1, op2) : PyNumber_TrueDivide(op1, op2)) -#endif - -/* AssertionsEnabled.proto */ -#if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x02070600 && !defined(Py_OptimizeFlag) - #define __Pyx_init_assertions_enabled() (0) - #define __pyx_assertions_enabled() (1) -#elif CYTHON_COMPILING_IN_LIMITED_API || (CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030C0000) - static int __pyx_assertions_enabled_flag; - #define __pyx_assertions_enabled() (__pyx_assertions_enabled_flag) - static int __Pyx_init_assertions_enabled(void) { - PyObject *builtins, *debug, *debug_str; - int flag; - builtins = PyEval_GetBuiltins(); - if (!builtins) goto bad; - debug_str = PyUnicode_FromStringAndSize("__debug__", 9); - if (!debug_str) goto bad; - debug = PyObject_GetItem(builtins, debug_str); - Py_DECREF(debug_str); - if (!debug) goto bad; - flag = PyObject_IsTrue(debug); - Py_DECREF(debug); - if (flag == -1) goto bad; - __pyx_assertions_enabled_flag = flag; - return 0; - bad: - __pyx_assertions_enabled_flag = 1; - return -1; - } -#else - #define __Pyx_init_assertions_enabled() (0) - #define __pyx_assertions_enabled() (!Py_OptimizeFlag) -#endif - -/* PyIntBinop.proto */ -#if !CYTHON_COMPILING_IN_PYPY -static PyObject* __Pyx_PyInt_MultiplyCObj(PyObject *op1, PyObject *op2, long intval, int inplace, int zerodivision_check); -#else -#define __Pyx_PyInt_MultiplyCObj(op1, op2, intval, inplace, zerodivision_check)\ - (inplace ? PyNumber_InPlaceMultiply(op1, op2) : PyNumber_Multiply(op1, op2)) -#endif - -/* RaiseNoneIterError.proto */ -static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void); - -/* PyObjectCallNoArg.proto */ -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func); - -/* PyObjectGetMethod.proto */ -static int __Pyx_PyObject_GetMethod(PyObject *obj, PyObject *name, PyObject **method); - -/* PyObjectCallMethod0.proto */ -static PyObject* __Pyx_PyObject_CallMethod0(PyObject* obj, PyObject* method_name); - -/* pop.proto */ -static CYTHON_INLINE PyObject* __Pyx__PyObject_Pop(PyObject* L); -#if CYTHON_USE_PYLIST_INTERNALS && CYTHON_ASSUME_SAFE_MACROS -static CYTHON_INLINE PyObject* __Pyx_PyList_Pop(PyObject* L); -#define __Pyx_PyObject_Pop(L) (likely(PyList_CheckExact(L)) ?\ - __Pyx_PyList_Pop(L) : __Pyx__PyObject_Pop(L)) -#else -#define __Pyx_PyList_Pop(L) __Pyx__PyObject_Pop(L) -#define __Pyx_PyObject_Pop(L) __Pyx__PyObject_Pop(L) -#endif - -/* CallUnboundCMethod0.proto */ -static PyObject* __Pyx__CallUnboundCMethod0(__Pyx_CachedCFunction* cfunc, PyObject* self); -#if CYTHON_COMPILING_IN_CPYTHON -#define __Pyx_CallUnboundCMethod0(cfunc, self)\ - (likely((cfunc)->func) ?\ - (likely((cfunc)->flag == METH_NOARGS) ? (*((cfunc)->func))(self, NULL) :\ - (PY_VERSION_HEX >= 0x030600B1 && likely((cfunc)->flag == METH_FASTCALL) ?\ - (PY_VERSION_HEX >= 0x030700A0 ?\ - (*(__Pyx_PyCFunctionFast)(void*)(PyCFunction)(cfunc)->func)(self, &__pyx_empty_tuple, 0) :\ - (*(__Pyx_PyCFunctionFastWithKeywords)(void*)(PyCFunction)(cfunc)->func)(self, &__pyx_empty_tuple, 0, NULL)) :\ - (PY_VERSION_HEX >= 0x030700A0 && (cfunc)->flag == (METH_FASTCALL | METH_KEYWORDS) ?\ - (*(__Pyx_PyCFunctionFastWithKeywords)(void*)(PyCFunction)(cfunc)->func)(self, &__pyx_empty_tuple, 0, NULL) :\ - (likely((cfunc)->flag == (METH_VARARGS | METH_KEYWORDS)) ? ((*(PyCFunctionWithKeywords)(void*)(PyCFunction)(cfunc)->func)(self, __pyx_empty_tuple, NULL)) :\ - ((cfunc)->flag == METH_VARARGS ? (*((cfunc)->func))(self, __pyx_empty_tuple) :\ - __Pyx__CallUnboundCMethod0(cfunc, self)))))) :\ - __Pyx__CallUnboundCMethod0(cfunc, self)) -#else -#define __Pyx_CallUnboundCMethod0(cfunc, self) __Pyx__CallUnboundCMethod0(cfunc, self) -#endif - -/* PyObject_Str.proto */ -#define __Pyx_PyObject_Str(obj)\ - (likely(PyString_CheckExact(obj)) ? __Pyx_NewRef(obj) : PyObject_Str(obj)) - -/* ListExtend.proto */ -static CYTHON_INLINE int __Pyx_PyList_Extend(PyObject* L, PyObject* v) { -#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030d0000 - PyObject* none = _PyList_Extend((PyListObject*)L, v); - if (unlikely(!none)) - return -1; - Py_DECREF(none); - return 0; -#else - return PyList_SetSlice(L, PY_SSIZE_T_MAX, PY_SSIZE_T_MAX, v); -#endif -} - -/* PyObjectCall2Args.proto */ -static CYTHON_INLINE PyObject* __Pyx_PyObject_Call2Args(PyObject* function, PyObject* arg1, PyObject* arg2); - -/* PyObjectCallMethod1.proto */ -static PyObject* __Pyx_PyObject_CallMethod1(PyObject* obj, PyObject* method_name, PyObject* arg); - -/* pop_index.proto */ -static PyObject* __Pyx__PyObject_PopNewIndex(PyObject* L, PyObject* py_ix); -static PyObject* __Pyx__PyObject_PopIndex(PyObject* L, PyObject* py_ix); -#if CYTHON_USE_PYLIST_INTERNALS && CYTHON_ASSUME_SAFE_MACROS -static PyObject* __Pyx__PyList_PopIndex(PyObject* L, PyObject* py_ix, Py_ssize_t ix); -#define __Pyx_PyObject_PopIndex(L, py_ix, ix, is_signed, type, to_py_func) (\ - (likely(PyList_CheckExact(L) && __Pyx_fits_Py_ssize_t(ix, type, is_signed))) ?\ - __Pyx__PyList_PopIndex(L, py_ix, ix) : (\ - (unlikely((py_ix) == Py_None)) ? __Pyx__PyObject_PopNewIndex(L, to_py_func(ix)) :\ - __Pyx__PyObject_PopIndex(L, py_ix))) -#define __Pyx_PyList_PopIndex(L, py_ix, ix, is_signed, type, to_py_func) (\ - __Pyx_fits_Py_ssize_t(ix, type, is_signed) ?\ - __Pyx__PyList_PopIndex(L, py_ix, ix) : (\ - (unlikely((py_ix) == Py_None)) ? __Pyx__PyObject_PopNewIndex(L, to_py_func(ix)) :\ - __Pyx__PyObject_PopIndex(L, py_ix))) -#else -#define __Pyx_PyList_PopIndex(L, py_ix, ix, is_signed, type, to_py_func)\ - __Pyx_PyObject_PopIndex(L, py_ix, ix, is_signed, type, to_py_func) -#define __Pyx_PyObject_PopIndex(L, py_ix, ix, is_signed, type, to_py_func) (\ - (unlikely((py_ix) == Py_None)) ? __Pyx__PyObject_PopNewIndex(L, to_py_func(ix)) :\ - __Pyx__PyObject_PopIndex(L, py_ix)) -#endif - -/* GetException.proto */ -#if CYTHON_FAST_THREAD_STATE -#define __Pyx_GetException(type, value, tb) __Pyx__GetException(__pyx_tstate, type, value, tb) -static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); -#else -static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb); -#endif - -/* PySequenceContains.proto */ -static CYTHON_INLINE int __Pyx_PySequence_ContainsTF(PyObject* item, PyObject* seq, int eq) { - int result = PySequence_Contains(seq, item); - return unlikely(result < 0) ? result : (result == (eq == Py_EQ)); -} - -/* Import.proto */ -static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level); - -/* ImportFrom.proto */ -static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name); - -/* GetAttr.proto */ -static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *, PyObject *); - -/* HasAttr.proto */ -#if __PYX_LIMITED_VERSION_HEX >= 0x030d00A1 -#define __Pyx_HasAttr(o, n) PyObject_HasAttrWithError(o, n) -#else -static CYTHON_INLINE int __Pyx_HasAttr(PyObject *, PyObject *); -#endif - -/* CallNextTpTraverse.proto */ -static int __Pyx_call_next_tp_traverse(PyObject* obj, visitproc v, void *a, traverseproc current_tp_traverse); - -/* CallNextTpClear.proto */ -static void __Pyx_call_next_tp_clear(PyObject* obj, inquiry current_tp_clear); - -/* SetPackagePathFromImportLib.proto */ -#if PY_MAJOR_VERSION >= 3 && !CYTHON_PEP489_MULTI_PHASE_INIT -static int __Pyx_SetPackagePathFromImportLib(PyObject *module_name); -#else -#define __Pyx_SetPackagePathFromImportLib(a) 0 -#endif - -/* IncludeStructmemberH.proto */ -#include - -/* FixUpExtensionType.proto */ -#if CYTHON_USE_TYPE_SPECS -static int __Pyx_fix_up_extension_type_from_spec(PyType_Spec *spec, PyTypeObject *type); -#endif - -/* ValidateBasesTuple.proto */ -#if CYTHON_COMPILING_IN_CPYTHON || CYTHON_COMPILING_IN_LIMITED_API || CYTHON_USE_TYPE_SPECS -static int __Pyx_validate_bases_tuple(const char *type_name, Py_ssize_t dictoffset, PyObject *bases); -#endif - -/* PyType_Ready.proto */ -CYTHON_UNUSED static int __Pyx_PyType_Ready(PyTypeObject *t); - -/* PyObject_GenericGetAttrNoDict.proto */ -#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 -static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj, PyObject* attr_name); -#else -#define __Pyx_PyObject_GenericGetAttrNoDict PyObject_GenericGetAttr -#endif - -/* PyObject_GenericGetAttr.proto */ -#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 -static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* attr_name); -#else -#define __Pyx_PyObject_GenericGetAttr PyObject_GenericGetAttr -#endif - -/* SetVTable.proto */ -static int __Pyx_SetVtable(PyTypeObject* typeptr , void* vtable); - -/* GetVTable.proto */ -static void* __Pyx_GetVtable(PyTypeObject *type); - -/* MergeVTables.proto */ -#if !CYTHON_COMPILING_IN_LIMITED_API -static int __Pyx_MergeVtables(PyTypeObject *type); -#endif - -/* SetupReduce.proto */ -#if !CYTHON_COMPILING_IN_LIMITED_API -static int __Pyx_setup_reduce(PyObject* type_obj); -#endif - -/* ImportDottedModule.proto */ -static PyObject *__Pyx_ImportDottedModule(PyObject *name, PyObject *parts_tuple); -#if PY_MAJOR_VERSION >= 3 -static PyObject *__Pyx_ImportDottedModule_WalkParts(PyObject *module, PyObject *name, PyObject *parts_tuple); -#endif - -/* Py3UpdateBases.proto */ -static PyObject* __Pyx_PEP560_update_bases(PyObject *bases); - -/* CalculateMetaclass.proto */ -static PyObject *__Pyx_CalculateMetaclass(PyTypeObject *metaclass, PyObject *bases); - -/* PyObjectLookupSpecial.proto */ -#if CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS -#define __Pyx_PyObject_LookupSpecialNoError(obj, attr_name) __Pyx__PyObject_LookupSpecial(obj, attr_name, 0) -#define __Pyx_PyObject_LookupSpecial(obj, attr_name) __Pyx__PyObject_LookupSpecial(obj, attr_name, 1) -static CYTHON_INLINE PyObject* __Pyx__PyObject_LookupSpecial(PyObject* obj, PyObject* attr_name, int with_error); -#else -#define __Pyx_PyObject_LookupSpecialNoError(o,n) __Pyx_PyObject_GetAttrStrNoError(o,n) -#define __Pyx_PyObject_LookupSpecial(o,n) __Pyx_PyObject_GetAttrStr(o,n) -#endif - -/* Py3ClassCreate.proto */ -static PyObject *__Pyx_Py3MetaclassPrepare(PyObject *metaclass, PyObject *bases, PyObject *name, PyObject *qualname, - PyObject *mkw, PyObject *modname, PyObject *doc); -static PyObject *__Pyx_Py3ClassCreate(PyObject *metaclass, PyObject *name, PyObject *bases, PyObject *dict, - PyObject *mkw, int calculate_metaclass, int allow_py2_metaclass); - -/* FetchSharedCythonModule.proto */ -static PyObject *__Pyx_FetchSharedCythonABIModule(void); - -/* FetchCommonType.proto */ -#if !CYTHON_USE_TYPE_SPECS -static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type); -#else -static PyTypeObject* __Pyx_FetchCommonTypeFromSpec(PyObject *module, PyType_Spec *spec, PyObject *bases); -#endif - -/* PyMethodNew.proto */ -#if CYTHON_COMPILING_IN_LIMITED_API -static PyObject *__Pyx_PyMethod_New(PyObject *func, PyObject *self, PyObject *typ) { - PyObject *typesModule=NULL, *methodType=NULL, *result=NULL; - CYTHON_UNUSED_VAR(typ); - if (!self) - return __Pyx_NewRef(func); - typesModule = PyImport_ImportModule("types"); - if (!typesModule) return NULL; - methodType = PyObject_GetAttrString(typesModule, "MethodType"); - Py_DECREF(typesModule); - if (!methodType) return NULL; - result = PyObject_CallFunctionObjArgs(methodType, func, self, NULL); - Py_DECREF(methodType); - return result; -} -#elif PY_MAJOR_VERSION >= 3 -static PyObject *__Pyx_PyMethod_New(PyObject *func, PyObject *self, PyObject *typ) { - CYTHON_UNUSED_VAR(typ); - if (!self) - return __Pyx_NewRef(func); - return PyMethod_New(func, self); -} -#else - #define __Pyx_PyMethod_New PyMethod_New -#endif - -/* PyVectorcallFastCallDict.proto */ -#if CYTHON_METH_FASTCALL -static CYTHON_INLINE PyObject *__Pyx_PyVectorcall_FastCallDict(PyObject *func, __pyx_vectorcallfunc vc, PyObject *const *args, size_t nargs, PyObject *kw); -#endif - -/* CythonFunctionShared.proto */ -#define __Pyx_CyFunction_USED -#define __Pyx_CYFUNCTION_STATICMETHOD 0x01 -#define __Pyx_CYFUNCTION_CLASSMETHOD 0x02 -#define __Pyx_CYFUNCTION_CCLASS 0x04 -#define __Pyx_CYFUNCTION_COROUTINE 0x08 -#define __Pyx_CyFunction_GetClosure(f)\ - (((__pyx_CyFunctionObject *) (f))->func_closure) -#if PY_VERSION_HEX < 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API - #define __Pyx_CyFunction_GetClassObj(f)\ - (((__pyx_CyFunctionObject *) (f))->func_classobj) -#else - #define __Pyx_CyFunction_GetClassObj(f)\ - ((PyObject*) ((PyCMethodObject *) (f))->mm_class) -#endif -#define __Pyx_CyFunction_SetClassObj(f, classobj)\ - __Pyx__CyFunction_SetClassObj((__pyx_CyFunctionObject *) (f), (classobj)) -#define __Pyx_CyFunction_Defaults(type, f)\ - ((type *)(((__pyx_CyFunctionObject *) (f))->defaults)) -#define __Pyx_CyFunction_SetDefaultsGetter(f, g)\ - ((__pyx_CyFunctionObject *) (f))->defaults_getter = (g) -typedef struct { -#if CYTHON_COMPILING_IN_LIMITED_API - PyObject_HEAD - PyObject *func; -#elif PY_VERSION_HEX < 0x030900B1 - PyCFunctionObject func; -#else - PyCMethodObject func; -#endif -#if CYTHON_BACKPORT_VECTORCALL - __pyx_vectorcallfunc func_vectorcall; -#endif -#if PY_VERSION_HEX < 0x030500A0 || CYTHON_COMPILING_IN_LIMITED_API - PyObject *func_weakreflist; -#endif - PyObject *func_dict; - PyObject *func_name; - PyObject *func_qualname; - PyObject *func_doc; - PyObject *func_globals; - PyObject *func_code; - PyObject *func_closure; -#if PY_VERSION_HEX < 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API - PyObject *func_classobj; -#endif - void *defaults; - int defaults_pyobjects; - size_t defaults_size; - int flags; - PyObject *defaults_tuple; - PyObject *defaults_kwdict; - PyObject *(*defaults_getter)(PyObject *); - PyObject *func_annotations; - PyObject *func_is_coroutine; -} __pyx_CyFunctionObject; -#undef __Pyx_CyOrPyCFunction_Check -#define __Pyx_CyFunction_Check(obj) __Pyx_TypeCheck(obj, __pyx_CyFunctionType) -#define __Pyx_CyOrPyCFunction_Check(obj) __Pyx_TypeCheck2(obj, __pyx_CyFunctionType, &PyCFunction_Type) -#define __Pyx_CyFunction_CheckExact(obj) __Pyx_IS_TYPE(obj, __pyx_CyFunctionType) -static CYTHON_INLINE int __Pyx__IsSameCyOrCFunction(PyObject *func, void *cfunc); -#undef __Pyx_IsSameCFunction -#define __Pyx_IsSameCFunction(func, cfunc) __Pyx__IsSameCyOrCFunction(func, cfunc) -static PyObject *__Pyx_CyFunction_Init(__pyx_CyFunctionObject* op, PyMethodDef *ml, - int flags, PyObject* qualname, - PyObject *closure, - PyObject *module, PyObject *globals, - PyObject* code); -static CYTHON_INLINE void __Pyx__CyFunction_SetClassObj(__pyx_CyFunctionObject* f, PyObject* classobj); -static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *m, - size_t size, - int pyobjects); -static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *m, - PyObject *tuple); -static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *m, - PyObject *dict); -static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *m, - PyObject *dict); -static int __pyx_CyFunction_init(PyObject *module); -#if CYTHON_METH_FASTCALL -static PyObject * __Pyx_CyFunction_Vectorcall_NOARGS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames); -static PyObject * __Pyx_CyFunction_Vectorcall_O(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames); -static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames); -static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS_METHOD(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames); -#if CYTHON_BACKPORT_VECTORCALL -#define __Pyx_CyFunction_func_vectorcall(f) (((__pyx_CyFunctionObject*)f)->func_vectorcall) -#else -#define __Pyx_CyFunction_func_vectorcall(f) (((PyCFunctionObject*)f)->vectorcall) -#endif -#endif - -/* CythonFunction.proto */ -static PyObject *__Pyx_CyFunction_New(PyMethodDef *ml, - int flags, PyObject* qualname, - PyObject *closure, - PyObject *module, PyObject *globals, - PyObject* code); - -/* CLineInTraceback.proto */ -#ifdef CYTHON_CLINE_IN_TRACEBACK -#define __Pyx_CLineForTraceback(tstate, c_line) (((CYTHON_CLINE_IN_TRACEBACK)) ? c_line : 0) -#else -static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line); -#endif - -/* CodeObjectCache.proto */ -#if !CYTHON_COMPILING_IN_LIMITED_API -typedef struct { - PyCodeObject* code_object; - int code_line; -} __Pyx_CodeObjectCacheEntry; -struct __Pyx_CodeObjectCache { - int count; - int max_count; - __Pyx_CodeObjectCacheEntry* entries; -}; -static struct __Pyx_CodeObjectCache __pyx_code_cache = {0,0,NULL}; -static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line); -static PyCodeObject *__pyx_find_code_object(int code_line); -static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object); -#endif - -/* AddTraceback.proto */ -static void __Pyx_AddTraceback(const char *funcname, int c_line, - int py_line, const char *filename); - -/* GCCDiagnostics.proto */ -#if !defined(__INTEL_COMPILER) && defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)) -#define __Pyx_HAS_GCC_DIAGNOSTIC -#endif - -/* CIntFromPy.proto */ -static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *); - -/* CIntToPy.proto */ -static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value); - -/* CIntToPy.proto */ -static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value); - -/* CIntFromPy.proto */ -static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *); - -/* CIntFromPy.proto */ -static CYTHON_INLINE unsigned int __Pyx_PyInt_As_unsigned_int(PyObject *); - -/* CIntToPy.proto */ -static CYTHON_INLINE PyObject* __Pyx_PyInt_From_unsigned_int(unsigned int value); - -/* CIntFromPy.proto */ -static CYTHON_INLINE size_t __Pyx_PyInt_As_size_t(PyObject *); - -/* FormatTypeName.proto */ -#if CYTHON_COMPILING_IN_LIMITED_API -typedef PyObject *__Pyx_TypeName; -#define __Pyx_FMT_TYPENAME "%U" -static __Pyx_TypeName __Pyx_PyType_GetName(PyTypeObject* tp); -#define __Pyx_DECREF_TypeName(obj) Py_XDECREF(obj) -#else -typedef const char *__Pyx_TypeName; -#define __Pyx_FMT_TYPENAME "%.200s" -#define __Pyx_PyType_GetName(tp) ((tp)->tp_name) -#define __Pyx_DECREF_TypeName(obj) -#endif - -/* CheckBinaryVersion.proto */ -static unsigned long __Pyx_get_runtime_version(void); -static int __Pyx_check_binary_version(unsigned long ct_version, unsigned long rt_version, int allow_newer); - -/* InitStrings.proto */ -static int __Pyx_InitStrings(__Pyx_StringTabEntry *t); - -/* #### Code section: module_declarations ### */ -static CYTHON_INLINE int __pyx_f_5tinyr_7_Record_overlaps(struct __pyx_obj_5tinyr__Record *__pyx_v_self, __pyx_t_5tinyr_Dfloat *__pyx_v_rect); /* proto*/ -static CYTHON_INLINE void __pyx_f_5tinyr_7_Record_copy_coords_to(struct __pyx_obj_5tinyr__Record *__pyx_v_self, __pyx_t_5tinyr_Dfloat *__pyx_v_coords); /* proto*/ -static struct __pyx_obj_5tinyr__Record *__pyx_f_5tinyr_7_Record_copy(CYTHON_UNUSED struct __pyx_obj_5tinyr__Record *__pyx_v_self, CYTHON_UNUSED struct __pyx_obj_5tinyr__Node *__pyx_v_newparent); /* proto*/ -static struct __pyx_obj_5tinyr__Record *__pyx_f_5tinyr_12_ChildRecord_copy(struct __pyx_obj_5tinyr__ChildRecord *__pyx_v_self, CYTHON_UNUSED struct __pyx_obj_5tinyr__Node *__pyx_v_newparent); /* proto*/ -static struct __pyx_obj_5tinyr__Record *__pyx_f_5tinyr_12_InnerRecord_copy(struct __pyx_obj_5tinyr__InnerRecord *__pyx_v_self, struct __pyx_obj_5tinyr__Node *__pyx_v_newparent); /* proto*/ -static struct __pyx_obj_5tinyr__Node *__pyx_f_5tinyr_5_Node_copy(struct __pyx_obj_5tinyr__Node *__pyx_v_self, struct __pyx_obj_5tinyr__Node *__pyx_v_parent); /* proto*/ -static CYTHON_INLINE void __pyx_f_5tinyr_5_Node_common_boundaries(struct __pyx_obj_5tinyr__Node *__pyx_v_self, __pyx_t_5tinyr_Dfloat *__pyx_v_target); /* proto*/ -static CYTHON_INLINE struct __pyx_obj_5tinyr__Record *__pyx_f_5tinyr_5_Node_choose_subtree_least_enlargement(struct __pyx_obj_5tinyr__Node *__pyx_v_self, struct __pyx_obj_5tinyr__Record *__pyx_v_ir); /* proto*/ -static void __pyx_f_5tinyr_5_Node_find_overlapping_leafs_recursive(struct __pyx_obj_5tinyr__Node *__pyx_v_self, PyObject *__pyx_v_result, __pyx_t_5tinyr_Dfloat *__pyx_v_coords); /* proto*/ -static void __pyx_f_5tinyr_5_Node_addChild(struct __pyx_obj_5tinyr__Node *__pyx_v_self, struct __pyx_obj_5tinyr__Node *__pyx_v_node); /* proto*/ -static CYTHON_INLINE int __pyx_f_5tinyr_5RTree_insert_at_node(struct __pyx_obj_5tinyr_RTree *__pyx_v_self, struct __pyx_obj_5tinyr__Record *__pyx_v_r, struct __pyx_obj_5tinyr__Node *__pyx_v_L); /* proto*/ -static CYTHON_INLINE void __pyx_f_5tinyr_5RTree_after_remove(struct __pyx_obj_5tinyr_RTree *__pyx_v_self, struct __pyx_obj_5tinyr__Node *__pyx_v_node); /* proto*/ -static CYTHON_INLINE struct __pyx_obj_5tinyr__Node *__pyx_f_5tinyr_5RTree_FindLeaf_and_remove(struct __pyx_obj_5tinyr_RTree *__pyx_v_self, PyObject *__pyx_v_identifier, __pyx_t_5tinyr_Dfloat *__pyx_v_coords); /* proto*/ -static CYTHON_INLINE int __pyx_f_5tinyr_5RTree_CondenseTree(struct __pyx_obj_5tinyr_RTree *__pyx_v_self, struct __pyx_obj_5tinyr__Node *__pyx_v_node); /* proto*/ -static struct __pyx_obj_5tinyr__Node *__pyx_f_5tinyr_5RTree_find_inner_node(struct __pyx_obj_5tinyr_RTree *__pyx_v_self, struct __pyx_obj_5tinyr__InnerRecord *__pyx_v_record); /* proto*/ -static __pyx_t_5tinyr_Duint __pyx_f_5tinyr_5RTree_subtree_len(CYTHON_UNUSED struct __pyx_obj_5tinyr_RTree *__pyx_v_self, struct __pyx_obj_5tinyr__InnerRecord *__pyx_v_rec); /* proto*/ -static CYTHON_INLINE int __pyx_f_5tinyr_5RTree_is_full(struct __pyx_obj_5tinyr_RTree *__pyx_v_self, struct __pyx_obj_5tinyr__Node *__pyx_v_node); /* proto*/ -static CYTHON_INLINE struct __pyx_obj_5tinyr__Node *__pyx_f_5tinyr_5RTree__ChooseLeaf(struct __pyx_obj_5tinyr_RTree *__pyx_v_self, struct __pyx_obj_5tinyr__Record *__pyx_v_ir); /* proto*/ -static CYTHON_INLINE PyObject *__pyx_f_5tinyr_5RTree__AdjustTree(struct __pyx_obj_5tinyr_RTree *__pyx_v_self, struct __pyx_obj_5tinyr__Node *__pyx_v_L, struct __pyx_obj_5tinyr__Node *__pyx_v_LL); /* proto*/ -static struct __pyx_obj_5tinyr__Node *__pyx_f_5tinyr_5RTree_SplitNode(struct __pyx_obj_5tinyr_RTree *__pyx_v_self, struct __pyx_obj_5tinyr__Node *__pyx_v_node, struct __pyx_obj_5tinyr__Record *__pyx_v_ir); /* proto*/ -static CYTHON_INLINE int __pyx_f_5tinyr_5RTree_PickNext(CYTHON_UNUSED struct __pyx_obj_5tinyr_RTree *__pyx_v_self, struct __pyx_obj_5tinyr__Node *__pyx_v_node, PyObject *__pyx_v_remaining, struct __pyx_obj_5tinyr__Node *__pyx_v_newnode); /* proto*/ - -/* Module declarations from "libc.float" */ - -/* Module declarations from "tinyr" */ -static CYTHON_INLINE void __pyx_f_5tinyr_init_Dfloat4(__pyx_t_5tinyr_Dfloat *); /*proto*/ -static CYTHON_INLINE void __pyx_f_5tinyr_make_order(__pyx_t_5tinyr_Dfloat *); /*proto*/ -static void __pyx_f_5tinyr_tuple_to_array_interleaved(PyObject *, __pyx_t_5tinyr_Dfloat *); /*proto*/ -static void __pyx_f_5tinyr_tuple_to_array_normal(PyObject *, __pyx_t_5tinyr_Dfloat *); /*proto*/ -static PyObject *__pyx_f_5tinyr_array_to_tuple_interleaved(__pyx_t_5tinyr_Dfloat *); /*proto*/ -static PyObject *__pyx_f_5tinyr_array_to_tuple_normal(__pyx_t_5tinyr_Dfloat *); /*proto*/ -static CYTHON_INLINE struct __pyx_obj_5tinyr__InnerRecord *__pyx_f_5tinyr_parent_record(struct __pyx_obj_5tinyr__Node *); /*proto*/ -static CYTHON_INLINE void __pyx_f_5tinyr_common_boundaries(PyObject *, __pyx_t_5tinyr_Dfloat *); /*proto*/ -static CYTHON_INLINE __pyx_t_5tinyr_Dfloat __pyx_f_5tinyr_area(__pyx_t_5tinyr_Dfloat *); /*proto*/ -static PyObject *__pyx_f_5tinyr_find_overlapping_leafs_recursive(struct __pyx_obj_5tinyr_RTree *, __pyx_t_5tinyr_Dfloat *); /*proto*/ -static int __pyx_f_5tinyr_PickSeedsQuadratic(struct __pyx_obj_5tinyr__Node *, PyObject *, struct __pyx_obj_5tinyr__Node *); /*proto*/ -static PyObject *__pyx_f_5tinyr___pyx_unpickle__Record__set_state(struct __pyx_obj_5tinyr__Record *, PyObject *); /*proto*/ -static PyObject *__pyx_f_5tinyr___pyx_unpickle__ChildRecord__set_state(struct __pyx_obj_5tinyr__ChildRecord *, PyObject *); /*proto*/ -static PyObject *__pyx_f_5tinyr___pyx_unpickle_RTreeInfo__set_state(struct __pyx_obj_5tinyr_RTreeInfo *, PyObject *); /*proto*/ -static CYTHON_INLINE PyObject *__Pyx_carray_to_py___pyx_t_5tinyr_Dfloat(__pyx_t_5tinyr_Dfloat *, Py_ssize_t); /*proto*/ -static CYTHON_INLINE PyObject *__Pyx_carray_to_tuple___pyx_t_5tinyr_Dfloat(__pyx_t_5tinyr_Dfloat *, Py_ssize_t); /*proto*/ -static int __Pyx_carray_from_py___pyx_t_5tinyr_Dfloat(PyObject *, __pyx_t_5tinyr_Dfloat *, Py_ssize_t); /*proto*/ -/* #### Code section: typeinfo ### */ -/* #### Code section: before_global_var ### */ -#define __Pyx_MODULE_NAME "tinyr" -extern int __pyx_module_is_main_tinyr; -int __pyx_module_is_main_tinyr = 0; - -/* Implementation of "tinyr" */ -/* #### Code section: global_var ### */ -static PyObject *__pyx_builtin_range; -static PyObject *__pyx_builtin_NotImplemented; -static PyObject *__pyx_builtin_TypeError; -static PyObject *__pyx_builtin_ValueError; -static PyObject *__pyx_builtin_AttributeError; -static PyObject *__pyx_builtin_AssertionError; -static PyObject *__pyx_builtin_KeyError; -static PyObject *__pyx_builtin_IndexError; -static PyObject *__pyx_builtin_StopIteration; -static PyObject *__pyx_builtin_id; -static PyObject *__pyx_builtin_OverflowError; -static PyObject *__pyx_builtin_enumerate; -/* #### Code section: string_decls ### */ -static const char __pyx_k_L[] = "L"; -static const char __pyx_k_d[] = " %d;\n"; -static const char __pyx_k_n[] = "n"; -static const char __pyx_k__4[] = "\n"; -static const char __pyx_k__5[] = "}"; -static const char __pyx_k__7[] = "."; -static const char __pyx_k_cr[] = "cr"; -static const char __pyx_k_gc[] = "gc"; -static const char __pyx_k_id[] = "id"; -static const char __pyx_k_ir[] = "ir"; -static const char __pyx_k__10[] = "*"; -static const char __pyx_k__65[] = "?"; -static const char __pyx_k_d_2[] = "d"; -static const char __pyx_k_doc[] = "__doc__"; -static const char __pyx_k_key[] = "key"; -static const char __pyx_k_lid[] = "lid"; -static const char __pyx_k_new[] = "__new__"; -static const char __pyx_k_nid[] = "nid"; -static const char __pyx_k_pop[] = "pop"; -static const char __pyx_k_rec[] = "rec"; -static const char __pyx_k_ret[] = "ret"; -static const char __pyx_k_rid[] = "rid"; -static const char __pyx_k_Node[] = "_Node"; -static const char __pyx_k_chid[] = "chid"; -static const char __pyx_k_copy[] = "copy"; -static const char __pyx_k_dict[] = "__dict__"; -static const char __pyx_k_leaf[] = "leaf"; -static const char __pyx_k_main[] = "__main__"; -static const char __pyx_k_name[] = "__name__"; -static const char __pyx_k_next[] = "next"; -static const char __pyx_k_node[] = "node"; -static const char __pyx_k_self[] = "self"; -static const char __pyx_k_spec[] = "__spec__"; -static const char __pyx_k_test[] = "__test__"; -static const char __pyx_k_RTree[] = "RTree"; -static const char __pyx_k_child[] = "child"; -static const char __pyx_k_class[] = "__class__"; -static const char __pyx_k_depth[] = "depth"; -static const char __pyx_k_level[] = "level"; -static const char __pyx_k_point[] = "point"; -static const char __pyx_k_range[] = "range"; -static const char __pyx_k_rtree[] = "rtree"; -static const char __pyx_k_state[] = "state"; -static const char __pyx_k_super[] = "super"; -static const char __pyx_k_tinyr[] = "tinyr"; -static const char __pyx_k_valid[] = "valid"; -static const char __pyx_k_write[] = "write"; -static const char __pyx_k_Record[] = "_Record"; -static const char __pyx_k_coords[] = "coords"; -static const char __pyx_k_dict_2[] = "_dict"; -static const char __pyx_k_enable[] = "enable"; -static const char __pyx_k_import[] = "__import__"; -static const char __pyx_k_insert[] = "insert"; -static const char __pyx_k_module[] = "__module__"; -static const char __pyx_k_parent[] = "parent"; -static const char __pyx_k_pickle[] = "pickle"; -static const char __pyx_k_record[] = "record"; -static const char __pyx_k_reduce[] = "__reduce__"; -static const char __pyx_k_remove[] = "remove"; -static const char __pyx_k_result[] = "result"; -static const char __pyx_k_search[] = "search"; -static const char __pyx_k_to_dot[] = "to_dot"; -static const char __pyx_k_update[] = "update"; -static const char __pyx_k_KVIIter[] = "_KVIIter"; -static const char __pyx_k_disable[] = "disable"; -static const char __pyx_k_max_cap[] = "max_cap"; -static const char __pyx_k_min_cap[] = "min_cap"; -static const char __pyx_k_prepare[] = "__prepare__"; -static const char __pyx_k_Iterator[] = "_Iterator"; -static const char __pyx_k_KeyError[] = "KeyError"; -static const char __pyx_k_KeysIter[] = "_KeysIter"; -static const char __pyx_k_NodeIter[] = "_NodeIter"; -static const char __pyx_k_TR_TABLE[] = ">];\n"; -static const char __pyx_k_coords_a[] = "coords_a"; -static const char __pyx_k_filelike[] = "filelike"; -static const char __pyx_k_get_info[] = "get_info"; -static const char __pyx_k_getstate[] = "__getstate__"; -static const char __pyx_k_iterkeys[] = "iterkeys"; -static const char __pyx_k_pyx_type[] = "__pyx_type"; -static const char __pyx_k_qualname[] = "__qualname__"; -static const char __pyx_k_set_name[] = "__set_name__"; -static const char __pyx_k_setstate[] = "__setstate__"; -static const char __pyx_k_ItemsIter[] = "_ItemsIter"; -static const char __pyx_k_RTreeInfo[] = "RTreeInfo"; -static const char __pyx_k_TypeError[] = "TypeError"; -static const char __pyx_k_enumerate[] = "enumerate"; -static const char __pyx_k_isenabled[] = "isenabled"; -static const char __pyx_k_iteritems[] = "iteritems"; -static const char __pyx_k_itertools[] = "itertools"; -static const char __pyx_k_leafnodes[] = "leafnodes"; -static const char __pyx_k_metaclass[] = "__metaclass__"; -static const char __pyx_k_nodedepht[] = "nodedepht"; -static const char __pyx_k_pyx_state[] = "__pyx_state"; -static const char __pyx_k_reduce_ex[] = "__reduce_ex__"; -static const char __pyx_k_IndexError[] = "IndexError"; -static const char __pyx_k_RTree_copy[] = "RTree.copy"; -static const char __pyx_k_ValueError[] = "ValueError"; -static const char __pyx_k_ValuesIter[] = "_ValuesIter"; -static const char __pyx_k_identifier[] = "identifier"; -static const char __pyx_k_item_count[] = "item_count"; -static const char __pyx_k_itervalues[] = "itervalues"; -static const char __pyx_k_pyx_result[] = "__pyx_result"; -static const char __pyx_k_pyx_vtable[] = "__pyx_vtable__"; -static const char __pyx_k_tmp_coords[] = "tmp_coords"; -static const char __pyx_k_ChildRecord[] = "_ChildRecord"; -static const char __pyx_k_InnerRecord[] = "_InnerRecord"; -static const char __pyx_k_PickleError[] = "PickleError"; -static const char __pyx_k_RTree_valid[] = "RTree.valid"; -static const char __pyx_k_interleaved[] = "interleaved"; -static const char __pyx_k_mro_entries[] = "__mro_entries__"; -static const char __pyx_k_RTreeInvalid[] = "RTreeInvalid"; -static const char __pyx_k_RTree_insert[] = "RTree.insert"; -static const char __pyx_k_RTree_remove[] = "RTree.remove"; -static const char __pyx_k_RTree_search[] = "RTree.search"; -static const char __pyx_k_combinations[] = "combinations"; -static const char __pyx_k_initializing[] = "_initializing"; -static const char __pyx_k_is_coroutine[] = "_is_coroutine"; -static const char __pyx_k_pyx_checksum[] = "__pyx_checksum"; -static const char __pyx_k_stringsource[] = ""; -static const char __pyx_k_use_setstate[] = "use_setstate"; -static const char __pyx_k_OverflowError[] = "OverflowError"; -static const char __pyx_k_RectangleIter[] = "_RectangleIter"; -static const char __pyx_k_StopIteration[] = "StopIteration"; -static const char __pyx_k_init_subclass[] = "__init_subclass__"; -static const char __pyx_k_reduce_cython[] = "__reduce_cython__"; -static const char __pyx_k_AssertionError[] = "AssertionError"; -static const char __pyx_k_AttributeError[] = "AttributeError"; -static const char __pyx_k_NotImplemented[] = "NotImplemented"; -static const char __pyx_k_RTree_get_info[] = "RTree.get_info"; -static const char __pyx_k_RTree_iterkeys[] = "RTree.iterkeys"; -static const char __pyx_k_ChildRecordIter[] = "_ChildRecordIter"; -static const char __pyx_k_RTree_iteritems[] = "RTree.iteritems"; -static const char __pyx_k_iter_rectangles[] = "iter_rectangles"; -static const char __pyx_k_pyx_PickleError[] = "__pyx_PickleError"; -static const char __pyx_k_setstate_cython[] = "__setstate_cython__"; -static const char __pyx_k_tinyr_tinyr_pyx[] = "tinyr/tinyr.pyx"; -static const char __pyx_k_RTreeInfo_to_dot[] = "RTreeInfo.to_dot"; -static const char __pyx_k_RTree_itervalues[] = "RTree.itervalues"; -static const char __pyx_k_d_d_tailport_d_s[] = " %d->%d [tailport=\"%d:s\"]\n"; -static const char __pyx_k_node_record_leaf[] = "node_record_leaf"; -static const char __pyx_k_node_record_child[] = "node_record_child"; -static const char __pyx_k_asyncio_coroutines[] = "asyncio.coroutines"; -static const char __pyx_k_cline_in_traceback[] = "cline_in_traceback"; -static const char __pyx_k_node_shape_ellipse[] = "\n node [shape=\"ellipse\"]; \n"; -static const char __pyx_k_search_surrounding[] = "search_surrounding"; -static const char __pyx_k_leafnodes_and_depth[] = "leafnodes_and_depth"; -static const char __pyx_k_Node___reduce_cython[] = "_Node.__reduce_cython__"; -static const char __pyx_k_pyx_unpickle__Record[] = "__pyx_unpickle__Record"; -static const char __pyx_k_RTree___reduce_cython[] = "RTree.__reduce_cython__"; -static const char __pyx_k_Node___setstate_cython[] = "_Node.__setstate_cython__"; -static const char __pyx_k_Record___reduce_cython[] = "_Record.__reduce_cython__"; -static const char __pyx_k_pyx_unpickle_RTreeInfo[] = "__pyx_unpickle_RTreeInfo"; -static const char __pyx_k_KVIIter___reduce_cython[] = "_KVIIter.__reduce_cython__"; -static const char __pyx_k_RTree___setstate_cython[] = "RTree.__setstate_cython__"; -static const char __pyx_k_Iterator___reduce_cython[] = "_Iterator.__reduce_cython__"; -static const char __pyx_k_KeysIter___reduce_cython[] = "_KeysIter.__reduce_cython__"; -static const char __pyx_k_NodeIter___reduce_cython[] = "_NodeIter.__reduce_cython__"; -static const char __pyx_k_RTree_search_surrounding[] = "RTree.search_surrounding"; -static const char __pyx_k_Record___setstate_cython[] = "_Record.__setstate_cython__"; -static const char __pyx_k_ItemsIter___reduce_cython[] = "_ItemsIter.__reduce_cython__"; -static const char __pyx_k_KVIIter___setstate_cython[] = "_KVIIter.__setstate_cython__"; -static const char __pyx_k_RTreeInfo___reduce_cython[] = "RTreeInfo.__reduce_cython__"; -static const char __pyx_k_RTreeInfo_iter_rectangles[] = "RTreeInfo.iter_rectangles"; -static const char __pyx_k_misspositioned_inner_node[] = "misspositioned inner node"; -static const char __pyx_k_pyx_unpickle__ChildRecord[] = "__pyx_unpickle__ChildRecord"; -static const char __pyx_k_Iterator___setstate_cython[] = "_Iterator.__setstate_cython__"; -static const char __pyx_k_KeysIter___setstate_cython[] = "_KeysIter.__setstate_cython__"; -static const char __pyx_k_NodeIter___setstate_cython[] = "_NodeIter.__setstate_cython__"; -static const char __pyx_k_ValuesIter___reduce_cython[] = "_ValuesIter.__reduce_cython__"; -static const char __pyx_k_ChildRecord___reduce_cython[] = "_ChildRecord.__reduce_cython__"; -static const char __pyx_k_InnerRecord___reduce_cython[] = "_InnerRecord.__reduce_cython__"; -static const char __pyx_k_ItemsIter___setstate_cython[] = "_ItemsIter.__setstate_cython__"; -static const char __pyx_k_RTreeInfo___setstate_cython[] = "RTreeInfo.__setstate_cython__"; -static const char __pyx_k_inconsistent_item_count_d_d[] = "inconsistent item count %d != %d"; -static const char __pyx_k_inconsistent_node_depth_d_d[] = "inconsistent node depth: %d != %d"; -static const char __pyx_k_TD_PORT_d_CELLSPACING_0_d_TD[] = "%d"; -static const char __pyx_k_ValuesIter___setstate_cython[] = "_ValuesIter.__setstate_cython__"; -static const char __pyx_k_len_point_must_be_2_len_is_d[] = "len(point) must be 2, len is %d"; -static const char __pyx_k_ChildRecord___setstate_cython[] = "_ChildRecord.__setstate_cython__"; -static const char __pyx_k_InnerRecord___setstate_cython[] = "_InnerRecord.__setstate_cython__"; -static const char __pyx_k_RectangleIter___reduce_cython[] = "_RectangleIter.__reduce_cython__"; -static const char __pyx_k_digraph_RTree_node_shape_none[] = "digraph RTree {\n node [shape=\"none\"]; \n"; -static const char __pyx_k_len_coords_must_be_4_len_is_d[] = "len(coords) must be 4, len is %d"; -static const char __pyx_k_ChildRecordIter___reduce_cython[] = "_ChildRecordIter.__reduce_cython__"; -static const char __pyx_k_ChildRecordIter___setstate_cyth[] = "_ChildRecordIter.__setstate_cython__"; -static const char __pyx_k_Fast_2D_R_Tree_implementation_i[] = "\nFast 2D R-Tree implementation in cython.\n\nThe implementation is based on the original paper [Gut84]. \n\n\n\n[Gut84] R-trees: A Dynamic Index Structure for Spatial Searching, A. Guttman,\n Proc ACM SIGMOD Int, 47-57, 1984\n \n[Bec90] The R*-tree: An efficient and robust access method for points and\n rectangles, N. Beckmann, H.-P. Kriegel, R. Schneider, and B. Seeger,\n ACM SIGMOD, 322-331, 1990\n"; -static const char __pyx_k_RectangleIter___setstate_cython[] = "_RectangleIter.__setstate_cython__"; -static const char __pyx_k_d_label_TABLE_BORDER_0_CELLBORD[] = " %d [label=<"; -static const char __pyx_k_leaf_level_is_not_equal_for_all[] = "leaf level is not equal for all leafs"; -static const char __pyx_k_no_parent_entry_holds_the_child[] = "no parent entry holds the child"; -static const char __pyx_k_Incompatible_checksums_0x_x_vs_0[] = "Incompatible checksums (0x%x vs (0xd6fae5e, 0xd6626c4, 0xfb1b8c2) = (coords))"; -static const char __pyx_k_coordinates_as_list_or_tuple_exp[] = "coordinates as list or tuple expected, got %s"; -static const char __pyx_k_double_link_doesn_t_cover_itself[] = "double-link doesn't cover itself"; -static const char __pyx_k_for_min_max_capacities_it_s_requ[] = "for min/max capacities, it's required that min_cap <= max_cap/2.0"; -static const char __pyx_k_indexing_RTree_only_possible_wit[] = "indexing RTree only possible with rectangle or point (x, y)"; -static const char __pyx_k_len_coords_must_be_4_length_is_d[] = "len(coords) must be 4, length is %d"; -static const char __pyx_k_no_default___reduce___due_to_non[] = "no default __reduce__ due to non-trivial __cinit__"; -static const char __pyx_k_non_leaf_node_has_invalid_number[] = "non-leaf node has invalid number of entries: %d <= len(%s) <= %d == False"; -static const char __pyx_k_root_must_have_at_least_2_record[] = "root must have at least 2 records, not %d."; -static const char __pyx_k_wrong_combined_area_of_records_o[] = "wrong combined area of records of a node"; -static const char __pyx_k_Incompatible_checksums_0x_x_vs_0_2[] = "Incompatible checksums (0x%x vs (0x9d7f65c, 0xaab32ac, 0xcaebb2a) = (coords, identifier))"; -static const char __pyx_k_Incompatible_checksums_0x_x_vs_0_3[] = "Incompatible checksums (0x%x vs (0xda92ccd, 0x4106bf8, 0x9a335a4) = (rtree))"; -/* #### Code section: decls ### */ -static PyObject *__pyx_pf_5tinyr_7_Record___reduce_cython__(struct __pyx_obj_5tinyr__Record *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_5tinyr_7_Record_2__setstate_cython__(struct __pyx_obj_5tinyr__Record *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */ -static int __pyx_pf_5tinyr_12_ChildRecord___init__(struct __pyx_obj_5tinyr__ChildRecord *__pyx_v_self, PyObject *__pyx_v_identifier); /* proto */ -static PyObject *__pyx_pf_5tinyr_12_ChildRecord_2__reduce_cython__(struct __pyx_obj_5tinyr__ChildRecord *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_5tinyr_12_ChildRecord_4__setstate_cython__(struct __pyx_obj_5tinyr__ChildRecord *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */ -static int __pyx_pf_5tinyr_12_InnerRecord___cinit__(struct __pyx_obj_5tinyr__InnerRecord *__pyx_v_self, struct __pyx_obj_5tinyr__Node *__pyx_v_child); /* proto */ -static PyObject *__pyx_pf_5tinyr_12_InnerRecord_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_5tinyr__InnerRecord *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_5tinyr_12_InnerRecord_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_5tinyr__InnerRecord *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */ -static int __pyx_pf_5tinyr_5_Node___cinit__(struct __pyx_obj_5tinyr__Node *__pyx_v_self, struct __pyx_obj_5tinyr__Node *__pyx_v_parent); /* proto */ -static PyObject *__pyx_pf_5tinyr_5_Node_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_5tinyr__Node *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_5tinyr_5_Node_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_5tinyr__Node *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */ -static PyObject *__pyx_pf_5tinyr_5RTree_7min_cap___get__(struct __pyx_obj_5tinyr_RTree *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_5tinyr_5RTree_7max_cap___get__(struct __pyx_obj_5tinyr_RTree *__pyx_v_self); /* proto */ -static int __pyx_pf_5tinyr_5RTree___cinit__(struct __pyx_obj_5tinyr_RTree *__pyx_v_self); /* proto */ -static int __pyx_pf_5tinyr_5RTree_2__init__(struct __pyx_obj_5tinyr_RTree *__pyx_v_self, PyObject *__pyx_v_interleaved, PyObject *__pyx_v_max_cap, PyObject *__pyx_v_min_cap); /* proto */ -static Py_ssize_t __pyx_pf_5tinyr_5RTree_4__len__(struct __pyx_obj_5tinyr_RTree *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_5tinyr_5RTree_6__getitem__(struct __pyx_obj_5tinyr_RTree *__pyx_v_self, PyObject *__pyx_v_item); /* proto */ -static PyObject *__pyx_pf_5tinyr_5RTree_8iterkeys(struct __pyx_obj_5tinyr_RTree *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_5tinyr_5RTree_10itervalues(struct __pyx_obj_5tinyr_RTree *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_5tinyr_5RTree_12iteritems(struct __pyx_obj_5tinyr_RTree *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_5tinyr_5RTree_14get_info(struct __pyx_obj_5tinyr_RTree *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_5tinyr_5RTree_16insert(struct __pyx_obj_5tinyr_RTree *__pyx_v_self, PyObject *__pyx_v_key, PyObject *__pyx_v_coords); /* proto */ -static PyObject *__pyx_pf_5tinyr_5RTree_18search(struct __pyx_obj_5tinyr_RTree *__pyx_v_self, PyObject *__pyx_v_coords); /* proto */ -static PyObject *__pyx_pf_5tinyr_5RTree_20copy(struct __pyx_obj_5tinyr_RTree *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_5tinyr_5RTree_22search_surrounding(struct __pyx_obj_5tinyr_RTree *__pyx_v_self, PyObject *__pyx_v_point); /* proto */ -static PyObject *__pyx_pf_5tinyr_5RTree_24remove(struct __pyx_obj_5tinyr_RTree *__pyx_v_self, PyObject *__pyx_v_identifier, PyObject *__pyx_v_coords); /* proto */ -static PyObject *__pyx_pf_5tinyr_5RTree_26valid(struct __pyx_obj_5tinyr_RTree *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_5tinyr_5RTree_28__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_5tinyr_RTree *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_5tinyr_5RTree_30__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_5tinyr_RTree *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */ -static int __pyx_pf_5tinyr_9_Iterator___cinit__(struct __pyx_obj_5tinyr__Iterator *__pyx_v_self, struct __pyx_obj_5tinyr_RTree *__pyx_v_rtree); /* proto */ -static PyObject *__pyx_pf_5tinyr_9_Iterator_2__iter__(struct __pyx_obj_5tinyr__Iterator *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_5tinyr_9_Iterator_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_5tinyr__Iterator *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_5tinyr_9_Iterator_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_5tinyr__Iterator *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */ -static int __pyx_pf_5tinyr_9_NodeIter___cinit__(struct __pyx_obj_5tinyr__NodeIter *__pyx_v_self, struct __pyx_obj_5tinyr_RTree *__pyx_v_rtree); /* proto */ -static PyObject *__pyx_pf_5tinyr_9_NodeIter_2__next__(struct __pyx_obj_5tinyr__NodeIter *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_5tinyr_9_NodeIter_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_5tinyr__NodeIter *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_5tinyr_9_NodeIter_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_5tinyr__NodeIter *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */ -static int __pyx_pf_5tinyr_14_RectangleIter___cinit__(struct __pyx_obj_5tinyr__RectangleIter *__pyx_v_self, struct __pyx_obj_5tinyr_RTree *__pyx_v_rtree); /* proto */ -static PyObject *__pyx_pf_5tinyr_14_RectangleIter_2__next__(struct __pyx_obj_5tinyr__RectangleIter *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_5tinyr_14_RectangleIter_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_5tinyr__RectangleIter *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_5tinyr_14_RectangleIter_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_5tinyr__RectangleIter *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */ -static int __pyx_pf_5tinyr_16_ChildRecordIter___cinit__(struct __pyx_obj_5tinyr__ChildRecordIter *__pyx_v_self, struct __pyx_obj_5tinyr_RTree *__pyx_v_rtree); /* proto */ -static PyObject *__pyx_pf_5tinyr_16_ChildRecordIter_2__next__(struct __pyx_obj_5tinyr__ChildRecordIter *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_5tinyr_16_ChildRecordIter_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_5tinyr__ChildRecordIter *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_5tinyr_16_ChildRecordIter_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_5tinyr__ChildRecordIter *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */ -static int __pyx_pf_5tinyr_8_KVIIter___cinit__(struct __pyx_obj_5tinyr__KVIIter *__pyx_v_self, struct __pyx_obj_5tinyr_RTree *__pyx_v_rtree); /* proto */ -static PyObject *__pyx_pf_5tinyr_8_KVIIter_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_5tinyr__KVIIter *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_5tinyr_8_KVIIter_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_5tinyr__KVIIter *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */ -static PyObject *__pyx_pf_5tinyr_9_KeysIter___next__(struct __pyx_obj_5tinyr__KeysIter *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_5tinyr_9_KeysIter_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_5tinyr__KeysIter *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_5tinyr_9_KeysIter_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_5tinyr__KeysIter *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */ -static PyObject *__pyx_pf_5tinyr_11_ValuesIter___next__(struct __pyx_obj_5tinyr__ValuesIter *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_5tinyr_11_ValuesIter_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_5tinyr__ValuesIter *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_5tinyr_11_ValuesIter_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_5tinyr__ValuesIter *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */ -static PyObject *__pyx_pf_5tinyr_10_ItemsIter___next__(struct __pyx_obj_5tinyr__ItemsIter *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_5tinyr_10_ItemsIter_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_5tinyr__ItemsIter *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_5tinyr_10_ItemsIter_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_5tinyr__ItemsIter *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */ -static PyObject *__pyx_pf_5tinyr_9RTreeInfo_6levels___get__(struct __pyx_obj_5tinyr_RTreeInfo *__pyx_v_self); /* proto */ -static int __pyx_pf_5tinyr_9RTreeInfo___init__(struct __pyx_obj_5tinyr_RTreeInfo *__pyx_v_self, struct __pyx_obj_5tinyr_RTree *__pyx_v_rtree); /* proto */ -static PyObject *__pyx_pf_5tinyr_9RTreeInfo_2iter_rectangles(struct __pyx_obj_5tinyr_RTreeInfo *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_5tinyr_9RTreeInfo_15common_boundary___get__(struct __pyx_obj_5tinyr_RTreeInfo *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_5tinyr_9RTreeInfo_5width___get__(struct __pyx_obj_5tinyr_RTreeInfo *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_5tinyr_9RTreeInfo_6height___get__(struct __pyx_obj_5tinyr_RTreeInfo *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_5tinyr_9RTreeInfo_4to_dot(struct __pyx_obj_5tinyr_RTreeInfo *__pyx_v_self, PyObject *__pyx_v_filelike); /* proto */ -static PyObject *__pyx_pf_5tinyr_9RTreeInfo_6__reduce_cython__(struct __pyx_obj_5tinyr_RTreeInfo *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_5tinyr_9RTreeInfo_8__setstate_cython__(struct __pyx_obj_5tinyr_RTreeInfo *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */ -static PyObject *__pyx_pf_5tinyr___pyx_unpickle__Record(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */ -static PyObject *__pyx_pf_5tinyr_2__pyx_unpickle__ChildRecord(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */ -static PyObject *__pyx_pf_5tinyr_4__pyx_unpickle_RTreeInfo(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */ -static PyObject *__pyx_tp_new_5tinyr__Record(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ -static PyObject *__pyx_tp_new_5tinyr__ChildRecord(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ -static PyObject *__pyx_tp_new_5tinyr__InnerRecord(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ -static PyObject *__pyx_tp_new_5tinyr__Node(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ -static PyObject *__pyx_tp_new_5tinyr_RTree(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ -static PyObject *__pyx_tp_new_5tinyr__Iterator(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ -static PyObject *__pyx_tp_new_5tinyr__ChildRecordIter(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ -static PyObject *__pyx_tp_new_5tinyr__KVIIter(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ -static PyObject *__pyx_tp_new_5tinyr__NodeIter(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ -static PyObject *__pyx_tp_new_5tinyr__RectangleIter(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ -static PyObject *__pyx_tp_new_5tinyr_RTreeInfo(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ -static __Pyx_CachedCFunction __pyx_umethod_PyList_Type_pop = {0, 0, 0, 0, 0}; -static __Pyx_CachedCFunction __pyx_umethod_PyList_Type_remove = {0, 0, 0, 0, 0}; -/* #### Code section: late_includes ### */ -/* #### Code section: module_state ### */ -typedef struct { - PyObject *__pyx_d; - PyObject *__pyx_b; - PyObject *__pyx_cython_runtime; - PyObject *__pyx_empty_tuple; - PyObject *__pyx_empty_bytes; - PyObject *__pyx_empty_unicode; - #ifdef __Pyx_CyFunction_USED - PyTypeObject *__pyx_CyFunctionType; - #endif - #ifdef __Pyx_FusedFunction_USED - PyTypeObject *__pyx_FusedFunctionType; - #endif - #ifdef __Pyx_Generator_USED - PyTypeObject *__pyx_GeneratorType; - #endif - #ifdef __Pyx_IterableCoroutine_USED - PyTypeObject *__pyx_IterableCoroutineType; - #endif - #ifdef __Pyx_Coroutine_USED - PyTypeObject *__pyx_CoroutineAwaitType; - #endif - #ifdef __Pyx_Coroutine_USED - PyTypeObject *__pyx_CoroutineType; - #endif - #if CYTHON_USE_MODULE_STATE - #endif - #if CYTHON_USE_MODULE_STATE - PyObject *__pyx_type_5tinyr__Record; - PyObject *__pyx_type_5tinyr__ChildRecord; - PyObject *__pyx_type_5tinyr__InnerRecord; - PyObject *__pyx_type_5tinyr__Node; - PyObject *__pyx_type_5tinyr_RTree; - PyObject *__pyx_type_5tinyr__Iterator; - PyObject *__pyx_type_5tinyr__ChildRecordIter; - PyObject *__pyx_type_5tinyr__KVIIter; - PyObject *__pyx_type_5tinyr__KeysIter; - PyObject *__pyx_type_5tinyr__ValuesIter; - PyObject *__pyx_type_5tinyr__ItemsIter; - PyObject *__pyx_type_5tinyr__NodeIter; - PyObject *__pyx_type_5tinyr__RectangleIter; - PyObject *__pyx_type_5tinyr_RTreeInfo; - #endif - PyTypeObject *__pyx_ptype_5tinyr__Record; - PyTypeObject *__pyx_ptype_5tinyr__ChildRecord; - PyTypeObject *__pyx_ptype_5tinyr__InnerRecord; - PyTypeObject *__pyx_ptype_5tinyr__Node; - PyTypeObject *__pyx_ptype_5tinyr_RTree; - PyTypeObject *__pyx_ptype_5tinyr__Iterator; - PyTypeObject *__pyx_ptype_5tinyr__ChildRecordIter; - PyTypeObject *__pyx_ptype_5tinyr__KVIIter; - PyTypeObject *__pyx_ptype_5tinyr__KeysIter; - PyTypeObject *__pyx_ptype_5tinyr__ValuesIter; - PyTypeObject *__pyx_ptype_5tinyr__ItemsIter; - PyTypeObject *__pyx_ptype_5tinyr__NodeIter; - PyTypeObject *__pyx_ptype_5tinyr__RectangleIter; - PyTypeObject *__pyx_ptype_5tinyr_RTreeInfo; - PyObject *__pyx_n_s_AssertionError; - PyObject *__pyx_n_s_AttributeError; - PyObject *__pyx_n_s_ChildRecord; - PyObject *__pyx_n_s_ChildRecordIter; - PyObject *__pyx_n_s_ChildRecordIter___reduce_cython; - PyObject *__pyx_n_s_ChildRecordIter___setstate_cyth; - PyObject *__pyx_n_s_ChildRecord___reduce_cython; - PyObject *__pyx_n_s_ChildRecord___setstate_cython; - PyObject *__pyx_kp_s_Incompatible_checksums_0x_x_vs_0; - PyObject *__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_2; - PyObject *__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_3; - PyObject *__pyx_n_s_IndexError; - PyObject *__pyx_n_s_InnerRecord; - PyObject *__pyx_n_s_InnerRecord___reduce_cython; - PyObject *__pyx_n_s_InnerRecord___setstate_cython; - PyObject *__pyx_n_s_ItemsIter; - PyObject *__pyx_n_s_ItemsIter___reduce_cython; - PyObject *__pyx_n_s_ItemsIter___setstate_cython; - PyObject *__pyx_n_s_Iterator; - PyObject *__pyx_n_s_Iterator___reduce_cython; - PyObject *__pyx_n_s_Iterator___setstate_cython; - PyObject *__pyx_n_s_KVIIter; - PyObject *__pyx_n_s_KVIIter___reduce_cython; - PyObject *__pyx_n_s_KVIIter___setstate_cython; - PyObject *__pyx_n_s_KeyError; - PyObject *__pyx_n_s_KeysIter; - PyObject *__pyx_n_s_KeysIter___reduce_cython; - PyObject *__pyx_n_s_KeysIter___setstate_cython; - PyObject *__pyx_n_s_L; - PyObject *__pyx_n_s_Node; - PyObject *__pyx_n_s_NodeIter; - PyObject *__pyx_n_s_NodeIter___reduce_cython; - PyObject *__pyx_n_s_NodeIter___setstate_cython; - PyObject *__pyx_n_s_Node___reduce_cython; - PyObject *__pyx_n_s_Node___setstate_cython; - PyObject *__pyx_n_s_NotImplemented; - PyObject *__pyx_n_s_OverflowError; - PyObject *__pyx_n_s_PickleError; - PyObject *__pyx_n_s_RTree; - PyObject *__pyx_n_s_RTreeInfo; - PyObject *__pyx_n_s_RTreeInfo___reduce_cython; - PyObject *__pyx_n_s_RTreeInfo___setstate_cython; - PyObject *__pyx_n_s_RTreeInfo_iter_rectangles; - PyObject *__pyx_n_s_RTreeInfo_to_dot; - PyObject *__pyx_n_s_RTreeInvalid; - PyObject *__pyx_n_s_RTree___reduce_cython; - PyObject *__pyx_n_s_RTree___setstate_cython; - PyObject *__pyx_n_s_RTree_copy; - PyObject *__pyx_n_s_RTree_get_info; - PyObject *__pyx_n_s_RTree_insert; - PyObject *__pyx_n_s_RTree_iteritems; - PyObject *__pyx_n_s_RTree_iterkeys; - PyObject *__pyx_n_s_RTree_itervalues; - PyObject *__pyx_n_s_RTree_remove; - PyObject *__pyx_n_s_RTree_search; - PyObject *__pyx_n_s_RTree_search_surrounding; - PyObject *__pyx_n_s_RTree_valid; - PyObject *__pyx_n_s_Record; - PyObject *__pyx_n_s_Record___reduce_cython; - PyObject *__pyx_n_s_Record___setstate_cython; - PyObject *__pyx_n_s_RectangleIter; - PyObject *__pyx_n_s_RectangleIter___reduce_cython; - PyObject *__pyx_n_s_RectangleIter___setstate_cython; - PyObject *__pyx_n_s_StopIteration; - PyObject *__pyx_kp_s_TD_PORT_d_CELLSPACING_0_d_TD; - PyObject *__pyx_kp_s_TR_TABLE; - PyObject *__pyx_n_s_TypeError; - PyObject *__pyx_n_s_ValueError; - PyObject *__pyx_n_s_ValuesIter; - PyObject *__pyx_n_s_ValuesIter___reduce_cython; - PyObject *__pyx_n_s_ValuesIter___setstate_cython; - PyObject *__pyx_n_s__10; - PyObject *__pyx_kp_s__4; - PyObject *__pyx_kp_s__5; - PyObject *__pyx_n_s__65; - PyObject *__pyx_kp_u__7; - PyObject *__pyx_n_s_asyncio_coroutines; - PyObject *__pyx_n_s_chid; - PyObject *__pyx_n_s_child; - PyObject *__pyx_n_s_class; - PyObject *__pyx_n_s_cline_in_traceback; - PyObject *__pyx_n_s_combinations; - PyObject *__pyx_kp_s_coordinates_as_list_or_tuple_exp; - PyObject *__pyx_n_s_coords; - PyObject *__pyx_n_s_coords_a; - PyObject *__pyx_n_s_copy; - PyObject *__pyx_n_s_cr; - PyObject *__pyx_kp_s_d; - PyObject *__pyx_n_s_d_2; - PyObject *__pyx_kp_s_d_d_tailport_d_s; - PyObject *__pyx_kp_s_d_label_TABLE_BORDER_0_CELLBORD; - PyObject *__pyx_n_s_depth; - PyObject *__pyx_n_s_dict; - PyObject *__pyx_n_s_dict_2; - PyObject *__pyx_kp_s_digraph_RTree_node_shape_none; - PyObject *__pyx_kp_u_disable; - PyObject *__pyx_n_s_doc; - PyObject *__pyx_kp_s_double_link_doesn_t_cover_itself; - PyObject *__pyx_kp_u_enable; - PyObject *__pyx_n_s_enumerate; - PyObject *__pyx_n_s_filelike; - PyObject *__pyx_kp_s_for_min_max_capacities_it_s_requ; - PyObject *__pyx_kp_u_gc; - PyObject *__pyx_n_s_get_info; - PyObject *__pyx_n_s_getstate; - PyObject *__pyx_n_s_id; - PyObject *__pyx_n_s_identifier; - PyObject *__pyx_n_s_import; - PyObject *__pyx_kp_s_inconsistent_item_count_d_d; - PyObject *__pyx_kp_s_inconsistent_node_depth_d_d; - PyObject *__pyx_kp_s_indexing_RTree_only_possible_wit; - PyObject *__pyx_n_s_init_subclass; - PyObject *__pyx_n_s_initializing; - PyObject *__pyx_n_s_insert; - PyObject *__pyx_n_s_interleaved; - PyObject *__pyx_n_s_ir; - PyObject *__pyx_n_s_is_coroutine; - PyObject *__pyx_kp_u_isenabled; - PyObject *__pyx_n_s_item_count; - PyObject *__pyx_n_s_iter_rectangles; - PyObject *__pyx_n_s_iteritems; - PyObject *__pyx_n_s_iterkeys; - PyObject *__pyx_n_s_itertools; - PyObject *__pyx_n_s_itervalues; - PyObject *__pyx_n_s_key; - PyObject *__pyx_n_s_leaf; - PyObject *__pyx_kp_s_leaf_level_is_not_equal_for_all; - PyObject *__pyx_n_s_leafnodes; - PyObject *__pyx_n_s_leafnodes_and_depth; - PyObject *__pyx_kp_s_len_coords_must_be_4_len_is_d; - PyObject *__pyx_kp_s_len_coords_must_be_4_length_is_d; - PyObject *__pyx_kp_s_len_point_must_be_2_len_is_d; - PyObject *__pyx_n_s_level; - PyObject *__pyx_n_s_lid; - PyObject *__pyx_n_s_main; - PyObject *__pyx_n_s_max_cap; - PyObject *__pyx_n_s_metaclass; - PyObject *__pyx_n_s_min_cap; - PyObject *__pyx_kp_s_misspositioned_inner_node; - PyObject *__pyx_n_s_module; - PyObject *__pyx_n_s_mro_entries; - PyObject *__pyx_n_s_n; - PyObject *__pyx_n_s_name; - PyObject *__pyx_n_s_new; - PyObject *__pyx_n_s_next; - PyObject *__pyx_n_s_nid; - PyObject *__pyx_kp_s_no_default___reduce___due_to_non; - PyObject *__pyx_kp_s_no_parent_entry_holds_the_child; - PyObject *__pyx_n_s_node; - PyObject *__pyx_n_s_node_record_child; - PyObject *__pyx_n_s_node_record_leaf; - PyObject *__pyx_kp_s_node_shape_ellipse; - PyObject *__pyx_n_s_nodedepht; - PyObject *__pyx_kp_s_non_leaf_node_has_invalid_number; - PyObject *__pyx_n_s_parent; - PyObject *__pyx_n_s_pickle; - PyObject *__pyx_n_s_point; - PyObject *__pyx_n_s_pop; - PyObject *__pyx_n_s_prepare; - PyObject *__pyx_n_s_pyx_PickleError; - PyObject *__pyx_n_s_pyx_checksum; - PyObject *__pyx_n_s_pyx_result; - PyObject *__pyx_n_s_pyx_state; - PyObject *__pyx_n_s_pyx_type; - PyObject *__pyx_n_s_pyx_unpickle_RTreeInfo; - PyObject *__pyx_n_s_pyx_unpickle__ChildRecord; - PyObject *__pyx_n_s_pyx_unpickle__Record; - PyObject *__pyx_n_s_pyx_vtable; - PyObject *__pyx_n_s_qualname; - PyObject *__pyx_n_s_range; - PyObject *__pyx_n_s_rec; - PyObject *__pyx_n_s_record; - PyObject *__pyx_n_s_reduce; - PyObject *__pyx_n_s_reduce_cython; - PyObject *__pyx_n_s_reduce_ex; - PyObject *__pyx_n_s_remove; - PyObject *__pyx_n_s_result; - PyObject *__pyx_n_s_ret; - PyObject *__pyx_n_s_rid; - PyObject *__pyx_kp_s_root_must_have_at_least_2_record; - PyObject *__pyx_n_s_rtree; - PyObject *__pyx_n_s_search; - PyObject *__pyx_n_s_search_surrounding; - PyObject *__pyx_n_s_self; - PyObject *__pyx_n_s_set_name; - PyObject *__pyx_n_s_setstate; - PyObject *__pyx_n_s_setstate_cython; - PyObject *__pyx_n_s_spec; - PyObject *__pyx_n_s_state; - PyObject *__pyx_kp_s_stringsource; - PyObject *__pyx_n_s_super; - PyObject *__pyx_n_s_test; - PyObject *__pyx_n_s_tinyr; - PyObject *__pyx_n_u_tinyr; - PyObject *__pyx_kp_s_tinyr_tinyr_pyx; - PyObject *__pyx_n_s_tmp_coords; - PyObject *__pyx_n_s_to_dot; - PyObject *__pyx_n_s_update; - PyObject *__pyx_n_s_use_setstate; - PyObject *__pyx_n_s_valid; - PyObject *__pyx_n_s_write; - PyObject *__pyx_kp_s_wrong_combined_area_of_records_o; - PyObject *__pyx_float_2_; - PyObject *__pyx_int_0; - PyObject *__pyx_int_2; - PyObject *__pyx_int_5; - PyObject *__pyx_int_68185080; - PyObject *__pyx_int_161691044; - PyObject *__pyx_int_165148252; - PyObject *__pyx_int_178991788; - PyObject *__pyx_int_212777770; - PyObject *__pyx_int_224798404; - PyObject *__pyx_int_225422942; - PyObject *__pyx_int_229190861; - PyObject *__pyx_int_263305410; - PyObject *__pyx_tuple_; - PyObject *__pyx_tuple__2; - PyObject *__pyx_tuple__3; - PyObject *__pyx_tuple__6; - PyObject *__pyx_tuple__8; - PyObject *__pyx_tuple__9; - PyObject *__pyx_tuple__11; - PyObject *__pyx_tuple__13; - PyObject *__pyx_tuple__17; - PyObject *__pyx_tuple__26; - PyObject *__pyx_tuple__28; - PyObject *__pyx_tuple__30; - PyObject *__pyx_tuple__32; - PyObject *__pyx_tuple__34; - PyObject *__pyx_tuple__36; - PyObject *__pyx_tuple__57; - PyObject *__pyx_tuple__61; - PyObject *__pyx_codeobj__12; - PyObject *__pyx_codeobj__14; - PyObject *__pyx_codeobj__15; - PyObject *__pyx_codeobj__16; - PyObject *__pyx_codeobj__18; - PyObject *__pyx_codeobj__19; - PyObject *__pyx_codeobj__20; - PyObject *__pyx_codeobj__21; - PyObject *__pyx_codeobj__22; - PyObject *__pyx_codeobj__23; - PyObject *__pyx_codeobj__24; - PyObject *__pyx_codeobj__25; - PyObject *__pyx_codeobj__27; - PyObject *__pyx_codeobj__29; - PyObject *__pyx_codeobj__31; - PyObject *__pyx_codeobj__33; - PyObject *__pyx_codeobj__35; - PyObject *__pyx_codeobj__37; - PyObject *__pyx_codeobj__38; - PyObject *__pyx_codeobj__39; - PyObject *__pyx_codeobj__40; - PyObject *__pyx_codeobj__41; - PyObject *__pyx_codeobj__42; - PyObject *__pyx_codeobj__43; - PyObject *__pyx_codeobj__44; - PyObject *__pyx_codeobj__45; - PyObject *__pyx_codeobj__46; - PyObject *__pyx_codeobj__47; - PyObject *__pyx_codeobj__48; - PyObject *__pyx_codeobj__49; - PyObject *__pyx_codeobj__50; - PyObject *__pyx_codeobj__51; - PyObject *__pyx_codeobj__52; - PyObject *__pyx_codeobj__53; - PyObject *__pyx_codeobj__54; - PyObject *__pyx_codeobj__55; - PyObject *__pyx_codeobj__56; - PyObject *__pyx_codeobj__58; - PyObject *__pyx_codeobj__59; - PyObject *__pyx_codeobj__60; - PyObject *__pyx_codeobj__62; - PyObject *__pyx_codeobj__63; - PyObject *__pyx_codeobj__64; -} __pyx_mstate; - -#if CYTHON_USE_MODULE_STATE -#ifdef __cplusplus -namespace { - extern struct PyModuleDef __pyx_moduledef; -} /* anonymous namespace */ -#else -static struct PyModuleDef __pyx_moduledef; -#endif - -#define __pyx_mstate(o) ((__pyx_mstate *)__Pyx_PyModule_GetState(o)) - -#define __pyx_mstate_global (__pyx_mstate(PyState_FindModule(&__pyx_moduledef))) - -#define __pyx_m (PyState_FindModule(&__pyx_moduledef)) -#else -static __pyx_mstate __pyx_mstate_global_static = -#ifdef __cplusplus - {}; -#else - {0}; -#endif -static __pyx_mstate *__pyx_mstate_global = &__pyx_mstate_global_static; -#endif -/* #### Code section: module_state_clear ### */ -#if CYTHON_USE_MODULE_STATE -static int __pyx_m_clear(PyObject *m) { - __pyx_mstate *clear_module_state = __pyx_mstate(m); - if (!clear_module_state) return 0; - Py_CLEAR(clear_module_state->__pyx_d); - Py_CLEAR(clear_module_state->__pyx_b); - Py_CLEAR(clear_module_state->__pyx_cython_runtime); - Py_CLEAR(clear_module_state->__pyx_empty_tuple); - Py_CLEAR(clear_module_state->__pyx_empty_bytes); - Py_CLEAR(clear_module_state->__pyx_empty_unicode); - #ifdef __Pyx_CyFunction_USED - Py_CLEAR(clear_module_state->__pyx_CyFunctionType); - #endif - #ifdef __Pyx_FusedFunction_USED - Py_CLEAR(clear_module_state->__pyx_FusedFunctionType); - #endif - Py_CLEAR(clear_module_state->__pyx_ptype_5tinyr__Record); - Py_CLEAR(clear_module_state->__pyx_type_5tinyr__Record); - Py_CLEAR(clear_module_state->__pyx_ptype_5tinyr__ChildRecord); - Py_CLEAR(clear_module_state->__pyx_type_5tinyr__ChildRecord); - Py_CLEAR(clear_module_state->__pyx_ptype_5tinyr__InnerRecord); - Py_CLEAR(clear_module_state->__pyx_type_5tinyr__InnerRecord); - Py_CLEAR(clear_module_state->__pyx_ptype_5tinyr__Node); - Py_CLEAR(clear_module_state->__pyx_type_5tinyr__Node); - Py_CLEAR(clear_module_state->__pyx_ptype_5tinyr_RTree); - Py_CLEAR(clear_module_state->__pyx_type_5tinyr_RTree); - Py_CLEAR(clear_module_state->__pyx_ptype_5tinyr__Iterator); - Py_CLEAR(clear_module_state->__pyx_type_5tinyr__Iterator); - Py_CLEAR(clear_module_state->__pyx_ptype_5tinyr__ChildRecordIter); - Py_CLEAR(clear_module_state->__pyx_type_5tinyr__ChildRecordIter); - Py_CLEAR(clear_module_state->__pyx_ptype_5tinyr__KVIIter); - Py_CLEAR(clear_module_state->__pyx_type_5tinyr__KVIIter); - Py_CLEAR(clear_module_state->__pyx_ptype_5tinyr__KeysIter); - Py_CLEAR(clear_module_state->__pyx_type_5tinyr__KeysIter); - Py_CLEAR(clear_module_state->__pyx_ptype_5tinyr__ValuesIter); - Py_CLEAR(clear_module_state->__pyx_type_5tinyr__ValuesIter); - Py_CLEAR(clear_module_state->__pyx_ptype_5tinyr__ItemsIter); - Py_CLEAR(clear_module_state->__pyx_type_5tinyr__ItemsIter); - Py_CLEAR(clear_module_state->__pyx_ptype_5tinyr__NodeIter); - Py_CLEAR(clear_module_state->__pyx_type_5tinyr__NodeIter); - Py_CLEAR(clear_module_state->__pyx_ptype_5tinyr__RectangleIter); - Py_CLEAR(clear_module_state->__pyx_type_5tinyr__RectangleIter); - Py_CLEAR(clear_module_state->__pyx_ptype_5tinyr_RTreeInfo); - Py_CLEAR(clear_module_state->__pyx_type_5tinyr_RTreeInfo); - Py_CLEAR(clear_module_state->__pyx_n_s_AssertionError); - Py_CLEAR(clear_module_state->__pyx_n_s_AttributeError); - Py_CLEAR(clear_module_state->__pyx_n_s_ChildRecord); - Py_CLEAR(clear_module_state->__pyx_n_s_ChildRecordIter); - Py_CLEAR(clear_module_state->__pyx_n_s_ChildRecordIter___reduce_cython); - Py_CLEAR(clear_module_state->__pyx_n_s_ChildRecordIter___setstate_cyth); - Py_CLEAR(clear_module_state->__pyx_n_s_ChildRecord___reduce_cython); - Py_CLEAR(clear_module_state->__pyx_n_s_ChildRecord___setstate_cython); - Py_CLEAR(clear_module_state->__pyx_kp_s_Incompatible_checksums_0x_x_vs_0); - Py_CLEAR(clear_module_state->__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_2); - Py_CLEAR(clear_module_state->__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_3); - Py_CLEAR(clear_module_state->__pyx_n_s_IndexError); - Py_CLEAR(clear_module_state->__pyx_n_s_InnerRecord); - Py_CLEAR(clear_module_state->__pyx_n_s_InnerRecord___reduce_cython); - Py_CLEAR(clear_module_state->__pyx_n_s_InnerRecord___setstate_cython); - Py_CLEAR(clear_module_state->__pyx_n_s_ItemsIter); - Py_CLEAR(clear_module_state->__pyx_n_s_ItemsIter___reduce_cython); - Py_CLEAR(clear_module_state->__pyx_n_s_ItemsIter___setstate_cython); - Py_CLEAR(clear_module_state->__pyx_n_s_Iterator); - Py_CLEAR(clear_module_state->__pyx_n_s_Iterator___reduce_cython); - Py_CLEAR(clear_module_state->__pyx_n_s_Iterator___setstate_cython); - Py_CLEAR(clear_module_state->__pyx_n_s_KVIIter); - Py_CLEAR(clear_module_state->__pyx_n_s_KVIIter___reduce_cython); - Py_CLEAR(clear_module_state->__pyx_n_s_KVIIter___setstate_cython); - Py_CLEAR(clear_module_state->__pyx_n_s_KeyError); - Py_CLEAR(clear_module_state->__pyx_n_s_KeysIter); - Py_CLEAR(clear_module_state->__pyx_n_s_KeysIter___reduce_cython); - Py_CLEAR(clear_module_state->__pyx_n_s_KeysIter___setstate_cython); - Py_CLEAR(clear_module_state->__pyx_n_s_L); - Py_CLEAR(clear_module_state->__pyx_n_s_Node); - Py_CLEAR(clear_module_state->__pyx_n_s_NodeIter); - Py_CLEAR(clear_module_state->__pyx_n_s_NodeIter___reduce_cython); - Py_CLEAR(clear_module_state->__pyx_n_s_NodeIter___setstate_cython); - Py_CLEAR(clear_module_state->__pyx_n_s_Node___reduce_cython); - Py_CLEAR(clear_module_state->__pyx_n_s_Node___setstate_cython); - Py_CLEAR(clear_module_state->__pyx_n_s_NotImplemented); - Py_CLEAR(clear_module_state->__pyx_n_s_OverflowError); - Py_CLEAR(clear_module_state->__pyx_n_s_PickleError); - Py_CLEAR(clear_module_state->__pyx_n_s_RTree); - Py_CLEAR(clear_module_state->__pyx_n_s_RTreeInfo); - Py_CLEAR(clear_module_state->__pyx_n_s_RTreeInfo___reduce_cython); - Py_CLEAR(clear_module_state->__pyx_n_s_RTreeInfo___setstate_cython); - Py_CLEAR(clear_module_state->__pyx_n_s_RTreeInfo_iter_rectangles); - Py_CLEAR(clear_module_state->__pyx_n_s_RTreeInfo_to_dot); - Py_CLEAR(clear_module_state->__pyx_n_s_RTreeInvalid); - Py_CLEAR(clear_module_state->__pyx_n_s_RTree___reduce_cython); - Py_CLEAR(clear_module_state->__pyx_n_s_RTree___setstate_cython); - Py_CLEAR(clear_module_state->__pyx_n_s_RTree_copy); - Py_CLEAR(clear_module_state->__pyx_n_s_RTree_get_info); - Py_CLEAR(clear_module_state->__pyx_n_s_RTree_insert); - Py_CLEAR(clear_module_state->__pyx_n_s_RTree_iteritems); - Py_CLEAR(clear_module_state->__pyx_n_s_RTree_iterkeys); - Py_CLEAR(clear_module_state->__pyx_n_s_RTree_itervalues); - Py_CLEAR(clear_module_state->__pyx_n_s_RTree_remove); - Py_CLEAR(clear_module_state->__pyx_n_s_RTree_search); - Py_CLEAR(clear_module_state->__pyx_n_s_RTree_search_surrounding); - Py_CLEAR(clear_module_state->__pyx_n_s_RTree_valid); - Py_CLEAR(clear_module_state->__pyx_n_s_Record); - Py_CLEAR(clear_module_state->__pyx_n_s_Record___reduce_cython); - Py_CLEAR(clear_module_state->__pyx_n_s_Record___setstate_cython); - Py_CLEAR(clear_module_state->__pyx_n_s_RectangleIter); - Py_CLEAR(clear_module_state->__pyx_n_s_RectangleIter___reduce_cython); - Py_CLEAR(clear_module_state->__pyx_n_s_RectangleIter___setstate_cython); - Py_CLEAR(clear_module_state->__pyx_n_s_StopIteration); - Py_CLEAR(clear_module_state->__pyx_kp_s_TD_PORT_d_CELLSPACING_0_d_TD); - Py_CLEAR(clear_module_state->__pyx_kp_s_TR_TABLE); - Py_CLEAR(clear_module_state->__pyx_n_s_TypeError); - Py_CLEAR(clear_module_state->__pyx_n_s_ValueError); - Py_CLEAR(clear_module_state->__pyx_n_s_ValuesIter); - Py_CLEAR(clear_module_state->__pyx_n_s_ValuesIter___reduce_cython); - Py_CLEAR(clear_module_state->__pyx_n_s_ValuesIter___setstate_cython); - Py_CLEAR(clear_module_state->__pyx_n_s__10); - Py_CLEAR(clear_module_state->__pyx_kp_s__4); - Py_CLEAR(clear_module_state->__pyx_kp_s__5); - Py_CLEAR(clear_module_state->__pyx_n_s__65); - Py_CLEAR(clear_module_state->__pyx_kp_u__7); - Py_CLEAR(clear_module_state->__pyx_n_s_asyncio_coroutines); - Py_CLEAR(clear_module_state->__pyx_n_s_chid); - Py_CLEAR(clear_module_state->__pyx_n_s_child); - Py_CLEAR(clear_module_state->__pyx_n_s_class); - Py_CLEAR(clear_module_state->__pyx_n_s_cline_in_traceback); - Py_CLEAR(clear_module_state->__pyx_n_s_combinations); - Py_CLEAR(clear_module_state->__pyx_kp_s_coordinates_as_list_or_tuple_exp); - Py_CLEAR(clear_module_state->__pyx_n_s_coords); - Py_CLEAR(clear_module_state->__pyx_n_s_coords_a); - Py_CLEAR(clear_module_state->__pyx_n_s_copy); - Py_CLEAR(clear_module_state->__pyx_n_s_cr); - Py_CLEAR(clear_module_state->__pyx_kp_s_d); - Py_CLEAR(clear_module_state->__pyx_n_s_d_2); - Py_CLEAR(clear_module_state->__pyx_kp_s_d_d_tailport_d_s); - Py_CLEAR(clear_module_state->__pyx_kp_s_d_label_TABLE_BORDER_0_CELLBORD); - Py_CLEAR(clear_module_state->__pyx_n_s_depth); - Py_CLEAR(clear_module_state->__pyx_n_s_dict); - Py_CLEAR(clear_module_state->__pyx_n_s_dict_2); - Py_CLEAR(clear_module_state->__pyx_kp_s_digraph_RTree_node_shape_none); - Py_CLEAR(clear_module_state->__pyx_kp_u_disable); - Py_CLEAR(clear_module_state->__pyx_n_s_doc); - Py_CLEAR(clear_module_state->__pyx_kp_s_double_link_doesn_t_cover_itself); - Py_CLEAR(clear_module_state->__pyx_kp_u_enable); - Py_CLEAR(clear_module_state->__pyx_n_s_enumerate); - Py_CLEAR(clear_module_state->__pyx_n_s_filelike); - Py_CLEAR(clear_module_state->__pyx_kp_s_for_min_max_capacities_it_s_requ); - Py_CLEAR(clear_module_state->__pyx_kp_u_gc); - Py_CLEAR(clear_module_state->__pyx_n_s_get_info); - Py_CLEAR(clear_module_state->__pyx_n_s_getstate); - Py_CLEAR(clear_module_state->__pyx_n_s_id); - Py_CLEAR(clear_module_state->__pyx_n_s_identifier); - Py_CLEAR(clear_module_state->__pyx_n_s_import); - Py_CLEAR(clear_module_state->__pyx_kp_s_inconsistent_item_count_d_d); - Py_CLEAR(clear_module_state->__pyx_kp_s_inconsistent_node_depth_d_d); - Py_CLEAR(clear_module_state->__pyx_kp_s_indexing_RTree_only_possible_wit); - Py_CLEAR(clear_module_state->__pyx_n_s_init_subclass); - Py_CLEAR(clear_module_state->__pyx_n_s_initializing); - Py_CLEAR(clear_module_state->__pyx_n_s_insert); - Py_CLEAR(clear_module_state->__pyx_n_s_interleaved); - Py_CLEAR(clear_module_state->__pyx_n_s_ir); - Py_CLEAR(clear_module_state->__pyx_n_s_is_coroutine); - Py_CLEAR(clear_module_state->__pyx_kp_u_isenabled); - Py_CLEAR(clear_module_state->__pyx_n_s_item_count); - Py_CLEAR(clear_module_state->__pyx_n_s_iter_rectangles); - Py_CLEAR(clear_module_state->__pyx_n_s_iteritems); - Py_CLEAR(clear_module_state->__pyx_n_s_iterkeys); - Py_CLEAR(clear_module_state->__pyx_n_s_itertools); - Py_CLEAR(clear_module_state->__pyx_n_s_itervalues); - Py_CLEAR(clear_module_state->__pyx_n_s_key); - Py_CLEAR(clear_module_state->__pyx_n_s_leaf); - Py_CLEAR(clear_module_state->__pyx_kp_s_leaf_level_is_not_equal_for_all); - Py_CLEAR(clear_module_state->__pyx_n_s_leafnodes); - Py_CLEAR(clear_module_state->__pyx_n_s_leafnodes_and_depth); - Py_CLEAR(clear_module_state->__pyx_kp_s_len_coords_must_be_4_len_is_d); - Py_CLEAR(clear_module_state->__pyx_kp_s_len_coords_must_be_4_length_is_d); - Py_CLEAR(clear_module_state->__pyx_kp_s_len_point_must_be_2_len_is_d); - Py_CLEAR(clear_module_state->__pyx_n_s_level); - Py_CLEAR(clear_module_state->__pyx_n_s_lid); - Py_CLEAR(clear_module_state->__pyx_n_s_main); - Py_CLEAR(clear_module_state->__pyx_n_s_max_cap); - Py_CLEAR(clear_module_state->__pyx_n_s_metaclass); - Py_CLEAR(clear_module_state->__pyx_n_s_min_cap); - Py_CLEAR(clear_module_state->__pyx_kp_s_misspositioned_inner_node); - Py_CLEAR(clear_module_state->__pyx_n_s_module); - Py_CLEAR(clear_module_state->__pyx_n_s_mro_entries); - Py_CLEAR(clear_module_state->__pyx_n_s_n); - Py_CLEAR(clear_module_state->__pyx_n_s_name); - Py_CLEAR(clear_module_state->__pyx_n_s_new); - Py_CLEAR(clear_module_state->__pyx_n_s_next); - Py_CLEAR(clear_module_state->__pyx_n_s_nid); - Py_CLEAR(clear_module_state->__pyx_kp_s_no_default___reduce___due_to_non); - Py_CLEAR(clear_module_state->__pyx_kp_s_no_parent_entry_holds_the_child); - Py_CLEAR(clear_module_state->__pyx_n_s_node); - Py_CLEAR(clear_module_state->__pyx_n_s_node_record_child); - Py_CLEAR(clear_module_state->__pyx_n_s_node_record_leaf); - Py_CLEAR(clear_module_state->__pyx_kp_s_node_shape_ellipse); - Py_CLEAR(clear_module_state->__pyx_n_s_nodedepht); - Py_CLEAR(clear_module_state->__pyx_kp_s_non_leaf_node_has_invalid_number); - Py_CLEAR(clear_module_state->__pyx_n_s_parent); - Py_CLEAR(clear_module_state->__pyx_n_s_pickle); - Py_CLEAR(clear_module_state->__pyx_n_s_point); - Py_CLEAR(clear_module_state->__pyx_n_s_pop); - Py_CLEAR(clear_module_state->__pyx_n_s_prepare); - Py_CLEAR(clear_module_state->__pyx_n_s_pyx_PickleError); - Py_CLEAR(clear_module_state->__pyx_n_s_pyx_checksum); - Py_CLEAR(clear_module_state->__pyx_n_s_pyx_result); - Py_CLEAR(clear_module_state->__pyx_n_s_pyx_state); - Py_CLEAR(clear_module_state->__pyx_n_s_pyx_type); - Py_CLEAR(clear_module_state->__pyx_n_s_pyx_unpickle_RTreeInfo); - Py_CLEAR(clear_module_state->__pyx_n_s_pyx_unpickle__ChildRecord); - Py_CLEAR(clear_module_state->__pyx_n_s_pyx_unpickle__Record); - Py_CLEAR(clear_module_state->__pyx_n_s_pyx_vtable); - Py_CLEAR(clear_module_state->__pyx_n_s_qualname); - Py_CLEAR(clear_module_state->__pyx_n_s_range); - Py_CLEAR(clear_module_state->__pyx_n_s_rec); - Py_CLEAR(clear_module_state->__pyx_n_s_record); - Py_CLEAR(clear_module_state->__pyx_n_s_reduce); - Py_CLEAR(clear_module_state->__pyx_n_s_reduce_cython); - Py_CLEAR(clear_module_state->__pyx_n_s_reduce_ex); - Py_CLEAR(clear_module_state->__pyx_n_s_remove); - Py_CLEAR(clear_module_state->__pyx_n_s_result); - Py_CLEAR(clear_module_state->__pyx_n_s_ret); - Py_CLEAR(clear_module_state->__pyx_n_s_rid); - Py_CLEAR(clear_module_state->__pyx_kp_s_root_must_have_at_least_2_record); - Py_CLEAR(clear_module_state->__pyx_n_s_rtree); - Py_CLEAR(clear_module_state->__pyx_n_s_search); - Py_CLEAR(clear_module_state->__pyx_n_s_search_surrounding); - Py_CLEAR(clear_module_state->__pyx_n_s_self); - Py_CLEAR(clear_module_state->__pyx_n_s_set_name); - Py_CLEAR(clear_module_state->__pyx_n_s_setstate); - Py_CLEAR(clear_module_state->__pyx_n_s_setstate_cython); - Py_CLEAR(clear_module_state->__pyx_n_s_spec); - Py_CLEAR(clear_module_state->__pyx_n_s_state); - Py_CLEAR(clear_module_state->__pyx_kp_s_stringsource); - Py_CLEAR(clear_module_state->__pyx_n_s_super); - Py_CLEAR(clear_module_state->__pyx_n_s_test); - Py_CLEAR(clear_module_state->__pyx_n_s_tinyr); - Py_CLEAR(clear_module_state->__pyx_n_u_tinyr); - Py_CLEAR(clear_module_state->__pyx_kp_s_tinyr_tinyr_pyx); - Py_CLEAR(clear_module_state->__pyx_n_s_tmp_coords); - Py_CLEAR(clear_module_state->__pyx_n_s_to_dot); - Py_CLEAR(clear_module_state->__pyx_n_s_update); - Py_CLEAR(clear_module_state->__pyx_n_s_use_setstate); - Py_CLEAR(clear_module_state->__pyx_n_s_valid); - Py_CLEAR(clear_module_state->__pyx_n_s_write); - Py_CLEAR(clear_module_state->__pyx_kp_s_wrong_combined_area_of_records_o); - Py_CLEAR(clear_module_state->__pyx_float_2_); - Py_CLEAR(clear_module_state->__pyx_int_0); - Py_CLEAR(clear_module_state->__pyx_int_2); - Py_CLEAR(clear_module_state->__pyx_int_5); - Py_CLEAR(clear_module_state->__pyx_int_68185080); - Py_CLEAR(clear_module_state->__pyx_int_161691044); - Py_CLEAR(clear_module_state->__pyx_int_165148252); - Py_CLEAR(clear_module_state->__pyx_int_178991788); - Py_CLEAR(clear_module_state->__pyx_int_212777770); - Py_CLEAR(clear_module_state->__pyx_int_224798404); - Py_CLEAR(clear_module_state->__pyx_int_225422942); - Py_CLEAR(clear_module_state->__pyx_int_229190861); - Py_CLEAR(clear_module_state->__pyx_int_263305410); - Py_CLEAR(clear_module_state->__pyx_tuple_); - Py_CLEAR(clear_module_state->__pyx_tuple__2); - Py_CLEAR(clear_module_state->__pyx_tuple__3); - Py_CLEAR(clear_module_state->__pyx_tuple__6); - Py_CLEAR(clear_module_state->__pyx_tuple__8); - Py_CLEAR(clear_module_state->__pyx_tuple__9); - Py_CLEAR(clear_module_state->__pyx_tuple__11); - Py_CLEAR(clear_module_state->__pyx_tuple__13); - Py_CLEAR(clear_module_state->__pyx_tuple__17); - Py_CLEAR(clear_module_state->__pyx_tuple__26); - Py_CLEAR(clear_module_state->__pyx_tuple__28); - Py_CLEAR(clear_module_state->__pyx_tuple__30); - Py_CLEAR(clear_module_state->__pyx_tuple__32); - Py_CLEAR(clear_module_state->__pyx_tuple__34); - Py_CLEAR(clear_module_state->__pyx_tuple__36); - Py_CLEAR(clear_module_state->__pyx_tuple__57); - Py_CLEAR(clear_module_state->__pyx_tuple__61); - Py_CLEAR(clear_module_state->__pyx_codeobj__12); - Py_CLEAR(clear_module_state->__pyx_codeobj__14); - Py_CLEAR(clear_module_state->__pyx_codeobj__15); - Py_CLEAR(clear_module_state->__pyx_codeobj__16); - Py_CLEAR(clear_module_state->__pyx_codeobj__18); - Py_CLEAR(clear_module_state->__pyx_codeobj__19); - Py_CLEAR(clear_module_state->__pyx_codeobj__20); - Py_CLEAR(clear_module_state->__pyx_codeobj__21); - Py_CLEAR(clear_module_state->__pyx_codeobj__22); - Py_CLEAR(clear_module_state->__pyx_codeobj__23); - Py_CLEAR(clear_module_state->__pyx_codeobj__24); - Py_CLEAR(clear_module_state->__pyx_codeobj__25); - Py_CLEAR(clear_module_state->__pyx_codeobj__27); - Py_CLEAR(clear_module_state->__pyx_codeobj__29); - Py_CLEAR(clear_module_state->__pyx_codeobj__31); - Py_CLEAR(clear_module_state->__pyx_codeobj__33); - Py_CLEAR(clear_module_state->__pyx_codeobj__35); - Py_CLEAR(clear_module_state->__pyx_codeobj__37); - Py_CLEAR(clear_module_state->__pyx_codeobj__38); - Py_CLEAR(clear_module_state->__pyx_codeobj__39); - Py_CLEAR(clear_module_state->__pyx_codeobj__40); - Py_CLEAR(clear_module_state->__pyx_codeobj__41); - Py_CLEAR(clear_module_state->__pyx_codeobj__42); - Py_CLEAR(clear_module_state->__pyx_codeobj__43); - Py_CLEAR(clear_module_state->__pyx_codeobj__44); - Py_CLEAR(clear_module_state->__pyx_codeobj__45); - Py_CLEAR(clear_module_state->__pyx_codeobj__46); - Py_CLEAR(clear_module_state->__pyx_codeobj__47); - Py_CLEAR(clear_module_state->__pyx_codeobj__48); - Py_CLEAR(clear_module_state->__pyx_codeobj__49); - Py_CLEAR(clear_module_state->__pyx_codeobj__50); - Py_CLEAR(clear_module_state->__pyx_codeobj__51); - Py_CLEAR(clear_module_state->__pyx_codeobj__52); - Py_CLEAR(clear_module_state->__pyx_codeobj__53); - Py_CLEAR(clear_module_state->__pyx_codeobj__54); - Py_CLEAR(clear_module_state->__pyx_codeobj__55); - Py_CLEAR(clear_module_state->__pyx_codeobj__56); - Py_CLEAR(clear_module_state->__pyx_codeobj__58); - Py_CLEAR(clear_module_state->__pyx_codeobj__59); - Py_CLEAR(clear_module_state->__pyx_codeobj__60); - Py_CLEAR(clear_module_state->__pyx_codeobj__62); - Py_CLEAR(clear_module_state->__pyx_codeobj__63); - Py_CLEAR(clear_module_state->__pyx_codeobj__64); - return 0; -} -#endif -/* #### Code section: module_state_traverse ### */ -#if CYTHON_USE_MODULE_STATE -static int __pyx_m_traverse(PyObject *m, visitproc visit, void *arg) { - __pyx_mstate *traverse_module_state = __pyx_mstate(m); - if (!traverse_module_state) return 0; - Py_VISIT(traverse_module_state->__pyx_d); - Py_VISIT(traverse_module_state->__pyx_b); - Py_VISIT(traverse_module_state->__pyx_cython_runtime); - Py_VISIT(traverse_module_state->__pyx_empty_tuple); - Py_VISIT(traverse_module_state->__pyx_empty_bytes); - Py_VISIT(traverse_module_state->__pyx_empty_unicode); - #ifdef __Pyx_CyFunction_USED - Py_VISIT(traverse_module_state->__pyx_CyFunctionType); - #endif - #ifdef __Pyx_FusedFunction_USED - Py_VISIT(traverse_module_state->__pyx_FusedFunctionType); - #endif - Py_VISIT(traverse_module_state->__pyx_ptype_5tinyr__Record); - Py_VISIT(traverse_module_state->__pyx_type_5tinyr__Record); - Py_VISIT(traverse_module_state->__pyx_ptype_5tinyr__ChildRecord); - Py_VISIT(traverse_module_state->__pyx_type_5tinyr__ChildRecord); - Py_VISIT(traverse_module_state->__pyx_ptype_5tinyr__InnerRecord); - Py_VISIT(traverse_module_state->__pyx_type_5tinyr__InnerRecord); - Py_VISIT(traverse_module_state->__pyx_ptype_5tinyr__Node); - Py_VISIT(traverse_module_state->__pyx_type_5tinyr__Node); - Py_VISIT(traverse_module_state->__pyx_ptype_5tinyr_RTree); - Py_VISIT(traverse_module_state->__pyx_type_5tinyr_RTree); - Py_VISIT(traverse_module_state->__pyx_ptype_5tinyr__Iterator); - Py_VISIT(traverse_module_state->__pyx_type_5tinyr__Iterator); - Py_VISIT(traverse_module_state->__pyx_ptype_5tinyr__ChildRecordIter); - Py_VISIT(traverse_module_state->__pyx_type_5tinyr__ChildRecordIter); - Py_VISIT(traverse_module_state->__pyx_ptype_5tinyr__KVIIter); - Py_VISIT(traverse_module_state->__pyx_type_5tinyr__KVIIter); - Py_VISIT(traverse_module_state->__pyx_ptype_5tinyr__KeysIter); - Py_VISIT(traverse_module_state->__pyx_type_5tinyr__KeysIter); - Py_VISIT(traverse_module_state->__pyx_ptype_5tinyr__ValuesIter); - Py_VISIT(traverse_module_state->__pyx_type_5tinyr__ValuesIter); - Py_VISIT(traverse_module_state->__pyx_ptype_5tinyr__ItemsIter); - Py_VISIT(traverse_module_state->__pyx_type_5tinyr__ItemsIter); - Py_VISIT(traverse_module_state->__pyx_ptype_5tinyr__NodeIter); - Py_VISIT(traverse_module_state->__pyx_type_5tinyr__NodeIter); - Py_VISIT(traverse_module_state->__pyx_ptype_5tinyr__RectangleIter); - Py_VISIT(traverse_module_state->__pyx_type_5tinyr__RectangleIter); - Py_VISIT(traverse_module_state->__pyx_ptype_5tinyr_RTreeInfo); - Py_VISIT(traverse_module_state->__pyx_type_5tinyr_RTreeInfo); - Py_VISIT(traverse_module_state->__pyx_n_s_AssertionError); - Py_VISIT(traverse_module_state->__pyx_n_s_AttributeError); - Py_VISIT(traverse_module_state->__pyx_n_s_ChildRecord); - Py_VISIT(traverse_module_state->__pyx_n_s_ChildRecordIter); - Py_VISIT(traverse_module_state->__pyx_n_s_ChildRecordIter___reduce_cython); - Py_VISIT(traverse_module_state->__pyx_n_s_ChildRecordIter___setstate_cyth); - Py_VISIT(traverse_module_state->__pyx_n_s_ChildRecord___reduce_cython); - Py_VISIT(traverse_module_state->__pyx_n_s_ChildRecord___setstate_cython); - Py_VISIT(traverse_module_state->__pyx_kp_s_Incompatible_checksums_0x_x_vs_0); - Py_VISIT(traverse_module_state->__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_2); - Py_VISIT(traverse_module_state->__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_3); - Py_VISIT(traverse_module_state->__pyx_n_s_IndexError); - Py_VISIT(traverse_module_state->__pyx_n_s_InnerRecord); - Py_VISIT(traverse_module_state->__pyx_n_s_InnerRecord___reduce_cython); - Py_VISIT(traverse_module_state->__pyx_n_s_InnerRecord___setstate_cython); - Py_VISIT(traverse_module_state->__pyx_n_s_ItemsIter); - Py_VISIT(traverse_module_state->__pyx_n_s_ItemsIter___reduce_cython); - Py_VISIT(traverse_module_state->__pyx_n_s_ItemsIter___setstate_cython); - Py_VISIT(traverse_module_state->__pyx_n_s_Iterator); - Py_VISIT(traverse_module_state->__pyx_n_s_Iterator___reduce_cython); - Py_VISIT(traverse_module_state->__pyx_n_s_Iterator___setstate_cython); - Py_VISIT(traverse_module_state->__pyx_n_s_KVIIter); - Py_VISIT(traverse_module_state->__pyx_n_s_KVIIter___reduce_cython); - Py_VISIT(traverse_module_state->__pyx_n_s_KVIIter___setstate_cython); - Py_VISIT(traverse_module_state->__pyx_n_s_KeyError); - Py_VISIT(traverse_module_state->__pyx_n_s_KeysIter); - Py_VISIT(traverse_module_state->__pyx_n_s_KeysIter___reduce_cython); - Py_VISIT(traverse_module_state->__pyx_n_s_KeysIter___setstate_cython); - Py_VISIT(traverse_module_state->__pyx_n_s_L); - Py_VISIT(traverse_module_state->__pyx_n_s_Node); - Py_VISIT(traverse_module_state->__pyx_n_s_NodeIter); - Py_VISIT(traverse_module_state->__pyx_n_s_NodeIter___reduce_cython); - Py_VISIT(traverse_module_state->__pyx_n_s_NodeIter___setstate_cython); - Py_VISIT(traverse_module_state->__pyx_n_s_Node___reduce_cython); - Py_VISIT(traverse_module_state->__pyx_n_s_Node___setstate_cython); - Py_VISIT(traverse_module_state->__pyx_n_s_NotImplemented); - Py_VISIT(traverse_module_state->__pyx_n_s_OverflowError); - Py_VISIT(traverse_module_state->__pyx_n_s_PickleError); - Py_VISIT(traverse_module_state->__pyx_n_s_RTree); - Py_VISIT(traverse_module_state->__pyx_n_s_RTreeInfo); - Py_VISIT(traverse_module_state->__pyx_n_s_RTreeInfo___reduce_cython); - Py_VISIT(traverse_module_state->__pyx_n_s_RTreeInfo___setstate_cython); - Py_VISIT(traverse_module_state->__pyx_n_s_RTreeInfo_iter_rectangles); - Py_VISIT(traverse_module_state->__pyx_n_s_RTreeInfo_to_dot); - Py_VISIT(traverse_module_state->__pyx_n_s_RTreeInvalid); - Py_VISIT(traverse_module_state->__pyx_n_s_RTree___reduce_cython); - Py_VISIT(traverse_module_state->__pyx_n_s_RTree___setstate_cython); - Py_VISIT(traverse_module_state->__pyx_n_s_RTree_copy); - Py_VISIT(traverse_module_state->__pyx_n_s_RTree_get_info); - Py_VISIT(traverse_module_state->__pyx_n_s_RTree_insert); - Py_VISIT(traverse_module_state->__pyx_n_s_RTree_iteritems); - Py_VISIT(traverse_module_state->__pyx_n_s_RTree_iterkeys); - Py_VISIT(traverse_module_state->__pyx_n_s_RTree_itervalues); - Py_VISIT(traverse_module_state->__pyx_n_s_RTree_remove); - Py_VISIT(traverse_module_state->__pyx_n_s_RTree_search); - Py_VISIT(traverse_module_state->__pyx_n_s_RTree_search_surrounding); - Py_VISIT(traverse_module_state->__pyx_n_s_RTree_valid); - Py_VISIT(traverse_module_state->__pyx_n_s_Record); - Py_VISIT(traverse_module_state->__pyx_n_s_Record___reduce_cython); - Py_VISIT(traverse_module_state->__pyx_n_s_Record___setstate_cython); - Py_VISIT(traverse_module_state->__pyx_n_s_RectangleIter); - Py_VISIT(traverse_module_state->__pyx_n_s_RectangleIter___reduce_cython); - Py_VISIT(traverse_module_state->__pyx_n_s_RectangleIter___setstate_cython); - Py_VISIT(traverse_module_state->__pyx_n_s_StopIteration); - Py_VISIT(traverse_module_state->__pyx_kp_s_TD_PORT_d_CELLSPACING_0_d_TD); - Py_VISIT(traverse_module_state->__pyx_kp_s_TR_TABLE); - Py_VISIT(traverse_module_state->__pyx_n_s_TypeError); - Py_VISIT(traverse_module_state->__pyx_n_s_ValueError); - Py_VISIT(traverse_module_state->__pyx_n_s_ValuesIter); - Py_VISIT(traverse_module_state->__pyx_n_s_ValuesIter___reduce_cython); - Py_VISIT(traverse_module_state->__pyx_n_s_ValuesIter___setstate_cython); - Py_VISIT(traverse_module_state->__pyx_n_s__10); - Py_VISIT(traverse_module_state->__pyx_kp_s__4); - Py_VISIT(traverse_module_state->__pyx_kp_s__5); - Py_VISIT(traverse_module_state->__pyx_n_s__65); - Py_VISIT(traverse_module_state->__pyx_kp_u__7); - Py_VISIT(traverse_module_state->__pyx_n_s_asyncio_coroutines); - Py_VISIT(traverse_module_state->__pyx_n_s_chid); - Py_VISIT(traverse_module_state->__pyx_n_s_child); - Py_VISIT(traverse_module_state->__pyx_n_s_class); - Py_VISIT(traverse_module_state->__pyx_n_s_cline_in_traceback); - Py_VISIT(traverse_module_state->__pyx_n_s_combinations); - Py_VISIT(traverse_module_state->__pyx_kp_s_coordinates_as_list_or_tuple_exp); - Py_VISIT(traverse_module_state->__pyx_n_s_coords); - Py_VISIT(traverse_module_state->__pyx_n_s_coords_a); - Py_VISIT(traverse_module_state->__pyx_n_s_copy); - Py_VISIT(traverse_module_state->__pyx_n_s_cr); - Py_VISIT(traverse_module_state->__pyx_kp_s_d); - Py_VISIT(traverse_module_state->__pyx_n_s_d_2); - Py_VISIT(traverse_module_state->__pyx_kp_s_d_d_tailport_d_s); - Py_VISIT(traverse_module_state->__pyx_kp_s_d_label_TABLE_BORDER_0_CELLBORD); - Py_VISIT(traverse_module_state->__pyx_n_s_depth); - Py_VISIT(traverse_module_state->__pyx_n_s_dict); - Py_VISIT(traverse_module_state->__pyx_n_s_dict_2); - Py_VISIT(traverse_module_state->__pyx_kp_s_digraph_RTree_node_shape_none); - Py_VISIT(traverse_module_state->__pyx_kp_u_disable); - Py_VISIT(traverse_module_state->__pyx_n_s_doc); - Py_VISIT(traverse_module_state->__pyx_kp_s_double_link_doesn_t_cover_itself); - Py_VISIT(traverse_module_state->__pyx_kp_u_enable); - Py_VISIT(traverse_module_state->__pyx_n_s_enumerate); - Py_VISIT(traverse_module_state->__pyx_n_s_filelike); - Py_VISIT(traverse_module_state->__pyx_kp_s_for_min_max_capacities_it_s_requ); - Py_VISIT(traverse_module_state->__pyx_kp_u_gc); - Py_VISIT(traverse_module_state->__pyx_n_s_get_info); - Py_VISIT(traverse_module_state->__pyx_n_s_getstate); - Py_VISIT(traverse_module_state->__pyx_n_s_id); - Py_VISIT(traverse_module_state->__pyx_n_s_identifier); - Py_VISIT(traverse_module_state->__pyx_n_s_import); - Py_VISIT(traverse_module_state->__pyx_kp_s_inconsistent_item_count_d_d); - Py_VISIT(traverse_module_state->__pyx_kp_s_inconsistent_node_depth_d_d); - Py_VISIT(traverse_module_state->__pyx_kp_s_indexing_RTree_only_possible_wit); - Py_VISIT(traverse_module_state->__pyx_n_s_init_subclass); - Py_VISIT(traverse_module_state->__pyx_n_s_initializing); - Py_VISIT(traverse_module_state->__pyx_n_s_insert); - Py_VISIT(traverse_module_state->__pyx_n_s_interleaved); - Py_VISIT(traverse_module_state->__pyx_n_s_ir); - Py_VISIT(traverse_module_state->__pyx_n_s_is_coroutine); - Py_VISIT(traverse_module_state->__pyx_kp_u_isenabled); - Py_VISIT(traverse_module_state->__pyx_n_s_item_count); - Py_VISIT(traverse_module_state->__pyx_n_s_iter_rectangles); - Py_VISIT(traverse_module_state->__pyx_n_s_iteritems); - Py_VISIT(traverse_module_state->__pyx_n_s_iterkeys); - Py_VISIT(traverse_module_state->__pyx_n_s_itertools); - Py_VISIT(traverse_module_state->__pyx_n_s_itervalues); - Py_VISIT(traverse_module_state->__pyx_n_s_key); - Py_VISIT(traverse_module_state->__pyx_n_s_leaf); - Py_VISIT(traverse_module_state->__pyx_kp_s_leaf_level_is_not_equal_for_all); - Py_VISIT(traverse_module_state->__pyx_n_s_leafnodes); - Py_VISIT(traverse_module_state->__pyx_n_s_leafnodes_and_depth); - Py_VISIT(traverse_module_state->__pyx_kp_s_len_coords_must_be_4_len_is_d); - Py_VISIT(traverse_module_state->__pyx_kp_s_len_coords_must_be_4_length_is_d); - Py_VISIT(traverse_module_state->__pyx_kp_s_len_point_must_be_2_len_is_d); - Py_VISIT(traverse_module_state->__pyx_n_s_level); - Py_VISIT(traverse_module_state->__pyx_n_s_lid); - Py_VISIT(traverse_module_state->__pyx_n_s_main); - Py_VISIT(traverse_module_state->__pyx_n_s_max_cap); - Py_VISIT(traverse_module_state->__pyx_n_s_metaclass); - Py_VISIT(traverse_module_state->__pyx_n_s_min_cap); - Py_VISIT(traverse_module_state->__pyx_kp_s_misspositioned_inner_node); - Py_VISIT(traverse_module_state->__pyx_n_s_module); - Py_VISIT(traverse_module_state->__pyx_n_s_mro_entries); - Py_VISIT(traverse_module_state->__pyx_n_s_n); - Py_VISIT(traverse_module_state->__pyx_n_s_name); - Py_VISIT(traverse_module_state->__pyx_n_s_new); - Py_VISIT(traverse_module_state->__pyx_n_s_next); - Py_VISIT(traverse_module_state->__pyx_n_s_nid); - Py_VISIT(traverse_module_state->__pyx_kp_s_no_default___reduce___due_to_non); - Py_VISIT(traverse_module_state->__pyx_kp_s_no_parent_entry_holds_the_child); - Py_VISIT(traverse_module_state->__pyx_n_s_node); - Py_VISIT(traverse_module_state->__pyx_n_s_node_record_child); - Py_VISIT(traverse_module_state->__pyx_n_s_node_record_leaf); - Py_VISIT(traverse_module_state->__pyx_kp_s_node_shape_ellipse); - Py_VISIT(traverse_module_state->__pyx_n_s_nodedepht); - Py_VISIT(traverse_module_state->__pyx_kp_s_non_leaf_node_has_invalid_number); - Py_VISIT(traverse_module_state->__pyx_n_s_parent); - Py_VISIT(traverse_module_state->__pyx_n_s_pickle); - Py_VISIT(traverse_module_state->__pyx_n_s_point); - Py_VISIT(traverse_module_state->__pyx_n_s_pop); - Py_VISIT(traverse_module_state->__pyx_n_s_prepare); - Py_VISIT(traverse_module_state->__pyx_n_s_pyx_PickleError); - Py_VISIT(traverse_module_state->__pyx_n_s_pyx_checksum); - Py_VISIT(traverse_module_state->__pyx_n_s_pyx_result); - Py_VISIT(traverse_module_state->__pyx_n_s_pyx_state); - Py_VISIT(traverse_module_state->__pyx_n_s_pyx_type); - Py_VISIT(traverse_module_state->__pyx_n_s_pyx_unpickle_RTreeInfo); - Py_VISIT(traverse_module_state->__pyx_n_s_pyx_unpickle__ChildRecord); - Py_VISIT(traverse_module_state->__pyx_n_s_pyx_unpickle__Record); - Py_VISIT(traverse_module_state->__pyx_n_s_pyx_vtable); - Py_VISIT(traverse_module_state->__pyx_n_s_qualname); - Py_VISIT(traverse_module_state->__pyx_n_s_range); - Py_VISIT(traverse_module_state->__pyx_n_s_rec); - Py_VISIT(traverse_module_state->__pyx_n_s_record); - Py_VISIT(traverse_module_state->__pyx_n_s_reduce); - Py_VISIT(traverse_module_state->__pyx_n_s_reduce_cython); - Py_VISIT(traverse_module_state->__pyx_n_s_reduce_ex); - Py_VISIT(traverse_module_state->__pyx_n_s_remove); - Py_VISIT(traverse_module_state->__pyx_n_s_result); - Py_VISIT(traverse_module_state->__pyx_n_s_ret); - Py_VISIT(traverse_module_state->__pyx_n_s_rid); - Py_VISIT(traverse_module_state->__pyx_kp_s_root_must_have_at_least_2_record); - Py_VISIT(traverse_module_state->__pyx_n_s_rtree); - Py_VISIT(traverse_module_state->__pyx_n_s_search); - Py_VISIT(traverse_module_state->__pyx_n_s_search_surrounding); - Py_VISIT(traverse_module_state->__pyx_n_s_self); - Py_VISIT(traverse_module_state->__pyx_n_s_set_name); - Py_VISIT(traverse_module_state->__pyx_n_s_setstate); - Py_VISIT(traverse_module_state->__pyx_n_s_setstate_cython); - Py_VISIT(traverse_module_state->__pyx_n_s_spec); - Py_VISIT(traverse_module_state->__pyx_n_s_state); - Py_VISIT(traverse_module_state->__pyx_kp_s_stringsource); - Py_VISIT(traverse_module_state->__pyx_n_s_super); - Py_VISIT(traverse_module_state->__pyx_n_s_test); - Py_VISIT(traverse_module_state->__pyx_n_s_tinyr); - Py_VISIT(traverse_module_state->__pyx_n_u_tinyr); - Py_VISIT(traverse_module_state->__pyx_kp_s_tinyr_tinyr_pyx); - Py_VISIT(traverse_module_state->__pyx_n_s_tmp_coords); - Py_VISIT(traverse_module_state->__pyx_n_s_to_dot); - Py_VISIT(traverse_module_state->__pyx_n_s_update); - Py_VISIT(traverse_module_state->__pyx_n_s_use_setstate); - Py_VISIT(traverse_module_state->__pyx_n_s_valid); - Py_VISIT(traverse_module_state->__pyx_n_s_write); - Py_VISIT(traverse_module_state->__pyx_kp_s_wrong_combined_area_of_records_o); - Py_VISIT(traverse_module_state->__pyx_float_2_); - Py_VISIT(traverse_module_state->__pyx_int_0); - Py_VISIT(traverse_module_state->__pyx_int_2); - Py_VISIT(traverse_module_state->__pyx_int_5); - Py_VISIT(traverse_module_state->__pyx_int_68185080); - Py_VISIT(traverse_module_state->__pyx_int_161691044); - Py_VISIT(traverse_module_state->__pyx_int_165148252); - Py_VISIT(traverse_module_state->__pyx_int_178991788); - Py_VISIT(traverse_module_state->__pyx_int_212777770); - Py_VISIT(traverse_module_state->__pyx_int_224798404); - Py_VISIT(traverse_module_state->__pyx_int_225422942); - Py_VISIT(traverse_module_state->__pyx_int_229190861); - Py_VISIT(traverse_module_state->__pyx_int_263305410); - Py_VISIT(traverse_module_state->__pyx_tuple_); - Py_VISIT(traverse_module_state->__pyx_tuple__2); - Py_VISIT(traverse_module_state->__pyx_tuple__3); - Py_VISIT(traverse_module_state->__pyx_tuple__6); - Py_VISIT(traverse_module_state->__pyx_tuple__8); - Py_VISIT(traverse_module_state->__pyx_tuple__9); - Py_VISIT(traverse_module_state->__pyx_tuple__11); - Py_VISIT(traverse_module_state->__pyx_tuple__13); - Py_VISIT(traverse_module_state->__pyx_tuple__17); - Py_VISIT(traverse_module_state->__pyx_tuple__26); - Py_VISIT(traverse_module_state->__pyx_tuple__28); - Py_VISIT(traverse_module_state->__pyx_tuple__30); - Py_VISIT(traverse_module_state->__pyx_tuple__32); - Py_VISIT(traverse_module_state->__pyx_tuple__34); - Py_VISIT(traverse_module_state->__pyx_tuple__36); - Py_VISIT(traverse_module_state->__pyx_tuple__57); - Py_VISIT(traverse_module_state->__pyx_tuple__61); - Py_VISIT(traverse_module_state->__pyx_codeobj__12); - Py_VISIT(traverse_module_state->__pyx_codeobj__14); - Py_VISIT(traverse_module_state->__pyx_codeobj__15); - Py_VISIT(traverse_module_state->__pyx_codeobj__16); - Py_VISIT(traverse_module_state->__pyx_codeobj__18); - Py_VISIT(traverse_module_state->__pyx_codeobj__19); - Py_VISIT(traverse_module_state->__pyx_codeobj__20); - Py_VISIT(traverse_module_state->__pyx_codeobj__21); - Py_VISIT(traverse_module_state->__pyx_codeobj__22); - Py_VISIT(traverse_module_state->__pyx_codeobj__23); - Py_VISIT(traverse_module_state->__pyx_codeobj__24); - Py_VISIT(traverse_module_state->__pyx_codeobj__25); - Py_VISIT(traverse_module_state->__pyx_codeobj__27); - Py_VISIT(traverse_module_state->__pyx_codeobj__29); - Py_VISIT(traverse_module_state->__pyx_codeobj__31); - Py_VISIT(traverse_module_state->__pyx_codeobj__33); - Py_VISIT(traverse_module_state->__pyx_codeobj__35); - Py_VISIT(traverse_module_state->__pyx_codeobj__37); - Py_VISIT(traverse_module_state->__pyx_codeobj__38); - Py_VISIT(traverse_module_state->__pyx_codeobj__39); - Py_VISIT(traverse_module_state->__pyx_codeobj__40); - Py_VISIT(traverse_module_state->__pyx_codeobj__41); - Py_VISIT(traverse_module_state->__pyx_codeobj__42); - Py_VISIT(traverse_module_state->__pyx_codeobj__43); - Py_VISIT(traverse_module_state->__pyx_codeobj__44); - Py_VISIT(traverse_module_state->__pyx_codeobj__45); - Py_VISIT(traverse_module_state->__pyx_codeobj__46); - Py_VISIT(traverse_module_state->__pyx_codeobj__47); - Py_VISIT(traverse_module_state->__pyx_codeobj__48); - Py_VISIT(traverse_module_state->__pyx_codeobj__49); - Py_VISIT(traverse_module_state->__pyx_codeobj__50); - Py_VISIT(traverse_module_state->__pyx_codeobj__51); - Py_VISIT(traverse_module_state->__pyx_codeobj__52); - Py_VISIT(traverse_module_state->__pyx_codeobj__53); - Py_VISIT(traverse_module_state->__pyx_codeobj__54); - Py_VISIT(traverse_module_state->__pyx_codeobj__55); - Py_VISIT(traverse_module_state->__pyx_codeobj__56); - Py_VISIT(traverse_module_state->__pyx_codeobj__58); - Py_VISIT(traverse_module_state->__pyx_codeobj__59); - Py_VISIT(traverse_module_state->__pyx_codeobj__60); - Py_VISIT(traverse_module_state->__pyx_codeobj__62); - Py_VISIT(traverse_module_state->__pyx_codeobj__63); - Py_VISIT(traverse_module_state->__pyx_codeobj__64); - return 0; -} -#endif -/* #### Code section: module_state_defines ### */ -#define __pyx_d __pyx_mstate_global->__pyx_d -#define __pyx_b __pyx_mstate_global->__pyx_b -#define __pyx_cython_runtime __pyx_mstate_global->__pyx_cython_runtime -#define __pyx_empty_tuple __pyx_mstate_global->__pyx_empty_tuple -#define __pyx_empty_bytes __pyx_mstate_global->__pyx_empty_bytes -#define __pyx_empty_unicode __pyx_mstate_global->__pyx_empty_unicode -#ifdef __Pyx_CyFunction_USED -#define __pyx_CyFunctionType __pyx_mstate_global->__pyx_CyFunctionType -#endif -#ifdef __Pyx_FusedFunction_USED -#define __pyx_FusedFunctionType __pyx_mstate_global->__pyx_FusedFunctionType -#endif -#ifdef __Pyx_Generator_USED -#define __pyx_GeneratorType __pyx_mstate_global->__pyx_GeneratorType -#endif -#ifdef __Pyx_IterableCoroutine_USED -#define __pyx_IterableCoroutineType __pyx_mstate_global->__pyx_IterableCoroutineType -#endif -#ifdef __Pyx_Coroutine_USED -#define __pyx_CoroutineAwaitType __pyx_mstate_global->__pyx_CoroutineAwaitType -#endif -#ifdef __Pyx_Coroutine_USED -#define __pyx_CoroutineType __pyx_mstate_global->__pyx_CoroutineType -#endif -#if CYTHON_USE_MODULE_STATE -#endif -#if CYTHON_USE_MODULE_STATE -#define __pyx_type_5tinyr__Record __pyx_mstate_global->__pyx_type_5tinyr__Record -#define __pyx_type_5tinyr__ChildRecord __pyx_mstate_global->__pyx_type_5tinyr__ChildRecord -#define __pyx_type_5tinyr__InnerRecord __pyx_mstate_global->__pyx_type_5tinyr__InnerRecord -#define __pyx_type_5tinyr__Node __pyx_mstate_global->__pyx_type_5tinyr__Node -#define __pyx_type_5tinyr_RTree __pyx_mstate_global->__pyx_type_5tinyr_RTree -#define __pyx_type_5tinyr__Iterator __pyx_mstate_global->__pyx_type_5tinyr__Iterator -#define __pyx_type_5tinyr__ChildRecordIter __pyx_mstate_global->__pyx_type_5tinyr__ChildRecordIter -#define __pyx_type_5tinyr__KVIIter __pyx_mstate_global->__pyx_type_5tinyr__KVIIter -#define __pyx_type_5tinyr__KeysIter __pyx_mstate_global->__pyx_type_5tinyr__KeysIter -#define __pyx_type_5tinyr__ValuesIter __pyx_mstate_global->__pyx_type_5tinyr__ValuesIter -#define __pyx_type_5tinyr__ItemsIter __pyx_mstate_global->__pyx_type_5tinyr__ItemsIter -#define __pyx_type_5tinyr__NodeIter __pyx_mstate_global->__pyx_type_5tinyr__NodeIter -#define __pyx_type_5tinyr__RectangleIter __pyx_mstate_global->__pyx_type_5tinyr__RectangleIter -#define __pyx_type_5tinyr_RTreeInfo __pyx_mstate_global->__pyx_type_5tinyr_RTreeInfo -#endif -#define __pyx_ptype_5tinyr__Record __pyx_mstate_global->__pyx_ptype_5tinyr__Record -#define __pyx_ptype_5tinyr__ChildRecord __pyx_mstate_global->__pyx_ptype_5tinyr__ChildRecord -#define __pyx_ptype_5tinyr__InnerRecord __pyx_mstate_global->__pyx_ptype_5tinyr__InnerRecord -#define __pyx_ptype_5tinyr__Node __pyx_mstate_global->__pyx_ptype_5tinyr__Node -#define __pyx_ptype_5tinyr_RTree __pyx_mstate_global->__pyx_ptype_5tinyr_RTree -#define __pyx_ptype_5tinyr__Iterator __pyx_mstate_global->__pyx_ptype_5tinyr__Iterator -#define __pyx_ptype_5tinyr__ChildRecordIter __pyx_mstate_global->__pyx_ptype_5tinyr__ChildRecordIter -#define __pyx_ptype_5tinyr__KVIIter __pyx_mstate_global->__pyx_ptype_5tinyr__KVIIter -#define __pyx_ptype_5tinyr__KeysIter __pyx_mstate_global->__pyx_ptype_5tinyr__KeysIter -#define __pyx_ptype_5tinyr__ValuesIter __pyx_mstate_global->__pyx_ptype_5tinyr__ValuesIter -#define __pyx_ptype_5tinyr__ItemsIter __pyx_mstate_global->__pyx_ptype_5tinyr__ItemsIter -#define __pyx_ptype_5tinyr__NodeIter __pyx_mstate_global->__pyx_ptype_5tinyr__NodeIter -#define __pyx_ptype_5tinyr__RectangleIter __pyx_mstate_global->__pyx_ptype_5tinyr__RectangleIter -#define __pyx_ptype_5tinyr_RTreeInfo __pyx_mstate_global->__pyx_ptype_5tinyr_RTreeInfo -#define __pyx_n_s_AssertionError __pyx_mstate_global->__pyx_n_s_AssertionError -#define __pyx_n_s_AttributeError __pyx_mstate_global->__pyx_n_s_AttributeError -#define __pyx_n_s_ChildRecord __pyx_mstate_global->__pyx_n_s_ChildRecord -#define __pyx_n_s_ChildRecordIter __pyx_mstate_global->__pyx_n_s_ChildRecordIter -#define __pyx_n_s_ChildRecordIter___reduce_cython __pyx_mstate_global->__pyx_n_s_ChildRecordIter___reduce_cython -#define __pyx_n_s_ChildRecordIter___setstate_cyth __pyx_mstate_global->__pyx_n_s_ChildRecordIter___setstate_cyth -#define __pyx_n_s_ChildRecord___reduce_cython __pyx_mstate_global->__pyx_n_s_ChildRecord___reduce_cython -#define __pyx_n_s_ChildRecord___setstate_cython __pyx_mstate_global->__pyx_n_s_ChildRecord___setstate_cython -#define __pyx_kp_s_Incompatible_checksums_0x_x_vs_0 __pyx_mstate_global->__pyx_kp_s_Incompatible_checksums_0x_x_vs_0 -#define __pyx_kp_s_Incompatible_checksums_0x_x_vs_0_2 __pyx_mstate_global->__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_2 -#define __pyx_kp_s_Incompatible_checksums_0x_x_vs_0_3 __pyx_mstate_global->__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_3 -#define __pyx_n_s_IndexError __pyx_mstate_global->__pyx_n_s_IndexError -#define __pyx_n_s_InnerRecord __pyx_mstate_global->__pyx_n_s_InnerRecord -#define __pyx_n_s_InnerRecord___reduce_cython __pyx_mstate_global->__pyx_n_s_InnerRecord___reduce_cython -#define __pyx_n_s_InnerRecord___setstate_cython __pyx_mstate_global->__pyx_n_s_InnerRecord___setstate_cython -#define __pyx_n_s_ItemsIter __pyx_mstate_global->__pyx_n_s_ItemsIter -#define __pyx_n_s_ItemsIter___reduce_cython __pyx_mstate_global->__pyx_n_s_ItemsIter___reduce_cython -#define __pyx_n_s_ItemsIter___setstate_cython __pyx_mstate_global->__pyx_n_s_ItemsIter___setstate_cython -#define __pyx_n_s_Iterator __pyx_mstate_global->__pyx_n_s_Iterator -#define __pyx_n_s_Iterator___reduce_cython __pyx_mstate_global->__pyx_n_s_Iterator___reduce_cython -#define __pyx_n_s_Iterator___setstate_cython __pyx_mstate_global->__pyx_n_s_Iterator___setstate_cython -#define __pyx_n_s_KVIIter __pyx_mstate_global->__pyx_n_s_KVIIter -#define __pyx_n_s_KVIIter___reduce_cython __pyx_mstate_global->__pyx_n_s_KVIIter___reduce_cython -#define __pyx_n_s_KVIIter___setstate_cython __pyx_mstate_global->__pyx_n_s_KVIIter___setstate_cython -#define __pyx_n_s_KeyError __pyx_mstate_global->__pyx_n_s_KeyError -#define __pyx_n_s_KeysIter __pyx_mstate_global->__pyx_n_s_KeysIter -#define __pyx_n_s_KeysIter___reduce_cython __pyx_mstate_global->__pyx_n_s_KeysIter___reduce_cython -#define __pyx_n_s_KeysIter___setstate_cython __pyx_mstate_global->__pyx_n_s_KeysIter___setstate_cython -#define __pyx_n_s_L __pyx_mstate_global->__pyx_n_s_L -#define __pyx_n_s_Node __pyx_mstate_global->__pyx_n_s_Node -#define __pyx_n_s_NodeIter __pyx_mstate_global->__pyx_n_s_NodeIter -#define __pyx_n_s_NodeIter___reduce_cython __pyx_mstate_global->__pyx_n_s_NodeIter___reduce_cython -#define __pyx_n_s_NodeIter___setstate_cython __pyx_mstate_global->__pyx_n_s_NodeIter___setstate_cython -#define __pyx_n_s_Node___reduce_cython __pyx_mstate_global->__pyx_n_s_Node___reduce_cython -#define __pyx_n_s_Node___setstate_cython __pyx_mstate_global->__pyx_n_s_Node___setstate_cython -#define __pyx_n_s_NotImplemented __pyx_mstate_global->__pyx_n_s_NotImplemented -#define __pyx_n_s_OverflowError __pyx_mstate_global->__pyx_n_s_OverflowError -#define __pyx_n_s_PickleError __pyx_mstate_global->__pyx_n_s_PickleError -#define __pyx_n_s_RTree __pyx_mstate_global->__pyx_n_s_RTree -#define __pyx_n_s_RTreeInfo __pyx_mstate_global->__pyx_n_s_RTreeInfo -#define __pyx_n_s_RTreeInfo___reduce_cython __pyx_mstate_global->__pyx_n_s_RTreeInfo___reduce_cython -#define __pyx_n_s_RTreeInfo___setstate_cython __pyx_mstate_global->__pyx_n_s_RTreeInfo___setstate_cython -#define __pyx_n_s_RTreeInfo_iter_rectangles __pyx_mstate_global->__pyx_n_s_RTreeInfo_iter_rectangles -#define __pyx_n_s_RTreeInfo_to_dot __pyx_mstate_global->__pyx_n_s_RTreeInfo_to_dot -#define __pyx_n_s_RTreeInvalid __pyx_mstate_global->__pyx_n_s_RTreeInvalid -#define __pyx_n_s_RTree___reduce_cython __pyx_mstate_global->__pyx_n_s_RTree___reduce_cython -#define __pyx_n_s_RTree___setstate_cython __pyx_mstate_global->__pyx_n_s_RTree___setstate_cython -#define __pyx_n_s_RTree_copy __pyx_mstate_global->__pyx_n_s_RTree_copy -#define __pyx_n_s_RTree_get_info __pyx_mstate_global->__pyx_n_s_RTree_get_info -#define __pyx_n_s_RTree_insert __pyx_mstate_global->__pyx_n_s_RTree_insert -#define __pyx_n_s_RTree_iteritems __pyx_mstate_global->__pyx_n_s_RTree_iteritems -#define __pyx_n_s_RTree_iterkeys __pyx_mstate_global->__pyx_n_s_RTree_iterkeys -#define __pyx_n_s_RTree_itervalues __pyx_mstate_global->__pyx_n_s_RTree_itervalues -#define __pyx_n_s_RTree_remove __pyx_mstate_global->__pyx_n_s_RTree_remove -#define __pyx_n_s_RTree_search __pyx_mstate_global->__pyx_n_s_RTree_search -#define __pyx_n_s_RTree_search_surrounding __pyx_mstate_global->__pyx_n_s_RTree_search_surrounding -#define __pyx_n_s_RTree_valid __pyx_mstate_global->__pyx_n_s_RTree_valid -#define __pyx_n_s_Record __pyx_mstate_global->__pyx_n_s_Record -#define __pyx_n_s_Record___reduce_cython __pyx_mstate_global->__pyx_n_s_Record___reduce_cython -#define __pyx_n_s_Record___setstate_cython __pyx_mstate_global->__pyx_n_s_Record___setstate_cython -#define __pyx_n_s_RectangleIter __pyx_mstate_global->__pyx_n_s_RectangleIter -#define __pyx_n_s_RectangleIter___reduce_cython __pyx_mstate_global->__pyx_n_s_RectangleIter___reduce_cython -#define __pyx_n_s_RectangleIter___setstate_cython __pyx_mstate_global->__pyx_n_s_RectangleIter___setstate_cython -#define __pyx_n_s_StopIteration __pyx_mstate_global->__pyx_n_s_StopIteration -#define __pyx_kp_s_TD_PORT_d_CELLSPACING_0_d_TD __pyx_mstate_global->__pyx_kp_s_TD_PORT_d_CELLSPACING_0_d_TD -#define __pyx_kp_s_TR_TABLE __pyx_mstate_global->__pyx_kp_s_TR_TABLE -#define __pyx_n_s_TypeError __pyx_mstate_global->__pyx_n_s_TypeError -#define __pyx_n_s_ValueError __pyx_mstate_global->__pyx_n_s_ValueError -#define __pyx_n_s_ValuesIter __pyx_mstate_global->__pyx_n_s_ValuesIter -#define __pyx_n_s_ValuesIter___reduce_cython __pyx_mstate_global->__pyx_n_s_ValuesIter___reduce_cython -#define __pyx_n_s_ValuesIter___setstate_cython __pyx_mstate_global->__pyx_n_s_ValuesIter___setstate_cython -#define __pyx_n_s__10 __pyx_mstate_global->__pyx_n_s__10 -#define __pyx_kp_s__4 __pyx_mstate_global->__pyx_kp_s__4 -#define __pyx_kp_s__5 __pyx_mstate_global->__pyx_kp_s__5 -#define __pyx_n_s__65 __pyx_mstate_global->__pyx_n_s__65 -#define __pyx_kp_u__7 __pyx_mstate_global->__pyx_kp_u__7 -#define __pyx_n_s_asyncio_coroutines __pyx_mstate_global->__pyx_n_s_asyncio_coroutines -#define __pyx_n_s_chid __pyx_mstate_global->__pyx_n_s_chid -#define __pyx_n_s_child __pyx_mstate_global->__pyx_n_s_child -#define __pyx_n_s_class __pyx_mstate_global->__pyx_n_s_class -#define __pyx_n_s_cline_in_traceback __pyx_mstate_global->__pyx_n_s_cline_in_traceback -#define __pyx_n_s_combinations __pyx_mstate_global->__pyx_n_s_combinations -#define __pyx_kp_s_coordinates_as_list_or_tuple_exp __pyx_mstate_global->__pyx_kp_s_coordinates_as_list_or_tuple_exp -#define __pyx_n_s_coords __pyx_mstate_global->__pyx_n_s_coords -#define __pyx_n_s_coords_a __pyx_mstate_global->__pyx_n_s_coords_a -#define __pyx_n_s_copy __pyx_mstate_global->__pyx_n_s_copy -#define __pyx_n_s_cr __pyx_mstate_global->__pyx_n_s_cr -#define __pyx_kp_s_d __pyx_mstate_global->__pyx_kp_s_d -#define __pyx_n_s_d_2 __pyx_mstate_global->__pyx_n_s_d_2 -#define __pyx_kp_s_d_d_tailport_d_s __pyx_mstate_global->__pyx_kp_s_d_d_tailport_d_s -#define __pyx_kp_s_d_label_TABLE_BORDER_0_CELLBORD __pyx_mstate_global->__pyx_kp_s_d_label_TABLE_BORDER_0_CELLBORD -#define __pyx_n_s_depth __pyx_mstate_global->__pyx_n_s_depth -#define __pyx_n_s_dict __pyx_mstate_global->__pyx_n_s_dict -#define __pyx_n_s_dict_2 __pyx_mstate_global->__pyx_n_s_dict_2 -#define __pyx_kp_s_digraph_RTree_node_shape_none __pyx_mstate_global->__pyx_kp_s_digraph_RTree_node_shape_none -#define __pyx_kp_u_disable __pyx_mstate_global->__pyx_kp_u_disable -#define __pyx_n_s_doc __pyx_mstate_global->__pyx_n_s_doc -#define __pyx_kp_s_double_link_doesn_t_cover_itself __pyx_mstate_global->__pyx_kp_s_double_link_doesn_t_cover_itself -#define __pyx_kp_u_enable __pyx_mstate_global->__pyx_kp_u_enable -#define __pyx_n_s_enumerate __pyx_mstate_global->__pyx_n_s_enumerate -#define __pyx_n_s_filelike __pyx_mstate_global->__pyx_n_s_filelike -#define __pyx_kp_s_for_min_max_capacities_it_s_requ __pyx_mstate_global->__pyx_kp_s_for_min_max_capacities_it_s_requ -#define __pyx_kp_u_gc __pyx_mstate_global->__pyx_kp_u_gc -#define __pyx_n_s_get_info __pyx_mstate_global->__pyx_n_s_get_info -#define __pyx_n_s_getstate __pyx_mstate_global->__pyx_n_s_getstate -#define __pyx_n_s_id __pyx_mstate_global->__pyx_n_s_id -#define __pyx_n_s_identifier __pyx_mstate_global->__pyx_n_s_identifier -#define __pyx_n_s_import __pyx_mstate_global->__pyx_n_s_import -#define __pyx_kp_s_inconsistent_item_count_d_d __pyx_mstate_global->__pyx_kp_s_inconsistent_item_count_d_d -#define __pyx_kp_s_inconsistent_node_depth_d_d __pyx_mstate_global->__pyx_kp_s_inconsistent_node_depth_d_d -#define __pyx_kp_s_indexing_RTree_only_possible_wit __pyx_mstate_global->__pyx_kp_s_indexing_RTree_only_possible_wit -#define __pyx_n_s_init_subclass __pyx_mstate_global->__pyx_n_s_init_subclass -#define __pyx_n_s_initializing __pyx_mstate_global->__pyx_n_s_initializing -#define __pyx_n_s_insert __pyx_mstate_global->__pyx_n_s_insert -#define __pyx_n_s_interleaved __pyx_mstate_global->__pyx_n_s_interleaved -#define __pyx_n_s_ir __pyx_mstate_global->__pyx_n_s_ir -#define __pyx_n_s_is_coroutine __pyx_mstate_global->__pyx_n_s_is_coroutine -#define __pyx_kp_u_isenabled __pyx_mstate_global->__pyx_kp_u_isenabled -#define __pyx_n_s_item_count __pyx_mstate_global->__pyx_n_s_item_count -#define __pyx_n_s_iter_rectangles __pyx_mstate_global->__pyx_n_s_iter_rectangles -#define __pyx_n_s_iteritems __pyx_mstate_global->__pyx_n_s_iteritems -#define __pyx_n_s_iterkeys __pyx_mstate_global->__pyx_n_s_iterkeys -#define __pyx_n_s_itertools __pyx_mstate_global->__pyx_n_s_itertools -#define __pyx_n_s_itervalues __pyx_mstate_global->__pyx_n_s_itervalues -#define __pyx_n_s_key __pyx_mstate_global->__pyx_n_s_key -#define __pyx_n_s_leaf __pyx_mstate_global->__pyx_n_s_leaf -#define __pyx_kp_s_leaf_level_is_not_equal_for_all __pyx_mstate_global->__pyx_kp_s_leaf_level_is_not_equal_for_all -#define __pyx_n_s_leafnodes __pyx_mstate_global->__pyx_n_s_leafnodes -#define __pyx_n_s_leafnodes_and_depth __pyx_mstate_global->__pyx_n_s_leafnodes_and_depth -#define __pyx_kp_s_len_coords_must_be_4_len_is_d __pyx_mstate_global->__pyx_kp_s_len_coords_must_be_4_len_is_d -#define __pyx_kp_s_len_coords_must_be_4_length_is_d __pyx_mstate_global->__pyx_kp_s_len_coords_must_be_4_length_is_d -#define __pyx_kp_s_len_point_must_be_2_len_is_d __pyx_mstate_global->__pyx_kp_s_len_point_must_be_2_len_is_d -#define __pyx_n_s_level __pyx_mstate_global->__pyx_n_s_level -#define __pyx_n_s_lid __pyx_mstate_global->__pyx_n_s_lid -#define __pyx_n_s_main __pyx_mstate_global->__pyx_n_s_main -#define __pyx_n_s_max_cap __pyx_mstate_global->__pyx_n_s_max_cap -#define __pyx_n_s_metaclass __pyx_mstate_global->__pyx_n_s_metaclass -#define __pyx_n_s_min_cap __pyx_mstate_global->__pyx_n_s_min_cap -#define __pyx_kp_s_misspositioned_inner_node __pyx_mstate_global->__pyx_kp_s_misspositioned_inner_node -#define __pyx_n_s_module __pyx_mstate_global->__pyx_n_s_module -#define __pyx_n_s_mro_entries __pyx_mstate_global->__pyx_n_s_mro_entries -#define __pyx_n_s_n __pyx_mstate_global->__pyx_n_s_n -#define __pyx_n_s_name __pyx_mstate_global->__pyx_n_s_name -#define __pyx_n_s_new __pyx_mstate_global->__pyx_n_s_new -#define __pyx_n_s_next __pyx_mstate_global->__pyx_n_s_next -#define __pyx_n_s_nid __pyx_mstate_global->__pyx_n_s_nid -#define __pyx_kp_s_no_default___reduce___due_to_non __pyx_mstate_global->__pyx_kp_s_no_default___reduce___due_to_non -#define __pyx_kp_s_no_parent_entry_holds_the_child __pyx_mstate_global->__pyx_kp_s_no_parent_entry_holds_the_child -#define __pyx_n_s_node __pyx_mstate_global->__pyx_n_s_node -#define __pyx_n_s_node_record_child __pyx_mstate_global->__pyx_n_s_node_record_child -#define __pyx_n_s_node_record_leaf __pyx_mstate_global->__pyx_n_s_node_record_leaf -#define __pyx_kp_s_node_shape_ellipse __pyx_mstate_global->__pyx_kp_s_node_shape_ellipse -#define __pyx_n_s_nodedepht __pyx_mstate_global->__pyx_n_s_nodedepht -#define __pyx_kp_s_non_leaf_node_has_invalid_number __pyx_mstate_global->__pyx_kp_s_non_leaf_node_has_invalid_number -#define __pyx_n_s_parent __pyx_mstate_global->__pyx_n_s_parent -#define __pyx_n_s_pickle __pyx_mstate_global->__pyx_n_s_pickle -#define __pyx_n_s_point __pyx_mstate_global->__pyx_n_s_point -#define __pyx_n_s_pop __pyx_mstate_global->__pyx_n_s_pop -#define __pyx_n_s_prepare __pyx_mstate_global->__pyx_n_s_prepare -#define __pyx_n_s_pyx_PickleError __pyx_mstate_global->__pyx_n_s_pyx_PickleError -#define __pyx_n_s_pyx_checksum __pyx_mstate_global->__pyx_n_s_pyx_checksum -#define __pyx_n_s_pyx_result __pyx_mstate_global->__pyx_n_s_pyx_result -#define __pyx_n_s_pyx_state __pyx_mstate_global->__pyx_n_s_pyx_state -#define __pyx_n_s_pyx_type __pyx_mstate_global->__pyx_n_s_pyx_type -#define __pyx_n_s_pyx_unpickle_RTreeInfo __pyx_mstate_global->__pyx_n_s_pyx_unpickle_RTreeInfo -#define __pyx_n_s_pyx_unpickle__ChildRecord __pyx_mstate_global->__pyx_n_s_pyx_unpickle__ChildRecord -#define __pyx_n_s_pyx_unpickle__Record __pyx_mstate_global->__pyx_n_s_pyx_unpickle__Record -#define __pyx_n_s_pyx_vtable __pyx_mstate_global->__pyx_n_s_pyx_vtable -#define __pyx_n_s_qualname __pyx_mstate_global->__pyx_n_s_qualname -#define __pyx_n_s_range __pyx_mstate_global->__pyx_n_s_range -#define __pyx_n_s_rec __pyx_mstate_global->__pyx_n_s_rec -#define __pyx_n_s_record __pyx_mstate_global->__pyx_n_s_record -#define __pyx_n_s_reduce __pyx_mstate_global->__pyx_n_s_reduce -#define __pyx_n_s_reduce_cython __pyx_mstate_global->__pyx_n_s_reduce_cython -#define __pyx_n_s_reduce_ex __pyx_mstate_global->__pyx_n_s_reduce_ex -#define __pyx_n_s_remove __pyx_mstate_global->__pyx_n_s_remove -#define __pyx_n_s_result __pyx_mstate_global->__pyx_n_s_result -#define __pyx_n_s_ret __pyx_mstate_global->__pyx_n_s_ret -#define __pyx_n_s_rid __pyx_mstate_global->__pyx_n_s_rid -#define __pyx_kp_s_root_must_have_at_least_2_record __pyx_mstate_global->__pyx_kp_s_root_must_have_at_least_2_record -#define __pyx_n_s_rtree __pyx_mstate_global->__pyx_n_s_rtree -#define __pyx_n_s_search __pyx_mstate_global->__pyx_n_s_search -#define __pyx_n_s_search_surrounding __pyx_mstate_global->__pyx_n_s_search_surrounding -#define __pyx_n_s_self __pyx_mstate_global->__pyx_n_s_self -#define __pyx_n_s_set_name __pyx_mstate_global->__pyx_n_s_set_name -#define __pyx_n_s_setstate __pyx_mstate_global->__pyx_n_s_setstate -#define __pyx_n_s_setstate_cython __pyx_mstate_global->__pyx_n_s_setstate_cython -#define __pyx_n_s_spec __pyx_mstate_global->__pyx_n_s_spec -#define __pyx_n_s_state __pyx_mstate_global->__pyx_n_s_state -#define __pyx_kp_s_stringsource __pyx_mstate_global->__pyx_kp_s_stringsource -#define __pyx_n_s_super __pyx_mstate_global->__pyx_n_s_super -#define __pyx_n_s_test __pyx_mstate_global->__pyx_n_s_test -#define __pyx_n_s_tinyr __pyx_mstate_global->__pyx_n_s_tinyr -#define __pyx_n_u_tinyr __pyx_mstate_global->__pyx_n_u_tinyr -#define __pyx_kp_s_tinyr_tinyr_pyx __pyx_mstate_global->__pyx_kp_s_tinyr_tinyr_pyx -#define __pyx_n_s_tmp_coords __pyx_mstate_global->__pyx_n_s_tmp_coords -#define __pyx_n_s_to_dot __pyx_mstate_global->__pyx_n_s_to_dot -#define __pyx_n_s_update __pyx_mstate_global->__pyx_n_s_update -#define __pyx_n_s_use_setstate __pyx_mstate_global->__pyx_n_s_use_setstate -#define __pyx_n_s_valid __pyx_mstate_global->__pyx_n_s_valid -#define __pyx_n_s_write __pyx_mstate_global->__pyx_n_s_write -#define __pyx_kp_s_wrong_combined_area_of_records_o __pyx_mstate_global->__pyx_kp_s_wrong_combined_area_of_records_o -#define __pyx_float_2_ __pyx_mstate_global->__pyx_float_2_ -#define __pyx_int_0 __pyx_mstate_global->__pyx_int_0 -#define __pyx_int_2 __pyx_mstate_global->__pyx_int_2 -#define __pyx_int_5 __pyx_mstate_global->__pyx_int_5 -#define __pyx_int_68185080 __pyx_mstate_global->__pyx_int_68185080 -#define __pyx_int_161691044 __pyx_mstate_global->__pyx_int_161691044 -#define __pyx_int_165148252 __pyx_mstate_global->__pyx_int_165148252 -#define __pyx_int_178991788 __pyx_mstate_global->__pyx_int_178991788 -#define __pyx_int_212777770 __pyx_mstate_global->__pyx_int_212777770 -#define __pyx_int_224798404 __pyx_mstate_global->__pyx_int_224798404 -#define __pyx_int_225422942 __pyx_mstate_global->__pyx_int_225422942 -#define __pyx_int_229190861 __pyx_mstate_global->__pyx_int_229190861 -#define __pyx_int_263305410 __pyx_mstate_global->__pyx_int_263305410 -#define __pyx_tuple_ __pyx_mstate_global->__pyx_tuple_ -#define __pyx_tuple__2 __pyx_mstate_global->__pyx_tuple__2 -#define __pyx_tuple__3 __pyx_mstate_global->__pyx_tuple__3 -#define __pyx_tuple__6 __pyx_mstate_global->__pyx_tuple__6 -#define __pyx_tuple__8 __pyx_mstate_global->__pyx_tuple__8 -#define __pyx_tuple__9 __pyx_mstate_global->__pyx_tuple__9 -#define __pyx_tuple__11 __pyx_mstate_global->__pyx_tuple__11 -#define __pyx_tuple__13 __pyx_mstate_global->__pyx_tuple__13 -#define __pyx_tuple__17 __pyx_mstate_global->__pyx_tuple__17 -#define __pyx_tuple__26 __pyx_mstate_global->__pyx_tuple__26 -#define __pyx_tuple__28 __pyx_mstate_global->__pyx_tuple__28 -#define __pyx_tuple__30 __pyx_mstate_global->__pyx_tuple__30 -#define __pyx_tuple__32 __pyx_mstate_global->__pyx_tuple__32 -#define __pyx_tuple__34 __pyx_mstate_global->__pyx_tuple__34 -#define __pyx_tuple__36 __pyx_mstate_global->__pyx_tuple__36 -#define __pyx_tuple__57 __pyx_mstate_global->__pyx_tuple__57 -#define __pyx_tuple__61 __pyx_mstate_global->__pyx_tuple__61 -#define __pyx_codeobj__12 __pyx_mstate_global->__pyx_codeobj__12 -#define __pyx_codeobj__14 __pyx_mstate_global->__pyx_codeobj__14 -#define __pyx_codeobj__15 __pyx_mstate_global->__pyx_codeobj__15 -#define __pyx_codeobj__16 __pyx_mstate_global->__pyx_codeobj__16 -#define __pyx_codeobj__18 __pyx_mstate_global->__pyx_codeobj__18 -#define __pyx_codeobj__19 __pyx_mstate_global->__pyx_codeobj__19 -#define __pyx_codeobj__20 __pyx_mstate_global->__pyx_codeobj__20 -#define __pyx_codeobj__21 __pyx_mstate_global->__pyx_codeobj__21 -#define __pyx_codeobj__22 __pyx_mstate_global->__pyx_codeobj__22 -#define __pyx_codeobj__23 __pyx_mstate_global->__pyx_codeobj__23 -#define __pyx_codeobj__24 __pyx_mstate_global->__pyx_codeobj__24 -#define __pyx_codeobj__25 __pyx_mstate_global->__pyx_codeobj__25 -#define __pyx_codeobj__27 __pyx_mstate_global->__pyx_codeobj__27 -#define __pyx_codeobj__29 __pyx_mstate_global->__pyx_codeobj__29 -#define __pyx_codeobj__31 __pyx_mstate_global->__pyx_codeobj__31 -#define __pyx_codeobj__33 __pyx_mstate_global->__pyx_codeobj__33 -#define __pyx_codeobj__35 __pyx_mstate_global->__pyx_codeobj__35 -#define __pyx_codeobj__37 __pyx_mstate_global->__pyx_codeobj__37 -#define __pyx_codeobj__38 __pyx_mstate_global->__pyx_codeobj__38 -#define __pyx_codeobj__39 __pyx_mstate_global->__pyx_codeobj__39 -#define __pyx_codeobj__40 __pyx_mstate_global->__pyx_codeobj__40 -#define __pyx_codeobj__41 __pyx_mstate_global->__pyx_codeobj__41 -#define __pyx_codeobj__42 __pyx_mstate_global->__pyx_codeobj__42 -#define __pyx_codeobj__43 __pyx_mstate_global->__pyx_codeobj__43 -#define __pyx_codeobj__44 __pyx_mstate_global->__pyx_codeobj__44 -#define __pyx_codeobj__45 __pyx_mstate_global->__pyx_codeobj__45 -#define __pyx_codeobj__46 __pyx_mstate_global->__pyx_codeobj__46 -#define __pyx_codeobj__47 __pyx_mstate_global->__pyx_codeobj__47 -#define __pyx_codeobj__48 __pyx_mstate_global->__pyx_codeobj__48 -#define __pyx_codeobj__49 __pyx_mstate_global->__pyx_codeobj__49 -#define __pyx_codeobj__50 __pyx_mstate_global->__pyx_codeobj__50 -#define __pyx_codeobj__51 __pyx_mstate_global->__pyx_codeobj__51 -#define __pyx_codeobj__52 __pyx_mstate_global->__pyx_codeobj__52 -#define __pyx_codeobj__53 __pyx_mstate_global->__pyx_codeobj__53 -#define __pyx_codeobj__54 __pyx_mstate_global->__pyx_codeobj__54 -#define __pyx_codeobj__55 __pyx_mstate_global->__pyx_codeobj__55 -#define __pyx_codeobj__56 __pyx_mstate_global->__pyx_codeobj__56 -#define __pyx_codeobj__58 __pyx_mstate_global->__pyx_codeobj__58 -#define __pyx_codeobj__59 __pyx_mstate_global->__pyx_codeobj__59 -#define __pyx_codeobj__60 __pyx_mstate_global->__pyx_codeobj__60 -#define __pyx_codeobj__62 __pyx_mstate_global->__pyx_codeobj__62 -#define __pyx_codeobj__63 __pyx_mstate_global->__pyx_codeobj__63 -#define __pyx_codeobj__64 __pyx_mstate_global->__pyx_codeobj__64 -/* #### Code section: module_code ### */ - -/* "carray.to_py":114 - * - * @cname("__Pyx_carray_to_py___pyx_t_5tinyr_Dfloat") - * cdef inline list __Pyx_carray_to_py___pyx_t_5tinyr_Dfloat(base_type *v, Py_ssize_t length): # <<<<<<<<<<<<<< - * cdef size_t i - * cdef object value - */ - -static CYTHON_INLINE PyObject *__Pyx_carray_to_py___pyx_t_5tinyr_Dfloat(__pyx_t_5tinyr_Dfloat *__pyx_v_v, Py_ssize_t __pyx_v_length) { - size_t __pyx_v_i; - PyObject *__pyx_v_value = 0; - PyObject *__pyx_v_l = NULL; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - size_t __pyx_t_2; - size_t __pyx_t_3; - size_t __pyx_t_4; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__Pyx_carray_to_py___pyx_t_5tinyr_Dfloat", 1); - - /* "carray.to_py":117 - * cdef size_t i - * cdef object value - * l = PyList_New(length) # <<<<<<<<<<<<<< - * for i in range(length): - * value = v[i] - */ - __pyx_t_1 = PyList_New(__pyx_v_length); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 117, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_v_l = ((PyObject*)__pyx_t_1); - __pyx_t_1 = 0; - - /* "carray.to_py":118 - * cdef object value - * l = PyList_New(length) - * for i in range(length): # <<<<<<<<<<<<<< - * value = v[i] - * Py_INCREF(value) - */ - __pyx_t_2 = ((size_t)__pyx_v_length); - __pyx_t_3 = __pyx_t_2; - for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) { - __pyx_v_i = __pyx_t_4; - - /* "carray.to_py":119 - * l = PyList_New(length) - * for i in range(length): - * value = v[i] # <<<<<<<<<<<<<< - * Py_INCREF(value) - * PyList_SET_ITEM(l, i, value) - */ - __pyx_t_1 = PyFloat_FromDouble((__pyx_v_v[__pyx_v_i])); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 119, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_XDECREF_SET(__pyx_v_value, __pyx_t_1); - __pyx_t_1 = 0; - - /* "carray.to_py":120 - * for i in range(length): - * value = v[i] - * Py_INCREF(value) # <<<<<<<<<<<<<< - * PyList_SET_ITEM(l, i, value) - * return l - */ - Py_INCREF(__pyx_v_value); - - /* "carray.to_py":121 - * value = v[i] - * Py_INCREF(value) - * PyList_SET_ITEM(l, i, value) # <<<<<<<<<<<<<< - * return l - * - */ - PyList_SET_ITEM(__pyx_v_l, __pyx_v_i, __pyx_v_value); - } - - /* "carray.to_py":122 - * Py_INCREF(value) - * PyList_SET_ITEM(l, i, value) - * return l # <<<<<<<<<<<<<< - * - * - */ - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_v_l); - __pyx_r = __pyx_v_l; - goto __pyx_L0; - - /* "carray.to_py":114 - * - * @cname("__Pyx_carray_to_py___pyx_t_5tinyr_Dfloat") - * cdef inline list __Pyx_carray_to_py___pyx_t_5tinyr_Dfloat(base_type *v, Py_ssize_t length): # <<<<<<<<<<<<<< - * cdef size_t i - * cdef object value - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("carray.to_py.__Pyx_carray_to_py___pyx_t_5tinyr_Dfloat", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_value); - __Pyx_XDECREF(__pyx_v_l); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "carray.to_py":126 - * - * @cname("__Pyx_carray_to_tuple___pyx_t_5tinyr_Dfloat") - * cdef inline tuple __Pyx_carray_to_tuple___pyx_t_5tinyr_Dfloat(base_type *v, Py_ssize_t length): # <<<<<<<<<<<<<< - * cdef size_t i - * cdef object value - */ - -static CYTHON_INLINE PyObject *__Pyx_carray_to_tuple___pyx_t_5tinyr_Dfloat(__pyx_t_5tinyr_Dfloat *__pyx_v_v, Py_ssize_t __pyx_v_length) { - size_t __pyx_v_i; - PyObject *__pyx_v_value = 0; - PyObject *__pyx_v_t = NULL; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - size_t __pyx_t_2; - size_t __pyx_t_3; - size_t __pyx_t_4; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__Pyx_carray_to_tuple___pyx_t_5tinyr_Dfloat", 1); - - /* "carray.to_py":129 - * cdef size_t i - * cdef object value - * t = PyTuple_New(length) # <<<<<<<<<<<<<< - * for i in range(length): - * value = v[i] - */ - __pyx_t_1 = PyTuple_New(__pyx_v_length); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 129, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_v_t = ((PyObject*)__pyx_t_1); - __pyx_t_1 = 0; - - /* "carray.to_py":130 - * cdef object value - * t = PyTuple_New(length) - * for i in range(length): # <<<<<<<<<<<<<< - * value = v[i] - * Py_INCREF(value) - */ - __pyx_t_2 = ((size_t)__pyx_v_length); - __pyx_t_3 = __pyx_t_2; - for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) { - __pyx_v_i = __pyx_t_4; - - /* "carray.to_py":131 - * t = PyTuple_New(length) - * for i in range(length): - * value = v[i] # <<<<<<<<<<<<<< - * Py_INCREF(value) - * PyTuple_SET_ITEM(t, i, value) - */ - __pyx_t_1 = PyFloat_FromDouble((__pyx_v_v[__pyx_v_i])); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 131, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_XDECREF_SET(__pyx_v_value, __pyx_t_1); - __pyx_t_1 = 0; - - /* "carray.to_py":132 - * for i in range(length): - * value = v[i] - * Py_INCREF(value) # <<<<<<<<<<<<<< - * PyTuple_SET_ITEM(t, i, value) - * return t - */ - Py_INCREF(__pyx_v_value); - - /* "carray.to_py":133 - * value = v[i] - * Py_INCREF(value) - * PyTuple_SET_ITEM(t, i, value) # <<<<<<<<<<<<<< - * return t - */ - PyTuple_SET_ITEM(__pyx_v_t, __pyx_v_i, __pyx_v_value); - } - - /* "carray.to_py":134 - * Py_INCREF(value) - * PyTuple_SET_ITEM(t, i, value) - * return t # <<<<<<<<<<<<<< - */ - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_v_t); - __pyx_r = __pyx_v_t; - goto __pyx_L0; - - /* "carray.to_py":126 - * - * @cname("__Pyx_carray_to_tuple___pyx_t_5tinyr_Dfloat") - * cdef inline tuple __Pyx_carray_to_tuple___pyx_t_5tinyr_Dfloat(base_type *v, Py_ssize_t length): # <<<<<<<<<<<<<< - * cdef size_t i - * cdef object value - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("carray.to_py.__Pyx_carray_to_tuple___pyx_t_5tinyr_Dfloat", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_value); - __Pyx_XDECREF(__pyx_v_t); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "carray.from_py":79 - * - * @cname("__Pyx_carray_from_py___pyx_t_5tinyr_Dfloat") - * cdef int __Pyx_carray_from_py___pyx_t_5tinyr_Dfloat(object o, base_type *v, Py_ssize_t length) except -1: # <<<<<<<<<<<<<< - * cdef Py_ssize_t i = length - * try: - */ - -static int __Pyx_carray_from_py___pyx_t_5tinyr_Dfloat(PyObject *__pyx_v_o, __pyx_t_5tinyr_Dfloat *__pyx_v_v, Py_ssize_t __pyx_v_length) { - Py_ssize_t __pyx_v_i; - PyObject *__pyx_v_item = NULL; - int __pyx_r; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - Py_ssize_t __pyx_t_4; - int __pyx_t_5; - int __pyx_t_6; - PyObject *__pyx_t_7 = NULL; - Py_ssize_t __pyx_t_8; - PyObject *(*__pyx_t_9)(PyObject *); - PyObject *__pyx_t_10 = NULL; - __pyx_t_5tinyr_Dfloat __pyx_t_11; - char const *__pyx_t_12; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__Pyx_carray_from_py___pyx_t_5tinyr_Dfloat", 1); - - /* "carray.from_py":80 - * @cname("__Pyx_carray_from_py___pyx_t_5tinyr_Dfloat") - * cdef int __Pyx_carray_from_py___pyx_t_5tinyr_Dfloat(object o, base_type *v, Py_ssize_t length) except -1: - * cdef Py_ssize_t i = length # <<<<<<<<<<<<<< - * try: - * i = len(o) - */ - __pyx_v_i = __pyx_v_length; - - /* "carray.from_py":81 - * cdef int __Pyx_carray_from_py___pyx_t_5tinyr_Dfloat(object o, base_type *v, Py_ssize_t length) except -1: - * cdef Py_ssize_t i = length - * try: # <<<<<<<<<<<<<< - * i = len(o) - * except (TypeError, OverflowError): - */ - { - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3); - __Pyx_XGOTREF(__pyx_t_1); - __Pyx_XGOTREF(__pyx_t_2); - __Pyx_XGOTREF(__pyx_t_3); - /*try:*/ { - - /* "carray.from_py":82 - * cdef Py_ssize_t i = length - * try: - * i = len(o) # <<<<<<<<<<<<<< - * except (TypeError, OverflowError): - * pass - */ - __pyx_t_4 = PyObject_Length(__pyx_v_o); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(1, 82, __pyx_L3_error) - __pyx_v_i = __pyx_t_4; - - /* "carray.from_py":81 - * cdef int __Pyx_carray_from_py___pyx_t_5tinyr_Dfloat(object o, base_type *v, Py_ssize_t length) except -1: - * cdef Py_ssize_t i = length - * try: # <<<<<<<<<<<<<< - * i = len(o) - * except (TypeError, OverflowError): - */ - } - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - goto __pyx_L8_try_end; - __pyx_L3_error:; - - /* "carray.from_py":83 - * try: - * i = len(o) - * except (TypeError, OverflowError): # <<<<<<<<<<<<<< - * pass - * if i == length: - */ - __pyx_t_5 = __Pyx_PyErr_ExceptionMatches2(__pyx_builtin_TypeError, __pyx_builtin_OverflowError); - if (__pyx_t_5) { - __Pyx_ErrRestore(0,0,0); - goto __pyx_L4_exception_handled; - } - goto __pyx_L5_except_error; - - /* "carray.from_py":81 - * cdef int __Pyx_carray_from_py___pyx_t_5tinyr_Dfloat(object o, base_type *v, Py_ssize_t length) except -1: - * cdef Py_ssize_t i = length - * try: # <<<<<<<<<<<<<< - * i = len(o) - * except (TypeError, OverflowError): - */ - __pyx_L5_except_error:; - __Pyx_XGIVEREF(__pyx_t_1); - __Pyx_XGIVEREF(__pyx_t_2); - __Pyx_XGIVEREF(__pyx_t_3); - __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); - goto __pyx_L1_error; - __pyx_L4_exception_handled:; - __Pyx_XGIVEREF(__pyx_t_1); - __Pyx_XGIVEREF(__pyx_t_2); - __Pyx_XGIVEREF(__pyx_t_3); - __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); - __pyx_L8_try_end:; - } - - /* "carray.from_py":85 - * except (TypeError, OverflowError): - * pass - * if i == length: # <<<<<<<<<<<<<< - * for i, item in enumerate(o): - * if i >= length: - */ - __pyx_t_6 = (__pyx_v_i == __pyx_v_length); - if (__pyx_t_6) { - - /* "carray.from_py":86 - * pass - * if i == length: - * for i, item in enumerate(o): # <<<<<<<<<<<<<< - * if i >= length: - * break - */ - __pyx_t_4 = 0; - if (likely(PyList_CheckExact(__pyx_v_o)) || PyTuple_CheckExact(__pyx_v_o)) { - __pyx_t_7 = __pyx_v_o; __Pyx_INCREF(__pyx_t_7); - __pyx_t_8 = 0; - __pyx_t_9 = NULL; - } else { - __pyx_t_8 = -1; __pyx_t_7 = PyObject_GetIter(__pyx_v_o); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 86, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __pyx_t_9 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_7); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 86, __pyx_L1_error) - } - for (;;) { - if (likely(!__pyx_t_9)) { - if (likely(PyList_CheckExact(__pyx_t_7))) { - { - Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_7); - #if !CYTHON_ASSUME_SAFE_MACROS - if (unlikely((__pyx_temp < 0))) __PYX_ERR(1, 86, __pyx_L1_error) - #endif - if (__pyx_t_8 >= __pyx_temp) break; - } - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_10 = PyList_GET_ITEM(__pyx_t_7, __pyx_t_8); __Pyx_INCREF(__pyx_t_10); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(1, 86, __pyx_L1_error) - #else - __pyx_t_10 = __Pyx_PySequence_ITEM(__pyx_t_7, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 86, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_10); - #endif - } else { - { - Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_7); - #if !CYTHON_ASSUME_SAFE_MACROS - if (unlikely((__pyx_temp < 0))) __PYX_ERR(1, 86, __pyx_L1_error) - #endif - if (__pyx_t_8 >= __pyx_temp) break; - } - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_10 = PyTuple_GET_ITEM(__pyx_t_7, __pyx_t_8); __Pyx_INCREF(__pyx_t_10); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(1, 86, __pyx_L1_error) - #else - __pyx_t_10 = __Pyx_PySequence_ITEM(__pyx_t_7, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 86, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_10); - #endif - } - } else { - __pyx_t_10 = __pyx_t_9(__pyx_t_7); - if (unlikely(!__pyx_t_10)) { - PyObject* exc_type = PyErr_Occurred(); - if (exc_type) { - if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); - else __PYX_ERR(1, 86, __pyx_L1_error) - } - break; - } - __Pyx_GOTREF(__pyx_t_10); - } - __Pyx_XDECREF_SET(__pyx_v_item, __pyx_t_10); - __pyx_t_10 = 0; - __pyx_v_i = __pyx_t_4; - __pyx_t_4 = (__pyx_t_4 + 1); - - /* "carray.from_py":87 - * if i == length: - * for i, item in enumerate(o): - * if i >= length: # <<<<<<<<<<<<<< - * break - * v[i] = item - */ - __pyx_t_6 = (__pyx_v_i >= __pyx_v_length); - if (__pyx_t_6) { - - /* "carray.from_py":88 - * for i, item in enumerate(o): - * if i >= length: - * break # <<<<<<<<<<<<<< - * v[i] = item - * else: - */ - goto __pyx_L11_break; - - /* "carray.from_py":87 - * if i == length: - * for i, item in enumerate(o): - * if i >= length: # <<<<<<<<<<<<<< - * break - * v[i] = item - */ - } - - /* "carray.from_py":89 - * if i >= length: - * break - * v[i] = item # <<<<<<<<<<<<<< - * else: - * i += 1 # convert index to length - */ - __pyx_t_11 = __pyx_PyFloat_AsDouble(__pyx_v_item); if (unlikely((__pyx_t_11 == (double)-1) && PyErr_Occurred())) __PYX_ERR(1, 89, __pyx_L1_error) - (__pyx_v_v[__pyx_v_i]) = __pyx_t_11; - - /* "carray.from_py":86 - * pass - * if i == length: - * for i, item in enumerate(o): # <<<<<<<<<<<<<< - * if i >= length: - * break - */ - } - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - goto __pyx_L13_for_else; - __pyx_L11_break:; - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - goto __pyx_L14_for_end; - /*else*/ { - __pyx_L13_for_else:; - - /* "carray.from_py":91 - * v[i] = item - * else: - * i += 1 # convert index to length # <<<<<<<<<<<<<< - * if i == length: - * return 0 - */ - __pyx_v_i = (__pyx_v_i + 1); - - /* "carray.from_py":92 - * else: - * i += 1 # convert index to length - * if i == length: # <<<<<<<<<<<<<< - * return 0 - * - */ - __pyx_t_6 = (__pyx_v_i == __pyx_v_length); - if (__pyx_t_6) { - - /* "carray.from_py":93 - * i += 1 # convert index to length - * if i == length: - * return 0 # <<<<<<<<<<<<<< - * - * PyErr_Format( - */ - __pyx_r = 0; - goto __pyx_L0; - - /* "carray.from_py":92 - * else: - * i += 1 # convert index to length - * if i == length: # <<<<<<<<<<<<<< - * return 0 - * - */ - } - } - __pyx_L14_for_end:; - - /* "carray.from_py":85 - * except (TypeError, OverflowError): - * pass - * if i == length: # <<<<<<<<<<<<<< - * for i, item in enumerate(o): - * if i >= length: - */ - } - - /* "carray.from_py":98 - * IndexError, - * ("too many values found during array assignment, expected %zd" - * if i >= length else # <<<<<<<<<<<<<< - * "not enough values found during array assignment, expected %zd, got %zd"), - * length, i) - */ - __pyx_t_6 = (__pyx_v_i >= __pyx_v_length); - if (__pyx_t_6) { - __pyx_t_12 = ((char const *)"too many values found during array assignment, expected %zd"); - } else { - __pyx_t_12 = ((char const *)"not enough values found during array assignment, expected %zd, got %zd"); - } - - /* "carray.from_py":95 - * return 0 - * - * PyErr_Format( # <<<<<<<<<<<<<< - * IndexError, - * ("too many values found during array assignment, expected %zd" - */ - __pyx_t_7 = PyErr_Format(__pyx_builtin_IndexError, __pyx_t_12, __pyx_v_length, __pyx_v_i); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 95, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - - /* "carray.from_py":79 - * - * @cname("__Pyx_carray_from_py___pyx_t_5tinyr_Dfloat") - * cdef int __Pyx_carray_from_py___pyx_t_5tinyr_Dfloat(object o, base_type *v, Py_ssize_t length) except -1: # <<<<<<<<<<<<<< - * cdef Py_ssize_t i = length - * try: - */ - - /* function exit code */ - __pyx_r = 0; - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_7); - __Pyx_XDECREF(__pyx_t_10); - __Pyx_AddTraceback("carray.from_py.__Pyx_carray_from_py___pyx_t_5tinyr_Dfloat", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = -1; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_item); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "tinyr.pyx":67 - * ############################################################################### - * - * cdef inline void init_Dfloat4(Dfloat *f): # <<<<<<<<<<<<<< - * # array initialization - compiler cries if we don't do that - * f[0] = 0 - */ - -static CYTHON_INLINE void __pyx_f_5tinyr_init_Dfloat4(__pyx_t_5tinyr_Dfloat *__pyx_v_f) { - - /* "tinyr.pyx":69 - * cdef inline void init_Dfloat4(Dfloat *f): - * # array initialization - compiler cries if we don't do that - * f[0] = 0 # <<<<<<<<<<<<<< - * f[1] = 0 - * f[2] = 0 - */ - (__pyx_v_f[0]) = 0.0; - - /* "tinyr.pyx":70 - * # array initialization - compiler cries if we don't do that - * f[0] = 0 - * f[1] = 0 # <<<<<<<<<<<<<< - * f[2] = 0 - * f[3] = 0 - */ - (__pyx_v_f[1]) = 0.0; - - /* "tinyr.pyx":71 - * f[0] = 0 - * f[1] = 0 - * f[2] = 0 # <<<<<<<<<<<<<< - * f[3] = 0 - * - */ - (__pyx_v_f[2]) = 0.0; - - /* "tinyr.pyx":72 - * f[1] = 0 - * f[2] = 0 - * f[3] = 0 # <<<<<<<<<<<<<< - * - * cdef inline void make_order(Dfloat *coords): - */ - (__pyx_v_f[3]) = 0.0; - - /* "tinyr.pyx":67 - * ############################################################################### - * - * cdef inline void init_Dfloat4(Dfloat *f): # <<<<<<<<<<<<<< - * # array initialization - compiler cries if we don't do that - * f[0] = 0 - */ - - /* function exit code */ -} - -/* "tinyr.pyx":74 - * f[3] = 0 - * - * cdef inline void make_order(Dfloat *coords): # <<<<<<<<<<<<<< - * cdef Dfloat switch - * if coords[0] > coords[2]: - */ - -static CYTHON_INLINE void __pyx_f_5tinyr_make_order(__pyx_t_5tinyr_Dfloat *__pyx_v_coords) { - __pyx_t_5tinyr_Dfloat __pyx_v_switch; - int __pyx_t_1; - - /* "tinyr.pyx":76 - * cdef inline void make_order(Dfloat *coords): - * cdef Dfloat switch - * if coords[0] > coords[2]: # <<<<<<<<<<<<<< - * switch = coords[0] - * coords[0] = coords[2] - */ - __pyx_t_1 = ((__pyx_v_coords[0]) > (__pyx_v_coords[2])); - if (__pyx_t_1) { - - /* "tinyr.pyx":77 - * cdef Dfloat switch - * if coords[0] > coords[2]: - * switch = coords[0] # <<<<<<<<<<<<<< - * coords[0] = coords[2] - * coords[2] = switch - */ - __pyx_v_switch = (__pyx_v_coords[0]); - - /* "tinyr.pyx":78 - * if coords[0] > coords[2]: - * switch = coords[0] - * coords[0] = coords[2] # <<<<<<<<<<<<<< - * coords[2] = switch - * if coords[1] > coords[3]: - */ - (__pyx_v_coords[0]) = (__pyx_v_coords[2]); - - /* "tinyr.pyx":79 - * switch = coords[0] - * coords[0] = coords[2] - * coords[2] = switch # <<<<<<<<<<<<<< - * if coords[1] > coords[3]: - * switch = coords[1] - */ - (__pyx_v_coords[2]) = __pyx_v_switch; - - /* "tinyr.pyx":76 - * cdef inline void make_order(Dfloat *coords): - * cdef Dfloat switch - * if coords[0] > coords[2]: # <<<<<<<<<<<<<< - * switch = coords[0] - * coords[0] = coords[2] - */ - } - - /* "tinyr.pyx":80 - * coords[0] = coords[2] - * coords[2] = switch - * if coords[1] > coords[3]: # <<<<<<<<<<<<<< - * switch = coords[1] - * coords[1] = coords[3] - */ - __pyx_t_1 = ((__pyx_v_coords[1]) > (__pyx_v_coords[3])); - if (__pyx_t_1) { - - /* "tinyr.pyx":81 - * coords[2] = switch - * if coords[1] > coords[3]: - * switch = coords[1] # <<<<<<<<<<<<<< - * coords[1] = coords[3] - * coords[3] = switch - */ - __pyx_v_switch = (__pyx_v_coords[1]); - - /* "tinyr.pyx":82 - * if coords[1] > coords[3]: - * switch = coords[1] - * coords[1] = coords[3] # <<<<<<<<<<<<<< - * coords[3] = switch - * - */ - (__pyx_v_coords[1]) = (__pyx_v_coords[3]); - - /* "tinyr.pyx":83 - * switch = coords[1] - * coords[1] = coords[3] - * coords[3] = switch # <<<<<<<<<<<<<< - * - * cdef void tuple_to_array_interleaved(object t, Dfloat *coords): - */ - (__pyx_v_coords[3]) = __pyx_v_switch; - - /* "tinyr.pyx":80 - * coords[0] = coords[2] - * coords[2] = switch - * if coords[1] > coords[3]: # <<<<<<<<<<<<<< - * switch = coords[1] - * coords[1] = coords[3] - */ - } - - /* "tinyr.pyx":74 - * f[3] = 0 - * - * cdef inline void make_order(Dfloat *coords): # <<<<<<<<<<<<<< - * cdef Dfloat switch - * if coords[0] > coords[2]: - */ - - /* function exit code */ -} - -/* "tinyr.pyx":85 - * coords[3] = switch - * - * cdef void tuple_to_array_interleaved(object t, Dfloat *coords): # <<<<<<<<<<<<<< - * for i in range(4): - * coords[i] = t[i] - */ - -static void __pyx_f_5tinyr_tuple_to_array_interleaved(PyObject *__pyx_v_t, __pyx_t_5tinyr_Dfloat *__pyx_v_coords) { - long __pyx_v_i; - __Pyx_RefNannyDeclarations - long __pyx_t_1; - PyObject *__pyx_t_2 = NULL; - __pyx_t_5tinyr_Dfloat __pyx_t_3; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("tuple_to_array_interleaved", 1); - - /* "tinyr.pyx":86 - * - * cdef void tuple_to_array_interleaved(object t, Dfloat *coords): - * for i in range(4): # <<<<<<<<<<<<<< - * coords[i] = t[i] - * make_order(coords) - */ - for (__pyx_t_1 = 0; __pyx_t_1 < 4; __pyx_t_1+=1) { - __pyx_v_i = __pyx_t_1; - - /* "tinyr.pyx":87 - * cdef void tuple_to_array_interleaved(object t, Dfloat *coords): - * for i in range(4): - * coords[i] = t[i] # <<<<<<<<<<<<<< - * make_order(coords) - * - */ - __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_t, __pyx_v_i, long, 1, __Pyx_PyInt_From_long, 0, 1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 87, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_t_2); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 87, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - (__pyx_v_coords[__pyx_v_i]) = ((__pyx_t_5tinyr_Dfloat)__pyx_t_3); - } - - /* "tinyr.pyx":88 - * for i in range(4): - * coords[i] = t[i] - * make_order(coords) # <<<<<<<<<<<<<< - * - * cdef void tuple_to_array_normal(object t, Dfloat *coords): - */ - __pyx_f_5tinyr_make_order(__pyx_v_coords); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 88, __pyx_L1_error) - - /* "tinyr.pyx":85 - * coords[3] = switch - * - * cdef void tuple_to_array_interleaved(object t, Dfloat *coords): # <<<<<<<<<<<<<< - * for i in range(4): - * coords[i] = t[i] - */ - - /* function exit code */ - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_2); - __Pyx_AddTraceback("tinyr.tuple_to_array_interleaved", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_L0:; - __Pyx_RefNannyFinishContext(); -} - -/* "tinyr.pyx":90 - * make_order(coords) - * - * cdef void tuple_to_array_normal(object t, Dfloat *coords): # <<<<<<<<<<<<<< - * coords[0] = t[0] - * coords[2] = t[1] - */ - -static void __pyx_f_5tinyr_tuple_to_array_normal(PyObject *__pyx_v_t, __pyx_t_5tinyr_Dfloat *__pyx_v_coords) { - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __pyx_t_5tinyr_Dfloat __pyx_t_2; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("tuple_to_array_normal", 1); - - /* "tinyr.pyx":91 - * - * cdef void tuple_to_array_normal(object t, Dfloat *coords): - * coords[0] = t[0] # <<<<<<<<<<<<<< - * coords[2] = t[1] - * coords[1] = t[2] - */ - __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_t, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 91, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 91, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - (__pyx_v_coords[0]) = ((__pyx_t_5tinyr_Dfloat)__pyx_t_2); - - /* "tinyr.pyx":92 - * cdef void tuple_to_array_normal(object t, Dfloat *coords): - * coords[0] = t[0] - * coords[2] = t[1] # <<<<<<<<<<<<<< - * coords[1] = t[2] - * coords[3] = t[3] - */ - __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_t, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 92, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 92, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - (__pyx_v_coords[2]) = ((__pyx_t_5tinyr_Dfloat)__pyx_t_2); - - /* "tinyr.pyx":93 - * coords[0] = t[0] - * coords[2] = t[1] - * coords[1] = t[2] # <<<<<<<<<<<<<< - * coords[3] = t[3] - * make_order(coords) - */ - __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_t, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 93, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 93, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - (__pyx_v_coords[1]) = ((__pyx_t_5tinyr_Dfloat)__pyx_t_2); - - /* "tinyr.pyx":94 - * coords[2] = t[1] - * coords[1] = t[2] - * coords[3] = t[3] # <<<<<<<<<<<<<< - * make_order(coords) - * - */ - __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_t, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 94, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 94, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - (__pyx_v_coords[3]) = ((__pyx_t_5tinyr_Dfloat)__pyx_t_2); - - /* "tinyr.pyx":95 - * coords[1] = t[2] - * coords[3] = t[3] - * make_order(coords) # <<<<<<<<<<<<<< - * - * - */ - __pyx_f_5tinyr_make_order(__pyx_v_coords); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 95, __pyx_L1_error) - - /* "tinyr.pyx":90 - * make_order(coords) - * - * cdef void tuple_to_array_normal(object t, Dfloat *coords): # <<<<<<<<<<<<<< - * coords[0] = t[0] - * coords[2] = t[1] - */ - - /* function exit code */ - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("tinyr.tuple_to_array_normal", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_L0:; - __Pyx_RefNannyFinishContext(); -} - -/* "tinyr.pyx":98 - * - * - * cdef tuple array_to_tuple_interleaved(Dfloat *coords): # <<<<<<<<<<<<<< - * return tuple([ coords[i] for i in range(4)]) - * - */ - -static PyObject *__pyx_f_5tinyr_array_to_tuple_interleaved(__pyx_t_5tinyr_Dfloat *__pyx_v_coords) { - long __pyx_7genexpr__pyx_v_i; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - long __pyx_t_2; - PyObject *__pyx_t_3 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("array_to_tuple_interleaved", 1); - - /* "tinyr.pyx":99 - * - * cdef tuple array_to_tuple_interleaved(Dfloat *coords): - * return tuple([ coords[i] for i in range(4)]) # <<<<<<<<<<<<<< - * - * cdef tuple array_to_tuple_normal(Dfloat *coords): - */ - __Pyx_XDECREF(__pyx_r); - { /* enter inner scope */ - __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 99, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - for (__pyx_t_2 = 0; __pyx_t_2 < 4; __pyx_t_2+=1) { - __pyx_7genexpr__pyx_v_i = __pyx_t_2; - __pyx_t_3 = PyFloat_FromDouble((__pyx_v_coords[__pyx_7genexpr__pyx_v_i])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 99, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_3))) __PYX_ERR(0, 99, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } - } /* exit inner scope */ - __pyx_t_3 = PyList_AsTuple(((PyObject*)__pyx_t_1)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 99, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_r = ((PyObject*)__pyx_t_3); - __pyx_t_3 = 0; - goto __pyx_L0; - - /* "tinyr.pyx":98 - * - * - * cdef tuple array_to_tuple_interleaved(Dfloat *coords): # <<<<<<<<<<<<<< - * return tuple([ coords[i] for i in range(4)]) - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_AddTraceback("tinyr.array_to_tuple_interleaved", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "tinyr.pyx":101 - * return tuple([ coords[i] for i in range(4)]) - * - * cdef tuple array_to_tuple_normal(Dfloat *coords): # <<<<<<<<<<<<<< - * return tuple([ coords[0], coords[2], coords[1], coords[3] ]) - * - */ - -static PyObject *__pyx_f_5tinyr_array_to_tuple_normal(__pyx_t_5tinyr_Dfloat *__pyx_v_coords) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("array_to_tuple_normal", 1); - - /* "tinyr.pyx":102 - * - * cdef tuple array_to_tuple_normal(Dfloat *coords): - * return tuple([ coords[0], coords[2], coords[1], coords[3] ]) # <<<<<<<<<<<<<< - * - * cdef inline _InnerRecord parent_record(_Node node): - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyFloat_FromDouble((__pyx_v_coords[0])); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 102, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = PyFloat_FromDouble((__pyx_v_coords[2])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 102, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = PyFloat_FromDouble((__pyx_v_coords[1])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 102, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyFloat_FromDouble((__pyx_v_coords[3])); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 102, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = PyList_New(4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 102, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_GIVEREF(__pyx_t_1); - if (__Pyx_PyList_SET_ITEM(__pyx_t_5, 0, __pyx_t_1)) __PYX_ERR(0, 102, __pyx_L1_error); - __Pyx_GIVEREF(__pyx_t_2); - if (__Pyx_PyList_SET_ITEM(__pyx_t_5, 1, __pyx_t_2)) __PYX_ERR(0, 102, __pyx_L1_error); - __Pyx_GIVEREF(__pyx_t_3); - if (__Pyx_PyList_SET_ITEM(__pyx_t_5, 2, __pyx_t_3)) __PYX_ERR(0, 102, __pyx_L1_error); - __Pyx_GIVEREF(__pyx_t_4); - if (__Pyx_PyList_SET_ITEM(__pyx_t_5, 3, __pyx_t_4)) __PYX_ERR(0, 102, __pyx_L1_error); - __pyx_t_1 = 0; - __pyx_t_2 = 0; - __pyx_t_3 = 0; - __pyx_t_4 = 0; - __pyx_t_4 = PyList_AsTuple(((PyObject*)__pyx_t_5)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 102, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_r = ((PyObject*)__pyx_t_4); - __pyx_t_4 = 0; - goto __pyx_L0; - - /* "tinyr.pyx":101 - * return tuple([ coords[i] for i in range(4)]) - * - * cdef tuple array_to_tuple_normal(Dfloat *coords): # <<<<<<<<<<<<<< - * return tuple([ coords[0], coords[2], coords[1], coords[3] ]) - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_AddTraceback("tinyr.array_to_tuple_normal", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "tinyr.pyx":104 - * return tuple([ coords[0], coords[2], coords[1], coords[3] ]) - * - * cdef inline _InnerRecord parent_record(_Node node): # <<<<<<<<<<<<<< - * cdef: - * _InnerRecord e - */ - -static CYTHON_INLINE struct __pyx_obj_5tinyr__InnerRecord *__pyx_f_5tinyr_parent_record(struct __pyx_obj_5tinyr__Node *__pyx_v_node) { - struct __pyx_obj_5tinyr__InnerRecord *__pyx_v_e = 0; - struct __pyx_obj_5tinyr__InnerRecord *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - Py_ssize_t __pyx_t_2; - PyObject *__pyx_t_3 = NULL; - int __pyx_t_4; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("parent_record", 1); - - /* "tinyr.pyx":108 - * _InnerRecord e - * - * for e in node.parent.records: # <<<<<<<<<<<<<< - * if e.child == node: - * return e - */ - if (unlikely(__pyx_v_node->parent->records == Py_None)) { - PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); - __PYX_ERR(0, 108, __pyx_L1_error) - } - __pyx_t_1 = __pyx_v_node->parent->records; __Pyx_INCREF(__pyx_t_1); - __pyx_t_2 = 0; - for (;;) { - { - Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1); - #if !CYTHON_ASSUME_SAFE_MACROS - if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 108, __pyx_L1_error) - #endif - if (__pyx_t_2 >= __pyx_temp) break; - } - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_3 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_3); __pyx_t_2++; if (unlikely((0 < 0))) __PYX_ERR(0, 108, __pyx_L1_error) - #else - __pyx_t_3 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 108, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - #endif - if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5tinyr__InnerRecord))))) __PYX_ERR(0, 108, __pyx_L1_error) - __Pyx_XDECREF_SET(__pyx_v_e, ((struct __pyx_obj_5tinyr__InnerRecord *)__pyx_t_3)); - __pyx_t_3 = 0; - - /* "tinyr.pyx":109 - * - * for e in node.parent.records: - * if e.child == node: # <<<<<<<<<<<<<< - * return e - * - */ - __pyx_t_3 = PyObject_RichCompare(((PyObject *)__pyx_v_e->child), ((PyObject *)__pyx_v_node), Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 109, __pyx_L1_error) - __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 109, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - if (__pyx_t_4) { - - /* "tinyr.pyx":110 - * for e in node.parent.records: - * if e.child == node: - * return e # <<<<<<<<<<<<<< - * - * cdef inline void common_boundaries(list records, Dfloat *target): - */ - __Pyx_XDECREF((PyObject *)__pyx_r); - __Pyx_INCREF((PyObject *)__pyx_v_e); - __pyx_r = __pyx_v_e; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - goto __pyx_L0; - - /* "tinyr.pyx":109 - * - * for e in node.parent.records: - * if e.child == node: # <<<<<<<<<<<<<< - * return e - * - */ - } - - /* "tinyr.pyx":108 - * _InnerRecord e - * - * for e in node.parent.records: # <<<<<<<<<<<<<< - * if e.child == node: - * return e - */ - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "tinyr.pyx":104 - * return tuple([ coords[0], coords[2], coords[1], coords[3] ]) - * - * cdef inline _InnerRecord parent_record(_Node node): # <<<<<<<<<<<<<< - * cdef: - * _InnerRecord e - */ - - /* function exit code */ - __pyx_r = ((struct __pyx_obj_5tinyr__InnerRecord *)Py_None); __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_AddTraceback("tinyr.parent_record", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XDECREF((PyObject *)__pyx_v_e); - __Pyx_XGIVEREF((PyObject *)__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "tinyr.pyx":112 - * return e - * - * cdef inline void common_boundaries(list records, Dfloat *target): # <<<<<<<<<<<<<< - * cdef: - * Dfloat *coords - */ - -static CYTHON_INLINE void __pyx_f_5tinyr_common_boundaries(PyObject *__pyx_v_records, __pyx_t_5tinyr_Dfloat *__pyx_v_target) { - __pyx_t_5tinyr_Dfloat *__pyx_v_coords; - struct __pyx_obj_5tinyr__Record *__pyx_v_r = 0; - __Pyx_RefNannyDeclarations - double __pyx_t_1; - PyObject *__pyx_t_2 = NULL; - Py_ssize_t __pyx_t_3; - PyObject *__pyx_t_4 = NULL; - __pyx_t_5tinyr_Dfloat *__pyx_t_5; - __pyx_t_5tinyr_Dfloat __pyx_t_6; - __pyx_t_5tinyr_Dfloat __pyx_t_7; - __pyx_t_5tinyr_Dfloat __pyx_t_8; - int __pyx_t_9; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("common_boundaries", 1); - - /* "tinyr.pyx":117 - * _Record r - * - * target[0] = target[1] = Dfloat_max # <<<<<<<<<<<<<< - * target[2] = target[3] = -Dfloat_min - * for r in records: - */ - (__pyx_v_target[0]) = DBL_MAX; - (__pyx_v_target[1]) = DBL_MAX; - - /* "tinyr.pyx":118 - * - * target[0] = target[1] = Dfloat_max - * target[2] = target[3] = -Dfloat_min # <<<<<<<<<<<<<< - * for r in records: - * coords = r.coords - */ - __pyx_t_1 = (-DBL_MIN); - (__pyx_v_target[2]) = __pyx_t_1; - (__pyx_v_target[3]) = __pyx_t_1; - - /* "tinyr.pyx":119 - * target[0] = target[1] = Dfloat_max - * target[2] = target[3] = -Dfloat_min - * for r in records: # <<<<<<<<<<<<<< - * coords = r.coords - * target[0] = min(target[0], coords[0]) - */ - if (unlikely(__pyx_v_records == Py_None)) { - PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); - __PYX_ERR(0, 119, __pyx_L1_error) - } - __pyx_t_2 = __pyx_v_records; __Pyx_INCREF(__pyx_t_2); - __pyx_t_3 = 0; - for (;;) { - { - Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_2); - #if !CYTHON_ASSUME_SAFE_MACROS - if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 119, __pyx_L1_error) - #endif - if (__pyx_t_3 >= __pyx_temp) break; - } - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_4 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_4); __pyx_t_3++; if (unlikely((0 < 0))) __PYX_ERR(0, 119, __pyx_L1_error) - #else - __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 119, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - #endif - if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5tinyr__Record))))) __PYX_ERR(0, 119, __pyx_L1_error) - __Pyx_XDECREF_SET(__pyx_v_r, ((struct __pyx_obj_5tinyr__Record *)__pyx_t_4)); - __pyx_t_4 = 0; - - /* "tinyr.pyx":120 - * target[2] = target[3] = -Dfloat_min - * for r in records: - * coords = r.coords # <<<<<<<<<<<<<< - * target[0] = min(target[0], coords[0]) - * target[1] = min(target[1], coords[1]) - */ - __pyx_t_5 = __pyx_v_r->coords; - __pyx_v_coords = __pyx_t_5; - - /* "tinyr.pyx":121 - * for r in records: - * coords = r.coords - * target[0] = min(target[0], coords[0]) # <<<<<<<<<<<<<< - * target[1] = min(target[1], coords[1]) - * target[2] = max(target[2], coords[2]) - */ - __pyx_t_6 = (__pyx_v_coords[0]); - __pyx_t_7 = (__pyx_v_target[0]); - __pyx_t_9 = (__pyx_t_6 < __pyx_t_7); - if (__pyx_t_9) { - __pyx_t_8 = __pyx_t_6; - } else { - __pyx_t_8 = __pyx_t_7; - } - (__pyx_v_target[0]) = __pyx_t_8; - - /* "tinyr.pyx":122 - * coords = r.coords - * target[0] = min(target[0], coords[0]) - * target[1] = min(target[1], coords[1]) # <<<<<<<<<<<<<< - * target[2] = max(target[2], coords[2]) - * target[3] = max(target[3], coords[3]) - */ - __pyx_t_8 = (__pyx_v_coords[1]); - __pyx_t_6 = (__pyx_v_target[1]); - __pyx_t_9 = (__pyx_t_8 < __pyx_t_6); - if (__pyx_t_9) { - __pyx_t_7 = __pyx_t_8; - } else { - __pyx_t_7 = __pyx_t_6; - } - (__pyx_v_target[1]) = __pyx_t_7; - - /* "tinyr.pyx":123 - * target[0] = min(target[0], coords[0]) - * target[1] = min(target[1], coords[1]) - * target[2] = max(target[2], coords[2]) # <<<<<<<<<<<<<< - * target[3] = max(target[3], coords[3]) - * - */ - __pyx_t_7 = (__pyx_v_coords[2]); - __pyx_t_8 = (__pyx_v_target[2]); - __pyx_t_9 = (__pyx_t_7 > __pyx_t_8); - if (__pyx_t_9) { - __pyx_t_6 = __pyx_t_7; - } else { - __pyx_t_6 = __pyx_t_8; - } - (__pyx_v_target[2]) = __pyx_t_6; - - /* "tinyr.pyx":124 - * target[1] = min(target[1], coords[1]) - * target[2] = max(target[2], coords[2]) - * target[3] = max(target[3], coords[3]) # <<<<<<<<<<<<<< - * - * cdef inline Dfloat area(Dfloat *coords): - */ - __pyx_t_6 = (__pyx_v_coords[3]); - __pyx_t_7 = (__pyx_v_target[3]); - __pyx_t_9 = (__pyx_t_6 > __pyx_t_7); - if (__pyx_t_9) { - __pyx_t_8 = __pyx_t_6; - } else { - __pyx_t_8 = __pyx_t_7; - } - (__pyx_v_target[3]) = __pyx_t_8; - - /* "tinyr.pyx":119 - * target[0] = target[1] = Dfloat_max - * target[2] = target[3] = -Dfloat_min - * for r in records: # <<<<<<<<<<<<<< - * coords = r.coords - * target[0] = min(target[0], coords[0]) - */ - } - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "tinyr.pyx":112 - * return e - * - * cdef inline void common_boundaries(list records, Dfloat *target): # <<<<<<<<<<<<<< - * cdef: - * Dfloat *coords - */ - - /* function exit code */ - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_AddTraceback("tinyr.common_boundaries", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_L0:; - __Pyx_XDECREF((PyObject *)__pyx_v_r); - __Pyx_RefNannyFinishContext(); -} - -/* "tinyr.pyx":126 - * target[3] = max(target[3], coords[3]) - * - * cdef inline Dfloat area(Dfloat *coords): # <<<<<<<<<<<<<< - * return (coords[2] - coords[0]) * (coords[3] - coords[1]) - * - */ - -static CYTHON_INLINE __pyx_t_5tinyr_Dfloat __pyx_f_5tinyr_area(__pyx_t_5tinyr_Dfloat *__pyx_v_coords) { - __pyx_t_5tinyr_Dfloat __pyx_r; - - /* "tinyr.pyx":127 - * - * cdef inline Dfloat area(Dfloat *coords): - * return (coords[2] - coords[0]) * (coords[3] - coords[1]) # <<<<<<<<<<<<<< - * - * cdef class _Record: - */ - __pyx_r = (((__pyx_v_coords[2]) - (__pyx_v_coords[0])) * ((__pyx_v_coords[3]) - (__pyx_v_coords[1]))); - goto __pyx_L0; - - /* "tinyr.pyx":126 - * target[3] = max(target[3], coords[3]) - * - * cdef inline Dfloat area(Dfloat *coords): # <<<<<<<<<<<<<< - * return (coords[2] - coords[0]) * (coords[3] - coords[1]) - * - */ - - /* function exit code */ - __pyx_L0:; - return __pyx_r; -} - -/* "tinyr.pyx":133 - * Dfloat coords[4] - * - * cdef inline bint overlaps(self, Dfloat *rect): # <<<<<<<<<<<<<< - * return self.coords[0] < rect[2] and self.coords[2] > rect[0] and self.coords[1] < rect[3] and self.coords[3] > rect[1] - * - */ - -static CYTHON_INLINE int __pyx_f_5tinyr_7_Record_overlaps(struct __pyx_obj_5tinyr__Record *__pyx_v_self, __pyx_t_5tinyr_Dfloat *__pyx_v_rect) { - int __pyx_r; - int __pyx_t_1; - int __pyx_t_2; - - /* "tinyr.pyx":134 - * - * cdef inline bint overlaps(self, Dfloat *rect): - * return self.coords[0] < rect[2] and self.coords[2] > rect[0] and self.coords[1] < rect[3] and self.coords[3] > rect[1] # <<<<<<<<<<<<<< - * - * cdef inline void copy_coords_to(self, Dfloat *coords): - */ - __pyx_t_2 = ((__pyx_v_self->coords[0]) < (__pyx_v_rect[2])); - if (__pyx_t_2) { - } else { - __pyx_t_1 = __pyx_t_2; - goto __pyx_L3_bool_binop_done; - } - __pyx_t_2 = ((__pyx_v_self->coords[2]) > (__pyx_v_rect[0])); - if (__pyx_t_2) { - } else { - __pyx_t_1 = __pyx_t_2; - goto __pyx_L3_bool_binop_done; - } - __pyx_t_2 = ((__pyx_v_self->coords[1]) < (__pyx_v_rect[3])); - if (__pyx_t_2) { - } else { - __pyx_t_1 = __pyx_t_2; - goto __pyx_L3_bool_binop_done; - } - __pyx_t_2 = ((__pyx_v_self->coords[3]) > (__pyx_v_rect[1])); - __pyx_t_1 = __pyx_t_2; - __pyx_L3_bool_binop_done:; - __pyx_r = __pyx_t_1; - goto __pyx_L0; - - /* "tinyr.pyx":133 - * Dfloat coords[4] - * - * cdef inline bint overlaps(self, Dfloat *rect): # <<<<<<<<<<<<<< - * return self.coords[0] < rect[2] and self.coords[2] > rect[0] and self.coords[1] < rect[3] and self.coords[3] > rect[1] - * - */ - - /* function exit code */ - __pyx_L0:; - return __pyx_r; -} - -/* "tinyr.pyx":136 - * return self.coords[0] < rect[2] and self.coords[2] > rect[0] and self.coords[1] < rect[3] and self.coords[3] > rect[1] - * - * cdef inline void copy_coords_to(self, Dfloat *coords): # <<<<<<<<<<<<<< - * for i in range(4): - * coords[i] = self.coords[i] - */ - -static CYTHON_INLINE void __pyx_f_5tinyr_7_Record_copy_coords_to(struct __pyx_obj_5tinyr__Record *__pyx_v_self, __pyx_t_5tinyr_Dfloat *__pyx_v_coords) { - long __pyx_v_i; - long __pyx_t_1; - - /* "tinyr.pyx":137 - * - * cdef inline void copy_coords_to(self, Dfloat *coords): - * for i in range(4): # <<<<<<<<<<<<<< - * coords[i] = self.coords[i] - * - */ - for (__pyx_t_1 = 0; __pyx_t_1 < 4; __pyx_t_1+=1) { - __pyx_v_i = __pyx_t_1; - - /* "tinyr.pyx":138 - * cdef inline void copy_coords_to(self, Dfloat *coords): - * for i in range(4): - * coords[i] = self.coords[i] # <<<<<<<<<<<<<< - * - * cdef _Record copy(self, _Node newparent): - */ - (__pyx_v_coords[__pyx_v_i]) = (__pyx_v_self->coords[__pyx_v_i]); - } - - /* "tinyr.pyx":136 - * return self.coords[0] < rect[2] and self.coords[2] > rect[0] and self.coords[1] < rect[3] and self.coords[3] > rect[1] - * - * cdef inline void copy_coords_to(self, Dfloat *coords): # <<<<<<<<<<<<<< - * for i in range(4): - * coords[i] = self.coords[i] - */ - - /* function exit code */ -} - -/* "tinyr.pyx":140 - * coords[i] = self.coords[i] - * - * cdef _Record copy(self, _Node newparent): # <<<<<<<<<<<<<< - * raise NotImplemented - * - */ - -static struct __pyx_obj_5tinyr__Record *__pyx_f_5tinyr_7_Record_copy(CYTHON_UNUSED struct __pyx_obj_5tinyr__Record *__pyx_v_self, CYTHON_UNUSED struct __pyx_obj_5tinyr__Node *__pyx_v_newparent) { - struct __pyx_obj_5tinyr__Record *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("copy", 1); - - /* "tinyr.pyx":141 - * - * cdef _Record copy(self, _Node newparent): - * raise NotImplemented # <<<<<<<<<<<<<< - * - * cdef class _ChildRecord(_Record): - */ - __Pyx_Raise(__pyx_builtin_NotImplemented, 0, 0, 0); - __PYX_ERR(0, 141, __pyx_L1_error) - - /* "tinyr.pyx":140 - * coords[i] = self.coords[i] - * - * cdef _Record copy(self, _Node newparent): # <<<<<<<<<<<<<< - * raise NotImplemented - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_AddTraceback("tinyr._Record.copy", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __Pyx_XGIVEREF((PyObject *)__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "(tree fragment)":1 - * def __reduce_cython__(self): # <<<<<<<<<<<<<< - * cdef tuple state - * cdef object _dict - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_5tinyr_7_Record_1__reduce_cython__(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -); /*proto*/ -static PyMethodDef __pyx_mdef_5tinyr_7_Record_1__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_5tinyr_7_Record_1__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; -static PyObject *__pyx_pw_5tinyr_7_Record_1__reduce_cython__(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -) { - #if !CYTHON_METH_FASTCALL - CYTHON_UNUSED Py_ssize_t __pyx_nargs; - #endif - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); - #if !CYTHON_METH_FASTCALL - #if CYTHON_ASSUME_SAFE_MACROS - __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); - #else - __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; - #endif - #endif - __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); - if (unlikely(__pyx_nargs > 0)) { - __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL;} - if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__reduce_cython__", 0))) return NULL; - __pyx_r = __pyx_pf_5tinyr_7_Record___reduce_cython__(((struct __pyx_obj_5tinyr__Record *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_5tinyr_7_Record___reduce_cython__(struct __pyx_obj_5tinyr__Record *__pyx_v_self) { - PyObject *__pyx_v_state = 0; - PyObject *__pyx_v__dict = 0; - int __pyx_v_use_setstate; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - int __pyx_t_3; - PyObject *__pyx_t_4 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__reduce_cython__", 1); - - /* "(tree fragment)":5 - * cdef object _dict - * cdef bint use_setstate - * state = (self.coords,) # <<<<<<<<<<<<<< - * _dict = getattr(self, '__dict__', None) - * if _dict is not None: - */ - __pyx_t_1 = __Pyx_carray_to_py___pyx_t_5tinyr_Dfloat(__pyx_v_self->coords, 4); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_GIVEREF(__pyx_t_1); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error); - __pyx_t_1 = 0; - __pyx_v_state = ((PyObject*)__pyx_t_2); - __pyx_t_2 = 0; - - /* "(tree fragment)":6 - * cdef bint use_setstate - * state = (self.coords,) - * _dict = getattr(self, '__dict__', None) # <<<<<<<<<<<<<< - * if _dict is not None: - * state += (_dict,) - */ - __pyx_t_2 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_v__dict = __pyx_t_2; - __pyx_t_2 = 0; - - /* "(tree fragment)":7 - * state = (self.coords,) - * _dict = getattr(self, '__dict__', None) - * if _dict is not None: # <<<<<<<<<<<<<< - * state += (_dict,) - * use_setstate = True - */ - __pyx_t_3 = (__pyx_v__dict != Py_None); - if (__pyx_t_3) { - - /* "(tree fragment)":8 - * _dict = getattr(self, '__dict__', None) - * if _dict is not None: - * state += (_dict,) # <<<<<<<<<<<<<< - * use_setstate = True - * else: - */ - __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 8, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(__pyx_v__dict); - __Pyx_GIVEREF(__pyx_v__dict); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v__dict)) __PYX_ERR(1, 8, __pyx_L1_error); - __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 8, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_1)); - __pyx_t_1 = 0; - - /* "(tree fragment)":9 - * if _dict is not None: - * state += (_dict,) - * use_setstate = True # <<<<<<<<<<<<<< - * else: - * use_setstate = False - */ - __pyx_v_use_setstate = 1; - - /* "(tree fragment)":7 - * state = (self.coords,) - * _dict = getattr(self, '__dict__', None) - * if _dict is not None: # <<<<<<<<<<<<<< - * state += (_dict,) - * use_setstate = True - */ - goto __pyx_L3; - } - - /* "(tree fragment)":11 - * use_setstate = True - * else: - * use_setstate = False # <<<<<<<<<<<<<< - * if use_setstate: - * return __pyx_unpickle__Record, (type(self), 0xd6fae5e, None), state - */ - /*else*/ { - __pyx_v_use_setstate = 0; - } - __pyx_L3:; - - /* "(tree fragment)":12 - * else: - * use_setstate = False - * if use_setstate: # <<<<<<<<<<<<<< - * return __pyx_unpickle__Record, (type(self), 0xd6fae5e, None), state - * else: - */ - if (__pyx_v_use_setstate) { - - /* "(tree fragment)":13 - * use_setstate = False - * if use_setstate: - * return __pyx_unpickle__Record, (type(self), 0xd6fae5e, None), state # <<<<<<<<<<<<<< - * else: - * return __pyx_unpickle__Record, (type(self), 0xd6fae5e, state) - */ - __Pyx_XDECREF(__pyx_r); - __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_pyx_unpickle__Record); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 13, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); - __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))))) __PYX_ERR(1, 13, __pyx_L1_error); - __Pyx_INCREF(__pyx_int_225422942); - __Pyx_GIVEREF(__pyx_int_225422942); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_225422942)) __PYX_ERR(1, 13, __pyx_L1_error); - __Pyx_INCREF(Py_None); - __Pyx_GIVEREF(Py_None); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 2, Py_None)) __PYX_ERR(1, 13, __pyx_L1_error); - __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 13, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_1); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error); - __Pyx_GIVEREF(__pyx_t_2); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_2)) __PYX_ERR(1, 13, __pyx_L1_error); - __Pyx_INCREF(__pyx_v_state); - __Pyx_GIVEREF(__pyx_v_state); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_v_state)) __PYX_ERR(1, 13, __pyx_L1_error); - __pyx_t_1 = 0; - __pyx_t_2 = 0; - __pyx_r = __pyx_t_4; - __pyx_t_4 = 0; - goto __pyx_L0; - - /* "(tree fragment)":12 - * else: - * use_setstate = False - * if use_setstate: # <<<<<<<<<<<<<< - * return __pyx_unpickle__Record, (type(self), 0xd6fae5e, None), state - * else: - */ - } - - /* "(tree fragment)":15 - * return __pyx_unpickle__Record, (type(self), 0xd6fae5e, None), state - * else: - * return __pyx_unpickle__Record, (type(self), 0xd6fae5e, state) # <<<<<<<<<<<<<< - * def __setstate_cython__(self, __pyx_state): - * __pyx_unpickle__Record__set_state(self, __pyx_state) - */ - /*else*/ { - __Pyx_XDECREF(__pyx_r); - __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_pyx_unpickle__Record); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 15, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 15, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); - __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))))) __PYX_ERR(1, 15, __pyx_L1_error); - __Pyx_INCREF(__pyx_int_225422942); - __Pyx_GIVEREF(__pyx_int_225422942); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_225422942)) __PYX_ERR(1, 15, __pyx_L1_error); - __Pyx_INCREF(__pyx_v_state); - __Pyx_GIVEREF(__pyx_v_state); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_state)) __PYX_ERR(1, 15, __pyx_L1_error); - __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 15, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_GIVEREF(__pyx_t_4); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_4)) __PYX_ERR(1, 15, __pyx_L1_error); - __Pyx_GIVEREF(__pyx_t_2); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_2)) __PYX_ERR(1, 15, __pyx_L1_error); - __pyx_t_4 = 0; - __pyx_t_2 = 0; - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - } - - /* "(tree fragment)":1 - * def __reduce_cython__(self): # <<<<<<<<<<<<<< - * cdef tuple state - * cdef object _dict - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_AddTraceback("tinyr._Record.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_state); - __Pyx_XDECREF(__pyx_v__dict); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "(tree fragment)":16 - * else: - * return __pyx_unpickle__Record, (type(self), 0xd6fae5e, state) - * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< - * __pyx_unpickle__Record__set_state(self, __pyx_state) - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_5tinyr_7_Record_3__setstate_cython__(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -); /*proto*/ -static PyMethodDef __pyx_mdef_5tinyr_7_Record_3__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_5tinyr_7_Record_3__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; -static PyObject *__pyx_pw_5tinyr_7_Record_3__setstate_cython__(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -) { - PyObject *__pyx_v___pyx_state = 0; - #if !CYTHON_METH_FASTCALL - CYTHON_UNUSED Py_ssize_t __pyx_nargs; - #endif - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject* values[1] = {0}; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); - #if !CYTHON_METH_FASTCALL - #if CYTHON_ASSUME_SAFE_MACROS - __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); - #else - __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; - #endif - #endif - __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); - { - PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,0}; - if (__pyx_kwds) { - Py_ssize_t kw_args; - switch (__pyx_nargs) { - case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); - switch (__pyx_nargs) { - case 0: - if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) { - (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); - kw_args--; - } - else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 16, __pyx_L3_error) - else goto __pyx_L5_argtuple_error; - } - if (unlikely(kw_args > 0)) { - const Py_ssize_t kwd_pos_args = __pyx_nargs; - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__setstate_cython__") < 0)) __PYX_ERR(1, 16, __pyx_L3_error) - } - } else if (unlikely(__pyx_nargs != 1)) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); - } - __pyx_v___pyx_state = values[0]; - } - goto __pyx_L6_skip; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 16, __pyx_L3_error) - __pyx_L6_skip:; - goto __pyx_L4_argument_unpacking_done; - __pyx_L3_error:; - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); - } - } - __Pyx_AddTraceback("tinyr._Record.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_5tinyr_7_Record_2__setstate_cython__(((struct __pyx_obj_5tinyr__Record *)__pyx_v_self), __pyx_v___pyx_state); - - /* function exit code */ - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); - } - } - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_5tinyr_7_Record_2__setstate_cython__(struct __pyx_obj_5tinyr__Record *__pyx_v_self, PyObject *__pyx_v___pyx_state) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__setstate_cython__", 1); - - /* "(tree fragment)":17 - * return __pyx_unpickle__Record, (type(self), 0xd6fae5e, state) - * def __setstate_cython__(self, __pyx_state): - * __pyx_unpickle__Record__set_state(self, __pyx_state) # <<<<<<<<<<<<<< - */ - if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_v___pyx_state))) __PYX_ERR(1, 17, __pyx_L1_error) - __pyx_t_1 = __pyx_f_5tinyr___pyx_unpickle__Record__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 17, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "(tree fragment)":16 - * else: - * return __pyx_unpickle__Record, (type(self), 0xd6fae5e, state) - * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< - * __pyx_unpickle__Record__set_state(self, __pyx_state) - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("tinyr._Record.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "tinyr.pyx":147 - * object identifier - * - * def __init__(self, object identifier): # <<<<<<<<<<<<<< - * self.identifier = identifier - * - */ - -/* Python wrapper */ -static int __pyx_pw_5tinyr_12_ChildRecord_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static int __pyx_pw_5tinyr_12_ChildRecord_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_identifier = 0; - CYTHON_UNUSED Py_ssize_t __pyx_nargs; - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject* values[1] = {0}; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); - #if CYTHON_ASSUME_SAFE_MACROS - __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); - #else - __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1; - #endif - __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - { - PyObject **__pyx_pyargnames[] = {&__pyx_n_s_identifier,0}; - if (__pyx_kwds) { - Py_ssize_t kw_args; - switch (__pyx_nargs) { - case 1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds); - switch (__pyx_nargs) { - case 0: - if (likely((values[0] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_identifier)) != 0)) { - (void)__Pyx_Arg_NewRef_VARARGS(values[0]); - kw_args--; - } - else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 147, __pyx_L3_error) - else goto __pyx_L5_argtuple_error; - } - if (unlikely(kw_args > 0)) { - const Py_ssize_t kwd_pos_args = __pyx_nargs; - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__init__") < 0)) __PYX_ERR(0, 147, __pyx_L3_error) - } - } else if (unlikely(__pyx_nargs != 1)) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0); - } - __pyx_v_identifier = values[0]; - } - goto __pyx_L6_skip; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__init__", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 147, __pyx_L3_error) - __pyx_L6_skip:; - goto __pyx_L4_argument_unpacking_done; - __pyx_L3_error:; - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]); - } - } - __Pyx_AddTraceback("tinyr._ChildRecord.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return -1; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_5tinyr_12_ChildRecord___init__(((struct __pyx_obj_5tinyr__ChildRecord *)__pyx_v_self), __pyx_v_identifier); - - /* function exit code */ - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]); - } - } - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_pf_5tinyr_12_ChildRecord___init__(struct __pyx_obj_5tinyr__ChildRecord *__pyx_v_self, PyObject *__pyx_v_identifier) { - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__init__", 1); - - /* "tinyr.pyx":148 - * - * def __init__(self, object identifier): - * self.identifier = identifier # <<<<<<<<<<<<<< - * - * cdef _Record copy(self, _Node newparent): - */ - __Pyx_INCREF(__pyx_v_identifier); - __Pyx_GIVEREF(__pyx_v_identifier); - __Pyx_GOTREF(__pyx_v_self->identifier); - __Pyx_DECREF(__pyx_v_self->identifier); - __pyx_v_self->identifier = __pyx_v_identifier; - - /* "tinyr.pyx":147 - * object identifier - * - * def __init__(self, object identifier): # <<<<<<<<<<<<<< - * self.identifier = identifier - * - */ - - /* function exit code */ - __pyx_r = 0; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "tinyr.pyx":150 - * self.identifier = identifier - * - * cdef _Record copy(self, _Node newparent): # <<<<<<<<<<<<<< - * cdef: - * _ChildRecord ret - */ - -static struct __pyx_obj_5tinyr__Record *__pyx_f_5tinyr_12_ChildRecord_copy(struct __pyx_obj_5tinyr__ChildRecord *__pyx_v_self, CYTHON_UNUSED struct __pyx_obj_5tinyr__Node *__pyx_v_newparent) { - struct __pyx_obj_5tinyr__ChildRecord *__pyx_v_ret = 0; - struct __pyx_obj_5tinyr__Record *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("copy", 1); - - /* "tinyr.pyx":154 - * _ChildRecord ret - * - * ret = _ChildRecord(self.identifier) # <<<<<<<<<<<<<< - * self.copy_coords_to(ret.coords) - * return ret - */ - __pyx_t_1 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_5tinyr__ChildRecord), __pyx_v_self->identifier); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 154, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_v_ret = ((struct __pyx_obj_5tinyr__ChildRecord *)__pyx_t_1); - __pyx_t_1 = 0; - - /* "tinyr.pyx":155 - * - * ret = _ChildRecord(self.identifier) - * self.copy_coords_to(ret.coords) # <<<<<<<<<<<<<< - * return ret - * - */ - __pyx_f_5tinyr_7_Record_copy_coords_to(((struct __pyx_obj_5tinyr__Record *)__pyx_v_self), __pyx_v_ret->__pyx_base.coords); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 155, __pyx_L1_error) - - /* "tinyr.pyx":156 - * ret = _ChildRecord(self.identifier) - * self.copy_coords_to(ret.coords) - * return ret # <<<<<<<<<<<<<< - * - * cdef class _InnerRecord(_Record): - */ - __Pyx_XDECREF((PyObject *)__pyx_r); - __Pyx_INCREF((PyObject *)__pyx_v_ret); - __pyx_r = ((struct __pyx_obj_5tinyr__Record *)__pyx_v_ret); - goto __pyx_L0; - - /* "tinyr.pyx":150 - * self.identifier = identifier - * - * cdef _Record copy(self, _Node newparent): # <<<<<<<<<<<<<< - * cdef: - * _ChildRecord ret - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("tinyr._ChildRecord.copy", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XDECREF((PyObject *)__pyx_v_ret); - __Pyx_XGIVEREF((PyObject *)__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "(tree fragment)":1 - * def __reduce_cython__(self): # <<<<<<<<<<<<<< - * cdef tuple state - * cdef object _dict - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_5tinyr_12_ChildRecord_3__reduce_cython__(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -); /*proto*/ -static PyMethodDef __pyx_mdef_5tinyr_12_ChildRecord_3__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_5tinyr_12_ChildRecord_3__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; -static PyObject *__pyx_pw_5tinyr_12_ChildRecord_3__reduce_cython__(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -) { - #if !CYTHON_METH_FASTCALL - CYTHON_UNUSED Py_ssize_t __pyx_nargs; - #endif - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); - #if !CYTHON_METH_FASTCALL - #if CYTHON_ASSUME_SAFE_MACROS - __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); - #else - __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; - #endif - #endif - __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); - if (unlikely(__pyx_nargs > 0)) { - __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL;} - if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__reduce_cython__", 0))) return NULL; - __pyx_r = __pyx_pf_5tinyr_12_ChildRecord_2__reduce_cython__(((struct __pyx_obj_5tinyr__ChildRecord *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_5tinyr_12_ChildRecord_2__reduce_cython__(struct __pyx_obj_5tinyr__ChildRecord *__pyx_v_self) { - PyObject *__pyx_v_state = 0; - PyObject *__pyx_v__dict = 0; - int __pyx_v_use_setstate; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - int __pyx_t_3; - PyObject *__pyx_t_4 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__reduce_cython__", 1); - - /* "(tree fragment)":5 - * cdef object _dict - * cdef bint use_setstate - * state = (self.coords, self.identifier) # <<<<<<<<<<<<<< - * _dict = getattr(self, '__dict__', None) - * if _dict is not None: - */ - __pyx_t_1 = __Pyx_carray_to_py___pyx_t_5tinyr_Dfloat(__pyx_v_self->__pyx_base.coords, 4); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_GIVEREF(__pyx_t_1); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error); - __Pyx_INCREF(__pyx_v_self->identifier); - __Pyx_GIVEREF(__pyx_v_self->identifier); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_self->identifier)) __PYX_ERR(1, 5, __pyx_L1_error); - __pyx_t_1 = 0; - __pyx_v_state = ((PyObject*)__pyx_t_2); - __pyx_t_2 = 0; - - /* "(tree fragment)":6 - * cdef bint use_setstate - * state = (self.coords, self.identifier) - * _dict = getattr(self, '__dict__', None) # <<<<<<<<<<<<<< - * if _dict is not None: - * state += (_dict,) - */ - __pyx_t_2 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_v__dict = __pyx_t_2; - __pyx_t_2 = 0; - - /* "(tree fragment)":7 - * state = (self.coords, self.identifier) - * _dict = getattr(self, '__dict__', None) - * if _dict is not None: # <<<<<<<<<<<<<< - * state += (_dict,) - * use_setstate = True - */ - __pyx_t_3 = (__pyx_v__dict != Py_None); - if (__pyx_t_3) { - - /* "(tree fragment)":8 - * _dict = getattr(self, '__dict__', None) - * if _dict is not None: - * state += (_dict,) # <<<<<<<<<<<<<< - * use_setstate = True - * else: - */ - __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 8, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(__pyx_v__dict); - __Pyx_GIVEREF(__pyx_v__dict); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v__dict)) __PYX_ERR(1, 8, __pyx_L1_error); - __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 8, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_1)); - __pyx_t_1 = 0; - - /* "(tree fragment)":9 - * if _dict is not None: - * state += (_dict,) - * use_setstate = True # <<<<<<<<<<<<<< - * else: - * use_setstate = self.identifier is not None - */ - __pyx_v_use_setstate = 1; - - /* "(tree fragment)":7 - * state = (self.coords, self.identifier) - * _dict = getattr(self, '__dict__', None) - * if _dict is not None: # <<<<<<<<<<<<<< - * state += (_dict,) - * use_setstate = True - */ - goto __pyx_L3; - } - - /* "(tree fragment)":11 - * use_setstate = True - * else: - * use_setstate = self.identifier is not None # <<<<<<<<<<<<<< - * if use_setstate: - * return __pyx_unpickle__ChildRecord, (type(self), 0x9d7f65c, None), state - */ - /*else*/ { - __pyx_t_3 = (__pyx_v_self->identifier != Py_None); - __pyx_v_use_setstate = __pyx_t_3; - } - __pyx_L3:; - - /* "(tree fragment)":12 - * else: - * use_setstate = self.identifier is not None - * if use_setstate: # <<<<<<<<<<<<<< - * return __pyx_unpickle__ChildRecord, (type(self), 0x9d7f65c, None), state - * else: - */ - if (__pyx_v_use_setstate) { - - /* "(tree fragment)":13 - * use_setstate = self.identifier is not None - * if use_setstate: - * return __pyx_unpickle__ChildRecord, (type(self), 0x9d7f65c, None), state # <<<<<<<<<<<<<< - * else: - * return __pyx_unpickle__ChildRecord, (type(self), 0x9d7f65c, state) - */ - __Pyx_XDECREF(__pyx_r); - __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_pyx_unpickle__ChildRecord); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 13, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); - __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))))) __PYX_ERR(1, 13, __pyx_L1_error); - __Pyx_INCREF(__pyx_int_165148252); - __Pyx_GIVEREF(__pyx_int_165148252); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_165148252)) __PYX_ERR(1, 13, __pyx_L1_error); - __Pyx_INCREF(Py_None); - __Pyx_GIVEREF(Py_None); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 2, Py_None)) __PYX_ERR(1, 13, __pyx_L1_error); - __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 13, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_1); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error); - __Pyx_GIVEREF(__pyx_t_2); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_2)) __PYX_ERR(1, 13, __pyx_L1_error); - __Pyx_INCREF(__pyx_v_state); - __Pyx_GIVEREF(__pyx_v_state); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_v_state)) __PYX_ERR(1, 13, __pyx_L1_error); - __pyx_t_1 = 0; - __pyx_t_2 = 0; - __pyx_r = __pyx_t_4; - __pyx_t_4 = 0; - goto __pyx_L0; - - /* "(tree fragment)":12 - * else: - * use_setstate = self.identifier is not None - * if use_setstate: # <<<<<<<<<<<<<< - * return __pyx_unpickle__ChildRecord, (type(self), 0x9d7f65c, None), state - * else: - */ - } - - /* "(tree fragment)":15 - * return __pyx_unpickle__ChildRecord, (type(self), 0x9d7f65c, None), state - * else: - * return __pyx_unpickle__ChildRecord, (type(self), 0x9d7f65c, state) # <<<<<<<<<<<<<< - * def __setstate_cython__(self, __pyx_state): - * __pyx_unpickle__ChildRecord__set_state(self, __pyx_state) - */ - /*else*/ { - __Pyx_XDECREF(__pyx_r); - __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_pyx_unpickle__ChildRecord); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 15, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 15, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); - __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))))) __PYX_ERR(1, 15, __pyx_L1_error); - __Pyx_INCREF(__pyx_int_165148252); - __Pyx_GIVEREF(__pyx_int_165148252); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_165148252)) __PYX_ERR(1, 15, __pyx_L1_error); - __Pyx_INCREF(__pyx_v_state); - __Pyx_GIVEREF(__pyx_v_state); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_state)) __PYX_ERR(1, 15, __pyx_L1_error); - __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 15, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_GIVEREF(__pyx_t_4); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_4)) __PYX_ERR(1, 15, __pyx_L1_error); - __Pyx_GIVEREF(__pyx_t_2); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_2)) __PYX_ERR(1, 15, __pyx_L1_error); - __pyx_t_4 = 0; - __pyx_t_2 = 0; - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - } - - /* "(tree fragment)":1 - * def __reduce_cython__(self): # <<<<<<<<<<<<<< - * cdef tuple state - * cdef object _dict - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_AddTraceback("tinyr._ChildRecord.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_state); - __Pyx_XDECREF(__pyx_v__dict); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "(tree fragment)":16 - * else: - * return __pyx_unpickle__ChildRecord, (type(self), 0x9d7f65c, state) - * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< - * __pyx_unpickle__ChildRecord__set_state(self, __pyx_state) - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_5tinyr_12_ChildRecord_5__setstate_cython__(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -); /*proto*/ -static PyMethodDef __pyx_mdef_5tinyr_12_ChildRecord_5__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_5tinyr_12_ChildRecord_5__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; -static PyObject *__pyx_pw_5tinyr_12_ChildRecord_5__setstate_cython__(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -) { - PyObject *__pyx_v___pyx_state = 0; - #if !CYTHON_METH_FASTCALL - CYTHON_UNUSED Py_ssize_t __pyx_nargs; - #endif - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject* values[1] = {0}; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); - #if !CYTHON_METH_FASTCALL - #if CYTHON_ASSUME_SAFE_MACROS - __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); - #else - __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; - #endif - #endif - __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); - { - PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,0}; - if (__pyx_kwds) { - Py_ssize_t kw_args; - switch (__pyx_nargs) { - case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); - switch (__pyx_nargs) { - case 0: - if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) { - (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); - kw_args--; - } - else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 16, __pyx_L3_error) - else goto __pyx_L5_argtuple_error; - } - if (unlikely(kw_args > 0)) { - const Py_ssize_t kwd_pos_args = __pyx_nargs; - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__setstate_cython__") < 0)) __PYX_ERR(1, 16, __pyx_L3_error) - } - } else if (unlikely(__pyx_nargs != 1)) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); - } - __pyx_v___pyx_state = values[0]; - } - goto __pyx_L6_skip; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 16, __pyx_L3_error) - __pyx_L6_skip:; - goto __pyx_L4_argument_unpacking_done; - __pyx_L3_error:; - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); - } - } - __Pyx_AddTraceback("tinyr._ChildRecord.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_5tinyr_12_ChildRecord_4__setstate_cython__(((struct __pyx_obj_5tinyr__ChildRecord *)__pyx_v_self), __pyx_v___pyx_state); - - /* function exit code */ - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); - } - } - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_5tinyr_12_ChildRecord_4__setstate_cython__(struct __pyx_obj_5tinyr__ChildRecord *__pyx_v_self, PyObject *__pyx_v___pyx_state) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__setstate_cython__", 1); - - /* "(tree fragment)":17 - * return __pyx_unpickle__ChildRecord, (type(self), 0x9d7f65c, state) - * def __setstate_cython__(self, __pyx_state): - * __pyx_unpickle__ChildRecord__set_state(self, __pyx_state) # <<<<<<<<<<<<<< - */ - if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_v___pyx_state))) __PYX_ERR(1, 17, __pyx_L1_error) - __pyx_t_1 = __pyx_f_5tinyr___pyx_unpickle__ChildRecord__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 17, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "(tree fragment)":16 - * else: - * return __pyx_unpickle__ChildRecord, (type(self), 0x9d7f65c, state) - * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< - * __pyx_unpickle__ChildRecord__set_state(self, __pyx_state) - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("tinyr._ChildRecord.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "tinyr.pyx":162 - * _Node child - * - * def __cinit__(self, _Node child): # <<<<<<<<<<<<<< - * self.child = child - * - */ - -/* Python wrapper */ -static int __pyx_pw_5tinyr_12_InnerRecord_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static int __pyx_pw_5tinyr_12_InnerRecord_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - struct __pyx_obj_5tinyr__Node *__pyx_v_child = 0; - CYTHON_UNUSED Py_ssize_t __pyx_nargs; - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject* values[1] = {0}; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0); - #if CYTHON_ASSUME_SAFE_MACROS - __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); - #else - __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1; - #endif - __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - { - PyObject **__pyx_pyargnames[] = {&__pyx_n_s_child,0}; - if (__pyx_kwds) { - Py_ssize_t kw_args; - switch (__pyx_nargs) { - case 1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds); - switch (__pyx_nargs) { - case 0: - if (likely((values[0] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_child)) != 0)) { - (void)__Pyx_Arg_NewRef_VARARGS(values[0]); - kw_args--; - } - else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 162, __pyx_L3_error) - else goto __pyx_L5_argtuple_error; - } - if (unlikely(kw_args > 0)) { - const Py_ssize_t kwd_pos_args = __pyx_nargs; - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__cinit__") < 0)) __PYX_ERR(0, 162, __pyx_L3_error) - } - } else if (unlikely(__pyx_nargs != 1)) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0); - } - __pyx_v_child = ((struct __pyx_obj_5tinyr__Node *)values[0]); - } - goto __pyx_L6_skip; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 162, __pyx_L3_error) - __pyx_L6_skip:; - goto __pyx_L4_argument_unpacking_done; - __pyx_L3_error:; - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]); - } - } - __Pyx_AddTraceback("tinyr._InnerRecord.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return -1; - __pyx_L4_argument_unpacking_done:; - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_child), __pyx_ptype_5tinyr__Node, 1, "child", 0))) __PYX_ERR(0, 162, __pyx_L1_error) - __pyx_r = __pyx_pf_5tinyr_12_InnerRecord___cinit__(((struct __pyx_obj_5tinyr__InnerRecord *)__pyx_v_self), __pyx_v_child); - - /* function exit code */ - goto __pyx_L0; - __pyx_L1_error:; - __pyx_r = -1; - __pyx_L0:; - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]); - } - } - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_pf_5tinyr_12_InnerRecord___cinit__(struct __pyx_obj_5tinyr__InnerRecord *__pyx_v_self, struct __pyx_obj_5tinyr__Node *__pyx_v_child) { - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__cinit__", 1); - - /* "tinyr.pyx":163 - * - * def __cinit__(self, _Node child): - * self.child = child # <<<<<<<<<<<<<< - * - * cdef _Record copy(self, _Node newparent): - */ - __Pyx_INCREF((PyObject *)__pyx_v_child); - __Pyx_GIVEREF((PyObject *)__pyx_v_child); - __Pyx_GOTREF((PyObject *)__pyx_v_self->child); - __Pyx_DECREF((PyObject *)__pyx_v_self->child); - __pyx_v_self->child = __pyx_v_child; - - /* "tinyr.pyx":162 - * _Node child - * - * def __cinit__(self, _Node child): # <<<<<<<<<<<<<< - * self.child = child - * - */ - - /* function exit code */ - __pyx_r = 0; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "tinyr.pyx":165 - * self.child = child - * - * cdef _Record copy(self, _Node newparent): # <<<<<<<<<<<<<< - * cdef: - * _InnerRecord ret - */ - -static struct __pyx_obj_5tinyr__Record *__pyx_f_5tinyr_12_InnerRecord_copy(struct __pyx_obj_5tinyr__InnerRecord *__pyx_v_self, struct __pyx_obj_5tinyr__Node *__pyx_v_newparent) { - struct __pyx_obj_5tinyr__InnerRecord *__pyx_v_ret = 0; - struct __pyx_obj_5tinyr__Record *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("copy", 1); - - /* "tinyr.pyx":169 - * _InnerRecord ret - * - * ret = _InnerRecord(self.child.copy(newparent)) # <<<<<<<<<<<<<< - * self.copy_coords_to(ret.coords) - * return ret - */ - __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_5tinyr__Node *)__pyx_v_self->child->__pyx_vtab)->copy(__pyx_v_self->child, __pyx_v_newparent)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 169, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_5tinyr__InnerRecord), __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 169, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_v_ret = ((struct __pyx_obj_5tinyr__InnerRecord *)__pyx_t_2); - __pyx_t_2 = 0; - - /* "tinyr.pyx":170 - * - * ret = _InnerRecord(self.child.copy(newparent)) - * self.copy_coords_to(ret.coords) # <<<<<<<<<<<<<< - * return ret - * - */ - __pyx_f_5tinyr_7_Record_copy_coords_to(((struct __pyx_obj_5tinyr__Record *)__pyx_v_self), __pyx_v_ret->__pyx_base.coords); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 170, __pyx_L1_error) - - /* "tinyr.pyx":171 - * ret = _InnerRecord(self.child.copy(newparent)) - * self.copy_coords_to(ret.coords) - * return ret # <<<<<<<<<<<<<< - * - * cdef class _Node(object): - */ - __Pyx_XDECREF((PyObject *)__pyx_r); - __Pyx_INCREF((PyObject *)__pyx_v_ret); - __pyx_r = ((struct __pyx_obj_5tinyr__Record *)__pyx_v_ret); - goto __pyx_L0; - - /* "tinyr.pyx":165 - * self.child = child - * - * cdef _Record copy(self, _Node newparent): # <<<<<<<<<<<<<< - * cdef: - * _InnerRecord ret - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_AddTraceback("tinyr._InnerRecord.copy", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XDECREF((PyObject *)__pyx_v_ret); - __Pyx_XGIVEREF((PyObject *)__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "(tree fragment)":1 - * def __reduce_cython__(self): # <<<<<<<<<<<<<< - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_5tinyr_12_InnerRecord_3__reduce_cython__(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -); /*proto*/ -static PyMethodDef __pyx_mdef_5tinyr_12_InnerRecord_3__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_5tinyr_12_InnerRecord_3__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; -static PyObject *__pyx_pw_5tinyr_12_InnerRecord_3__reduce_cython__(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -) { - #if !CYTHON_METH_FASTCALL - CYTHON_UNUSED Py_ssize_t __pyx_nargs; - #endif - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); - #if !CYTHON_METH_FASTCALL - #if CYTHON_ASSUME_SAFE_MACROS - __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); - #else - __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; - #endif - #endif - __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); - if (unlikely(__pyx_nargs > 0)) { - __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL;} - if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__reduce_cython__", 0))) return NULL; - __pyx_r = __pyx_pf_5tinyr_12_InnerRecord_2__reduce_cython__(((struct __pyx_obj_5tinyr__InnerRecord *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_5tinyr_12_InnerRecord_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_5tinyr__InnerRecord *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__reduce_cython__", 1); - - /* "(tree fragment)":2 - * def __reduce_cython__(self): - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" # <<<<<<<<<<<<<< - * def __setstate_cython__(self, __pyx_state): - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - */ - __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_no_default___reduce___due_to_non, 0, 0); - __PYX_ERR(1, 2, __pyx_L1_error) - - /* "(tree fragment)":1 - * def __reduce_cython__(self): # <<<<<<<<<<<<<< - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_AddTraceback("tinyr._InnerRecord.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "(tree fragment)":3 - * def __reduce_cython__(self): - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_5tinyr_12_InnerRecord_5__setstate_cython__(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -); /*proto*/ -static PyMethodDef __pyx_mdef_5tinyr_12_InnerRecord_5__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_5tinyr_12_InnerRecord_5__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; -static PyObject *__pyx_pw_5tinyr_12_InnerRecord_5__setstate_cython__(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -) { - CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0; - #if !CYTHON_METH_FASTCALL - CYTHON_UNUSED Py_ssize_t __pyx_nargs; - #endif - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject* values[1] = {0}; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); - #if !CYTHON_METH_FASTCALL - #if CYTHON_ASSUME_SAFE_MACROS - __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); - #else - __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; - #endif - #endif - __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); - { - PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,0}; - if (__pyx_kwds) { - Py_ssize_t kw_args; - switch (__pyx_nargs) { - case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); - switch (__pyx_nargs) { - case 0: - if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) { - (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); - kw_args--; - } - else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 3, __pyx_L3_error) - else goto __pyx_L5_argtuple_error; - } - if (unlikely(kw_args > 0)) { - const Py_ssize_t kwd_pos_args = __pyx_nargs; - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__setstate_cython__") < 0)) __PYX_ERR(1, 3, __pyx_L3_error) - } - } else if (unlikely(__pyx_nargs != 1)) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); - } - __pyx_v___pyx_state = values[0]; - } - goto __pyx_L6_skip; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error) - __pyx_L6_skip:; - goto __pyx_L4_argument_unpacking_done; - __pyx_L3_error:; - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); - } - } - __Pyx_AddTraceback("tinyr._InnerRecord.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_5tinyr_12_InnerRecord_4__setstate_cython__(((struct __pyx_obj_5tinyr__InnerRecord *)__pyx_v_self), __pyx_v___pyx_state); - - /* function exit code */ - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); - } - } - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_5tinyr_12_InnerRecord_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_5tinyr__InnerRecord *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__setstate_cython__", 1); - - /* "(tree fragment)":4 - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" # <<<<<<<<<<<<<< - */ - __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_no_default___reduce___due_to_non, 0, 0); - __PYX_ERR(1, 4, __pyx_L1_error) - - /* "(tree fragment)":3 - * def __reduce_cython__(self): - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_AddTraceback("tinyr._InnerRecord.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "tinyr.pyx":179 - * bint is_leaf - * - * def __cinit__(self, _Node parent): # <<<<<<<<<<<<<< - * self.parent = parent - * self.records = list() - */ - -/* Python wrapper */ -static int __pyx_pw_5tinyr_5_Node_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static int __pyx_pw_5tinyr_5_Node_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - struct __pyx_obj_5tinyr__Node *__pyx_v_parent = 0; - CYTHON_UNUSED Py_ssize_t __pyx_nargs; - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject* values[1] = {0}; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0); - #if CYTHON_ASSUME_SAFE_MACROS - __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); - #else - __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1; - #endif - __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - { - PyObject **__pyx_pyargnames[] = {&__pyx_n_s_parent,0}; - if (__pyx_kwds) { - Py_ssize_t kw_args; - switch (__pyx_nargs) { - case 1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds); - switch (__pyx_nargs) { - case 0: - if (likely((values[0] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_parent)) != 0)) { - (void)__Pyx_Arg_NewRef_VARARGS(values[0]); - kw_args--; - } - else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 179, __pyx_L3_error) - else goto __pyx_L5_argtuple_error; - } - if (unlikely(kw_args > 0)) { - const Py_ssize_t kwd_pos_args = __pyx_nargs; - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__cinit__") < 0)) __PYX_ERR(0, 179, __pyx_L3_error) - } - } else if (unlikely(__pyx_nargs != 1)) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0); - } - __pyx_v_parent = ((struct __pyx_obj_5tinyr__Node *)values[0]); - } - goto __pyx_L6_skip; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 179, __pyx_L3_error) - __pyx_L6_skip:; - goto __pyx_L4_argument_unpacking_done; - __pyx_L3_error:; - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]); - } - } - __Pyx_AddTraceback("tinyr._Node.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return -1; - __pyx_L4_argument_unpacking_done:; - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_parent), __pyx_ptype_5tinyr__Node, 1, "parent", 0))) __PYX_ERR(0, 179, __pyx_L1_error) - __pyx_r = __pyx_pf_5tinyr_5_Node___cinit__(((struct __pyx_obj_5tinyr__Node *)__pyx_v_self), __pyx_v_parent); - - /* function exit code */ - goto __pyx_L0; - __pyx_L1_error:; - __pyx_r = -1; - __pyx_L0:; - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]); - } - } - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_pf_5tinyr_5_Node___cinit__(struct __pyx_obj_5tinyr__Node *__pyx_v_self, struct __pyx_obj_5tinyr__Node *__pyx_v_parent) { - int __pyx_r; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__cinit__", 1); - - /* "tinyr.pyx":180 - * - * def __cinit__(self, _Node parent): - * self.parent = parent # <<<<<<<<<<<<<< - * self.records = list() - * - */ - __Pyx_INCREF((PyObject *)__pyx_v_parent); - __Pyx_GIVEREF((PyObject *)__pyx_v_parent); - __Pyx_GOTREF((PyObject *)__pyx_v_self->parent); - __Pyx_DECREF((PyObject *)__pyx_v_self->parent); - __pyx_v_self->parent = __pyx_v_parent; - - /* "tinyr.pyx":181 - * def __cinit__(self, _Node parent): - * self.parent = parent - * self.records = list() # <<<<<<<<<<<<<< - * - * cdef _Node copy(self, _Node parent): - */ - __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 181, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_GIVEREF(__pyx_t_1); - __Pyx_GOTREF(__pyx_v_self->records); - __Pyx_DECREF(__pyx_v_self->records); - __pyx_v_self->records = ((PyObject*)__pyx_t_1); - __pyx_t_1 = 0; - - /* "tinyr.pyx":179 - * bint is_leaf - * - * def __cinit__(self, _Node parent): # <<<<<<<<<<<<<< - * self.parent = parent - * self.records = list() - */ - - /* function exit code */ - __pyx_r = 0; - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("tinyr._Node.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = -1; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "tinyr.pyx":183 - * self.records = list() - * - * cdef _Node copy(self, _Node parent): # <<<<<<<<<<<<<< - * cdef: - * _Node ret - */ - -static struct __pyx_obj_5tinyr__Node *__pyx_f_5tinyr_5_Node_copy(struct __pyx_obj_5tinyr__Node *__pyx_v_self, struct __pyx_obj_5tinyr__Node *__pyx_v_parent) { - struct __pyx_obj_5tinyr__Node *__pyx_v_ret = 0; - PyObject *__pyx_8genexpr1__pyx_v_rec = NULL; - struct __pyx_obj_5tinyr__Node *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - Py_ssize_t __pyx_t_3; - PyObject *__pyx_t_4 = NULL; - int __pyx_t_5; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("copy", 1); - - /* "tinyr.pyx":186 - * cdef: - * _Node ret - * ret = _Node(parent) # <<<<<<<<<<<<<< - * ret.records = [ (<_Record>rec).copy(ret) for rec in self.records ] - * ret.is_leaf = self.is_leaf - */ - __pyx_t_1 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_5tinyr__Node), ((PyObject *)__pyx_v_parent)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 186, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_v_ret = ((struct __pyx_obj_5tinyr__Node *)__pyx_t_1); - __pyx_t_1 = 0; - - /* "tinyr.pyx":187 - * _Node ret - * ret = _Node(parent) - * ret.records = [ (<_Record>rec).copy(ret) for rec in self.records ] # <<<<<<<<<<<<<< - * ret.is_leaf = self.is_leaf - * return ret - */ - { /* enter inner scope */ - __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 187, __pyx_L5_error) - __Pyx_GOTREF(__pyx_t_1); - if (unlikely(__pyx_v_self->records == Py_None)) { - PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); - __PYX_ERR(0, 187, __pyx_L5_error) - } - __pyx_t_2 = __pyx_v_self->records; __Pyx_INCREF(__pyx_t_2); - __pyx_t_3 = 0; - for (;;) { - { - Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_2); - #if !CYTHON_ASSUME_SAFE_MACROS - if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 187, __pyx_L5_error) - #endif - if (__pyx_t_3 >= __pyx_temp) break; - } - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_4 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_4); __pyx_t_3++; if (unlikely((0 < 0))) __PYX_ERR(0, 187, __pyx_L5_error) - #else - __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 187, __pyx_L5_error) - __Pyx_GOTREF(__pyx_t_4); - #endif - __Pyx_XDECREF_SET(__pyx_8genexpr1__pyx_v_rec, __pyx_t_4); - __pyx_t_4 = 0; - __pyx_t_4 = ((PyObject *)((struct __pyx_vtabstruct_5tinyr__Record *)((struct __pyx_obj_5tinyr__Record *)__pyx_8genexpr1__pyx_v_rec)->__pyx_vtab)->copy(((struct __pyx_obj_5tinyr__Record *)__pyx_8genexpr1__pyx_v_rec), __pyx_v_ret)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 187, __pyx_L5_error) - __Pyx_GOTREF(__pyx_t_4); - if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_4))) __PYX_ERR(0, 187, __pyx_L5_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_XDECREF(__pyx_8genexpr1__pyx_v_rec); __pyx_8genexpr1__pyx_v_rec = 0; - goto __pyx_L9_exit_scope; - __pyx_L5_error:; - __Pyx_XDECREF(__pyx_8genexpr1__pyx_v_rec); __pyx_8genexpr1__pyx_v_rec = 0; - goto __pyx_L1_error; - __pyx_L9_exit_scope:; - } /* exit inner scope */ - __Pyx_GIVEREF(__pyx_t_1); - __Pyx_GOTREF(__pyx_v_ret->records); - __Pyx_DECREF(__pyx_v_ret->records); - __pyx_v_ret->records = ((PyObject*)__pyx_t_1); - __pyx_t_1 = 0; - - /* "tinyr.pyx":188 - * ret = _Node(parent) - * ret.records = [ (<_Record>rec).copy(ret) for rec in self.records ] - * ret.is_leaf = self.is_leaf # <<<<<<<<<<<<<< - * return ret - * - */ - __pyx_t_5 = __pyx_v_self->is_leaf; - __pyx_v_ret->is_leaf = __pyx_t_5; - - /* "tinyr.pyx":189 - * ret.records = [ (<_Record>rec).copy(ret) for rec in self.records ] - * ret.is_leaf = self.is_leaf - * return ret # <<<<<<<<<<<<<< - * - * cdef inline void common_boundaries(self, Dfloat *target): - */ - __Pyx_XDECREF((PyObject *)__pyx_r); - __Pyx_INCREF((PyObject *)__pyx_v_ret); - __pyx_r = __pyx_v_ret; - goto __pyx_L0; - - /* "tinyr.pyx":183 - * self.records = list() - * - * cdef _Node copy(self, _Node parent): # <<<<<<<<<<<<<< - * cdef: - * _Node ret - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_AddTraceback("tinyr._Node.copy", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XDECREF((PyObject *)__pyx_v_ret); - __Pyx_XDECREF(__pyx_8genexpr1__pyx_v_rec); - __Pyx_XGIVEREF((PyObject *)__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "tinyr.pyx":191 - * return ret - * - * cdef inline void common_boundaries(self, Dfloat *target): # <<<<<<<<<<<<<< - * common_boundaries(self.records, target) - * - */ - -static CYTHON_INLINE void __pyx_f_5tinyr_5_Node_common_boundaries(struct __pyx_obj_5tinyr__Node *__pyx_v_self, __pyx_t_5tinyr_Dfloat *__pyx_v_target) { - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("common_boundaries", 1); - - /* "tinyr.pyx":192 - * - * cdef inline void common_boundaries(self, Dfloat *target): - * common_boundaries(self.records, target) # <<<<<<<<<<<<<< - * - * cdef inline _Record choose_subtree_least_enlargement(self, _Record ir): - */ - __pyx_t_1 = __pyx_v_self->records; - __Pyx_INCREF(__pyx_t_1); - __pyx_f_5tinyr_common_boundaries(((PyObject*)__pyx_t_1), __pyx_v_target); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 192, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "tinyr.pyx":191 - * return ret - * - * cdef inline void common_boundaries(self, Dfloat *target): # <<<<<<<<<<<<<< - * common_boundaries(self.records, target) - * - */ - - /* function exit code */ - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("tinyr._Node.common_boundaries", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_L0:; - __Pyx_RefNannyFinishContext(); -} - -/* "tinyr.pyx":194 - * common_boundaries(self.records, target) - * - * cdef inline _Record choose_subtree_least_enlargement(self, _Record ir): # <<<<<<<<<<<<<< - * cdef: - * Dfloat least_enlargement, enlagrgement, current_area, target_area - */ - -static CYTHON_INLINE struct __pyx_obj_5tinyr__Record *__pyx_f_5tinyr_5_Node_choose_subtree_least_enlargement(struct __pyx_obj_5tinyr__Node *__pyx_v_self, struct __pyx_obj_5tinyr__Record *__pyx_v_ir) { - __pyx_t_5tinyr_Dfloat __pyx_v_least_enlargement; - __pyx_t_5tinyr_Dfloat __pyx_v_enlagrgement; - __pyx_t_5tinyr_Dfloat __pyx_v_current_area; - __pyx_t_5tinyr_Dfloat __pyx_v_target_area; - __pyx_t_5tinyr_Dfloat __pyx_v_combined_rectangle[4]; - struct __pyx_obj_5tinyr__Record *__pyx_v_current_record = 0; - struct __pyx_obj_5tinyr__Record *__pyx_v_target = 0; - PyObject *__pyx_v_records = 0; - struct __pyx_obj_5tinyr__Record *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - Py_ssize_t __pyx_t_2; - PyObject *__pyx_t_3 = NULL; - __pyx_t_5tinyr_Dfloat __pyx_t_4; - int __pyx_t_5; - int __pyx_t_6; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("choose_subtree_least_enlargement", 1); - - /* "tinyr.pyx":201 - * list records - * - * init_Dfloat4(combined_rectangle) # <<<<<<<<<<<<<< - * - * target_area = least_enlargement = Dfloat_max - */ - __pyx_f_5tinyr_init_Dfloat4(__pyx_v_combined_rectangle); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 201, __pyx_L1_error) - - /* "tinyr.pyx":203 - * init_Dfloat4(combined_rectangle) - * - * target_area = least_enlargement = Dfloat_max # <<<<<<<<<<<<<< - * records = [ir, None] - * - */ - __pyx_v_target_area = DBL_MAX; - __pyx_v_least_enlargement = DBL_MAX; - - /* "tinyr.pyx":204 - * - * target_area = least_enlargement = Dfloat_max - * records = [ir, None] # <<<<<<<<<<<<<< - * - * - */ - __pyx_t_1 = PyList_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 204, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF((PyObject *)__pyx_v_ir); - __Pyx_GIVEREF((PyObject *)__pyx_v_ir); - if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_ir))) __PYX_ERR(0, 204, __pyx_L1_error); - __Pyx_INCREF(Py_None); - __Pyx_GIVEREF(Py_None); - if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 1, Py_None)) __PYX_ERR(0, 204, __pyx_L1_error); - __pyx_v_records = ((PyObject*)__pyx_t_1); - __pyx_t_1 = 0; - - /* "tinyr.pyx":207 - * - * - * for current_record in self.records: # <<<<<<<<<<<<<< - * current_area = area(current_record.coords) - * - */ - if (unlikely(__pyx_v_self->records == Py_None)) { - PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); - __PYX_ERR(0, 207, __pyx_L1_error) - } - __pyx_t_1 = __pyx_v_self->records; __Pyx_INCREF(__pyx_t_1); - __pyx_t_2 = 0; - for (;;) { - { - Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1); - #if !CYTHON_ASSUME_SAFE_MACROS - if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 207, __pyx_L1_error) - #endif - if (__pyx_t_2 >= __pyx_temp) break; - } - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_3 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_3); __pyx_t_2++; if (unlikely((0 < 0))) __PYX_ERR(0, 207, __pyx_L1_error) - #else - __pyx_t_3 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 207, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - #endif - if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5tinyr__Record))))) __PYX_ERR(0, 207, __pyx_L1_error) - __Pyx_XDECREF_SET(__pyx_v_current_record, ((struct __pyx_obj_5tinyr__Record *)__pyx_t_3)); - __pyx_t_3 = 0; - - /* "tinyr.pyx":208 - * - * for current_record in self.records: - * current_area = area(current_record.coords) # <<<<<<<<<<<<<< - * - * records[1] = current_record - */ - __pyx_t_4 = __pyx_f_5tinyr_area(__pyx_v_current_record->coords); if (unlikely(__pyx_t_4 == ((__pyx_t_5tinyr_Dfloat)-1) && PyErr_Occurred())) __PYX_ERR(0, 208, __pyx_L1_error) - __pyx_v_current_area = __pyx_t_4; - - /* "tinyr.pyx":210 - * current_area = area(current_record.coords) - * - * records[1] = current_record # <<<<<<<<<<<<<< - * - * common_boundaries(records, combined_rectangle) - */ - if (unlikely((__Pyx_SetItemInt(__pyx_v_records, 1, ((PyObject *)__pyx_v_current_record), long, 1, __Pyx_PyInt_From_long, 1, 0, 1) < 0))) __PYX_ERR(0, 210, __pyx_L1_error) - - /* "tinyr.pyx":212 - * records[1] = current_record - * - * common_boundaries(records, combined_rectangle) # <<<<<<<<<<<<<< - * enlagrgement = area(combined_rectangle) - current_area - * - */ - __pyx_f_5tinyr_common_boundaries(__pyx_v_records, __pyx_v_combined_rectangle); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 212, __pyx_L1_error) - - /* "tinyr.pyx":213 - * - * common_boundaries(records, combined_rectangle) - * enlagrgement = area(combined_rectangle) - current_area # <<<<<<<<<<<<<< - * - * if enlagrgement < least_enlargement: - */ - __pyx_t_4 = __pyx_f_5tinyr_area(__pyx_v_combined_rectangle); if (unlikely(__pyx_t_4 == ((__pyx_t_5tinyr_Dfloat)-1) && PyErr_Occurred())) __PYX_ERR(0, 213, __pyx_L1_error) - __pyx_v_enlagrgement = (__pyx_t_4 - __pyx_v_current_area); - - /* "tinyr.pyx":215 - * enlagrgement = area(combined_rectangle) - current_area - * - * if enlagrgement < least_enlargement: # <<<<<<<<<<<<<< - * target = current_record - * target_area = area(current_record.coords) - */ - __pyx_t_5 = (__pyx_v_enlagrgement < __pyx_v_least_enlargement); - if (__pyx_t_5) { - - /* "tinyr.pyx":216 - * - * if enlagrgement < least_enlargement: - * target = current_record # <<<<<<<<<<<<<< - * target_area = area(current_record.coords) - * least_enlargement = enlagrgement - */ - __Pyx_INCREF((PyObject *)__pyx_v_current_record); - __Pyx_XDECREF_SET(__pyx_v_target, __pyx_v_current_record); - - /* "tinyr.pyx":217 - * if enlagrgement < least_enlargement: - * target = current_record - * target_area = area(current_record.coords) # <<<<<<<<<<<<<< - * least_enlargement = enlagrgement - * elif enlagrgement == least_enlargement and current_area < target_area: - */ - __pyx_t_4 = __pyx_f_5tinyr_area(__pyx_v_current_record->coords); if (unlikely(__pyx_t_4 == ((__pyx_t_5tinyr_Dfloat)-1) && PyErr_Occurred())) __PYX_ERR(0, 217, __pyx_L1_error) - __pyx_v_target_area = __pyx_t_4; - - /* "tinyr.pyx":218 - * target = current_record - * target_area = area(current_record.coords) - * least_enlargement = enlagrgement # <<<<<<<<<<<<<< - * elif enlagrgement == least_enlargement and current_area < target_area: - * target = current_record - */ - __pyx_v_least_enlargement = __pyx_v_enlagrgement; - - /* "tinyr.pyx":215 - * enlagrgement = area(combined_rectangle) - current_area - * - * if enlagrgement < least_enlargement: # <<<<<<<<<<<<<< - * target = current_record - * target_area = area(current_record.coords) - */ - goto __pyx_L5; - } - - /* "tinyr.pyx":219 - * target_area = area(current_record.coords) - * least_enlargement = enlagrgement - * elif enlagrgement == least_enlargement and current_area < target_area: # <<<<<<<<<<<<<< - * target = current_record - * least_enlargement = target_area = current_area - */ - __pyx_t_6 = (__pyx_v_enlagrgement == __pyx_v_least_enlargement); - if (__pyx_t_6) { - } else { - __pyx_t_5 = __pyx_t_6; - goto __pyx_L6_bool_binop_done; - } - __pyx_t_6 = (__pyx_v_current_area < __pyx_v_target_area); - __pyx_t_5 = __pyx_t_6; - __pyx_L6_bool_binop_done:; - if (__pyx_t_5) { - - /* "tinyr.pyx":220 - * least_enlargement = enlagrgement - * elif enlagrgement == least_enlargement and current_area < target_area: - * target = current_record # <<<<<<<<<<<<<< - * least_enlargement = target_area = current_area - * - */ - __Pyx_INCREF((PyObject *)__pyx_v_current_record); - __Pyx_XDECREF_SET(__pyx_v_target, __pyx_v_current_record); - - /* "tinyr.pyx":221 - * elif enlagrgement == least_enlargement and current_area < target_area: - * target = current_record - * least_enlargement = target_area = current_area # <<<<<<<<<<<<<< - * - * return target - */ - __pyx_v_least_enlargement = __pyx_v_current_area; - __pyx_v_target_area = __pyx_v_current_area; - - /* "tinyr.pyx":219 - * target_area = area(current_record.coords) - * least_enlargement = enlagrgement - * elif enlagrgement == least_enlargement and current_area < target_area: # <<<<<<<<<<<<<< - * target = current_record - * least_enlargement = target_area = current_area - */ - } - __pyx_L5:; - - /* "tinyr.pyx":207 - * - * - * for current_record in self.records: # <<<<<<<<<<<<<< - * current_area = area(current_record.coords) - * - */ - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "tinyr.pyx":223 - * least_enlargement = target_area = current_area - * - * return target # <<<<<<<<<<<<<< - * - * cdef void find_overlapping_leafs_recursive(self, list result, Dfloat *coords): - */ - __Pyx_XDECREF((PyObject *)__pyx_r); - if (unlikely(!__pyx_v_target)) { __Pyx_RaiseUnboundLocalError("target"); __PYX_ERR(0, 223, __pyx_L1_error) } - __Pyx_INCREF((PyObject *)__pyx_v_target); - __pyx_r = __pyx_v_target; - goto __pyx_L0; - - /* "tinyr.pyx":194 - * common_boundaries(self.records, target) - * - * cdef inline _Record choose_subtree_least_enlargement(self, _Record ir): # <<<<<<<<<<<<<< - * cdef: - * Dfloat least_enlargement, enlagrgement, current_area, target_area - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_AddTraceback("tinyr._Node.choose_subtree_least_enlargement", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XDECREF((PyObject *)__pyx_v_current_record); - __Pyx_XDECREF((PyObject *)__pyx_v_target); - __Pyx_XDECREF(__pyx_v_records); - __Pyx_XGIVEREF((PyObject *)__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "tinyr.pyx":225 - * return target - * - * cdef void find_overlapping_leafs_recursive(self, list result, Dfloat *coords): # <<<<<<<<<<<<<< - * cdef: - * _InnerRecord record - */ - -static void __pyx_f_5tinyr_5_Node_find_overlapping_leafs_recursive(struct __pyx_obj_5tinyr__Node *__pyx_v_self, PyObject *__pyx_v_result, __pyx_t_5tinyr_Dfloat *__pyx_v_coords) { - struct __pyx_obj_5tinyr__InnerRecord *__pyx_v_record = 0; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - PyObject *__pyx_t_2 = NULL; - Py_ssize_t __pyx_t_3; - PyObject *__pyx_t_4 = NULL; - int __pyx_t_5; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("find_overlapping_leafs_recursive", 1); - - /* "tinyr.pyx":229 - * _InnerRecord record - * - * if self.is_leaf: # <<<<<<<<<<<<<< - * result.append(self) - * else: - */ - if (__pyx_v_self->is_leaf) { - - /* "tinyr.pyx":230 - * - * if self.is_leaf: - * result.append(self) # <<<<<<<<<<<<<< - * else: - * for record in self.records: - */ - if (unlikely(__pyx_v_result == Py_None)) { - PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append"); - __PYX_ERR(0, 230, __pyx_L1_error) - } - __pyx_t_1 = __Pyx_PyList_Append(__pyx_v_result, ((PyObject *)__pyx_v_self)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 230, __pyx_L1_error) - - /* "tinyr.pyx":229 - * _InnerRecord record - * - * if self.is_leaf: # <<<<<<<<<<<<<< - * result.append(self) - * else: - */ - goto __pyx_L3; - } - - /* "tinyr.pyx":232 - * result.append(self) - * else: - * for record in self.records: # <<<<<<<<<<<<<< - * if record.overlaps(coords): - * record.child.find_overlapping_leafs_recursive(result, coords) - */ - /*else*/ { - if (unlikely(__pyx_v_self->records == Py_None)) { - PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); - __PYX_ERR(0, 232, __pyx_L1_error) - } - __pyx_t_2 = __pyx_v_self->records; __Pyx_INCREF(__pyx_t_2); - __pyx_t_3 = 0; - for (;;) { - { - Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_2); - #if !CYTHON_ASSUME_SAFE_MACROS - if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 232, __pyx_L1_error) - #endif - if (__pyx_t_3 >= __pyx_temp) break; - } - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_4 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_4); __pyx_t_3++; if (unlikely((0 < 0))) __PYX_ERR(0, 232, __pyx_L1_error) - #else - __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 232, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - #endif - if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5tinyr__InnerRecord))))) __PYX_ERR(0, 232, __pyx_L1_error) - __Pyx_XDECREF_SET(__pyx_v_record, ((struct __pyx_obj_5tinyr__InnerRecord *)__pyx_t_4)); - __pyx_t_4 = 0; - - /* "tinyr.pyx":233 - * else: - * for record in self.records: - * if record.overlaps(coords): # <<<<<<<<<<<<<< - * record.child.find_overlapping_leafs_recursive(result, coords) - * - */ - __pyx_t_5 = __pyx_f_5tinyr_7_Record_overlaps(((struct __pyx_obj_5tinyr__Record *)__pyx_v_record), __pyx_v_coords); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 233, __pyx_L1_error) - if (__pyx_t_5) { - - /* "tinyr.pyx":234 - * for record in self.records: - * if record.overlaps(coords): - * record.child.find_overlapping_leafs_recursive(result, coords) # <<<<<<<<<<<<<< - * - * cdef void addChild(self, _Node node): - */ - ((struct __pyx_vtabstruct_5tinyr__Node *)__pyx_v_record->child->__pyx_vtab)->find_overlapping_leafs_recursive(__pyx_v_record->child, __pyx_v_result, __pyx_v_coords); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 234, __pyx_L1_error) - - /* "tinyr.pyx":233 - * else: - * for record in self.records: - * if record.overlaps(coords): # <<<<<<<<<<<<<< - * record.child.find_overlapping_leafs_recursive(result, coords) - * - */ - } - - /* "tinyr.pyx":232 - * result.append(self) - * else: - * for record in self.records: # <<<<<<<<<<<<<< - * if record.overlaps(coords): - * record.child.find_overlapping_leafs_recursive(result, coords) - */ - } - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - } - __pyx_L3:; - - /* "tinyr.pyx":225 - * return target - * - * cdef void find_overlapping_leafs_recursive(self, list result, Dfloat *coords): # <<<<<<<<<<<<<< - * cdef: - * _InnerRecord record - */ - - /* function exit code */ - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_AddTraceback("tinyr._Node.find_overlapping_leafs_recursive", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_L0:; - __Pyx_XDECREF((PyObject *)__pyx_v_record); - __Pyx_RefNannyFinishContext(); -} - -/* "tinyr.pyx":236 - * record.child.find_overlapping_leafs_recursive(result, coords) - * - * cdef void addChild(self, _Node node): # <<<<<<<<<<<<<< - * cdef: - * _InnerRecord ir - */ - -static void __pyx_f_5tinyr_5_Node_addChild(struct __pyx_obj_5tinyr__Node *__pyx_v_self, struct __pyx_obj_5tinyr__Node *__pyx_v_node) { - struct __pyx_obj_5tinyr__InnerRecord *__pyx_v_ir = 0; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_t_2; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("addChild", 1); - - /* "tinyr.pyx":240 - * _InnerRecord ir - * - * node.parent = self # <<<<<<<<<<<<<< - * ir = _InnerRecord(node) - * node.common_boundaries(ir.coords) - */ - __Pyx_INCREF((PyObject *)__pyx_v_self); - __Pyx_GIVEREF((PyObject *)__pyx_v_self); - __Pyx_GOTREF((PyObject *)__pyx_v_node->parent); - __Pyx_DECREF((PyObject *)__pyx_v_node->parent); - __pyx_v_node->parent = __pyx_v_self; - - /* "tinyr.pyx":241 - * - * node.parent = self - * ir = _InnerRecord(node) # <<<<<<<<<<<<<< - * node.common_boundaries(ir.coords) - * self.records.append(ir) - */ - __pyx_t_1 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_5tinyr__InnerRecord), ((PyObject *)__pyx_v_node)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 241, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_v_ir = ((struct __pyx_obj_5tinyr__InnerRecord *)__pyx_t_1); - __pyx_t_1 = 0; - - /* "tinyr.pyx":242 - * node.parent = self - * ir = _InnerRecord(node) - * node.common_boundaries(ir.coords) # <<<<<<<<<<<<<< - * self.records.append(ir) - * - */ - __pyx_f_5tinyr_5_Node_common_boundaries(__pyx_v_node, __pyx_v_ir->__pyx_base.coords); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 242, __pyx_L1_error) - - /* "tinyr.pyx":243 - * ir = _InnerRecord(node) - * node.common_boundaries(ir.coords) - * self.records.append(ir) # <<<<<<<<<<<<<< - * - * cdef list find_overlapping_leafs_recursive(RTree rtree, Dfloat *coords): - */ - if (unlikely(__pyx_v_self->records == Py_None)) { - PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append"); - __PYX_ERR(0, 243, __pyx_L1_error) - } - __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_self->records, ((PyObject *)__pyx_v_ir)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 243, __pyx_L1_error) - - /* "tinyr.pyx":236 - * record.child.find_overlapping_leafs_recursive(result, coords) - * - * cdef void addChild(self, _Node node): # <<<<<<<<<<<<<< - * cdef: - * _InnerRecord ir - */ - - /* function exit code */ - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("tinyr._Node.addChild", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_L0:; - __Pyx_XDECREF((PyObject *)__pyx_v_ir); - __Pyx_RefNannyFinishContext(); -} - -/* "(tree fragment)":1 - * def __reduce_cython__(self): # <<<<<<<<<<<<<< - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_5tinyr_5_Node_3__reduce_cython__(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -); /*proto*/ -static PyMethodDef __pyx_mdef_5tinyr_5_Node_3__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_5tinyr_5_Node_3__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; -static PyObject *__pyx_pw_5tinyr_5_Node_3__reduce_cython__(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -) { - #if !CYTHON_METH_FASTCALL - CYTHON_UNUSED Py_ssize_t __pyx_nargs; - #endif - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); - #if !CYTHON_METH_FASTCALL - #if CYTHON_ASSUME_SAFE_MACROS - __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); - #else - __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; - #endif - #endif - __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); - if (unlikely(__pyx_nargs > 0)) { - __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL;} - if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__reduce_cython__", 0))) return NULL; - __pyx_r = __pyx_pf_5tinyr_5_Node_2__reduce_cython__(((struct __pyx_obj_5tinyr__Node *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_5tinyr_5_Node_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_5tinyr__Node *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__reduce_cython__", 1); - - /* "(tree fragment)":2 - * def __reduce_cython__(self): - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" # <<<<<<<<<<<<<< - * def __setstate_cython__(self, __pyx_state): - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - */ - __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_no_default___reduce___due_to_non, 0, 0); - __PYX_ERR(1, 2, __pyx_L1_error) - - /* "(tree fragment)":1 - * def __reduce_cython__(self): # <<<<<<<<<<<<<< - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_AddTraceback("tinyr._Node.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "(tree fragment)":3 - * def __reduce_cython__(self): - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_5tinyr_5_Node_5__setstate_cython__(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -); /*proto*/ -static PyMethodDef __pyx_mdef_5tinyr_5_Node_5__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_5tinyr_5_Node_5__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; -static PyObject *__pyx_pw_5tinyr_5_Node_5__setstate_cython__(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -) { - CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0; - #if !CYTHON_METH_FASTCALL - CYTHON_UNUSED Py_ssize_t __pyx_nargs; - #endif - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject* values[1] = {0}; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); - #if !CYTHON_METH_FASTCALL - #if CYTHON_ASSUME_SAFE_MACROS - __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); - #else - __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; - #endif - #endif - __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); - { - PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,0}; - if (__pyx_kwds) { - Py_ssize_t kw_args; - switch (__pyx_nargs) { - case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); - switch (__pyx_nargs) { - case 0: - if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) { - (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); - kw_args--; - } - else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 3, __pyx_L3_error) - else goto __pyx_L5_argtuple_error; - } - if (unlikely(kw_args > 0)) { - const Py_ssize_t kwd_pos_args = __pyx_nargs; - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__setstate_cython__") < 0)) __PYX_ERR(1, 3, __pyx_L3_error) - } - } else if (unlikely(__pyx_nargs != 1)) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); - } - __pyx_v___pyx_state = values[0]; - } - goto __pyx_L6_skip; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error) - __pyx_L6_skip:; - goto __pyx_L4_argument_unpacking_done; - __pyx_L3_error:; - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); - } - } - __Pyx_AddTraceback("tinyr._Node.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_5tinyr_5_Node_4__setstate_cython__(((struct __pyx_obj_5tinyr__Node *)__pyx_v_self), __pyx_v___pyx_state); - - /* function exit code */ - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); - } - } - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_5tinyr_5_Node_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_5tinyr__Node *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__setstate_cython__", 1); - - /* "(tree fragment)":4 - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" # <<<<<<<<<<<<<< - */ - __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_no_default___reduce___due_to_non, 0, 0); - __PYX_ERR(1, 4, __pyx_L1_error) - - /* "(tree fragment)":3 - * def __reduce_cython__(self): - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_AddTraceback("tinyr._Node.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "tinyr.pyx":245 - * self.records.append(ir) - * - * cdef list find_overlapping_leafs_recursive(RTree rtree, Dfloat *coords): # <<<<<<<<<<<<<< - * cdef: - * _Record rec - */ - -static PyObject *__pyx_f_5tinyr_find_overlapping_leafs_recursive(struct __pyx_obj_5tinyr_RTree *__pyx_v_rtree, __pyx_t_5tinyr_Dfloat *__pyx_v_coords) { - struct __pyx_obj_5tinyr__Record *__pyx_v_rec = 0; - PyObject *__pyx_v_result = 0; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - Py_ssize_t __pyx_t_2; - PyObject *__pyx_t_3 = NULL; - int __pyx_t_4; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("find_overlapping_leafs_recursive", 1); - - /* "tinyr.pyx":251 - * - * # don't know the whole surrounding rectangle of root, ask records for overlapping - * for rec in rtree.root.records: # <<<<<<<<<<<<<< - * if rec.overlaps(coords): - * break - */ - if (unlikely(__pyx_v_rtree->root->records == Py_None)) { - PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); - __PYX_ERR(0, 251, __pyx_L1_error) - } - __pyx_t_1 = __pyx_v_rtree->root->records; __Pyx_INCREF(__pyx_t_1); - __pyx_t_2 = 0; - for (;;) { - { - Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1); - #if !CYTHON_ASSUME_SAFE_MACROS - if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 251, __pyx_L1_error) - #endif - if (__pyx_t_2 >= __pyx_temp) break; - } - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_3 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_3); __pyx_t_2++; if (unlikely((0 < 0))) __PYX_ERR(0, 251, __pyx_L1_error) - #else - __pyx_t_3 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 251, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - #endif - if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5tinyr__Record))))) __PYX_ERR(0, 251, __pyx_L1_error) - __Pyx_XDECREF_SET(__pyx_v_rec, ((struct __pyx_obj_5tinyr__Record *)__pyx_t_3)); - __pyx_t_3 = 0; - - /* "tinyr.pyx":252 - * # don't know the whole surrounding rectangle of root, ask records for overlapping - * for rec in rtree.root.records: - * if rec.overlaps(coords): # <<<<<<<<<<<<<< - * break - * else: - */ - __pyx_t_4 = __pyx_f_5tinyr_7_Record_overlaps(__pyx_v_rec, __pyx_v_coords); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 252, __pyx_L1_error) - if (__pyx_t_4) { - - /* "tinyr.pyx":253 - * for rec in rtree.root.records: - * if rec.overlaps(coords): - * break # <<<<<<<<<<<<<< - * else: - * return [] - */ - goto __pyx_L4_break; - - /* "tinyr.pyx":252 - * # don't know the whole surrounding rectangle of root, ask records for overlapping - * for rec in rtree.root.records: - * if rec.overlaps(coords): # <<<<<<<<<<<<<< - * break - * else: - */ - } - - /* "tinyr.pyx":251 - * - * # don't know the whole surrounding rectangle of root, ask records for overlapping - * for rec in rtree.root.records: # <<<<<<<<<<<<<< - * if rec.overlaps(coords): - * break - */ - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - goto __pyx_L6_for_else; - __pyx_L4_break:; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - goto __pyx_L7_for_end; - /*else*/ { - __pyx_L6_for_else:; - - /* "tinyr.pyx":255 - * break - * else: - * return [] # <<<<<<<<<<<<<< - * - * result = list() - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 255, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = ((PyObject*)__pyx_t_1); - __pyx_t_1 = 0; - goto __pyx_L0; - } - __pyx_L7_for_end:; - - /* "tinyr.pyx":257 - * return [] - * - * result = list() # <<<<<<<<<<<<<< - * rtree.root.find_overlapping_leafs_recursive(result, coords) - * return result - */ - __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 257, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_v_result = ((PyObject*)__pyx_t_1); - __pyx_t_1 = 0; - - /* "tinyr.pyx":258 - * - * result = list() - * rtree.root.find_overlapping_leafs_recursive(result, coords) # <<<<<<<<<<<<<< - * return result - * - */ - ((struct __pyx_vtabstruct_5tinyr__Node *)__pyx_v_rtree->root->__pyx_vtab)->find_overlapping_leafs_recursive(__pyx_v_rtree->root, __pyx_v_result, __pyx_v_coords); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 258, __pyx_L1_error) - - /* "tinyr.pyx":259 - * result = list() - * rtree.root.find_overlapping_leafs_recursive(result, coords) - * return result # <<<<<<<<<<<<<< - * - * # performs worse than the recursive one - so we skip it - */ - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_v_result); - __pyx_r = __pyx_v_result; - goto __pyx_L0; - - /* "tinyr.pyx":245 - * self.records.append(ir) - * - * cdef list find_overlapping_leafs_recursive(RTree rtree, Dfloat *coords): # <<<<<<<<<<<<<< - * cdef: - * _Record rec - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_AddTraceback("tinyr.find_overlapping_leafs_recursive", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XDECREF((PyObject *)__pyx_v_rec); - __Pyx_XDECREF(__pyx_v_result); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "tinyr.pyx":286 - * # return nodes_to_check - * - * cdef int PickSeedsQuadratic(_Node node, list remaining, _Node newnode) except -1: # <<<<<<<<<<<<<< - * cdef: - * Dfloat d, d_max, E1_E2[4] - */ - -static int __pyx_f_5tinyr_PickSeedsQuadratic(struct __pyx_obj_5tinyr__Node *__pyx_v_node, PyObject *__pyx_v_remaining, struct __pyx_obj_5tinyr__Node *__pyx_v_newnode) { - __pyx_t_5tinyr_Dfloat __pyx_v_d; - __pyx_t_5tinyr_Dfloat __pyx_v_d_max; - __pyx_t_5tinyr_Dfloat __pyx_v_E1_E2[4]; - __pyx_t_5tinyr_Dfloat __pyx_v_J; - __pyx_t_5tinyr_Dfloat __pyx_v_a_E1; - __pyx_t_5tinyr_Dfloat __pyx_v_a_E2; - struct __pyx_obj_5tinyr__Record *__pyx_v_E1_ret = 0; - struct __pyx_obj_5tinyr__Record *__pyx_v_E2_ret = 0; - PyObject *__pyx_v_combi = 0; - PyObject *__pyx_v_E1 = NULL; - PyObject *__pyx_v_E2 = NULL; - int __pyx_r; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - int __pyx_t_4; - Py_ssize_t __pyx_t_5; - PyObject *(*__pyx_t_6)(PyObject *); - PyObject *__pyx_t_7 = NULL; - PyObject *__pyx_t_8 = NULL; - PyObject *(*__pyx_t_9)(PyObject *); - __pyx_t_5tinyr_Dfloat __pyx_t_10; - int __pyx_t_11; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("PickSeedsQuadratic", 1); - - /* "tinyr.pyx":293 - * list combi - * - * init_Dfloat4(E1_E2) # <<<<<<<<<<<<<< - * - * combi = [None, None] - */ - __pyx_f_5tinyr_init_Dfloat4(__pyx_v_E1_E2); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 293, __pyx_L1_error) - - /* "tinyr.pyx":295 - * init_Dfloat4(E1_E2) - * - * combi = [None, None] # <<<<<<<<<<<<<< - * d_max = -Dfloat_max - * - */ - __pyx_t_1 = PyList_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 295, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(Py_None); - __Pyx_GIVEREF(Py_None); - if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 0, Py_None)) __PYX_ERR(0, 295, __pyx_L1_error); - __Pyx_INCREF(Py_None); - __Pyx_GIVEREF(Py_None); - if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 1, Py_None)) __PYX_ERR(0, 295, __pyx_L1_error); - __pyx_v_combi = ((PyObject*)__pyx_t_1); - __pyx_t_1 = 0; - - /* "tinyr.pyx":296 - * - * combi = [None, None] - * d_max = -Dfloat_max # <<<<<<<<<<<<<< - * - * for E1, E2 in itertools.combinations(remaining, 2): - */ - __pyx_v_d_max = (-DBL_MAX); - - /* "tinyr.pyx":298 - * d_max = -Dfloat_max - * - * for E1, E2 in itertools.combinations(remaining, 2): # <<<<<<<<<<<<<< - * - * combi[0] = E1 - */ - __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_itertools); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 298, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_combinations); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 298, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = NULL; - __pyx_t_4 = 0; - #if CYTHON_UNPACK_METHODS - if (unlikely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_2)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_2); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - __pyx_t_4 = 1; - } - } - #endif - { - PyObject *__pyx_callargs[3] = {__pyx_t_2, __pyx_v_remaining, __pyx_int_2}; - __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 2+__pyx_t_4); - __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 298, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } - if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) { - __pyx_t_3 = __pyx_t_1; __Pyx_INCREF(__pyx_t_3); - __pyx_t_5 = 0; - __pyx_t_6 = NULL; - } else { - __pyx_t_5 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 298, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_6 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 298, __pyx_L1_error) - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - for (;;) { - if (likely(!__pyx_t_6)) { - if (likely(PyList_CheckExact(__pyx_t_3))) { - { - Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_3); - #if !CYTHON_ASSUME_SAFE_MACROS - if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 298, __pyx_L1_error) - #endif - if (__pyx_t_5 >= __pyx_temp) break; - } - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_1 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_5); __Pyx_INCREF(__pyx_t_1); __pyx_t_5++; if (unlikely((0 < 0))) __PYX_ERR(0, 298, __pyx_L1_error) - #else - __pyx_t_1 = __Pyx_PySequence_ITEM(__pyx_t_3, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 298, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - #endif - } else { - { - Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_3); - #if !CYTHON_ASSUME_SAFE_MACROS - if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 298, __pyx_L1_error) - #endif - if (__pyx_t_5 >= __pyx_temp) break; - } - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_5); __Pyx_INCREF(__pyx_t_1); __pyx_t_5++; if (unlikely((0 < 0))) __PYX_ERR(0, 298, __pyx_L1_error) - #else - __pyx_t_1 = __Pyx_PySequence_ITEM(__pyx_t_3, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 298, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - #endif - } - } else { - __pyx_t_1 = __pyx_t_6(__pyx_t_3); - if (unlikely(!__pyx_t_1)) { - PyObject* exc_type = PyErr_Occurred(); - if (exc_type) { - if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); - else __PYX_ERR(0, 298, __pyx_L1_error) - } - break; - } - __Pyx_GOTREF(__pyx_t_1); - } - if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { - PyObject* sequence = __pyx_t_1; - Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); - if (unlikely(size != 2)) { - if (size > 2) __Pyx_RaiseTooManyValuesError(2); - else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); - __PYX_ERR(0, 298, __pyx_L1_error) - } - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - if (likely(PyTuple_CheckExact(sequence))) { - __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); - __pyx_t_7 = PyTuple_GET_ITEM(sequence, 1); - } else { - __pyx_t_2 = PyList_GET_ITEM(sequence, 0); - __pyx_t_7 = PyList_GET_ITEM(sequence, 1); - } - __Pyx_INCREF(__pyx_t_2); - __Pyx_INCREF(__pyx_t_7); - #else - __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 298, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_7 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 298, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - #endif - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } else { - Py_ssize_t index = -1; - __pyx_t_8 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 298, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_9 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_8); - index = 0; __pyx_t_2 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_2)) goto __pyx_L5_unpacking_failed; - __Pyx_GOTREF(__pyx_t_2); - index = 1; __pyx_t_7 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_7)) goto __pyx_L5_unpacking_failed; - __Pyx_GOTREF(__pyx_t_7); - if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_8), 2) < 0) __PYX_ERR(0, 298, __pyx_L1_error) - __pyx_t_9 = NULL; - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - goto __pyx_L6_unpacking_done; - __pyx_L5_unpacking_failed:; - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __pyx_t_9 = NULL; - if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); - __PYX_ERR(0, 298, __pyx_L1_error) - __pyx_L6_unpacking_done:; - } - __Pyx_XDECREF_SET(__pyx_v_E1, __pyx_t_2); - __pyx_t_2 = 0; - __Pyx_XDECREF_SET(__pyx_v_E2, __pyx_t_7); - __pyx_t_7 = 0; - - /* "tinyr.pyx":300 - * for E1, E2 in itertools.combinations(remaining, 2): - * - * combi[0] = E1 # <<<<<<<<<<<<<< - * combi[1] = E2 - * - */ - if (unlikely((__Pyx_SetItemInt(__pyx_v_combi, 0, __pyx_v_E1, long, 1, __Pyx_PyInt_From_long, 1, 0, 1) < 0))) __PYX_ERR(0, 300, __pyx_L1_error) - - /* "tinyr.pyx":301 - * - * combi[0] = E1 - * combi[1] = E2 # <<<<<<<<<<<<<< - * - * common_boundaries(combi, E1_E2) - */ - if (unlikely((__Pyx_SetItemInt(__pyx_v_combi, 1, __pyx_v_E2, long, 1, __Pyx_PyInt_From_long, 1, 0, 1) < 0))) __PYX_ERR(0, 301, __pyx_L1_error) - - /* "tinyr.pyx":303 - * combi[1] = E2 - * - * common_boundaries(combi, E1_E2) # <<<<<<<<<<<<<< - * J = area(E1_E2) - * a_E1 = area((<_Record>E1).coords) - */ - __pyx_f_5tinyr_common_boundaries(__pyx_v_combi, __pyx_v_E1_E2); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 303, __pyx_L1_error) - - /* "tinyr.pyx":304 - * - * common_boundaries(combi, E1_E2) - * J = area(E1_E2) # <<<<<<<<<<<<<< - * a_E1 = area((<_Record>E1).coords) - * a_E2 = area((<_Record>E2).coords) - */ - __pyx_t_10 = __pyx_f_5tinyr_area(__pyx_v_E1_E2); if (unlikely(__pyx_t_10 == ((__pyx_t_5tinyr_Dfloat)-1) && PyErr_Occurred())) __PYX_ERR(0, 304, __pyx_L1_error) - __pyx_v_J = __pyx_t_10; - - /* "tinyr.pyx":305 - * common_boundaries(combi, E1_E2) - * J = area(E1_E2) - * a_E1 = area((<_Record>E1).coords) # <<<<<<<<<<<<<< - * a_E2 = area((<_Record>E2).coords) - * d = J - a_E1 - a_E2 - */ - __pyx_t_10 = __pyx_f_5tinyr_area(((struct __pyx_obj_5tinyr__Record *)__pyx_v_E1)->coords); if (unlikely(__pyx_t_10 == ((__pyx_t_5tinyr_Dfloat)-1) && PyErr_Occurred())) __PYX_ERR(0, 305, __pyx_L1_error) - __pyx_v_a_E1 = __pyx_t_10; - - /* "tinyr.pyx":306 - * J = area(E1_E2) - * a_E1 = area((<_Record>E1).coords) - * a_E2 = area((<_Record>E2).coords) # <<<<<<<<<<<<<< - * d = J - a_E1 - a_E2 - * - */ - __pyx_t_10 = __pyx_f_5tinyr_area(((struct __pyx_obj_5tinyr__Record *)__pyx_v_E2)->coords); if (unlikely(__pyx_t_10 == ((__pyx_t_5tinyr_Dfloat)-1) && PyErr_Occurred())) __PYX_ERR(0, 306, __pyx_L1_error) - __pyx_v_a_E2 = __pyx_t_10; - - /* "tinyr.pyx":307 - * a_E1 = area((<_Record>E1).coords) - * a_E2 = area((<_Record>E2).coords) - * d = J - a_E1 - a_E2 # <<<<<<<<<<<<<< - * - * if d > d_max: - */ - __pyx_v_d = ((__pyx_v_J - __pyx_v_a_E1) - __pyx_v_a_E2); - - /* "tinyr.pyx":309 - * d = J - a_E1 - a_E2 - * - * if d > d_max: # <<<<<<<<<<<<<< - * E1_ret = E1 - * E2_ret = E2 - */ - __pyx_t_11 = (__pyx_v_d > __pyx_v_d_max); - if (__pyx_t_11) { - - /* "tinyr.pyx":310 - * - * if d > d_max: - * E1_ret = E1 # <<<<<<<<<<<<<< - * E2_ret = E2 - * - */ - if (!(likely(((__pyx_v_E1) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_E1, __pyx_ptype_5tinyr__Record))))) __PYX_ERR(0, 310, __pyx_L1_error) - __pyx_t_1 = __pyx_v_E1; - __Pyx_INCREF(__pyx_t_1); - __Pyx_XDECREF_SET(__pyx_v_E1_ret, ((struct __pyx_obj_5tinyr__Record *)__pyx_t_1)); - __pyx_t_1 = 0; - - /* "tinyr.pyx":311 - * if d > d_max: - * E1_ret = E1 - * E2_ret = E2 # <<<<<<<<<<<<<< - * - * remaining.remove(E1_ret) - */ - if (!(likely(((__pyx_v_E2) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_E2, __pyx_ptype_5tinyr__Record))))) __PYX_ERR(0, 311, __pyx_L1_error) - __pyx_t_1 = __pyx_v_E2; - __Pyx_INCREF(__pyx_t_1); - __Pyx_XDECREF_SET(__pyx_v_E2_ret, ((struct __pyx_obj_5tinyr__Record *)__pyx_t_1)); - __pyx_t_1 = 0; - - /* "tinyr.pyx":309 - * d = J - a_E1 - a_E2 - * - * if d > d_max: # <<<<<<<<<<<<<< - * E1_ret = E1 - * E2_ret = E2 - */ - } - - /* "tinyr.pyx":298 - * d_max = -Dfloat_max - * - * for E1, E2 in itertools.combinations(remaining, 2): # <<<<<<<<<<<<<< - * - * combi[0] = E1 - */ - } - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - - /* "tinyr.pyx":313 - * E2_ret = E2 - * - * remaining.remove(E1_ret) # <<<<<<<<<<<<<< - * remaining.remove(E2_ret) - * - */ - if (unlikely(!__pyx_v_E1_ret)) { __Pyx_RaiseUnboundLocalError("E1_ret"); __PYX_ERR(0, 313, __pyx_L1_error) } - __pyx_t_3 = __Pyx_CallUnboundCMethod1(&__pyx_umethod_PyList_Type_remove, __pyx_v_remaining, ((PyObject *)__pyx_v_E1_ret)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 313, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - - /* "tinyr.pyx":314 - * - * remaining.remove(E1_ret) - * remaining.remove(E2_ret) # <<<<<<<<<<<<<< - * - * node.records = [E1_ret] - */ - if (unlikely(!__pyx_v_E2_ret)) { __Pyx_RaiseUnboundLocalError("E2_ret"); __PYX_ERR(0, 314, __pyx_L1_error) } - __pyx_t_3 = __Pyx_CallUnboundCMethod1(&__pyx_umethod_PyList_Type_remove, __pyx_v_remaining, ((PyObject *)__pyx_v_E2_ret)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 314, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - - /* "tinyr.pyx":316 - * remaining.remove(E2_ret) - * - * node.records = [E1_ret] # <<<<<<<<<<<<<< - * newnode.records = [E2_ret] - * - */ - if (unlikely(!__pyx_v_E1_ret)) { __Pyx_RaiseUnboundLocalError("E1_ret"); __PYX_ERR(0, 316, __pyx_L1_error) } - __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 316, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_INCREF((PyObject *)__pyx_v_E1_ret); - __Pyx_GIVEREF((PyObject *)__pyx_v_E1_ret); - if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_v_E1_ret))) __PYX_ERR(0, 316, __pyx_L1_error); - __Pyx_GIVEREF(__pyx_t_3); - __Pyx_GOTREF(__pyx_v_node->records); - __Pyx_DECREF(__pyx_v_node->records); - __pyx_v_node->records = ((PyObject*)__pyx_t_3); - __pyx_t_3 = 0; - - /* "tinyr.pyx":317 - * - * node.records = [E1_ret] - * newnode.records = [E2_ret] # <<<<<<<<<<<<<< - * - * return 0 - */ - if (unlikely(!__pyx_v_E2_ret)) { __Pyx_RaiseUnboundLocalError("E2_ret"); __PYX_ERR(0, 317, __pyx_L1_error) } - __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 317, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_INCREF((PyObject *)__pyx_v_E2_ret); - __Pyx_GIVEREF((PyObject *)__pyx_v_E2_ret); - if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_v_E2_ret))) __PYX_ERR(0, 317, __pyx_L1_error); - __Pyx_GIVEREF(__pyx_t_3); - __Pyx_GOTREF(__pyx_v_newnode->records); - __Pyx_DECREF(__pyx_v_newnode->records); - __pyx_v_newnode->records = ((PyObject*)__pyx_t_3); - __pyx_t_3 = 0; - - /* "tinyr.pyx":319 - * newnode.records = [E2_ret] - * - * return 0 # <<<<<<<<<<<<<< - * - * #cdef int PickSeedsLinear(_Node node, list remaining, _Node newnode) except -1: - */ - __pyx_r = 0; - goto __pyx_L0; - - /* "tinyr.pyx":286 - * # return nodes_to_check - * - * cdef int PickSeedsQuadratic(_Node node, list remaining, _Node newnode) except -1: # <<<<<<<<<<<<<< - * cdef: - * Dfloat d, d_max, E1_E2[4] - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_7); - __Pyx_XDECREF(__pyx_t_8); - __Pyx_AddTraceback("tinyr.PickSeedsQuadratic", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = -1; - __pyx_L0:; - __Pyx_XDECREF((PyObject *)__pyx_v_E1_ret); - __Pyx_XDECREF((PyObject *)__pyx_v_E2_ret); - __Pyx_XDECREF(__pyx_v_combi); - __Pyx_XDECREF(__pyx_v_E1); - __Pyx_XDECREF(__pyx_v_E2); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "tinyr.pyx":350 - * - * property min_cap: - * def __get__(self): # <<<<<<<<<<<<<< - * return self.m_cap - * - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_5tinyr_5RTree_7min_cap_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_5tinyr_5RTree_7min_cap_1__get__(PyObject *__pyx_v_self) { - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_5tinyr_5RTree_7min_cap___get__(((struct __pyx_obj_5tinyr_RTree *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_5tinyr_5RTree_7min_cap___get__(struct __pyx_obj_5tinyr_RTree *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__get__", 1); - - /* "tinyr.pyx":351 - * property min_cap: - * def __get__(self): - * return self.m_cap # <<<<<<<<<<<<<< - * - * property max_cap: - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->m_cap); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 351, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "tinyr.pyx":350 - * - * property min_cap: - * def __get__(self): # <<<<<<<<<<<<<< - * return self.m_cap - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("tinyr.RTree.min_cap.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "tinyr.pyx":354 - * - * property max_cap: - * def __get__(self): # <<<<<<<<<<<<<< - * return self.M_cap - * - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_5tinyr_5RTree_7max_cap_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_5tinyr_5RTree_7max_cap_1__get__(PyObject *__pyx_v_self) { - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_5tinyr_5RTree_7max_cap___get__(((struct __pyx_obj_5tinyr_RTree *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_5tinyr_5RTree_7max_cap___get__(struct __pyx_obj_5tinyr_RTree *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__get__", 1); - - /* "tinyr.pyx":355 - * property max_cap: - * def __get__(self): - * return self.M_cap # <<<<<<<<<<<<<< - * - * def __cinit__(self): - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->M_cap); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 355, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "tinyr.pyx":354 - * - * property max_cap: - * def __get__(self): # <<<<<<<<<<<<<< - * return self.M_cap - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("tinyr.RTree.max_cap.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "tinyr.pyx":357 - * return self.M_cap - * - * def __cinit__(self): # <<<<<<<<<<<<<< - * self.root = _Node(None) - * self.root.is_leaf = True - */ - -/* Python wrapper */ -static int __pyx_pw_5tinyr_5RTree_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static int __pyx_pw_5tinyr_5RTree_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - CYTHON_UNUSED Py_ssize_t __pyx_nargs; - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0); - #if CYTHON_ASSUME_SAFE_MACROS - __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); - #else - __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1; - #endif - __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - if (unlikely(__pyx_nargs > 0)) { - __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, __pyx_nargs); return -1;} - if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_VARARGS(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 0))) return -1; - __pyx_r = __pyx_pf_5tinyr_5RTree___cinit__(((struct __pyx_obj_5tinyr_RTree *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_pf_5tinyr_5RTree___cinit__(struct __pyx_obj_5tinyr_RTree *__pyx_v_self) { - int __pyx_r; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__cinit__", 1); - - /* "tinyr.pyx":358 - * - * def __cinit__(self): - * self.root = _Node(None) # <<<<<<<<<<<<<< - * self.root.is_leaf = True - * self._leaf_level = 0 - */ - __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5tinyr__Node), __pyx_tuple_, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 358, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_GIVEREF(__pyx_t_1); - __Pyx_GOTREF((PyObject *)__pyx_v_self->root); - __Pyx_DECREF((PyObject *)__pyx_v_self->root); - __pyx_v_self->root = ((struct __pyx_obj_5tinyr__Node *)__pyx_t_1); - __pyx_t_1 = 0; - - /* "tinyr.pyx":359 - * def __cinit__(self): - * self.root = _Node(None) - * self.root.is_leaf = True # <<<<<<<<<<<<<< - * self._leaf_level = 0 - * self._node_cnt = 0 - */ - __pyx_v_self->root->is_leaf = 1; - - /* "tinyr.pyx":360 - * self.root = _Node(None) - * self.root.is_leaf = True - * self._leaf_level = 0 # <<<<<<<<<<<<<< - * self._node_cnt = 0 - * - */ - __pyx_v_self->_leaf_level = 0; - - /* "tinyr.pyx":361 - * self.root.is_leaf = True - * self._leaf_level = 0 - * self._node_cnt = 0 # <<<<<<<<<<<<<< - * - * def __init__(self, interleaved=True, max_cap=5, min_cap=2): - */ - __pyx_v_self->_node_cnt = 0; - - /* "tinyr.pyx":357 - * return self.M_cap - * - * def __cinit__(self): # <<<<<<<<<<<<<< - * self.root = _Node(None) - * self.root.is_leaf = True - */ - - /* function exit code */ - __pyx_r = 0; - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("tinyr.RTree.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = -1; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "tinyr.pyx":363 - * self._node_cnt = 0 - * - * def __init__(self, interleaved=True, max_cap=5, min_cap=2): # <<<<<<<<<<<<<< - * if min_cap > max_cap/2.: - * raise ValueError('for min/max capacities, it\'s required that min_cap <= max_cap/2.0') - */ - -/* Python wrapper */ -static int __pyx_pw_5tinyr_5RTree_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static int __pyx_pw_5tinyr_5RTree_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_interleaved = 0; - PyObject *__pyx_v_max_cap = 0; - PyObject *__pyx_v_min_cap = 0; - CYTHON_UNUSED Py_ssize_t __pyx_nargs; - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject* values[3] = {0,0,0}; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); - #if CYTHON_ASSUME_SAFE_MACROS - __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); - #else - __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1; - #endif - __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - { - PyObject **__pyx_pyargnames[] = {&__pyx_n_s_interleaved,&__pyx_n_s_max_cap,&__pyx_n_s_min_cap,0}; - values[0] = __Pyx_Arg_NewRef_VARARGS(((PyObject *)Py_True)); - values[1] = __Pyx_Arg_NewRef_VARARGS(((PyObject *)__pyx_int_5)); - values[2] = __Pyx_Arg_NewRef_VARARGS(((PyObject *)__pyx_int_2)); - if (__pyx_kwds) { - Py_ssize_t kw_args; - switch (__pyx_nargs) { - case 3: values[2] = __Pyx_Arg_VARARGS(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds); - switch (__pyx_nargs) { - case 0: - if (kw_args > 0) { - PyObject* value = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_interleaved); - if (value) { values[0] = __Pyx_Arg_NewRef_VARARGS(value); kw_args--; } - else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 363, __pyx_L3_error) - } - CYTHON_FALLTHROUGH; - case 1: - if (kw_args > 0) { - PyObject* value = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_max_cap); - if (value) { values[1] = __Pyx_Arg_NewRef_VARARGS(value); kw_args--; } - else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 363, __pyx_L3_error) - } - CYTHON_FALLTHROUGH; - case 2: - if (kw_args > 0) { - PyObject* value = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_min_cap); - if (value) { values[2] = __Pyx_Arg_NewRef_VARARGS(value); kw_args--; } - else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 363, __pyx_L3_error) - } - } - if (unlikely(kw_args > 0)) { - const Py_ssize_t kwd_pos_args = __pyx_nargs; - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__init__") < 0)) __PYX_ERR(0, 363, __pyx_L3_error) - } - } else { - switch (__pyx_nargs) { - case 3: values[2] = __Pyx_Arg_VARARGS(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - } - __pyx_v_interleaved = values[0]; - __pyx_v_max_cap = values[1]; - __pyx_v_min_cap = values[2]; - } - goto __pyx_L6_skip; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__init__", 0, 0, 3, __pyx_nargs); __PYX_ERR(0, 363, __pyx_L3_error) - __pyx_L6_skip:; - goto __pyx_L4_argument_unpacking_done; - __pyx_L3_error:; - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]); - } - } - __Pyx_AddTraceback("tinyr.RTree.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return -1; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_5tinyr_5RTree_2__init__(((struct __pyx_obj_5tinyr_RTree *)__pyx_v_self), __pyx_v_interleaved, __pyx_v_max_cap, __pyx_v_min_cap); - - /* function exit code */ - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]); - } - } - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_pf_5tinyr_5RTree_2__init__(struct __pyx_obj_5tinyr_RTree *__pyx_v_self, PyObject *__pyx_v_interleaved, PyObject *__pyx_v_max_cap, PyObject *__pyx_v_min_cap) { - int __pyx_r; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - int __pyx_t_3; - int __pyx_t_4; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__init__", 1); - - /* "tinyr.pyx":364 - * - * def __init__(self, interleaved=True, max_cap=5, min_cap=2): - * if min_cap > max_cap/2.: # <<<<<<<<<<<<<< - * raise ValueError('for min/max capacities, it\'s required that min_cap <= max_cap/2.0') - * - */ - __pyx_t_1 = __Pyx_PyFloat_TrueDivideObjC(__pyx_v_max_cap, __pyx_float_2_, 2., 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 364, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = PyObject_RichCompare(__pyx_v_min_cap, __pyx_t_1, Py_GT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 364, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 364, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - if (unlikely(__pyx_t_3)) { - - /* "tinyr.pyx":365 - * def __init__(self, interleaved=True, max_cap=5, min_cap=2): - * if min_cap > max_cap/2.: - * raise ValueError('for min/max capacities, it\'s required that min_cap <= max_cap/2.0') # <<<<<<<<<<<<<< - * - * if interleaved: - */ - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__2, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 365, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_Raise(__pyx_t_2, 0, 0, 0); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __PYX_ERR(0, 365, __pyx_L1_error) - - /* "tinyr.pyx":364 - * - * def __init__(self, interleaved=True, max_cap=5, min_cap=2): - * if min_cap > max_cap/2.: # <<<<<<<<<<<<<< - * raise ValueError('for min/max capacities, it\'s required that min_cap <= max_cap/2.0') - * - */ - } - - /* "tinyr.pyx":367 - * raise ValueError('for min/max capacities, it\'s required that min_cap <= max_cap/2.0') - * - * if interleaved: # <<<<<<<<<<<<<< - * self.tuple_to_array = tuple_to_array_interleaved - * self.array_to_tuple = array_to_tuple_interleaved - */ - __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_interleaved); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 367, __pyx_L1_error) - if (__pyx_t_3) { - - /* "tinyr.pyx":368 - * - * if interleaved: - * self.tuple_to_array = tuple_to_array_interleaved # <<<<<<<<<<<<<< - * self.array_to_tuple = array_to_tuple_interleaved - * else: - */ - __pyx_v_self->tuple_to_array = __pyx_f_5tinyr_tuple_to_array_interleaved; - - /* "tinyr.pyx":369 - * if interleaved: - * self.tuple_to_array = tuple_to_array_interleaved - * self.array_to_tuple = array_to_tuple_interleaved # <<<<<<<<<<<<<< - * else: - * self.tuple_to_array = tuple_to_array_normal - */ - __pyx_v_self->array_to_tuple = __pyx_f_5tinyr_array_to_tuple_interleaved; - - /* "tinyr.pyx":367 - * raise ValueError('for min/max capacities, it\'s required that min_cap <= max_cap/2.0') - * - * if interleaved: # <<<<<<<<<<<<<< - * self.tuple_to_array = tuple_to_array_interleaved - * self.array_to_tuple = array_to_tuple_interleaved - */ - goto __pyx_L4; - } - - /* "tinyr.pyx":371 - * self.array_to_tuple = array_to_tuple_interleaved - * else: - * self.tuple_to_array = tuple_to_array_normal # <<<<<<<<<<<<<< - * self.array_to_tuple = array_to_tuple_normal - * - */ - /*else*/ { - __pyx_v_self->tuple_to_array = __pyx_f_5tinyr_tuple_to_array_normal; - - /* "tinyr.pyx":372 - * else: - * self.tuple_to_array = tuple_to_array_normal - * self.array_to_tuple = array_to_tuple_normal # <<<<<<<<<<<<<< - * - * # the iterative method performed worse - */ - __pyx_v_self->array_to_tuple = __pyx_f_5tinyr_array_to_tuple_normal; - } - __pyx_L4:; - - /* "tinyr.pyx":375 - * - * # the iterative method performed worse - * self.find_overlapping_leafs = find_overlapping_leafs_recursive # <<<<<<<<<<<<<< - * - * self.PickSeeds = PickSeedsQuadratic - */ - __pyx_v_self->find_overlapping_leafs = __pyx_f_5tinyr_find_overlapping_leafs_recursive; - - /* "tinyr.pyx":377 - * self.find_overlapping_leafs = find_overlapping_leafs_recursive - * - * self.PickSeeds = PickSeedsQuadratic # <<<<<<<<<<<<<< - * - * self.M_cap = max_cap - */ - __pyx_v_self->PickSeeds = __pyx_f_5tinyr_PickSeedsQuadratic; - - /* "tinyr.pyx":379 - * self.PickSeeds = PickSeedsQuadratic - * - * self.M_cap = max_cap # <<<<<<<<<<<<<< - * self.m_cap = min_cap - * - */ - __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_v_max_cap); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 379, __pyx_L1_error) - __pyx_v_self->M_cap = __pyx_t_4; - - /* "tinyr.pyx":380 - * - * self.M_cap = max_cap - * self.m_cap = min_cap # <<<<<<<<<<<<<< - * - * def __len__(self): - */ - __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_v_min_cap); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 380, __pyx_L1_error) - __pyx_v_self->m_cap = __pyx_t_4; - - /* "tinyr.pyx":363 - * self._node_cnt = 0 - * - * def __init__(self, interleaved=True, max_cap=5, min_cap=2): # <<<<<<<<<<<<<< - * if min_cap > max_cap/2.: - * raise ValueError('for min/max capacities, it\'s required that min_cap <= max_cap/2.0') - */ - - /* function exit code */ - __pyx_r = 0; - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_AddTraceback("tinyr.RTree.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = -1; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "tinyr.pyx":382 - * self.m_cap = min_cap - * - * def __len__(self): # <<<<<<<<<<<<<< - * return self._node_cnt - * - */ - -/* Python wrapper */ -static Py_ssize_t __pyx_pw_5tinyr_5RTree_5__len__(PyObject *__pyx_v_self); /*proto*/ -static Py_ssize_t __pyx_pw_5tinyr_5RTree_5__len__(PyObject *__pyx_v_self) { - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - Py_ssize_t __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__len__ (wrapper)", 0); - __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_5tinyr_5RTree_4__len__(((struct __pyx_obj_5tinyr_RTree *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static Py_ssize_t __pyx_pf_5tinyr_5RTree_4__len__(struct __pyx_obj_5tinyr_RTree *__pyx_v_self) { - Py_ssize_t __pyx_r; - - /* "tinyr.pyx":383 - * - * def __len__(self): - * return self._node_cnt # <<<<<<<<<<<<<< - * - * def __getitem__(self, item): - */ - __pyx_r = __pyx_v_self->_node_cnt; - goto __pyx_L0; - - /* "tinyr.pyx":382 - * self.m_cap = min_cap - * - * def __len__(self): # <<<<<<<<<<<<<< - * return self._node_cnt - * - */ - - /* function exit code */ - __pyx_L0:; - return __pyx_r; -} - -/* "tinyr.pyx":385 - * return self._node_cnt - * - * def __getitem__(self, item): # <<<<<<<<<<<<<< - * if isinstance(item, (list, tuple)): - * if len(item) == 2: - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_5tinyr_5RTree_7__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_item); /*proto*/ -static PyObject *__pyx_pw_5tinyr_5RTree_7__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_item) { - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__getitem__ (wrapper)", 0); - __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_5tinyr_5RTree_6__getitem__(((struct __pyx_obj_5tinyr_RTree *)__pyx_v_self), ((PyObject *)__pyx_v_item)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_5tinyr_5RTree_6__getitem__(struct __pyx_obj_5tinyr_RTree *__pyx_v_self, PyObject *__pyx_v_item) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - int __pyx_t_2; - Py_ssize_t __pyx_t_3; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - PyObject *__pyx_t_6 = NULL; - int __pyx_t_7; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__getitem__", 1); - - /* "tinyr.pyx":386 - * - * def __getitem__(self, item): - * if isinstance(item, (list, tuple)): # <<<<<<<<<<<<<< - * if len(item) == 2: - * return self.search_surrounding(item) - */ - __pyx_t_2 = PyList_Check(__pyx_v_item); - if (!__pyx_t_2) { - } else { - __pyx_t_1 = __pyx_t_2; - goto __pyx_L4_bool_binop_done; - } - __pyx_t_2 = PyTuple_Check(__pyx_v_item); - __pyx_t_1 = __pyx_t_2; - __pyx_L4_bool_binop_done:; - if (__pyx_t_1) { - - /* "tinyr.pyx":387 - * def __getitem__(self, item): - * if isinstance(item, (list, tuple)): - * if len(item) == 2: # <<<<<<<<<<<<<< - * return self.search_surrounding(item) - * elif len(item) == 4: - */ - __pyx_t_3 = PyObject_Length(__pyx_v_item); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(0, 387, __pyx_L1_error) - __pyx_t_1 = (__pyx_t_3 == 2); - if (__pyx_t_1) { - - /* "tinyr.pyx":388 - * if isinstance(item, (list, tuple)): - * if len(item) == 2: - * return self.search_surrounding(item) # <<<<<<<<<<<<<< - * elif len(item) == 4: - * return self.search(item) - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_search_surrounding); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 388, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_6 = NULL; - __pyx_t_7 = 0; - #if CYTHON_UNPACK_METHODS - if (likely(PyMethod_Check(__pyx_t_5))) { - __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5); - if (likely(__pyx_t_6)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); - __Pyx_INCREF(__pyx_t_6); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_5, function); - __pyx_t_7 = 1; - } - } - #endif - { - PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_v_item}; - __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7); - __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 388, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - } - __pyx_r = __pyx_t_4; - __pyx_t_4 = 0; - goto __pyx_L0; - - /* "tinyr.pyx":387 - * def __getitem__(self, item): - * if isinstance(item, (list, tuple)): - * if len(item) == 2: # <<<<<<<<<<<<<< - * return self.search_surrounding(item) - * elif len(item) == 4: - */ - } - - /* "tinyr.pyx":389 - * if len(item) == 2: - * return self.search_surrounding(item) - * elif len(item) == 4: # <<<<<<<<<<<<<< - * return self.search(item) - * raise AttributeError('indexing RTree only possible with rectangle or point (x, y)') - */ - __pyx_t_3 = PyObject_Length(__pyx_v_item); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(0, 389, __pyx_L1_error) - __pyx_t_1 = (__pyx_t_3 == 4); - if (__pyx_t_1) { - - /* "tinyr.pyx":390 - * return self.search_surrounding(item) - * elif len(item) == 4: - * return self.search(item) # <<<<<<<<<<<<<< - * raise AttributeError('indexing RTree only possible with rectangle or point (x, y)') - * - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_search); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 390, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_6 = NULL; - __pyx_t_7 = 0; - #if CYTHON_UNPACK_METHODS - if (likely(PyMethod_Check(__pyx_t_5))) { - __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5); - if (likely(__pyx_t_6)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); - __Pyx_INCREF(__pyx_t_6); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_5, function); - __pyx_t_7 = 1; - } - } - #endif - { - PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_v_item}; - __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7); - __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 390, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - } - __pyx_r = __pyx_t_4; - __pyx_t_4 = 0; - goto __pyx_L0; - - /* "tinyr.pyx":389 - * if len(item) == 2: - * return self.search_surrounding(item) - * elif len(item) == 4: # <<<<<<<<<<<<<< - * return self.search(item) - * raise AttributeError('indexing RTree only possible with rectangle or point (x, y)') - */ - } - - /* "tinyr.pyx":386 - * - * def __getitem__(self, item): - * if isinstance(item, (list, tuple)): # <<<<<<<<<<<<<< - * if len(item) == 2: - * return self.search_surrounding(item) - */ - } - - /* "tinyr.pyx":391 - * elif len(item) == 4: - * return self.search(item) - * raise AttributeError('indexing RTree only possible with rectangle or point (x, y)') # <<<<<<<<<<<<<< - * - * def iterkeys(self): - */ - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_AttributeError, __pyx_tuple__3, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 391, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_Raise(__pyx_t_4, 0, 0, 0); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __PYX_ERR(0, 391, __pyx_L1_error) - - /* "tinyr.pyx":385 - * return self._node_cnt - * - * def __getitem__(self, item): # <<<<<<<<<<<<<< - * if isinstance(item, (list, tuple)): - * if len(item) == 2: - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_XDECREF(__pyx_t_6); - __Pyx_AddTraceback("tinyr.RTree.__getitem__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "tinyr.pyx":393 - * raise AttributeError('indexing RTree only possible with rectangle or point (x, y)') - * - * def iterkeys(self): # <<<<<<<<<<<<<< - * return _KeysIter(self) - * - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_5tinyr_5RTree_9iterkeys(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -); /*proto*/ -static PyMethodDef __pyx_mdef_5tinyr_5RTree_9iterkeys = {"iterkeys", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_5tinyr_5RTree_9iterkeys, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; -static PyObject *__pyx_pw_5tinyr_5RTree_9iterkeys(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -) { - #if !CYTHON_METH_FASTCALL - CYTHON_UNUSED Py_ssize_t __pyx_nargs; - #endif - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("iterkeys (wrapper)", 0); - #if !CYTHON_METH_FASTCALL - #if CYTHON_ASSUME_SAFE_MACROS - __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); - #else - __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; - #endif - #endif - __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); - if (unlikely(__pyx_nargs > 0)) { - __Pyx_RaiseArgtupleInvalid("iterkeys", 1, 0, 0, __pyx_nargs); return NULL;} - if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "iterkeys", 0))) return NULL; - __pyx_r = __pyx_pf_5tinyr_5RTree_8iterkeys(((struct __pyx_obj_5tinyr_RTree *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_5tinyr_5RTree_8iterkeys(struct __pyx_obj_5tinyr_RTree *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("iterkeys", 1); - - /* "tinyr.pyx":394 - * - * def iterkeys(self): - * return _KeysIter(self) # <<<<<<<<<<<<<< - * - * def itervalues(self): - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_5tinyr__KeysIter), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 394, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "tinyr.pyx":393 - * raise AttributeError('indexing RTree only possible with rectangle or point (x, y)') - * - * def iterkeys(self): # <<<<<<<<<<<<<< - * return _KeysIter(self) - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("tinyr.RTree.iterkeys", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "tinyr.pyx":396 - * return _KeysIter(self) - * - * def itervalues(self): # <<<<<<<<<<<<<< - * return _ValuesIter(self) - * - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_5tinyr_5RTree_11itervalues(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -); /*proto*/ -static PyMethodDef __pyx_mdef_5tinyr_5RTree_11itervalues = {"itervalues", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_5tinyr_5RTree_11itervalues, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; -static PyObject *__pyx_pw_5tinyr_5RTree_11itervalues(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -) { - #if !CYTHON_METH_FASTCALL - CYTHON_UNUSED Py_ssize_t __pyx_nargs; - #endif - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("itervalues (wrapper)", 0); - #if !CYTHON_METH_FASTCALL - #if CYTHON_ASSUME_SAFE_MACROS - __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); - #else - __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; - #endif - #endif - __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); - if (unlikely(__pyx_nargs > 0)) { - __Pyx_RaiseArgtupleInvalid("itervalues", 1, 0, 0, __pyx_nargs); return NULL;} - if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "itervalues", 0))) return NULL; - __pyx_r = __pyx_pf_5tinyr_5RTree_10itervalues(((struct __pyx_obj_5tinyr_RTree *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_5tinyr_5RTree_10itervalues(struct __pyx_obj_5tinyr_RTree *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("itervalues", 1); - - /* "tinyr.pyx":397 - * - * def itervalues(self): - * return _ValuesIter(self) # <<<<<<<<<<<<<< - * - * def iteritems(self): - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_5tinyr__ValuesIter), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 397, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "tinyr.pyx":396 - * return _KeysIter(self) - * - * def itervalues(self): # <<<<<<<<<<<<<< - * return _ValuesIter(self) - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("tinyr.RTree.itervalues", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "tinyr.pyx":399 - * return _ValuesIter(self) - * - * def iteritems(self): # <<<<<<<<<<<<<< - * return _ItemsIter(self) - * - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_5tinyr_5RTree_13iteritems(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -); /*proto*/ -static PyMethodDef __pyx_mdef_5tinyr_5RTree_13iteritems = {"iteritems", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_5tinyr_5RTree_13iteritems, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; -static PyObject *__pyx_pw_5tinyr_5RTree_13iteritems(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -) { - #if !CYTHON_METH_FASTCALL - CYTHON_UNUSED Py_ssize_t __pyx_nargs; - #endif - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("iteritems (wrapper)", 0); - #if !CYTHON_METH_FASTCALL - #if CYTHON_ASSUME_SAFE_MACROS - __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); - #else - __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; - #endif - #endif - __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); - if (unlikely(__pyx_nargs > 0)) { - __Pyx_RaiseArgtupleInvalid("iteritems", 1, 0, 0, __pyx_nargs); return NULL;} - if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "iteritems", 0))) return NULL; - __pyx_r = __pyx_pf_5tinyr_5RTree_12iteritems(((struct __pyx_obj_5tinyr_RTree *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_5tinyr_5RTree_12iteritems(struct __pyx_obj_5tinyr_RTree *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("iteritems", 1); - - /* "tinyr.pyx":400 - * - * def iteritems(self): - * return _ItemsIter(self) # <<<<<<<<<<<<<< - * - * def get_info(self): - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_5tinyr__ItemsIter), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 400, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "tinyr.pyx":399 - * return _ValuesIter(self) - * - * def iteritems(self): # <<<<<<<<<<<<<< - * return _ItemsIter(self) - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("tinyr.RTree.iteritems", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "tinyr.pyx":402 - * return _ItemsIter(self) - * - * def get_info(self): # <<<<<<<<<<<<<< - * return RTreeInfo(self) - * - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_5tinyr_5RTree_15get_info(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -); /*proto*/ -static PyMethodDef __pyx_mdef_5tinyr_5RTree_15get_info = {"get_info", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_5tinyr_5RTree_15get_info, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; -static PyObject *__pyx_pw_5tinyr_5RTree_15get_info(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -) { - #if !CYTHON_METH_FASTCALL - CYTHON_UNUSED Py_ssize_t __pyx_nargs; - #endif - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("get_info (wrapper)", 0); - #if !CYTHON_METH_FASTCALL - #if CYTHON_ASSUME_SAFE_MACROS - __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); - #else - __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; - #endif - #endif - __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); - if (unlikely(__pyx_nargs > 0)) { - __Pyx_RaiseArgtupleInvalid("get_info", 1, 0, 0, __pyx_nargs); return NULL;} - if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "get_info", 0))) return NULL; - __pyx_r = __pyx_pf_5tinyr_5RTree_14get_info(((struct __pyx_obj_5tinyr_RTree *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_5tinyr_5RTree_14get_info(struct __pyx_obj_5tinyr_RTree *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("get_info", 1); - - /* "tinyr.pyx":403 - * - * def get_info(self): - * return RTreeInfo(self) # <<<<<<<<<<<<<< - * - * def insert(self, object key, object coords): - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_5tinyr_RTreeInfo), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 403, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "tinyr.pyx":402 - * return _ItemsIter(self) - * - * def get_info(self): # <<<<<<<<<<<<<< - * return RTreeInfo(self) - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("tinyr.RTree.get_info", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "tinyr.pyx":405 - * return RTreeInfo(self) - * - * def insert(self, object key, object coords): # <<<<<<<<<<<<<< - * '''Insert an item. - * - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_5tinyr_5RTree_17insert(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -); /*proto*/ -PyDoc_STRVAR(__pyx_doc_5tinyr_5RTree_16insert, "Insert an item.\n \n @param key: an object to insert, where all keys should be unique (regarding !=)\n @param coords: 2D coordinates\n "); -static PyMethodDef __pyx_mdef_5tinyr_5RTree_17insert = {"insert", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_5tinyr_5RTree_17insert, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_5tinyr_5RTree_16insert}; -static PyObject *__pyx_pw_5tinyr_5RTree_17insert(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -) { - PyObject *__pyx_v_key = 0; - PyObject *__pyx_v_coords = 0; - #if !CYTHON_METH_FASTCALL - CYTHON_UNUSED Py_ssize_t __pyx_nargs; - #endif - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject* values[2] = {0,0}; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("insert (wrapper)", 0); - #if !CYTHON_METH_FASTCALL - #if CYTHON_ASSUME_SAFE_MACROS - __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); - #else - __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; - #endif - #endif - __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); - { - PyObject **__pyx_pyargnames[] = {&__pyx_n_s_key,&__pyx_n_s_coords,0}; - if (__pyx_kwds) { - Py_ssize_t kw_args; - switch (__pyx_nargs) { - case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); - switch (__pyx_nargs) { - case 0: - if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_key)) != 0)) { - (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); - kw_args--; - } - else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 405, __pyx_L3_error) - else goto __pyx_L5_argtuple_error; - CYTHON_FALLTHROUGH; - case 1: - if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_coords)) != 0)) { - (void)__Pyx_Arg_NewRef_FASTCALL(values[1]); - kw_args--; - } - else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 405, __pyx_L3_error) - else { - __Pyx_RaiseArgtupleInvalid("insert", 1, 2, 2, 1); __PYX_ERR(0, 405, __pyx_L3_error) - } - } - if (unlikely(kw_args > 0)) { - const Py_ssize_t kwd_pos_args = __pyx_nargs; - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "insert") < 0)) __PYX_ERR(0, 405, __pyx_L3_error) - } - } else if (unlikely(__pyx_nargs != 2)) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); - values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); - } - __pyx_v_key = values[0]; - __pyx_v_coords = values[1]; - } - goto __pyx_L6_skip; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("insert", 1, 2, 2, __pyx_nargs); __PYX_ERR(0, 405, __pyx_L3_error) - __pyx_L6_skip:; - goto __pyx_L4_argument_unpacking_done; - __pyx_L3_error:; - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); - } - } - __Pyx_AddTraceback("tinyr.RTree.insert", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_5tinyr_5RTree_16insert(((struct __pyx_obj_5tinyr_RTree *)__pyx_v_self), __pyx_v_key, __pyx_v_coords); - - /* function exit code */ - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); - } - } - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_5tinyr_5RTree_16insert(struct __pyx_obj_5tinyr_RTree *__pyx_v_self, PyObject *__pyx_v_key, PyObject *__pyx_v_coords) { - struct __pyx_obj_5tinyr__ChildRecord *__pyx_v_cr = 0; - struct __pyx_obj_5tinyr__Node *__pyx_v_L = 0; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - int __pyx_t_2; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - Py_ssize_t __pyx_t_5; - int __pyx_t_6; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("insert", 1); - - /* "tinyr.pyx":416 - * _Node L - * - * if not isinstance(coords, (list, tuple)): # <<<<<<<<<<<<<< - * raise TypeError('coordinates as list or tuple expected, got %s' % coords.__class__) - * if not len(coords) == 4: - */ - __pyx_t_2 = PyList_Check(__pyx_v_coords); - if (!__pyx_t_2) { - } else { - __pyx_t_1 = __pyx_t_2; - goto __pyx_L4_bool_binop_done; - } - __pyx_t_2 = PyTuple_Check(__pyx_v_coords); - __pyx_t_1 = __pyx_t_2; - __pyx_L4_bool_binop_done:; - __pyx_t_2 = (!__pyx_t_1); - if (unlikely(__pyx_t_2)) { - - /* "tinyr.pyx":417 - * - * if not isinstance(coords, (list, tuple)): - * raise TypeError('coordinates as list or tuple expected, got %s' % coords.__class__) # <<<<<<<<<<<<<< - * if not len(coords) == 4: - * raise TypeError('len(coords) must be 4, length is %d' % len(coords)) - */ - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_coords, __pyx_n_s_class); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 417, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = __Pyx_PyString_FormatSafe(__pyx_kp_s_coordinates_as_list_or_tuple_exp, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 417, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_TypeError, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 417, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_Raise(__pyx_t_3, 0, 0, 0); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __PYX_ERR(0, 417, __pyx_L1_error) - - /* "tinyr.pyx":416 - * _Node L - * - * if not isinstance(coords, (list, tuple)): # <<<<<<<<<<<<<< - * raise TypeError('coordinates as list or tuple expected, got %s' % coords.__class__) - * if not len(coords) == 4: - */ - } - - /* "tinyr.pyx":418 - * if not isinstance(coords, (list, tuple)): - * raise TypeError('coordinates as list or tuple expected, got %s' % coords.__class__) - * if not len(coords) == 4: # <<<<<<<<<<<<<< - * raise TypeError('len(coords) must be 4, length is %d' % len(coords)) - * - */ - __pyx_t_5 = PyObject_Length(__pyx_v_coords); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(0, 418, __pyx_L1_error) - __pyx_t_2 = (!(__pyx_t_5 == 4)); - if (unlikely(__pyx_t_2)) { - - /* "tinyr.pyx":419 - * raise TypeError('coordinates as list or tuple expected, got %s' % coords.__class__) - * if not len(coords) == 4: - * raise TypeError('len(coords) must be 4, length is %d' % len(coords)) # <<<<<<<<<<<<<< - * - * cr = _ChildRecord(key) - */ - __pyx_t_5 = PyObject_Length(__pyx_v_coords); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(0, 419, __pyx_L1_error) - __pyx_t_3 = PyInt_FromSsize_t(__pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 419, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_len_coords_must_be_4_length_is_d, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 419, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_TypeError, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 419, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_Raise(__pyx_t_3, 0, 0, 0); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __PYX_ERR(0, 419, __pyx_L1_error) - - /* "tinyr.pyx":418 - * if not isinstance(coords, (list, tuple)): - * raise TypeError('coordinates as list or tuple expected, got %s' % coords.__class__) - * if not len(coords) == 4: # <<<<<<<<<<<<<< - * raise TypeError('len(coords) must be 4, length is %d' % len(coords)) - * - */ - } - - /* "tinyr.pyx":421 - * raise TypeError('len(coords) must be 4, length is %d' % len(coords)) - * - * cr = _ChildRecord(key) # <<<<<<<<<<<<<< - * self.tuple_to_array(coords, cr.coords) - * - */ - __pyx_t_3 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_5tinyr__ChildRecord), __pyx_v_key); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 421, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_v_cr = ((struct __pyx_obj_5tinyr__ChildRecord *)__pyx_t_3); - __pyx_t_3 = 0; - - /* "tinyr.pyx":422 - * - * cr = _ChildRecord(key) - * self.tuple_to_array(coords, cr.coords) # <<<<<<<<<<<<<< - * - * L = self._ChooseLeaf(cr) - */ - __pyx_v_self->tuple_to_array(__pyx_v_coords, __pyx_v_cr->__pyx_base.coords); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 422, __pyx_L1_error) - - /* "tinyr.pyx":424 - * self.tuple_to_array(coords, cr.coords) - * - * L = self._ChooseLeaf(cr) # <<<<<<<<<<<<<< - * - * self.insert_at_node(cr, L) - */ - __pyx_t_3 = ((PyObject *)__pyx_f_5tinyr_5RTree__ChooseLeaf(__pyx_v_self, ((struct __pyx_obj_5tinyr__Record *)__pyx_v_cr))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 424, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_v_L = ((struct __pyx_obj_5tinyr__Node *)__pyx_t_3); - __pyx_t_3 = 0; - - /* "tinyr.pyx":426 - * L = self._ChooseLeaf(cr) - * - * self.insert_at_node(cr, L) # <<<<<<<<<<<<<< - * - * self._node_cnt += 1 - */ - __pyx_t_6 = __pyx_f_5tinyr_5RTree_insert_at_node(__pyx_v_self, ((struct __pyx_obj_5tinyr__Record *)__pyx_v_cr), __pyx_v_L); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 426, __pyx_L1_error) - - /* "tinyr.pyx":428 - * self.insert_at_node(cr, L) - * - * self._node_cnt += 1 # <<<<<<<<<<<<<< - * - * - */ - __pyx_v_self->_node_cnt = (__pyx_v_self->_node_cnt + 1); - - /* "tinyr.pyx":405 - * return RTreeInfo(self) - * - * def insert(self, object key, object coords): # <<<<<<<<<<<<<< - * '''Insert an item. - * - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_AddTraceback("tinyr.RTree.insert", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XDECREF((PyObject *)__pyx_v_cr); - __Pyx_XDECREF((PyObject *)__pyx_v_L); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "tinyr.pyx":431 - * - * - * def search(self, object coords): # <<<<<<<<<<<<<< - * '''Search overlapping items. - * - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_5tinyr_5RTree_19search(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -); /*proto*/ -PyDoc_STRVAR(__pyx_doc_5tinyr_5RTree_18search, "Search overlapping items.\n \n @param coords: list or tuple of four values that make a rectangle\n @return: a list of identifiers whose coordinates overlap with coords\n "); -static PyMethodDef __pyx_mdef_5tinyr_5RTree_19search = {"search", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_5tinyr_5RTree_19search, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_5tinyr_5RTree_18search}; -static PyObject *__pyx_pw_5tinyr_5RTree_19search(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -) { - PyObject *__pyx_v_coords = 0; - #if !CYTHON_METH_FASTCALL - CYTHON_UNUSED Py_ssize_t __pyx_nargs; - #endif - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject* values[1] = {0}; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("search (wrapper)", 0); - #if !CYTHON_METH_FASTCALL - #if CYTHON_ASSUME_SAFE_MACROS - __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); - #else - __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; - #endif - #endif - __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); - { - PyObject **__pyx_pyargnames[] = {&__pyx_n_s_coords,0}; - if (__pyx_kwds) { - Py_ssize_t kw_args; - switch (__pyx_nargs) { - case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); - switch (__pyx_nargs) { - case 0: - if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_coords)) != 0)) { - (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); - kw_args--; - } - else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 431, __pyx_L3_error) - else goto __pyx_L5_argtuple_error; - } - if (unlikely(kw_args > 0)) { - const Py_ssize_t kwd_pos_args = __pyx_nargs; - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "search") < 0)) __PYX_ERR(0, 431, __pyx_L3_error) - } - } else if (unlikely(__pyx_nargs != 1)) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); - } - __pyx_v_coords = values[0]; - } - goto __pyx_L6_skip; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("search", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 431, __pyx_L3_error) - __pyx_L6_skip:; - goto __pyx_L4_argument_unpacking_done; - __pyx_L3_error:; - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); - } - } - __Pyx_AddTraceback("tinyr.RTree.search", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_5tinyr_5RTree_18search(((struct __pyx_obj_5tinyr_RTree *)__pyx_v_self), __pyx_v_coords); - - /* function exit code */ - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); - } - } - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_5tinyr_5RTree_18search(struct __pyx_obj_5tinyr_RTree *__pyx_v_self, PyObject *__pyx_v_coords) { - struct __pyx_obj_5tinyr__Node *__pyx_v_node = 0; - struct __pyx_obj_5tinyr__ChildRecord *__pyx_v_cr = 0; - __pyx_t_5tinyr_Dfloat __pyx_v_coords_a[4]; - PyObject *__pyx_v_leafnodes = 0; - PyObject *__pyx_v_result = 0; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - int __pyx_t_2; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - Py_ssize_t __pyx_t_5; - Py_ssize_t __pyx_t_6; - PyObject *__pyx_t_7 = NULL; - int __pyx_t_8; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("search", 1); - - /* "tinyr.pyx":443 - * list leafnodes, result - * - * if not isinstance(coords, (list, tuple)): # <<<<<<<<<<<<<< - * raise TypeError('coordinates as list or tuple expected, got %s' % coords.__class__) - * - */ - __pyx_t_2 = PyList_Check(__pyx_v_coords); - if (!__pyx_t_2) { - } else { - __pyx_t_1 = __pyx_t_2; - goto __pyx_L4_bool_binop_done; - } - __pyx_t_2 = PyTuple_Check(__pyx_v_coords); - __pyx_t_1 = __pyx_t_2; - __pyx_L4_bool_binop_done:; - __pyx_t_2 = (!__pyx_t_1); - if (unlikely(__pyx_t_2)) { - - /* "tinyr.pyx":444 - * - * if not isinstance(coords, (list, tuple)): - * raise TypeError('coordinates as list or tuple expected, got %s' % coords.__class__) # <<<<<<<<<<<<<< - * - * if len(coords) != 4: - */ - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_coords, __pyx_n_s_class); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 444, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = __Pyx_PyString_FormatSafe(__pyx_kp_s_coordinates_as_list_or_tuple_exp, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 444, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_TypeError, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 444, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_Raise(__pyx_t_3, 0, 0, 0); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __PYX_ERR(0, 444, __pyx_L1_error) - - /* "tinyr.pyx":443 - * list leafnodes, result - * - * if not isinstance(coords, (list, tuple)): # <<<<<<<<<<<<<< - * raise TypeError('coordinates as list or tuple expected, got %s' % coords.__class__) - * - */ - } - - /* "tinyr.pyx":446 - * raise TypeError('coordinates as list or tuple expected, got %s' % coords.__class__) - * - * if len(coords) != 4: # <<<<<<<<<<<<<< - * raise TypeError('len(coords) must be 4, len is %d' % len(coords)) - * - */ - __pyx_t_5 = PyObject_Length(__pyx_v_coords); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(0, 446, __pyx_L1_error) - __pyx_t_2 = (__pyx_t_5 != 4); - if (unlikely(__pyx_t_2)) { - - /* "tinyr.pyx":447 - * - * if len(coords) != 4: - * raise TypeError('len(coords) must be 4, len is %d' % len(coords)) # <<<<<<<<<<<<<< - * - * self.tuple_to_array(coords, coords_a) - */ - __pyx_t_5 = PyObject_Length(__pyx_v_coords); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(0, 447, __pyx_L1_error) - __pyx_t_3 = PyInt_FromSsize_t(__pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 447, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_len_coords_must_be_4_len_is_d, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 447, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_TypeError, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 447, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_Raise(__pyx_t_3, 0, 0, 0); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __PYX_ERR(0, 447, __pyx_L1_error) - - /* "tinyr.pyx":446 - * raise TypeError('coordinates as list or tuple expected, got %s' % coords.__class__) - * - * if len(coords) != 4: # <<<<<<<<<<<<<< - * raise TypeError('len(coords) must be 4, len is %d' % len(coords)) - * - */ - } - - /* "tinyr.pyx":449 - * raise TypeError('len(coords) must be 4, len is %d' % len(coords)) - * - * self.tuple_to_array(coords, coords_a) # <<<<<<<<<<<<<< - * - * leafnodes = self.find_overlapping_leafs(self, coords_a) - */ - __pyx_v_self->tuple_to_array(__pyx_v_coords, __pyx_v_coords_a); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 449, __pyx_L1_error) - - /* "tinyr.pyx":451 - * self.tuple_to_array(coords, coords_a) - * - * leafnodes = self.find_overlapping_leafs(self, coords_a) # <<<<<<<<<<<<<< - * - * result = [] - */ - __pyx_t_3 = __pyx_v_self->find_overlapping_leafs(__pyx_v_self, __pyx_v_coords_a); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 451, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_v_leafnodes = ((PyObject*)__pyx_t_3); - __pyx_t_3 = 0; - - /* "tinyr.pyx":453 - * leafnodes = self.find_overlapping_leafs(self, coords_a) - * - * result = [] # <<<<<<<<<<<<<< - * for node in leafnodes: - * assert node.is_leaf - */ - __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 453, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_v_result = ((PyObject*)__pyx_t_3); - __pyx_t_3 = 0; - - /* "tinyr.pyx":454 - * - * result = [] - * for node in leafnodes: # <<<<<<<<<<<<<< - * assert node.is_leaf - * for cr in node.records: - */ - if (unlikely(__pyx_v_leafnodes == Py_None)) { - PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); - __PYX_ERR(0, 454, __pyx_L1_error) - } - __pyx_t_3 = __pyx_v_leafnodes; __Pyx_INCREF(__pyx_t_3); - __pyx_t_5 = 0; - for (;;) { - { - Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_3); - #if !CYTHON_ASSUME_SAFE_MACROS - if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 454, __pyx_L1_error) - #endif - if (__pyx_t_5 >= __pyx_temp) break; - } - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_4 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_5); __Pyx_INCREF(__pyx_t_4); __pyx_t_5++; if (unlikely((0 < 0))) __PYX_ERR(0, 454, __pyx_L1_error) - #else - __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_3, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 454, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - #endif - if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5tinyr__Node))))) __PYX_ERR(0, 454, __pyx_L1_error) - __Pyx_XDECREF_SET(__pyx_v_node, ((struct __pyx_obj_5tinyr__Node *)__pyx_t_4)); - __pyx_t_4 = 0; - - /* "tinyr.pyx":455 - * result = [] - * for node in leafnodes: - * assert node.is_leaf # <<<<<<<<<<<<<< - * for cr in node.records: - * if cr.overlaps(coords_a): - */ - #ifndef CYTHON_WITHOUT_ASSERTIONS - if (unlikely(__pyx_assertions_enabled())) { - if (unlikely(!__pyx_v_node->is_leaf)) { - __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0); - __PYX_ERR(0, 455, __pyx_L1_error) - } - } - #else - if ((1)); else __PYX_ERR(0, 455, __pyx_L1_error) - #endif - - /* "tinyr.pyx":456 - * for node in leafnodes: - * assert node.is_leaf - * for cr in node.records: # <<<<<<<<<<<<<< - * if cr.overlaps(coords_a): - * result.append(cr.identifier) - */ - if (unlikely(__pyx_v_node->records == Py_None)) { - PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); - __PYX_ERR(0, 456, __pyx_L1_error) - } - __pyx_t_4 = __pyx_v_node->records; __Pyx_INCREF(__pyx_t_4); - __pyx_t_6 = 0; - for (;;) { - { - Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_4); - #if !CYTHON_ASSUME_SAFE_MACROS - if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 456, __pyx_L1_error) - #endif - if (__pyx_t_6 >= __pyx_temp) break; - } - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_7 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_6); __Pyx_INCREF(__pyx_t_7); __pyx_t_6++; if (unlikely((0 < 0))) __PYX_ERR(0, 456, __pyx_L1_error) - #else - __pyx_t_7 = __Pyx_PySequence_ITEM(__pyx_t_4, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 456, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - #endif - if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5tinyr__ChildRecord))))) __PYX_ERR(0, 456, __pyx_L1_error) - __Pyx_XDECREF_SET(__pyx_v_cr, ((struct __pyx_obj_5tinyr__ChildRecord *)__pyx_t_7)); - __pyx_t_7 = 0; - - /* "tinyr.pyx":457 - * assert node.is_leaf - * for cr in node.records: - * if cr.overlaps(coords_a): # <<<<<<<<<<<<<< - * result.append(cr.identifier) - * - */ - __pyx_t_2 = __pyx_f_5tinyr_7_Record_overlaps(((struct __pyx_obj_5tinyr__Record *)__pyx_v_cr), __pyx_v_coords_a); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 457, __pyx_L1_error) - if (__pyx_t_2) { - - /* "tinyr.pyx":458 - * for cr in node.records: - * if cr.overlaps(coords_a): - * result.append(cr.identifier) # <<<<<<<<<<<<<< - * - * return result - */ - __pyx_t_7 = __pyx_v_cr->identifier; - __Pyx_INCREF(__pyx_t_7); - __pyx_t_8 = __Pyx_PyList_Append(__pyx_v_result, __pyx_t_7); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(0, 458, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - - /* "tinyr.pyx":457 - * assert node.is_leaf - * for cr in node.records: - * if cr.overlaps(coords_a): # <<<<<<<<<<<<<< - * result.append(cr.identifier) - * - */ - } - - /* "tinyr.pyx":456 - * for node in leafnodes: - * assert node.is_leaf - * for cr in node.records: # <<<<<<<<<<<<<< - * if cr.overlaps(coords_a): - * result.append(cr.identifier) - */ - } - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - - /* "tinyr.pyx":454 - * - * result = [] - * for node in leafnodes: # <<<<<<<<<<<<<< - * assert node.is_leaf - * for cr in node.records: - */ - } - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - - /* "tinyr.pyx":460 - * result.append(cr.identifier) - * - * return result # <<<<<<<<<<<<<< - * - * def copy(self): - */ - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_v_result); - __pyx_r = __pyx_v_result; - goto __pyx_L0; - - /* "tinyr.pyx":431 - * - * - * def search(self, object coords): # <<<<<<<<<<<<<< - * '''Search overlapping items. - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_7); - __Pyx_AddTraceback("tinyr.RTree.search", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XDECREF((PyObject *)__pyx_v_node); - __Pyx_XDECREF((PyObject *)__pyx_v_cr); - __Pyx_XDECREF(__pyx_v_leafnodes); - __Pyx_XDECREF(__pyx_v_result); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "tinyr.pyx":462 - * return result - * - * def copy(self): # <<<<<<<<<<<<<< - * cdef: - * RTree ret - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_5tinyr_5RTree_21copy(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -); /*proto*/ -static PyMethodDef __pyx_mdef_5tinyr_5RTree_21copy = {"copy", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_5tinyr_5RTree_21copy, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; -static PyObject *__pyx_pw_5tinyr_5RTree_21copy(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -) { - #if !CYTHON_METH_FASTCALL - CYTHON_UNUSED Py_ssize_t __pyx_nargs; - #endif - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("copy (wrapper)", 0); - #if !CYTHON_METH_FASTCALL - #if CYTHON_ASSUME_SAFE_MACROS - __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); - #else - __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; - #endif - #endif - __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); - if (unlikely(__pyx_nargs > 0)) { - __Pyx_RaiseArgtupleInvalid("copy", 1, 0, 0, __pyx_nargs); return NULL;} - if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "copy", 0))) return NULL; - __pyx_r = __pyx_pf_5tinyr_5RTree_20copy(((struct __pyx_obj_5tinyr_RTree *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_5tinyr_5RTree_20copy(struct __pyx_obj_5tinyr_RTree *__pyx_v_self) { - struct __pyx_obj_5tinyr_RTree *__pyx_v_ret = 0; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - __pyx_t_5tinyr_Duint __pyx_t_3; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("copy", 1); - - /* "tinyr.pyx":466 - * RTree ret - * - * ret = RTree(max_cap=self.M_cap, min_cap=self.m_cap) # <<<<<<<<<<<<<< - * ret._leaf_level = self._leaf_level - * ret._node_cnt = self._node_cnt - */ - __pyx_t_1 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 466, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_self->M_cap); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 466, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_max_cap, __pyx_t_2) < 0) __PYX_ERR(0, 466, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_self->m_cap); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 466, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_min_cap, __pyx_t_2) < 0) __PYX_ERR(0, 466, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5tinyr_RTree), __pyx_empty_tuple, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 466, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_v_ret = ((struct __pyx_obj_5tinyr_RTree *)__pyx_t_2); - __pyx_t_2 = 0; - - /* "tinyr.pyx":467 - * - * ret = RTree(max_cap=self.M_cap, min_cap=self.m_cap) - * ret._leaf_level = self._leaf_level # <<<<<<<<<<<<<< - * ret._node_cnt = self._node_cnt - * ret.root = self.root.copy(None) - */ - __pyx_t_3 = __pyx_v_self->_leaf_level; - __pyx_v_ret->_leaf_level = __pyx_t_3; - - /* "tinyr.pyx":468 - * ret = RTree(max_cap=self.M_cap, min_cap=self.m_cap) - * ret._leaf_level = self._leaf_level - * ret._node_cnt = self._node_cnt # <<<<<<<<<<<<<< - * ret.root = self.root.copy(None) - * return ret - */ - __pyx_t_3 = __pyx_v_self->_node_cnt; - __pyx_v_ret->_node_cnt = __pyx_t_3; - - /* "tinyr.pyx":469 - * ret._leaf_level = self._leaf_level - * ret._node_cnt = self._node_cnt - * ret.root = self.root.copy(None) # <<<<<<<<<<<<<< - * return ret - * - */ - __pyx_t_2 = ((PyObject *)((struct __pyx_vtabstruct_5tinyr__Node *)__pyx_v_self->root->__pyx_vtab)->copy(__pyx_v_self->root, ((struct __pyx_obj_5tinyr__Node *)Py_None))); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 469, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_GIVEREF(__pyx_t_2); - __Pyx_GOTREF((PyObject *)__pyx_v_ret->root); - __Pyx_DECREF((PyObject *)__pyx_v_ret->root); - __pyx_v_ret->root = ((struct __pyx_obj_5tinyr__Node *)__pyx_t_2); - __pyx_t_2 = 0; - - /* "tinyr.pyx":470 - * ret._node_cnt = self._node_cnt - * ret.root = self.root.copy(None) - * return ret # <<<<<<<<<<<<<< - * - * def search_surrounding(self, point): - */ - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF((PyObject *)__pyx_v_ret); - __pyx_r = ((PyObject *)__pyx_v_ret); - goto __pyx_L0; - - /* "tinyr.pyx":462 - * return result - * - * def copy(self): # <<<<<<<<<<<<<< - * cdef: - * RTree ret - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_AddTraceback("tinyr.RTree.copy", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XDECREF((PyObject *)__pyx_v_ret); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "tinyr.pyx":472 - * return ret - * - * def search_surrounding(self, point): # <<<<<<<<<<<<<< - * '''Search items that surround a point. - * - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_5tinyr_5RTree_23search_surrounding(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -); /*proto*/ -PyDoc_STRVAR(__pyx_doc_5tinyr_5RTree_22search_surrounding, "Search items that surround a point.\n \n @param item: a point in form (x, y)\n @return: a list of identifiers whose coordinates surround with point\n "); -static PyMethodDef __pyx_mdef_5tinyr_5RTree_23search_surrounding = {"search_surrounding", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_5tinyr_5RTree_23search_surrounding, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_5tinyr_5RTree_22search_surrounding}; -static PyObject *__pyx_pw_5tinyr_5RTree_23search_surrounding(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -) { - PyObject *__pyx_v_point = 0; - #if !CYTHON_METH_FASTCALL - CYTHON_UNUSED Py_ssize_t __pyx_nargs; - #endif - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject* values[1] = {0}; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("search_surrounding (wrapper)", 0); - #if !CYTHON_METH_FASTCALL - #if CYTHON_ASSUME_SAFE_MACROS - __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); - #else - __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; - #endif - #endif - __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); - { - PyObject **__pyx_pyargnames[] = {&__pyx_n_s_point,0}; - if (__pyx_kwds) { - Py_ssize_t kw_args; - switch (__pyx_nargs) { - case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); - switch (__pyx_nargs) { - case 0: - if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_point)) != 0)) { - (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); - kw_args--; - } - else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 472, __pyx_L3_error) - else goto __pyx_L5_argtuple_error; - } - if (unlikely(kw_args > 0)) { - const Py_ssize_t kwd_pos_args = __pyx_nargs; - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "search_surrounding") < 0)) __PYX_ERR(0, 472, __pyx_L3_error) - } - } else if (unlikely(__pyx_nargs != 1)) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); - } - __pyx_v_point = values[0]; - } - goto __pyx_L6_skip; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("search_surrounding", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 472, __pyx_L3_error) - __pyx_L6_skip:; - goto __pyx_L4_argument_unpacking_done; - __pyx_L3_error:; - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); - } - } - __Pyx_AddTraceback("tinyr.RTree.search_surrounding", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_5tinyr_5RTree_22search_surrounding(((struct __pyx_obj_5tinyr_RTree *)__pyx_v_self), __pyx_v_point); - - /* function exit code */ - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); - } - } - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_5tinyr_5RTree_22search_surrounding(struct __pyx_obj_5tinyr_RTree *__pyx_v_self, PyObject *__pyx_v_point) { - struct __pyx_obj_5tinyr__Node *__pyx_v_node = 0; - struct __pyx_obj_5tinyr__ChildRecord *__pyx_v_cr = 0; - __pyx_t_5tinyr_Dfloat __pyx_v_coords_a[4]; - PyObject *__pyx_v_leafnodes = 0; - PyObject *__pyx_v_result = 0; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - int __pyx_t_2; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - Py_ssize_t __pyx_t_5; - Py_ssize_t __pyx_t_6; - PyObject *__pyx_t_7 = NULL; - int __pyx_t_8; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("search_surrounding", 0); - __Pyx_INCREF(__pyx_v_point); - - /* "tinyr.pyx":484 - * list leafnodes, result - * - * if not isinstance(point, (list, tuple)): # <<<<<<<<<<<<<< - * raise TypeError('coordinates as list or tuple expected, got %s' % point.__class__) - * - */ - __pyx_t_2 = PyList_Check(__pyx_v_point); - if (!__pyx_t_2) { - } else { - __pyx_t_1 = __pyx_t_2; - goto __pyx_L4_bool_binop_done; - } - __pyx_t_2 = PyTuple_Check(__pyx_v_point); - __pyx_t_1 = __pyx_t_2; - __pyx_L4_bool_binop_done:; - __pyx_t_2 = (!__pyx_t_1); - if (unlikely(__pyx_t_2)) { - - /* "tinyr.pyx":485 - * - * if not isinstance(point, (list, tuple)): - * raise TypeError('coordinates as list or tuple expected, got %s' % point.__class__) # <<<<<<<<<<<<<< - * - * if len(point) == 2: - */ - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_point, __pyx_n_s_class); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 485, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = __Pyx_PyString_FormatSafe(__pyx_kp_s_coordinates_as_list_or_tuple_exp, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 485, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_TypeError, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 485, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_Raise(__pyx_t_3, 0, 0, 0); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __PYX_ERR(0, 485, __pyx_L1_error) - - /* "tinyr.pyx":484 - * list leafnodes, result - * - * if not isinstance(point, (list, tuple)): # <<<<<<<<<<<<<< - * raise TypeError('coordinates as list or tuple expected, got %s' % point.__class__) - * - */ - } - - /* "tinyr.pyx":487 - * raise TypeError('coordinates as list or tuple expected, got %s' % point.__class__) - * - * if len(point) == 2: # <<<<<<<<<<<<<< - * point = 2 * point - * else: - */ - __pyx_t_5 = PyObject_Length(__pyx_v_point); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(0, 487, __pyx_L1_error) - __pyx_t_2 = (__pyx_t_5 == 2); - if (likely(__pyx_t_2)) { - - /* "tinyr.pyx":488 - * - * if len(point) == 2: - * point = 2 * point # <<<<<<<<<<<<<< - * else: - * raise TypeError('len(point) must be 2, len is %d' % len(point)) - */ - __pyx_t_3 = __Pyx_PyInt_MultiplyCObj(__pyx_int_2, __pyx_v_point, 2, 0, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 488, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF_SET(__pyx_v_point, __pyx_t_3); - __pyx_t_3 = 0; - - /* "tinyr.pyx":487 - * raise TypeError('coordinates as list or tuple expected, got %s' % point.__class__) - * - * if len(point) == 2: # <<<<<<<<<<<<<< - * point = 2 * point - * else: - */ - goto __pyx_L6; - } - - /* "tinyr.pyx":490 - * point = 2 * point - * else: - * raise TypeError('len(point) must be 2, len is %d' % len(point)) # <<<<<<<<<<<<<< - * - * self.tuple_to_array(point, coords_a) - */ - /*else*/ { - __pyx_t_5 = PyObject_Length(__pyx_v_point); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(0, 490, __pyx_L1_error) - __pyx_t_3 = PyInt_FromSsize_t(__pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 490, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_len_point_must_be_2_len_is_d, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 490, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_TypeError, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 490, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_Raise(__pyx_t_3, 0, 0, 0); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __PYX_ERR(0, 490, __pyx_L1_error) - } - __pyx_L6:; - - /* "tinyr.pyx":492 - * raise TypeError('len(point) must be 2, len is %d' % len(point)) - * - * self.tuple_to_array(point, coords_a) # <<<<<<<<<<<<<< - * - * leafnodes = self.find_overlapping_leafs(self, coords_a) - */ - __pyx_v_self->tuple_to_array(__pyx_v_point, __pyx_v_coords_a); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 492, __pyx_L1_error) - - /* "tinyr.pyx":494 - * self.tuple_to_array(point, coords_a) - * - * leafnodes = self.find_overlapping_leafs(self, coords_a) # <<<<<<<<<<<<<< - * - * result = [] - */ - __pyx_t_3 = __pyx_v_self->find_overlapping_leafs(__pyx_v_self, __pyx_v_coords_a); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 494, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_v_leafnodes = ((PyObject*)__pyx_t_3); - __pyx_t_3 = 0; - - /* "tinyr.pyx":496 - * leafnodes = self.find_overlapping_leafs(self, coords_a) - * - * result = [] # <<<<<<<<<<<<<< - * for node in leafnodes: - * assert node.is_leaf - */ - __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 496, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_v_result = ((PyObject*)__pyx_t_3); - __pyx_t_3 = 0; - - /* "tinyr.pyx":497 - * - * result = [] - * for node in leafnodes: # <<<<<<<<<<<<<< - * assert node.is_leaf - * for cr in node.records: - */ - if (unlikely(__pyx_v_leafnodes == Py_None)) { - PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); - __PYX_ERR(0, 497, __pyx_L1_error) - } - __pyx_t_3 = __pyx_v_leafnodes; __Pyx_INCREF(__pyx_t_3); - __pyx_t_5 = 0; - for (;;) { - { - Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_3); - #if !CYTHON_ASSUME_SAFE_MACROS - if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 497, __pyx_L1_error) - #endif - if (__pyx_t_5 >= __pyx_temp) break; - } - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_4 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_5); __Pyx_INCREF(__pyx_t_4); __pyx_t_5++; if (unlikely((0 < 0))) __PYX_ERR(0, 497, __pyx_L1_error) - #else - __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_3, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 497, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - #endif - if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5tinyr__Node))))) __PYX_ERR(0, 497, __pyx_L1_error) - __Pyx_XDECREF_SET(__pyx_v_node, ((struct __pyx_obj_5tinyr__Node *)__pyx_t_4)); - __pyx_t_4 = 0; - - /* "tinyr.pyx":498 - * result = [] - * for node in leafnodes: - * assert node.is_leaf # <<<<<<<<<<<<<< - * for cr in node.records: - * if cr.overlaps(coords_a): - */ - #ifndef CYTHON_WITHOUT_ASSERTIONS - if (unlikely(__pyx_assertions_enabled())) { - if (unlikely(!__pyx_v_node->is_leaf)) { - __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0); - __PYX_ERR(0, 498, __pyx_L1_error) - } - } - #else - if ((1)); else __PYX_ERR(0, 498, __pyx_L1_error) - #endif - - /* "tinyr.pyx":499 - * for node in leafnodes: - * assert node.is_leaf - * for cr in node.records: # <<<<<<<<<<<<<< - * if cr.overlaps(coords_a): - * result.append(cr.identifier) - */ - if (unlikely(__pyx_v_node->records == Py_None)) { - PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); - __PYX_ERR(0, 499, __pyx_L1_error) - } - __pyx_t_4 = __pyx_v_node->records; __Pyx_INCREF(__pyx_t_4); - __pyx_t_6 = 0; - for (;;) { - { - Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_4); - #if !CYTHON_ASSUME_SAFE_MACROS - if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 499, __pyx_L1_error) - #endif - if (__pyx_t_6 >= __pyx_temp) break; - } - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_7 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_6); __Pyx_INCREF(__pyx_t_7); __pyx_t_6++; if (unlikely((0 < 0))) __PYX_ERR(0, 499, __pyx_L1_error) - #else - __pyx_t_7 = __Pyx_PySequence_ITEM(__pyx_t_4, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 499, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - #endif - if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5tinyr__ChildRecord))))) __PYX_ERR(0, 499, __pyx_L1_error) - __Pyx_XDECREF_SET(__pyx_v_cr, ((struct __pyx_obj_5tinyr__ChildRecord *)__pyx_t_7)); - __pyx_t_7 = 0; - - /* "tinyr.pyx":500 - * assert node.is_leaf - * for cr in node.records: - * if cr.overlaps(coords_a): # <<<<<<<<<<<<<< - * result.append(cr.identifier) - * - */ - __pyx_t_2 = __pyx_f_5tinyr_7_Record_overlaps(((struct __pyx_obj_5tinyr__Record *)__pyx_v_cr), __pyx_v_coords_a); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 500, __pyx_L1_error) - if (__pyx_t_2) { - - /* "tinyr.pyx":501 - * for cr in node.records: - * if cr.overlaps(coords_a): - * result.append(cr.identifier) # <<<<<<<<<<<<<< - * - * return result - */ - __pyx_t_7 = __pyx_v_cr->identifier; - __Pyx_INCREF(__pyx_t_7); - __pyx_t_8 = __Pyx_PyList_Append(__pyx_v_result, __pyx_t_7); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(0, 501, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - - /* "tinyr.pyx":500 - * assert node.is_leaf - * for cr in node.records: - * if cr.overlaps(coords_a): # <<<<<<<<<<<<<< - * result.append(cr.identifier) - * - */ - } - - /* "tinyr.pyx":499 - * for node in leafnodes: - * assert node.is_leaf - * for cr in node.records: # <<<<<<<<<<<<<< - * if cr.overlaps(coords_a): - * result.append(cr.identifier) - */ - } - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - - /* "tinyr.pyx":497 - * - * result = [] - * for node in leafnodes: # <<<<<<<<<<<<<< - * assert node.is_leaf - * for cr in node.records: - */ - } - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - - /* "tinyr.pyx":503 - * result.append(cr.identifier) - * - * return result # <<<<<<<<<<<<<< - * - * cdef inline int insert_at_node(self, _Record r, _Node L) except -1: - */ - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_v_result); - __pyx_r = __pyx_v_result; - goto __pyx_L0; - - /* "tinyr.pyx":472 - * return ret - * - * def search_surrounding(self, point): # <<<<<<<<<<<<<< - * '''Search items that surround a point. - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_7); - __Pyx_AddTraceback("tinyr.RTree.search_surrounding", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XDECREF((PyObject *)__pyx_v_node); - __Pyx_XDECREF((PyObject *)__pyx_v_cr); - __Pyx_XDECREF(__pyx_v_leafnodes); - __Pyx_XDECREF(__pyx_v_result); - __Pyx_XDECREF(__pyx_v_point); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "tinyr.pyx":505 - * return result - * - * cdef inline int insert_at_node(self, _Record r, _Node L) except -1: # <<<<<<<<<<<<<< - * cdef: - * _Node LL = None - */ - -static CYTHON_INLINE int __pyx_f_5tinyr_5RTree_insert_at_node(struct __pyx_obj_5tinyr_RTree *__pyx_v_self, struct __pyx_obj_5tinyr__Record *__pyx_v_r, struct __pyx_obj_5tinyr__Node *__pyx_v_L) { - struct __pyx_obj_5tinyr__Node *__pyx_v_LL = 0; - int __pyx_r; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - PyObject *__pyx_t_2 = NULL; - int __pyx_t_3; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("insert_at_node", 0); - __Pyx_INCREF((PyObject *)__pyx_v_L); - - /* "tinyr.pyx":507 - * cdef inline int insert_at_node(self, _Record r, _Node L) except -1: - * cdef: - * _Node LL = None # <<<<<<<<<<<<<< - * - * if self.is_full(L): - */ - __Pyx_INCREF(Py_None); - __pyx_v_LL = ((struct __pyx_obj_5tinyr__Node *)Py_None); - - /* "tinyr.pyx":509 - * _Node LL = None - * - * if self.is_full(L): # <<<<<<<<<<<<<< - * LL = self.SplitNode(L, r) - * else: - */ - __pyx_t_1 = __pyx_f_5tinyr_5RTree_is_full(__pyx_v_self, __pyx_v_L); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 509, __pyx_L1_error) - if (__pyx_t_1) { - - /* "tinyr.pyx":510 - * - * if self.is_full(L): - * LL = self.SplitNode(L, r) # <<<<<<<<<<<<<< - * else: - * L.records.append(r) - */ - __pyx_t_2 = ((PyObject *)((struct __pyx_vtabstruct_5tinyr_RTree *)__pyx_v_self->__pyx_vtab)->SplitNode(__pyx_v_self, __pyx_v_L, __pyx_v_r)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 510, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF_SET(__pyx_v_LL, ((struct __pyx_obj_5tinyr__Node *)__pyx_t_2)); - __pyx_t_2 = 0; - - /* "tinyr.pyx":509 - * _Node LL = None - * - * if self.is_full(L): # <<<<<<<<<<<<<< - * LL = self.SplitNode(L, r) - * else: - */ - goto __pyx_L3; - } - - /* "tinyr.pyx":512 - * LL = self.SplitNode(L, r) - * else: - * L.records.append(r) # <<<<<<<<<<<<<< - * - * L, LL = self._AdjustTree(L, LL) - */ - /*else*/ { - if (unlikely(__pyx_v_L->records == Py_None)) { - PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append"); - __PYX_ERR(0, 512, __pyx_L1_error) - } - __pyx_t_3 = __Pyx_PyList_Append(__pyx_v_L->records, ((PyObject *)__pyx_v_r)); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 512, __pyx_L1_error) - } - __pyx_L3:; - - /* "tinyr.pyx":514 - * L.records.append(r) - * - * L, LL = self._AdjustTree(L, LL) # <<<<<<<<<<<<<< - * - * if LL != None: - */ - __pyx_t_2 = __pyx_f_5tinyr_5RTree__AdjustTree(__pyx_v_self, __pyx_v_L, __pyx_v_LL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 514, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (likely(__pyx_t_2 != Py_None)) { - PyObject* sequence = __pyx_t_2; - Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); - if (unlikely(size != 2)) { - if (size > 2) __Pyx_RaiseTooManyValuesError(2); - else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); - __PYX_ERR(0, 514, __pyx_L1_error) - } - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_4 = PyTuple_GET_ITEM(sequence, 0); - __pyx_t_5 = PyTuple_GET_ITEM(sequence, 1); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(__pyx_t_5); - #else - __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 514, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 514, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - #endif - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - } else { - __Pyx_RaiseNoneNotIterableError(); __PYX_ERR(0, 514, __pyx_L1_error) - } - if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5tinyr__Node))))) __PYX_ERR(0, 514, __pyx_L1_error) - if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5tinyr__Node))))) __PYX_ERR(0, 514, __pyx_L1_error) - __Pyx_DECREF_SET(__pyx_v_L, ((struct __pyx_obj_5tinyr__Node *)__pyx_t_4)); - __pyx_t_4 = 0; - __Pyx_DECREF_SET(__pyx_v_LL, ((struct __pyx_obj_5tinyr__Node *)__pyx_t_5)); - __pyx_t_5 = 0; - - /* "tinyr.pyx":516 - * L, LL = self._AdjustTree(L, LL) - * - * if LL != None: # <<<<<<<<<<<<<< - * self.root = _Node(None) - * self.root.addChild(L) - */ - __pyx_t_2 = PyObject_RichCompare(((PyObject *)__pyx_v_LL), Py_None, Py_NE); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 516, __pyx_L1_error) - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 516, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - if (__pyx_t_1) { - - /* "tinyr.pyx":517 - * - * if LL != None: - * self.root = _Node(None) # <<<<<<<<<<<<<< - * self.root.addChild(L) - * self.root.addChild(LL) - */ - __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5tinyr__Node), __pyx_tuple_, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 517, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_GIVEREF(__pyx_t_2); - __Pyx_GOTREF((PyObject *)__pyx_v_self->root); - __Pyx_DECREF((PyObject *)__pyx_v_self->root); - __pyx_v_self->root = ((struct __pyx_obj_5tinyr__Node *)__pyx_t_2); - __pyx_t_2 = 0; - - /* "tinyr.pyx":518 - * if LL != None: - * self.root = _Node(None) - * self.root.addChild(L) # <<<<<<<<<<<<<< - * self.root.addChild(LL) - * self._leaf_level += 1 - */ - ((struct __pyx_vtabstruct_5tinyr__Node *)__pyx_v_self->root->__pyx_vtab)->addChild(__pyx_v_self->root, __pyx_v_L); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 518, __pyx_L1_error) - - /* "tinyr.pyx":519 - * self.root = _Node(None) - * self.root.addChild(L) - * self.root.addChild(LL) # <<<<<<<<<<<<<< - * self._leaf_level += 1 - * - */ - ((struct __pyx_vtabstruct_5tinyr__Node *)__pyx_v_self->root->__pyx_vtab)->addChild(__pyx_v_self->root, __pyx_v_LL); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 519, __pyx_L1_error) - - /* "tinyr.pyx":520 - * self.root.addChild(L) - * self.root.addChild(LL) - * self._leaf_level += 1 # <<<<<<<<<<<<<< - * - * return 0 - */ - __pyx_v_self->_leaf_level = (__pyx_v_self->_leaf_level + 1); - - /* "tinyr.pyx":516 - * L, LL = self._AdjustTree(L, LL) - * - * if LL != None: # <<<<<<<<<<<<<< - * self.root = _Node(None) - * self.root.addChild(L) - */ - } - - /* "tinyr.pyx":522 - * self._leaf_level += 1 - * - * return 0 # <<<<<<<<<<<<<< - * - * def remove(self, identifier, coords): - */ - __pyx_r = 0; - goto __pyx_L0; - - /* "tinyr.pyx":505 - * return result - * - * cdef inline int insert_at_node(self, _Record r, _Node L) except -1: # <<<<<<<<<<<<<< - * cdef: - * _Node LL = None - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_AddTraceback("tinyr.RTree.insert_at_node", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = -1; - __pyx_L0:; - __Pyx_XDECREF((PyObject *)__pyx_v_LL); - __Pyx_XDECREF((PyObject *)__pyx_v_L); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "tinyr.pyx":524 - * return 0 - * - * def remove(self, identifier, coords): # <<<<<<<<<<<<<< - * '''Delete an item - * - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_5tinyr_5RTree_25remove(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -); /*proto*/ -PyDoc_STRVAR(__pyx_doc_5tinyr_5RTree_24remove, "Delete an item\n \n @param identifier: the item that should be removed\n @param coords: the coordinates of item\n "); -static PyMethodDef __pyx_mdef_5tinyr_5RTree_25remove = {"remove", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_5tinyr_5RTree_25remove, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_5tinyr_5RTree_24remove}; -static PyObject *__pyx_pw_5tinyr_5RTree_25remove(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -) { - PyObject *__pyx_v_identifier = 0; - PyObject *__pyx_v_coords = 0; - #if !CYTHON_METH_FASTCALL - CYTHON_UNUSED Py_ssize_t __pyx_nargs; - #endif - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject* values[2] = {0,0}; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("remove (wrapper)", 0); - #if !CYTHON_METH_FASTCALL - #if CYTHON_ASSUME_SAFE_MACROS - __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); - #else - __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; - #endif - #endif - __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); - { - PyObject **__pyx_pyargnames[] = {&__pyx_n_s_identifier,&__pyx_n_s_coords,0}; - if (__pyx_kwds) { - Py_ssize_t kw_args; - switch (__pyx_nargs) { - case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); - switch (__pyx_nargs) { - case 0: - if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_identifier)) != 0)) { - (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); - kw_args--; - } - else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 524, __pyx_L3_error) - else goto __pyx_L5_argtuple_error; - CYTHON_FALLTHROUGH; - case 1: - if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_coords)) != 0)) { - (void)__Pyx_Arg_NewRef_FASTCALL(values[1]); - kw_args--; - } - else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 524, __pyx_L3_error) - else { - __Pyx_RaiseArgtupleInvalid("remove", 1, 2, 2, 1); __PYX_ERR(0, 524, __pyx_L3_error) - } - } - if (unlikely(kw_args > 0)) { - const Py_ssize_t kwd_pos_args = __pyx_nargs; - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "remove") < 0)) __PYX_ERR(0, 524, __pyx_L3_error) - } - } else if (unlikely(__pyx_nargs != 2)) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); - values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); - } - __pyx_v_identifier = values[0]; - __pyx_v_coords = values[1]; - } - goto __pyx_L6_skip; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("remove", 1, 2, 2, __pyx_nargs); __PYX_ERR(0, 524, __pyx_L3_error) - __pyx_L6_skip:; - goto __pyx_L4_argument_unpacking_done; - __pyx_L3_error:; - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); - } - } - __Pyx_AddTraceback("tinyr.RTree.remove", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_5tinyr_5RTree_24remove(((struct __pyx_obj_5tinyr_RTree *)__pyx_v_self), __pyx_v_identifier, __pyx_v_coords); - - /* function exit code */ - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); - } - } - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_5tinyr_5RTree_24remove(struct __pyx_obj_5tinyr_RTree *__pyx_v_self, PyObject *__pyx_v_identifier, PyObject *__pyx_v_coords) { - struct __pyx_obj_5tinyr__Node *__pyx_v_leaf = 0; - __pyx_t_5tinyr_Dfloat __pyx_v_coords_a[4]; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - int __pyx_t_2; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - Py_ssize_t __pyx_t_5; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("remove", 1); - - /* "tinyr.pyx":534 - * Dfloat coords_a[4] - * - * if not isinstance(coords, (list, tuple)): # <<<<<<<<<<<<<< - * raise TypeError('coordinates as list or tuple expected, got %s' % coords.__class__) - * if not len(coords) == 4: - */ - __pyx_t_2 = PyList_Check(__pyx_v_coords); - if (!__pyx_t_2) { - } else { - __pyx_t_1 = __pyx_t_2; - goto __pyx_L4_bool_binop_done; - } - __pyx_t_2 = PyTuple_Check(__pyx_v_coords); - __pyx_t_1 = __pyx_t_2; - __pyx_L4_bool_binop_done:; - __pyx_t_2 = (!__pyx_t_1); - if (unlikely(__pyx_t_2)) { - - /* "tinyr.pyx":535 - * - * if not isinstance(coords, (list, tuple)): - * raise TypeError('coordinates as list or tuple expected, got %s' % coords.__class__) # <<<<<<<<<<<<<< - * if not len(coords) == 4: - * raise TypeError('len(coords) must be 4, len is %d' % len(coords)) - */ - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_coords, __pyx_n_s_class); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 535, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = __Pyx_PyString_FormatSafe(__pyx_kp_s_coordinates_as_list_or_tuple_exp, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 535, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_TypeError, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 535, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_Raise(__pyx_t_3, 0, 0, 0); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __PYX_ERR(0, 535, __pyx_L1_error) - - /* "tinyr.pyx":534 - * Dfloat coords_a[4] - * - * if not isinstance(coords, (list, tuple)): # <<<<<<<<<<<<<< - * raise TypeError('coordinates as list or tuple expected, got %s' % coords.__class__) - * if not len(coords) == 4: - */ - } - - /* "tinyr.pyx":536 - * if not isinstance(coords, (list, tuple)): - * raise TypeError('coordinates as list or tuple expected, got %s' % coords.__class__) - * if not len(coords) == 4: # <<<<<<<<<<<<<< - * raise TypeError('len(coords) must be 4, len is %d' % len(coords)) - * - */ - __pyx_t_5 = PyObject_Length(__pyx_v_coords); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(0, 536, __pyx_L1_error) - __pyx_t_2 = (!(__pyx_t_5 == 4)); - if (unlikely(__pyx_t_2)) { - - /* "tinyr.pyx":537 - * raise TypeError('coordinates as list or tuple expected, got %s' % coords.__class__) - * if not len(coords) == 4: - * raise TypeError('len(coords) must be 4, len is %d' % len(coords)) # <<<<<<<<<<<<<< - * - * self.tuple_to_array(coords, coords_a) - */ - __pyx_t_5 = PyObject_Length(__pyx_v_coords); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(0, 537, __pyx_L1_error) - __pyx_t_3 = PyInt_FromSsize_t(__pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 537, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_len_coords_must_be_4_len_is_d, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 537, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_TypeError, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 537, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_Raise(__pyx_t_3, 0, 0, 0); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __PYX_ERR(0, 537, __pyx_L1_error) - - /* "tinyr.pyx":536 - * if not isinstance(coords, (list, tuple)): - * raise TypeError('coordinates as list or tuple expected, got %s' % coords.__class__) - * if not len(coords) == 4: # <<<<<<<<<<<<<< - * raise TypeError('len(coords) must be 4, len is %d' % len(coords)) - * - */ - } - - /* "tinyr.pyx":539 - * raise TypeError('len(coords) must be 4, len is %d' % len(coords)) - * - * self.tuple_to_array(coords, coords_a) # <<<<<<<<<<<<<< - * - * leaf = self.FindLeaf_and_remove(identifier, coords_a) - */ - __pyx_v_self->tuple_to_array(__pyx_v_coords, __pyx_v_coords_a); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 539, __pyx_L1_error) - - /* "tinyr.pyx":541 - * self.tuple_to_array(coords, coords_a) - * - * leaf = self.FindLeaf_and_remove(identifier, coords_a) # <<<<<<<<<<<<<< - * - * if leaf is None: - */ - __pyx_t_3 = ((PyObject *)__pyx_f_5tinyr_5RTree_FindLeaf_and_remove(__pyx_v_self, __pyx_v_identifier, __pyx_v_coords_a)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 541, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_v_leaf = ((struct __pyx_obj_5tinyr__Node *)__pyx_t_3); - __pyx_t_3 = 0; - - /* "tinyr.pyx":543 - * leaf = self.FindLeaf_and_remove(identifier, coords_a) - * - * if leaf is None: # <<<<<<<<<<<<<< - * raise KeyError() - * - */ - __pyx_t_2 = (((PyObject *)__pyx_v_leaf) == Py_None); - if (unlikely(__pyx_t_2)) { - - /* "tinyr.pyx":544 - * - * if leaf is None: - * raise KeyError() # <<<<<<<<<<<<<< - * - * self.after_remove(leaf) - */ - __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_builtin_KeyError); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 544, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_Raise(__pyx_t_3, 0, 0, 0); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __PYX_ERR(0, 544, __pyx_L1_error) - - /* "tinyr.pyx":543 - * leaf = self.FindLeaf_and_remove(identifier, coords_a) - * - * if leaf is None: # <<<<<<<<<<<<<< - * raise KeyError() - * - */ - } - - /* "tinyr.pyx":546 - * raise KeyError() - * - * self.after_remove(leaf) # <<<<<<<<<<<<<< - * - * self._node_cnt -= 1 - */ - __pyx_f_5tinyr_5RTree_after_remove(__pyx_v_self, __pyx_v_leaf); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 546, __pyx_L1_error) - - /* "tinyr.pyx":548 - * self.after_remove(leaf) - * - * self._node_cnt -= 1 # <<<<<<<<<<<<<< - * - * cdef inline void after_remove(self, _Node node): - */ - __pyx_v_self->_node_cnt = (__pyx_v_self->_node_cnt - 1); - - /* "tinyr.pyx":524 - * return 0 - * - * def remove(self, identifier, coords): # <<<<<<<<<<<<<< - * '''Delete an item - * - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_AddTraceback("tinyr.RTree.remove", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XDECREF((PyObject *)__pyx_v_leaf); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "tinyr.pyx":550 - * self._node_cnt -= 1 - * - * cdef inline void after_remove(self, _Node node): # <<<<<<<<<<<<<< - * self.CondenseTree(node) - * if not self.root.is_leaf and len(self.root.records) == 1: - */ - -static CYTHON_INLINE void __pyx_f_5tinyr_5RTree_after_remove(struct __pyx_obj_5tinyr_RTree *__pyx_v_self, struct __pyx_obj_5tinyr__Node *__pyx_v_node) { - __Pyx_RefNannyDeclarations - int __pyx_t_1; - int __pyx_t_2; - int __pyx_t_3; - PyObject *__pyx_t_4 = NULL; - Py_ssize_t __pyx_t_5; - PyObject *__pyx_t_6 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("after_remove", 1); - - /* "tinyr.pyx":551 - * - * cdef inline void after_remove(self, _Node node): - * self.CondenseTree(node) # <<<<<<<<<<<<<< - * if not self.root.is_leaf and len(self.root.records) == 1: - * self.root = (<_InnerRecord>self.root.records.pop()).child - */ - __pyx_t_1 = __pyx_f_5tinyr_5RTree_CondenseTree(__pyx_v_self, __pyx_v_node); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 551, __pyx_L1_error) - - /* "tinyr.pyx":552 - * cdef inline void after_remove(self, _Node node): - * self.CondenseTree(node) - * if not self.root.is_leaf and len(self.root.records) == 1: # <<<<<<<<<<<<<< - * self.root = (<_InnerRecord>self.root.records.pop()).child - * self._leaf_level -= 1 - */ - __pyx_t_3 = (!__pyx_v_self->root->is_leaf); - if (__pyx_t_3) { - } else { - __pyx_t_2 = __pyx_t_3; - goto __pyx_L4_bool_binop_done; - } - __pyx_t_4 = __pyx_v_self->root->records; - __Pyx_INCREF(__pyx_t_4); - if (unlikely(__pyx_t_4 == Py_None)) { - PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); - __PYX_ERR(0, 552, __pyx_L1_error) - } - __pyx_t_5 = __Pyx_PyList_GET_SIZE(__pyx_t_4); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(0, 552, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_3 = (__pyx_t_5 == 1); - __pyx_t_2 = __pyx_t_3; - __pyx_L4_bool_binop_done:; - if (__pyx_t_2) { - - /* "tinyr.pyx":553 - * self.CondenseTree(node) - * if not self.root.is_leaf and len(self.root.records) == 1: - * self.root = (<_InnerRecord>self.root.records.pop()).child # <<<<<<<<<<<<<< - * self._leaf_level -= 1 - * - */ - if (unlikely(__pyx_v_self->root->records == Py_None)) { - PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "pop"); - __PYX_ERR(0, 553, __pyx_L1_error) - } - __pyx_t_4 = __Pyx_PyList_Pop(__pyx_v_self->root->records); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 553, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_6 = ((PyObject *)((struct __pyx_obj_5tinyr__InnerRecord *)__pyx_t_4)->child); - __Pyx_INCREF(__pyx_t_6); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GIVEREF(__pyx_t_6); - __Pyx_GOTREF((PyObject *)__pyx_v_self->root); - __Pyx_DECREF((PyObject *)__pyx_v_self->root); - __pyx_v_self->root = ((struct __pyx_obj_5tinyr__Node *)__pyx_t_6); - __pyx_t_6 = 0; - - /* "tinyr.pyx":554 - * if not self.root.is_leaf and len(self.root.records) == 1: - * self.root = (<_InnerRecord>self.root.records.pop()).child - * self._leaf_level -= 1 # <<<<<<<<<<<<<< - * - * cdef inline _Node FindLeaf_and_remove(self, object identifier, Dfloat *coords): - */ - __pyx_v_self->_leaf_level = (__pyx_v_self->_leaf_level - 1); - - /* "tinyr.pyx":552 - * cdef inline void after_remove(self, _Node node): - * self.CondenseTree(node) - * if not self.root.is_leaf and len(self.root.records) == 1: # <<<<<<<<<<<<<< - * self.root = (<_InnerRecord>self.root.records.pop()).child - * self._leaf_level -= 1 - */ - } - - /* "tinyr.pyx":550 - * self._node_cnt -= 1 - * - * cdef inline void after_remove(self, _Node node): # <<<<<<<<<<<<<< - * self.CondenseTree(node) - * if not self.root.is_leaf and len(self.root.records) == 1: - */ - - /* function exit code */ - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_6); - __Pyx_AddTraceback("tinyr.RTree.after_remove", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_L0:; - __Pyx_RefNannyFinishContext(); -} - -/* "tinyr.pyx":556 - * self._leaf_level -= 1 - * - * cdef inline _Node FindLeaf_and_remove(self, object identifier, Dfloat *coords): # <<<<<<<<<<<<<< - * # A bit different that in spec: we find overlapping leaf nodes with the - * # method the user wants to find it (recursive or iterative). Spec only - */ - -static CYTHON_INLINE struct __pyx_obj_5tinyr__Node *__pyx_f_5tinyr_5RTree_FindLeaf_and_remove(struct __pyx_obj_5tinyr_RTree *__pyx_v_self, PyObject *__pyx_v_identifier, __pyx_t_5tinyr_Dfloat *__pyx_v_coords) { - PyObject *__pyx_v_leafs = 0; - struct __pyx_obj_5tinyr__Node *__pyx_v_node = 0; - struct __pyx_obj_5tinyr__ChildRecord *__pyx_v_rec = 0; - struct __pyx_obj_5tinyr__Node *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - Py_ssize_t __pyx_t_2; - PyObject *__pyx_t_3 = NULL; - Py_ssize_t __pyx_t_4; - PyObject *__pyx_t_5 = NULL; - int __pyx_t_6; - int __pyx_t_7; - PyObject *__pyx_t_8 = NULL; - PyObject *__pyx_t_9 = NULL; - int __pyx_t_10; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("FindLeaf_and_remove", 1); - - /* "tinyr.pyx":566 - * _ChildRecord rec - * - * leafs = self.find_overlapping_leafs(self, coords) # <<<<<<<<<<<<<< - * for node in leafs: - * assert node.is_leaf - */ - __pyx_t_1 = __pyx_v_self->find_overlapping_leafs(__pyx_v_self, __pyx_v_coords); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 566, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_v_leafs = ((PyObject*)__pyx_t_1); - __pyx_t_1 = 0; - - /* "tinyr.pyx":567 - * - * leafs = self.find_overlapping_leafs(self, coords) - * for node in leafs: # <<<<<<<<<<<<<< - * assert node.is_leaf - * for rec in node.records: - */ - if (unlikely(__pyx_v_leafs == Py_None)) { - PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); - __PYX_ERR(0, 567, __pyx_L1_error) - } - __pyx_t_1 = __pyx_v_leafs; __Pyx_INCREF(__pyx_t_1); - __pyx_t_2 = 0; - for (;;) { - { - Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1); - #if !CYTHON_ASSUME_SAFE_MACROS - if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 567, __pyx_L1_error) - #endif - if (__pyx_t_2 >= __pyx_temp) break; - } - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_3 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_3); __pyx_t_2++; if (unlikely((0 < 0))) __PYX_ERR(0, 567, __pyx_L1_error) - #else - __pyx_t_3 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 567, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - #endif - if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5tinyr__Node))))) __PYX_ERR(0, 567, __pyx_L1_error) - __Pyx_XDECREF_SET(__pyx_v_node, ((struct __pyx_obj_5tinyr__Node *)__pyx_t_3)); - __pyx_t_3 = 0; - - /* "tinyr.pyx":568 - * leafs = self.find_overlapping_leafs(self, coords) - * for node in leafs: - * assert node.is_leaf # <<<<<<<<<<<<<< - * for rec in node.records: - * if rec.identifier == identifier and rec.overlaps(coords): - */ - #ifndef CYTHON_WITHOUT_ASSERTIONS - if (unlikely(__pyx_assertions_enabled())) { - if (unlikely(!__pyx_v_node->is_leaf)) { - __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0); - __PYX_ERR(0, 568, __pyx_L1_error) - } - } - #else - if ((1)); else __PYX_ERR(0, 568, __pyx_L1_error) - #endif - - /* "tinyr.pyx":569 - * for node in leafs: - * assert node.is_leaf - * for rec in node.records: # <<<<<<<<<<<<<< - * if rec.identifier == identifier and rec.overlaps(coords): - * node.records.remove(rec) # D2 - */ - if (unlikely(__pyx_v_node->records == Py_None)) { - PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); - __PYX_ERR(0, 569, __pyx_L1_error) - } - __pyx_t_3 = __pyx_v_node->records; __Pyx_INCREF(__pyx_t_3); - __pyx_t_4 = 0; - for (;;) { - { - Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_3); - #if !CYTHON_ASSUME_SAFE_MACROS - if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 569, __pyx_L1_error) - #endif - if (__pyx_t_4 >= __pyx_temp) break; - } - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_5 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_5); __pyx_t_4++; if (unlikely((0 < 0))) __PYX_ERR(0, 569, __pyx_L1_error) - #else - __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 569, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - #endif - if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5tinyr__ChildRecord))))) __PYX_ERR(0, 569, __pyx_L1_error) - __Pyx_XDECREF_SET(__pyx_v_rec, ((struct __pyx_obj_5tinyr__ChildRecord *)__pyx_t_5)); - __pyx_t_5 = 0; - - /* "tinyr.pyx":570 - * assert node.is_leaf - * for rec in node.records: - * if rec.identifier == identifier and rec.overlaps(coords): # <<<<<<<<<<<<<< - * node.records.remove(rec) # D2 - * return node - */ - __pyx_t_5 = PyObject_RichCompare(__pyx_v_rec->identifier, __pyx_v_identifier, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 570, __pyx_L1_error) - __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 570, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (__pyx_t_7) { - } else { - __pyx_t_6 = __pyx_t_7; - goto __pyx_L8_bool_binop_done; - } - __pyx_t_7 = __pyx_f_5tinyr_7_Record_overlaps(((struct __pyx_obj_5tinyr__Record *)__pyx_v_rec), __pyx_v_coords); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 570, __pyx_L1_error) - __pyx_t_6 = __pyx_t_7; - __pyx_L8_bool_binop_done:; - if (__pyx_t_6) { - - /* "tinyr.pyx":571 - * for rec in node.records: - * if rec.identifier == identifier and rec.overlaps(coords): - * node.records.remove(rec) # D2 # <<<<<<<<<<<<<< - * return node - * - */ - __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_node->records, __pyx_n_s_remove); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 571, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - __pyx_t_9 = NULL; - __pyx_t_10 = 0; - #if CYTHON_UNPACK_METHODS - if (likely(PyMethod_Check(__pyx_t_8))) { - __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_8); - if (likely(__pyx_t_9)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); - __Pyx_INCREF(__pyx_t_9); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_8, function); - __pyx_t_10 = 1; - } - } - #endif - { - PyObject *__pyx_callargs[2] = {__pyx_t_9, ((PyObject *)__pyx_v_rec)}; - __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+1-__pyx_t_10, 1+__pyx_t_10); - __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; - if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 571, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - } - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - - /* "tinyr.pyx":572 - * if rec.identifier == identifier and rec.overlaps(coords): - * node.records.remove(rec) # D2 - * return node # <<<<<<<<<<<<<< - * - * return None - */ - __Pyx_XDECREF((PyObject *)__pyx_r); - __Pyx_INCREF((PyObject *)__pyx_v_node); - __pyx_r = __pyx_v_node; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - goto __pyx_L0; - - /* "tinyr.pyx":570 - * assert node.is_leaf - * for rec in node.records: - * if rec.identifier == identifier and rec.overlaps(coords): # <<<<<<<<<<<<<< - * node.records.remove(rec) # D2 - * return node - */ - } - - /* "tinyr.pyx":569 - * for node in leafs: - * assert node.is_leaf - * for rec in node.records: # <<<<<<<<<<<<<< - * if rec.identifier == identifier and rec.overlaps(coords): - * node.records.remove(rec) # D2 - */ - } - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - - /* "tinyr.pyx":567 - * - * leafs = self.find_overlapping_leafs(self, coords) - * for node in leafs: # <<<<<<<<<<<<<< - * assert node.is_leaf - * for rec in node.records: - */ - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "tinyr.pyx":574 - * return node - * - * return None # <<<<<<<<<<<<<< - * - * cdef inline int CondenseTree(self, _Node node) except -1: - */ - __Pyx_XDECREF((PyObject *)__pyx_r); - __pyx_r = ((struct __pyx_obj_5tinyr__Node *)Py_None); __Pyx_INCREF(Py_None); - goto __pyx_L0; - - /* "tinyr.pyx":556 - * self._leaf_level -= 1 - * - * cdef inline _Node FindLeaf_and_remove(self, object identifier, Dfloat *coords): # <<<<<<<<<<<<<< - * # A bit different that in spec: we find overlapping leaf nodes with the - * # method the user wants to find it (recursive or iterative). Spec only - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_XDECREF(__pyx_t_8); - __Pyx_XDECREF(__pyx_t_9); - __Pyx_AddTraceback("tinyr.RTree.FindLeaf_and_remove", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_leafs); - __Pyx_XDECREF((PyObject *)__pyx_v_node); - __Pyx_XDECREF((PyObject *)__pyx_v_rec); - __Pyx_XGIVEREF((PyObject *)__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "tinyr.pyx":576 - * return None - * - * cdef inline int CondenseTree(self, _Node node) except -1: # <<<<<<<<<<<<<< - * cdef: - * _Node P, N - */ - -static CYTHON_INLINE int __pyx_f_5tinyr_5RTree_CondenseTree(struct __pyx_obj_5tinyr_RTree *__pyx_v_self, struct __pyx_obj_5tinyr__Node *__pyx_v_node) { - struct __pyx_obj_5tinyr__Node *__pyx_v_P = 0; - struct __pyx_obj_5tinyr__Node *__pyx_v_N = 0; - struct __pyx_obj_5tinyr__InnerRecord *__pyx_v_EN = 0; - struct __pyx_obj_5tinyr__InnerRecord *__pyx_v_ir = 0; - struct __pyx_obj_5tinyr__ChildRecord *__pyx_v_crec = 0; - PyObject *__pyx_v_removed_childrecords = 0; - PyObject *__pyx_v_removed_innerrecords = 0; - int __pyx_r; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_t_2; - Py_ssize_t __pyx_t_3; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - int __pyx_t_6; - int __pyx_t_7; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("CondenseTree", 0); - __Pyx_INCREF((PyObject *)__pyx_v_node); - - /* "tinyr.pyx":585 - * list removed_childrecords, removed_innerrecords, reclist - * - * removed_innerrecords = list() # <<<<<<<<<<<<<< - * - * N = node - */ - __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 585, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_v_removed_innerrecords = ((PyObject*)__pyx_t_1); - __pyx_t_1 = 0; - - /* "tinyr.pyx":587 - * removed_innerrecords = list() - * - * N = node # <<<<<<<<<<<<<< - * while not N is self.root: - * - */ - __Pyx_INCREF((PyObject *)__pyx_v_node); - __pyx_v_N = __pyx_v_node; - - /* "tinyr.pyx":588 - * - * N = node - * while not N is self.root: # <<<<<<<<<<<<<< - * - * P = N.parent - */ - while (1) { - __pyx_t_2 = (__pyx_v_N != __pyx_v_self->root); - if (!__pyx_t_2) break; - - /* "tinyr.pyx":590 - * while not N is self.root: - * - * P = N.parent # <<<<<<<<<<<<<< - * EN = parent_record(N) - * - */ - __pyx_t_1 = ((PyObject *)__pyx_v_N->parent); - __Pyx_INCREF(__pyx_t_1); - __Pyx_XDECREF_SET(__pyx_v_P, ((struct __pyx_obj_5tinyr__Node *)__pyx_t_1)); - __pyx_t_1 = 0; - - /* "tinyr.pyx":591 - * - * P = N.parent - * EN = parent_record(N) # <<<<<<<<<<<<<< - * - * if len(N.records) < self.m_cap: - */ - __pyx_t_1 = ((PyObject *)__pyx_f_5tinyr_parent_record(__pyx_v_N)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 591, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_XDECREF_SET(__pyx_v_EN, ((struct __pyx_obj_5tinyr__InnerRecord *)__pyx_t_1)); - __pyx_t_1 = 0; - - /* "tinyr.pyx":593 - * EN = parent_record(N) - * - * if len(N.records) < self.m_cap: # <<<<<<<<<<<<<< - * assert EN is not None, str(N.is_leaf) - * - */ - __pyx_t_1 = __pyx_v_N->records; - __Pyx_INCREF(__pyx_t_1); - if (unlikely(__pyx_t_1 == Py_None)) { - PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); - __PYX_ERR(0, 593, __pyx_L1_error) - } - __pyx_t_3 = __Pyx_PyList_GET_SIZE(__pyx_t_1); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(0, 593, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_2 = (__pyx_t_3 < __pyx_v_self->m_cap); - if (__pyx_t_2) { - - /* "tinyr.pyx":594 - * - * if len(N.records) < self.m_cap: - * assert EN is not None, str(N.is_leaf) # <<<<<<<<<<<<<< - * - * P.records.remove(EN) - */ - #ifndef CYTHON_WITHOUT_ASSERTIONS - if (unlikely(__pyx_assertions_enabled())) { - __pyx_t_2 = (((PyObject *)__pyx_v_EN) != Py_None); - if (unlikely(!__pyx_t_2)) { - __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_N->is_leaf); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 594, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_4 = __Pyx_PyObject_Str(__pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 594, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyTuple_Pack(1, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 594, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_Raise(__pyx_builtin_AssertionError, __pyx_t_1, 0, 0); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __PYX_ERR(0, 594, __pyx_L1_error) - } - } - #else - if ((1)); else __PYX_ERR(0, 594, __pyx_L1_error) - #endif - - /* "tinyr.pyx":596 - * assert EN is not None, str(N.is_leaf) - * - * P.records.remove(EN) # <<<<<<<<<<<<<< - * if N.is_leaf: - * assert removed_childrecords is None - */ - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_P->records, __pyx_n_s_remove); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 596, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = NULL; - __pyx_t_6 = 0; - #if CYTHON_UNPACK_METHODS - if (likely(PyMethod_Check(__pyx_t_4))) { - __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); - if (likely(__pyx_t_5)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); - __Pyx_INCREF(__pyx_t_5); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_4, function); - __pyx_t_6 = 1; - } - } - #endif - { - PyObject *__pyx_callargs[2] = {__pyx_t_5, ((PyObject *)__pyx_v_EN)}; - __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6); - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 596, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "tinyr.pyx":597 - * - * P.records.remove(EN) - * if N.is_leaf: # <<<<<<<<<<<<<< - * assert removed_childrecords is None - * removed_childrecords = N.records - */ - if (__pyx_v_N->is_leaf) { - - /* "tinyr.pyx":598 - * P.records.remove(EN) - * if N.is_leaf: - * assert removed_childrecords is None # <<<<<<<<<<<<<< - * removed_childrecords = N.records - * else: - */ - #ifndef CYTHON_WITHOUT_ASSERTIONS - if (unlikely(__pyx_assertions_enabled())) { - if (unlikely(!__pyx_v_removed_childrecords)) { __Pyx_RaiseUnboundLocalError("removed_childrecords"); __PYX_ERR(0, 598, __pyx_L1_error) } - __pyx_t_2 = (__pyx_v_removed_childrecords == ((PyObject*)Py_None)); - if (unlikely(!__pyx_t_2)) { - __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0); - __PYX_ERR(0, 598, __pyx_L1_error) - } - } - #else - if ((1)); else __PYX_ERR(0, 598, __pyx_L1_error) - #endif - - /* "tinyr.pyx":599 - * if N.is_leaf: - * assert removed_childrecords is None - * removed_childrecords = N.records # <<<<<<<<<<<<<< - * else: - * removed_innerrecords.extend(N.records) - */ - __pyx_t_1 = __pyx_v_N->records; - __Pyx_INCREF(__pyx_t_1); - __Pyx_XDECREF_SET(__pyx_v_removed_childrecords, ((PyObject*)__pyx_t_1)); - __pyx_t_1 = 0; - - /* "tinyr.pyx":597 - * - * P.records.remove(EN) - * if N.is_leaf: # <<<<<<<<<<<<<< - * assert removed_childrecords is None - * removed_childrecords = N.records - */ - goto __pyx_L6; - } - - /* "tinyr.pyx":601 - * removed_childrecords = N.records - * else: - * removed_innerrecords.extend(N.records) # <<<<<<<<<<<<<< - * - * else: - */ - /*else*/ { - __pyx_t_1 = __pyx_v_N->records; - __Pyx_INCREF(__pyx_t_1); - __pyx_t_7 = __Pyx_PyList_Extend(__pyx_v_removed_innerrecords, __pyx_t_1); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(0, 601, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - __pyx_L6:; - - /* "tinyr.pyx":593 - * EN = parent_record(N) - * - * if len(N.records) < self.m_cap: # <<<<<<<<<<<<<< - * assert EN is not None, str(N.is_leaf) - * - */ - goto __pyx_L5; - } - - /* "tinyr.pyx":604 - * - * else: - * common_boundaries(N.records, EN.coords) # <<<<<<<<<<<<<< - * - * N = P - */ - /*else*/ { - __pyx_t_1 = __pyx_v_N->records; - __Pyx_INCREF(__pyx_t_1); - __pyx_f_5tinyr_common_boundaries(((PyObject*)__pyx_t_1), __pyx_v_EN->__pyx_base.coords); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 604, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - __pyx_L5:; - - /* "tinyr.pyx":606 - * common_boundaries(N.records, EN.coords) - * - * N = P # <<<<<<<<<<<<<< - * - * - */ - __Pyx_INCREF((PyObject *)__pyx_v_P); - __Pyx_DECREF_SET(__pyx_v_N, __pyx_v_P); - } - - /* "tinyr.pyx":609 - * - * - * for ir in removed_innerrecords: # <<<<<<<<<<<<<< - * node = self.find_inner_node(ir) - * ir.child.parent = node - */ - __pyx_t_1 = __pyx_v_removed_innerrecords; __Pyx_INCREF(__pyx_t_1); - __pyx_t_3 = 0; - for (;;) { - { - Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1); - #if !CYTHON_ASSUME_SAFE_MACROS - if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 609, __pyx_L1_error) - #endif - if (__pyx_t_3 >= __pyx_temp) break; - } - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_4); __pyx_t_3++; if (unlikely((0 < 0))) __PYX_ERR(0, 609, __pyx_L1_error) - #else - __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 609, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - #endif - if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5tinyr__InnerRecord))))) __PYX_ERR(0, 609, __pyx_L1_error) - __Pyx_XDECREF_SET(__pyx_v_ir, ((struct __pyx_obj_5tinyr__InnerRecord *)__pyx_t_4)); - __pyx_t_4 = 0; - - /* "tinyr.pyx":610 - * - * for ir in removed_innerrecords: - * node = self.find_inner_node(ir) # <<<<<<<<<<<<<< - * ir.child.parent = node - * self.insert_at_node(ir, node) - */ - __pyx_t_4 = ((PyObject *)((struct __pyx_vtabstruct_5tinyr_RTree *)__pyx_v_self->__pyx_vtab)->find_inner_node(__pyx_v_self, __pyx_v_ir)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 610, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF_SET(__pyx_v_node, ((struct __pyx_obj_5tinyr__Node *)__pyx_t_4)); - __pyx_t_4 = 0; - - /* "tinyr.pyx":611 - * for ir in removed_innerrecords: - * node = self.find_inner_node(ir) - * ir.child.parent = node # <<<<<<<<<<<<<< - * self.insert_at_node(ir, node) - * - */ - __Pyx_INCREF((PyObject *)__pyx_v_node); - __Pyx_GIVEREF((PyObject *)__pyx_v_node); - __Pyx_GOTREF((PyObject *)__pyx_v_ir->child->parent); - __Pyx_DECREF((PyObject *)__pyx_v_ir->child->parent); - __pyx_v_ir->child->parent = __pyx_v_node; - - /* "tinyr.pyx":612 - * node = self.find_inner_node(ir) - * ir.child.parent = node - * self.insert_at_node(ir, node) # <<<<<<<<<<<<<< - * - * if removed_childrecords is not None: - */ - __pyx_t_6 = __pyx_f_5tinyr_5RTree_insert_at_node(__pyx_v_self, ((struct __pyx_obj_5tinyr__Record *)__pyx_v_ir), __pyx_v_node); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 612, __pyx_L1_error) - - /* "tinyr.pyx":609 - * - * - * for ir in removed_innerrecords: # <<<<<<<<<<<<<< - * node = self.find_inner_node(ir) - * ir.child.parent = node - */ - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "tinyr.pyx":614 - * self.insert_at_node(ir, node) - * - * if removed_childrecords is not None: # <<<<<<<<<<<<<< - * for crec in removed_childrecords: - * node = self._ChooseLeaf(crec) - */ - if (unlikely(!__pyx_v_removed_childrecords)) { __Pyx_RaiseUnboundLocalError("removed_childrecords"); __PYX_ERR(0, 614, __pyx_L1_error) } - __pyx_t_2 = (__pyx_v_removed_childrecords != ((PyObject*)Py_None)); - if (__pyx_t_2) { - - /* "tinyr.pyx":615 - * - * if removed_childrecords is not None: - * for crec in removed_childrecords: # <<<<<<<<<<<<<< - * node = self._ChooseLeaf(crec) - * self.insert_at_node(crec, node) - */ - if (unlikely(!__pyx_v_removed_childrecords)) { __Pyx_RaiseUnboundLocalError("removed_childrecords"); __PYX_ERR(0, 615, __pyx_L1_error) } - if (unlikely(__pyx_v_removed_childrecords == Py_None)) { - PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); - __PYX_ERR(0, 615, __pyx_L1_error) - } - __pyx_t_1 = __pyx_v_removed_childrecords; __Pyx_INCREF(__pyx_t_1); - __pyx_t_3 = 0; - for (;;) { - { - Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1); - #if !CYTHON_ASSUME_SAFE_MACROS - if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 615, __pyx_L1_error) - #endif - if (__pyx_t_3 >= __pyx_temp) break; - } - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_4); __pyx_t_3++; if (unlikely((0 < 0))) __PYX_ERR(0, 615, __pyx_L1_error) - #else - __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 615, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - #endif - if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5tinyr__ChildRecord))))) __PYX_ERR(0, 615, __pyx_L1_error) - __Pyx_XDECREF_SET(__pyx_v_crec, ((struct __pyx_obj_5tinyr__ChildRecord *)__pyx_t_4)); - __pyx_t_4 = 0; - - /* "tinyr.pyx":616 - * if removed_childrecords is not None: - * for crec in removed_childrecords: - * node = self._ChooseLeaf(crec) # <<<<<<<<<<<<<< - * self.insert_at_node(crec, node) - * - */ - __pyx_t_4 = ((PyObject *)__pyx_f_5tinyr_5RTree__ChooseLeaf(__pyx_v_self, ((struct __pyx_obj_5tinyr__Record *)__pyx_v_crec))); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 616, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF_SET(__pyx_v_node, ((struct __pyx_obj_5tinyr__Node *)__pyx_t_4)); - __pyx_t_4 = 0; - - /* "tinyr.pyx":617 - * for crec in removed_childrecords: - * node = self._ChooseLeaf(crec) - * self.insert_at_node(crec, node) # <<<<<<<<<<<<<< - * - * return 0 - */ - __pyx_t_6 = __pyx_f_5tinyr_5RTree_insert_at_node(__pyx_v_self, ((struct __pyx_obj_5tinyr__Record *)__pyx_v_crec), __pyx_v_node); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 617, __pyx_L1_error) - - /* "tinyr.pyx":615 - * - * if removed_childrecords is not None: - * for crec in removed_childrecords: # <<<<<<<<<<<<<< - * node = self._ChooseLeaf(crec) - * self.insert_at_node(crec, node) - */ - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "tinyr.pyx":614 - * self.insert_at_node(ir, node) - * - * if removed_childrecords is not None: # <<<<<<<<<<<<<< - * for crec in removed_childrecords: - * node = self._ChooseLeaf(crec) - */ - } - - /* "tinyr.pyx":619 - * self.insert_at_node(crec, node) - * - * return 0 # <<<<<<<<<<<<<< - * - * cdef _Node find_inner_node(self, _InnerRecord record): - */ - __pyx_r = 0; - goto __pyx_L0; - - /* "tinyr.pyx":576 - * return None - * - * cdef inline int CondenseTree(self, _Node node) except -1: # <<<<<<<<<<<<<< - * cdef: - * _Node P, N - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_AddTraceback("tinyr.RTree.CondenseTree", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = -1; - __pyx_L0:; - __Pyx_XDECREF((PyObject *)__pyx_v_P); - __Pyx_XDECREF((PyObject *)__pyx_v_N); - __Pyx_XDECREF((PyObject *)__pyx_v_EN); - __Pyx_XDECREF((PyObject *)__pyx_v_ir); - __Pyx_XDECREF((PyObject *)__pyx_v_crec); - __Pyx_XDECREF(__pyx_v_removed_childrecords); - __Pyx_XDECREF(__pyx_v_removed_innerrecords); - __Pyx_XDECREF((PyObject *)__pyx_v_node); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "tinyr.pyx":621 - * return 0 - * - * cdef _Node find_inner_node(self, _InnerRecord record): # <<<<<<<<<<<<<< - * cdef: - * _Node node - */ - -static struct __pyx_obj_5tinyr__Node *__pyx_f_5tinyr_5RTree_find_inner_node(struct __pyx_obj_5tinyr_RTree *__pyx_v_self, struct __pyx_obj_5tinyr__InnerRecord *__pyx_v_record) { - struct __pyx_obj_5tinyr__Node *__pyx_v_node = 0; - struct __pyx_obj_5tinyr__InnerRecord *__pyx_v_rec = 0; - __pyx_t_5tinyr_Duint __pyx_v_subtree_len; - __pyx_t_5tinyr_Duint __pyx_v_level_reverse; - struct __pyx_obj_5tinyr__Node *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - __pyx_t_5tinyr_Duint __pyx_t_1; - PyObject *__pyx_t_2 = NULL; - int __pyx_t_3; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("find_inner_node", 1); - - /* "tinyr.pyx":627 - * Duint subtree_len, level_reverse - * - * subtree_len = self.subtree_len(record) # <<<<<<<<<<<<<< - * level_reverse = self._leaf_level - * - */ - __pyx_t_1 = ((struct __pyx_vtabstruct_5tinyr_RTree *)__pyx_v_self->__pyx_vtab)->subtree_len(__pyx_v_self, __pyx_v_record); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 627, __pyx_L1_error) - __pyx_v_subtree_len = __pyx_t_1; - - /* "tinyr.pyx":628 - * - * subtree_len = self.subtree_len(record) - * level_reverse = self._leaf_level # <<<<<<<<<<<<<< - * - * node = self.root - */ - __pyx_t_1 = __pyx_v_self->_leaf_level; - __pyx_v_level_reverse = __pyx_t_1; - - /* "tinyr.pyx":630 - * level_reverse = self._leaf_level - * - * node = self.root # <<<<<<<<<<<<<< - * - * while level_reverse != subtree_len: - */ - __pyx_t_2 = ((PyObject *)__pyx_v_self->root); - __Pyx_INCREF(__pyx_t_2); - __pyx_v_node = ((struct __pyx_obj_5tinyr__Node *)__pyx_t_2); - __pyx_t_2 = 0; - - /* "tinyr.pyx":632 - * node = self.root - * - * while level_reverse != subtree_len: # <<<<<<<<<<<<<< - * rec = node.choose_subtree_least_enlargement(record) - * node = rec.child - */ - while (1) { - __pyx_t_3 = (__pyx_v_level_reverse != __pyx_v_subtree_len); - if (!__pyx_t_3) break; - - /* "tinyr.pyx":633 - * - * while level_reverse != subtree_len: - * rec = node.choose_subtree_least_enlargement(record) # <<<<<<<<<<<<<< - * node = rec.child - * level_reverse -= 1 - */ - __pyx_t_2 = ((PyObject *)__pyx_f_5tinyr_5_Node_choose_subtree_least_enlargement(__pyx_v_node, ((struct __pyx_obj_5tinyr__Record *)__pyx_v_record))); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 633, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5tinyr__InnerRecord))))) __PYX_ERR(0, 633, __pyx_L1_error) - __Pyx_XDECREF_SET(__pyx_v_rec, ((struct __pyx_obj_5tinyr__InnerRecord *)__pyx_t_2)); - __pyx_t_2 = 0; - - /* "tinyr.pyx":634 - * while level_reverse != subtree_len: - * rec = node.choose_subtree_least_enlargement(record) - * node = rec.child # <<<<<<<<<<<<<< - * level_reverse -= 1 - * - */ - __pyx_t_2 = ((PyObject *)__pyx_v_rec->child); - __Pyx_INCREF(__pyx_t_2); - __Pyx_DECREF_SET(__pyx_v_node, ((struct __pyx_obj_5tinyr__Node *)__pyx_t_2)); - __pyx_t_2 = 0; - - /* "tinyr.pyx":635 - * rec = node.choose_subtree_least_enlargement(record) - * node = rec.child - * level_reverse -= 1 # <<<<<<<<<<<<<< - * - * return node - */ - __pyx_v_level_reverse = (__pyx_v_level_reverse - 1); - } - - /* "tinyr.pyx":637 - * level_reverse -= 1 - * - * return node # <<<<<<<<<<<<<< - * - * - */ - __Pyx_XDECREF((PyObject *)__pyx_r); - __Pyx_INCREF((PyObject *)__pyx_v_node); - __pyx_r = __pyx_v_node; - goto __pyx_L0; - - /* "tinyr.pyx":621 - * return 0 - * - * cdef _Node find_inner_node(self, _InnerRecord record): # <<<<<<<<<<<<<< - * cdef: - * _Node node - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_2); - __Pyx_AddTraceback("tinyr.RTree.find_inner_node", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XDECREF((PyObject *)__pyx_v_node); - __Pyx_XDECREF((PyObject *)__pyx_v_rec); - __Pyx_XGIVEREF((PyObject *)__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "tinyr.pyx":640 - * - * - * cdef Duint subtree_len(self, _InnerRecord rec): # <<<<<<<<<<<<<< - * cdef: - * _Node node - */ - -static __pyx_t_5tinyr_Duint __pyx_f_5tinyr_5RTree_subtree_len(CYTHON_UNUSED struct __pyx_obj_5tinyr_RTree *__pyx_v_self, struct __pyx_obj_5tinyr__InnerRecord *__pyx_v_rec) { - struct __pyx_obj_5tinyr__Node *__pyx_v_node = 0; - __pyx_t_5tinyr_Duint __pyx_v_slen; - __pyx_t_5tinyr_Duint __pyx_r; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_t_2; - PyObject *__pyx_t_3 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("subtree_len", 1); - - /* "tinyr.pyx":645 - * Duint slen - * - * slen = 1 # <<<<<<<<<<<<<< - * - * node = rec.child - */ - __pyx_v_slen = 1; - - /* "tinyr.pyx":647 - * slen = 1 - * - * node = rec.child # <<<<<<<<<<<<<< - * while not node.is_leaf: - * assert node.records - */ - __pyx_t_1 = ((PyObject *)__pyx_v_rec->child); - __Pyx_INCREF(__pyx_t_1); - __pyx_v_node = ((struct __pyx_obj_5tinyr__Node *)__pyx_t_1); - __pyx_t_1 = 0; - - /* "tinyr.pyx":648 - * - * node = rec.child - * while not node.is_leaf: # <<<<<<<<<<<<<< - * assert node.records - * node = (<_InnerRecord>node.records[0]).child - */ - while (1) { - __pyx_t_2 = (!__pyx_v_node->is_leaf); - if (!__pyx_t_2) break; - - /* "tinyr.pyx":649 - * node = rec.child - * while not node.is_leaf: - * assert node.records # <<<<<<<<<<<<<< - * node = (<_InnerRecord>node.records[0]).child - * slen += 1 - */ - #ifndef CYTHON_WITHOUT_ASSERTIONS - if (unlikely(__pyx_assertions_enabled())) { - __pyx_t_2 = (__pyx_v_node->records != Py_None)&&(PyList_GET_SIZE(__pyx_v_node->records) != 0); - if (unlikely(!__pyx_t_2)) { - __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0); - __PYX_ERR(0, 649, __pyx_L1_error) - } - } - #else - if ((1)); else __PYX_ERR(0, 649, __pyx_L1_error) - #endif - - /* "tinyr.pyx":650 - * while not node.is_leaf: - * assert node.records - * node = (<_InnerRecord>node.records[0]).child # <<<<<<<<<<<<<< - * slen += 1 - * - */ - if (unlikely(__pyx_v_node->records == Py_None)) { - PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - __PYX_ERR(0, 650, __pyx_L1_error) - } - __pyx_t_1 = __Pyx_GetItemInt_List(__pyx_v_node->records, 0, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 650, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_3 = ((PyObject *)((struct __pyx_obj_5tinyr__InnerRecord *)__pyx_t_1)->child); - __Pyx_INCREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF_SET(__pyx_v_node, ((struct __pyx_obj_5tinyr__Node *)__pyx_t_3)); - __pyx_t_3 = 0; - - /* "tinyr.pyx":651 - * assert node.records - * node = (<_InnerRecord>node.records[0]).child - * slen += 1 # <<<<<<<<<<<<<< - * - * return slen - */ - __pyx_v_slen = (__pyx_v_slen + 1); - } - - /* "tinyr.pyx":653 - * slen += 1 - * - * return slen # <<<<<<<<<<<<<< - * - * - */ - __pyx_r = __pyx_v_slen; - goto __pyx_L0; - - /* "tinyr.pyx":640 - * - * - * cdef Duint subtree_len(self, _InnerRecord rec): # <<<<<<<<<<<<<< - * cdef: - * _Node node - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_AddTraceback("tinyr.RTree.subtree_len", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XDECREF((PyObject *)__pyx_v_node); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "tinyr.pyx":656 - * - * - * cdef inline bint is_full(self, _Node node): # <<<<<<<<<<<<<< - * return len(node.records) == self.M_cap - * - */ - -static CYTHON_INLINE int __pyx_f_5tinyr_5RTree_is_full(struct __pyx_obj_5tinyr_RTree *__pyx_v_self, struct __pyx_obj_5tinyr__Node *__pyx_v_node) { - int __pyx_r; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - Py_ssize_t __pyx_t_2; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("is_full", 1); - - /* "tinyr.pyx":657 - * - * cdef inline bint is_full(self, _Node node): - * return len(node.records) == self.M_cap # <<<<<<<<<<<<<< - * - * cdef inline _Node _ChooseLeaf(self, _Record ir): - */ - __pyx_t_1 = __pyx_v_node->records; - __Pyx_INCREF(__pyx_t_1); - if (unlikely(__pyx_t_1 == Py_None)) { - PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); - __PYX_ERR(0, 657, __pyx_L1_error) - } - __pyx_t_2 = __Pyx_PyList_GET_SIZE(__pyx_t_1); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(0, 657, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_r = (__pyx_t_2 == __pyx_v_self->M_cap); - goto __pyx_L0; - - /* "tinyr.pyx":656 - * - * - * cdef inline bint is_full(self, _Node node): # <<<<<<<<<<<<<< - * return len(node.records) == self.M_cap - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("tinyr.RTree.is_full", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "tinyr.pyx":659 - * return len(node.records) == self.M_cap - * - * cdef inline _Node _ChooseLeaf(self, _Record ir): # <<<<<<<<<<<<<< - * cdef: - * _Node N - */ - -static CYTHON_INLINE struct __pyx_obj_5tinyr__Node *__pyx_f_5tinyr_5RTree__ChooseLeaf(struct __pyx_obj_5tinyr_RTree *__pyx_v_self, struct __pyx_obj_5tinyr__Record *__pyx_v_ir) { - struct __pyx_obj_5tinyr__Node *__pyx_v_N = 0; - struct __pyx_obj_5tinyr__Record *__pyx_v_r = NULL; - struct __pyx_obj_5tinyr__Node *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("_ChooseLeaf", 1); - - /* "tinyr.pyx":664 - * _InnerRecord F - * - * N = self.root # <<<<<<<<<<<<<< - * while True: - * if N.is_leaf: - */ - __pyx_t_1 = ((PyObject *)__pyx_v_self->root); - __Pyx_INCREF(__pyx_t_1); - __pyx_v_N = ((struct __pyx_obj_5tinyr__Node *)__pyx_t_1); - __pyx_t_1 = 0; - - /* "tinyr.pyx":665 - * - * N = self.root - * while True: # <<<<<<<<<<<<<< - * if N.is_leaf: - * break - */ - while (1) { - - /* "tinyr.pyx":666 - * N = self.root - * while True: - * if N.is_leaf: # <<<<<<<<<<<<<< - * break - * r = N.choose_subtree_least_enlargement(ir) - */ - if (__pyx_v_N->is_leaf) { - - /* "tinyr.pyx":667 - * while True: - * if N.is_leaf: - * break # <<<<<<<<<<<<<< - * r = N.choose_subtree_least_enlargement(ir) - * N = (<_InnerRecord>r).child - */ - goto __pyx_L4_break; - - /* "tinyr.pyx":666 - * N = self.root - * while True: - * if N.is_leaf: # <<<<<<<<<<<<<< - * break - * r = N.choose_subtree_least_enlargement(ir) - */ - } - - /* "tinyr.pyx":668 - * if N.is_leaf: - * break - * r = N.choose_subtree_least_enlargement(ir) # <<<<<<<<<<<<<< - * N = (<_InnerRecord>r).child - * return N - */ - __pyx_t_1 = ((PyObject *)__pyx_f_5tinyr_5_Node_choose_subtree_least_enlargement(__pyx_v_N, __pyx_v_ir)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 668, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_XDECREF_SET(__pyx_v_r, ((struct __pyx_obj_5tinyr__Record *)__pyx_t_1)); - __pyx_t_1 = 0; - - /* "tinyr.pyx":669 - * break - * r = N.choose_subtree_least_enlargement(ir) - * N = (<_InnerRecord>r).child # <<<<<<<<<<<<<< - * return N - * - */ - __pyx_t_1 = ((PyObject *)((struct __pyx_obj_5tinyr__InnerRecord *)__pyx_v_r)->child); - __Pyx_INCREF(__pyx_t_1); - __Pyx_DECREF_SET(__pyx_v_N, ((struct __pyx_obj_5tinyr__Node *)__pyx_t_1)); - __pyx_t_1 = 0; - } - __pyx_L4_break:; - - /* "tinyr.pyx":670 - * r = N.choose_subtree_least_enlargement(ir) - * N = (<_InnerRecord>r).child - * return N # <<<<<<<<<<<<<< - * - * cdef inline tuple _AdjustTree(self, _Node L, _Node LL): - */ - __Pyx_XDECREF((PyObject *)__pyx_r); - __Pyx_INCREF((PyObject *)__pyx_v_N); - __pyx_r = __pyx_v_N; - goto __pyx_L0; - - /* "tinyr.pyx":659 - * return len(node.records) == self.M_cap - * - * cdef inline _Node _ChooseLeaf(self, _Record ir): # <<<<<<<<<<<<<< - * cdef: - * _Node N - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("tinyr.RTree._ChooseLeaf", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XDECREF((PyObject *)__pyx_v_N); - __Pyx_XDECREF((PyObject *)__pyx_v_r); - __Pyx_XGIVEREF((PyObject *)__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "tinyr.pyx":672 - * return N - * - * cdef inline tuple _AdjustTree(self, _Node L, _Node LL): # <<<<<<<<<<<<<< - * cdef: - * _Node N, NN, P - */ - -static CYTHON_INLINE PyObject *__pyx_f_5tinyr_5RTree__AdjustTree(struct __pyx_obj_5tinyr_RTree *__pyx_v_self, struct __pyx_obj_5tinyr__Node *__pyx_v_L, struct __pyx_obj_5tinyr__Node *__pyx_v_LL) { - struct __pyx_obj_5tinyr__Node *__pyx_v_N = 0; - struct __pyx_obj_5tinyr__Node *__pyx_v_NN = 0; - struct __pyx_obj_5tinyr__Node *__pyx_v_P = 0; - struct __pyx_obj_5tinyr__Record *__pyx_v_EN = 0; - struct __pyx_obj_5tinyr__InnerRecord *__pyx_v_ENN = NULL; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_t_2; - int __pyx_t_3; - int __pyx_t_4; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("_AdjustTree", 1); - - /* "tinyr.pyx":677 - * _Record EN, e - * - * N = L # <<<<<<<<<<<<<< - * NN = LL - * - */ - __Pyx_INCREF((PyObject *)__pyx_v_L); - __pyx_v_N = __pyx_v_L; - - /* "tinyr.pyx":678 - * - * N = L - * NN = LL # <<<<<<<<<<<<<< - * - * while N != self.root: - */ - __Pyx_INCREF((PyObject *)__pyx_v_LL); - __pyx_v_NN = __pyx_v_LL; - - /* "tinyr.pyx":680 - * NN = LL - * - * while N != self.root: # <<<<<<<<<<<<<< - * P = N.parent - * - */ - while (1) { - __pyx_t_1 = PyObject_RichCompare(((PyObject *)__pyx_v_N), ((PyObject *)__pyx_v_self->root), Py_NE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 680, __pyx_L1_error) - __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 680, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - if (!__pyx_t_2) break; - - /* "tinyr.pyx":681 - * - * while N != self.root: - * P = N.parent # <<<<<<<<<<<<<< - * - * # search for the entry in parent of N that holds N - */ - __pyx_t_1 = ((PyObject *)__pyx_v_N->parent); - __Pyx_INCREF(__pyx_t_1); - __Pyx_XDECREF_SET(__pyx_v_P, ((struct __pyx_obj_5tinyr__Node *)__pyx_t_1)); - __pyx_t_1 = 0; - - /* "tinyr.pyx":684 - * - * # search for the entry in parent of N that holds N - * EN = parent_record(N) # <<<<<<<<<<<<<< - * - * assert EN != None, 'no parent entry holds the child' - */ - __pyx_t_1 = ((PyObject *)__pyx_f_5tinyr_parent_record(__pyx_v_N)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 684, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_XDECREF_SET(__pyx_v_EN, ((struct __pyx_obj_5tinyr__Record *)__pyx_t_1)); - __pyx_t_1 = 0; - - /* "tinyr.pyx":686 - * EN = parent_record(N) - * - * assert EN != None, 'no parent entry holds the child' # <<<<<<<<<<<<<< - * - * N.common_boundaries(EN.coords) - */ - #ifndef CYTHON_WITHOUT_ASSERTIONS - if (unlikely(__pyx_assertions_enabled())) { - __pyx_t_1 = PyObject_RichCompare(((PyObject *)__pyx_v_EN), Py_None, Py_NE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 686, __pyx_L1_error) - __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 686, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - if (unlikely(!__pyx_t_2)) { - __Pyx_Raise(__pyx_builtin_AssertionError, __pyx_kp_s_no_parent_entry_holds_the_child, 0, 0); - __PYX_ERR(0, 686, __pyx_L1_error) - } - } - #else - if ((1)); else __PYX_ERR(0, 686, __pyx_L1_error) - #endif - - /* "tinyr.pyx":688 - * assert EN != None, 'no parent entry holds the child' - * - * N.common_boundaries(EN.coords) # <<<<<<<<<<<<<< - * - * if NN != None: - */ - __pyx_f_5tinyr_5_Node_common_boundaries(__pyx_v_N, __pyx_v_EN->coords); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 688, __pyx_L1_error) - - /* "tinyr.pyx":690 - * N.common_boundaries(EN.coords) - * - * if NN != None: # <<<<<<<<<<<<<< - * ENN = _InnerRecord(NN) - * NN.common_boundaries(ENN.coords) - */ - __pyx_t_1 = PyObject_RichCompare(((PyObject *)__pyx_v_NN), Py_None, Py_NE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 690, __pyx_L1_error) - __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 690, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - if (__pyx_t_2) { - - /* "tinyr.pyx":691 - * - * if NN != None: - * ENN = _InnerRecord(NN) # <<<<<<<<<<<<<< - * NN.common_boundaries(ENN.coords) - * if not self.is_full(P): - */ - __pyx_t_1 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_5tinyr__InnerRecord), ((PyObject *)__pyx_v_NN)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 691, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_XDECREF_SET(__pyx_v_ENN, ((struct __pyx_obj_5tinyr__InnerRecord *)__pyx_t_1)); - __pyx_t_1 = 0; - - /* "tinyr.pyx":692 - * if NN != None: - * ENN = _InnerRecord(NN) - * NN.common_boundaries(ENN.coords) # <<<<<<<<<<<<<< - * if not self.is_full(P): - * P.records.append(ENN) - */ - __pyx_f_5tinyr_5_Node_common_boundaries(__pyx_v_NN, __pyx_v_ENN->__pyx_base.coords); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 692, __pyx_L1_error) - - /* "tinyr.pyx":693 - * ENN = _InnerRecord(NN) - * NN.common_boundaries(ENN.coords) - * if not self.is_full(P): # <<<<<<<<<<<<<< - * P.records.append(ENN) - * NN = None - */ - __pyx_t_2 = __pyx_f_5tinyr_5RTree_is_full(__pyx_v_self, __pyx_v_P); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 693, __pyx_L1_error) - __pyx_t_3 = (!__pyx_t_2); - if (__pyx_t_3) { - - /* "tinyr.pyx":694 - * NN.common_boundaries(ENN.coords) - * if not self.is_full(P): - * P.records.append(ENN) # <<<<<<<<<<<<<< - * NN = None - * else: - */ - if (unlikely(__pyx_v_P->records == Py_None)) { - PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append"); - __PYX_ERR(0, 694, __pyx_L1_error) - } - __pyx_t_4 = __Pyx_PyList_Append(__pyx_v_P->records, ((PyObject *)__pyx_v_ENN)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 694, __pyx_L1_error) - - /* "tinyr.pyx":695 - * if not self.is_full(P): - * P.records.append(ENN) - * NN = None # <<<<<<<<<<<<<< - * else: - * NN = self.SplitNode(P, ENN) - */ - __Pyx_INCREF(Py_None); - __Pyx_DECREF_SET(__pyx_v_NN, ((struct __pyx_obj_5tinyr__Node *)Py_None)); - - /* "tinyr.pyx":693 - * ENN = _InnerRecord(NN) - * NN.common_boundaries(ENN.coords) - * if not self.is_full(P): # <<<<<<<<<<<<<< - * P.records.append(ENN) - * NN = None - */ - goto __pyx_L6; - } - - /* "tinyr.pyx":697 - * NN = None - * else: - * NN = self.SplitNode(P, ENN) # <<<<<<<<<<<<<< - * - * N = P - */ - /*else*/ { - __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_5tinyr_RTree *)__pyx_v_self->__pyx_vtab)->SplitNode(__pyx_v_self, __pyx_v_P, ((struct __pyx_obj_5tinyr__Record *)__pyx_v_ENN))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 697, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF_SET(__pyx_v_NN, ((struct __pyx_obj_5tinyr__Node *)__pyx_t_1)); - __pyx_t_1 = 0; - } - __pyx_L6:; - - /* "tinyr.pyx":690 - * N.common_boundaries(EN.coords) - * - * if NN != None: # <<<<<<<<<<<<<< - * ENN = _InnerRecord(NN) - * NN.common_boundaries(ENN.coords) - */ - } - - /* "tinyr.pyx":699 - * NN = self.SplitNode(P, ENN) - * - * N = P # <<<<<<<<<<<<<< - * - * return (N, NN) - */ - __Pyx_INCREF((PyObject *)__pyx_v_P); - __Pyx_DECREF_SET(__pyx_v_N, __pyx_v_P); - } - - /* "tinyr.pyx":701 - * N = P - * - * return (N, NN) # <<<<<<<<<<<<<< - * - * cdef _Node SplitNode(self, _Node node, _Record ir): - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 701, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF((PyObject *)__pyx_v_N); - __Pyx_GIVEREF((PyObject *)__pyx_v_N); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_N))) __PYX_ERR(0, 701, __pyx_L1_error); - __Pyx_INCREF((PyObject *)__pyx_v_NN); - __Pyx_GIVEREF((PyObject *)__pyx_v_NN); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_NN))) __PYX_ERR(0, 701, __pyx_L1_error); - __pyx_r = ((PyObject*)__pyx_t_1); - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "tinyr.pyx":672 - * return N - * - * cdef inline tuple _AdjustTree(self, _Node L, _Node LL): # <<<<<<<<<<<<<< - * cdef: - * _Node N, NN, P - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("tinyr.RTree._AdjustTree", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XDECREF((PyObject *)__pyx_v_N); - __Pyx_XDECREF((PyObject *)__pyx_v_NN); - __Pyx_XDECREF((PyObject *)__pyx_v_P); - __Pyx_XDECREF((PyObject *)__pyx_v_EN); - __Pyx_XDECREF((PyObject *)__pyx_v_ENN); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "tinyr.pyx":703 - * return (N, NN) - * - * cdef _Node SplitNode(self, _Node node, _Record ir): # <<<<<<<<<<<<<< - * cdef: - * list remaining - */ - -static struct __pyx_obj_5tinyr__Node *__pyx_f_5tinyr_5RTree_SplitNode(struct __pyx_obj_5tinyr_RTree *__pyx_v_self, struct __pyx_obj_5tinyr__Node *__pyx_v_node, struct __pyx_obj_5tinyr__Record *__pyx_v_ir) { - PyObject *__pyx_v_remaining = 0; - struct __pyx_obj_5tinyr__Node *__pyx_v_newnode = 0; - unsigned int __pyx_v_remaining_count; - struct __pyx_obj_5tinyr__InnerRecord *__pyx_v_r = 0; - struct __pyx_obj_5tinyr__Node *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_t_2; - int __pyx_t_3; - Py_ssize_t __pyx_t_4; - int __pyx_t_5; - PyObject *__pyx_t_6 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("SplitNode", 1); - - /* "tinyr.pyx":710 - * _InnerRecord r - * - * remaining = node.records # <<<<<<<<<<<<<< - * remaining.append(ir) - * node.records = list() - */ - __pyx_t_1 = __pyx_v_node->records; - __Pyx_INCREF(__pyx_t_1); - __pyx_v_remaining = ((PyObject*)__pyx_t_1); - __pyx_t_1 = 0; - - /* "tinyr.pyx":711 - * - * remaining = node.records - * remaining.append(ir) # <<<<<<<<<<<<<< - * node.records = list() - * - */ - if (unlikely(__pyx_v_remaining == Py_None)) { - PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append"); - __PYX_ERR(0, 711, __pyx_L1_error) - } - __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_remaining, ((PyObject *)__pyx_v_ir)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 711, __pyx_L1_error) - - /* "tinyr.pyx":712 - * remaining = node.records - * remaining.append(ir) - * node.records = list() # <<<<<<<<<<<<<< - * - * newnode = _Node(node.parent) - */ - __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 712, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_GIVEREF(__pyx_t_1); - __Pyx_GOTREF(__pyx_v_node->records); - __Pyx_DECREF(__pyx_v_node->records); - __pyx_v_node->records = ((PyObject*)__pyx_t_1); - __pyx_t_1 = 0; - - /* "tinyr.pyx":714 - * node.records = list() - * - * newnode = _Node(node.parent) # <<<<<<<<<<<<<< - * - * self.PickSeeds(node, remaining, newnode) - */ - __pyx_t_1 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_5tinyr__Node), ((PyObject *)__pyx_v_node->parent)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 714, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_v_newnode = ((struct __pyx_obj_5tinyr__Node *)__pyx_t_1); - __pyx_t_1 = 0; - - /* "tinyr.pyx":716 - * newnode = _Node(node.parent) - * - * self.PickSeeds(node, remaining, newnode) # <<<<<<<<<<<<<< - * - * remaining_count = len(remaining) - */ - __pyx_t_3 = __pyx_v_self->PickSeeds(__pyx_v_node, __pyx_v_remaining, __pyx_v_newnode); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 716, __pyx_L1_error) - - /* "tinyr.pyx":718 - * self.PickSeeds(node, remaining, newnode) - * - * remaining_count = len(remaining) # <<<<<<<<<<<<<< - * while remaining_count > 0: - * if len(node.records) + remaining_count - 1 < self.m_cap: - */ - if (unlikely(__pyx_v_remaining == Py_None)) { - PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); - __PYX_ERR(0, 718, __pyx_L1_error) - } - __pyx_t_4 = __Pyx_PyList_GET_SIZE(__pyx_v_remaining); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(0, 718, __pyx_L1_error) - __pyx_v_remaining_count = __pyx_t_4; - - /* "tinyr.pyx":719 - * - * remaining_count = len(remaining) - * while remaining_count > 0: # <<<<<<<<<<<<<< - * if len(node.records) + remaining_count - 1 < self.m_cap: - * node.records.extend(remaining) - */ - while (1) { - __pyx_t_5 = (__pyx_v_remaining_count > 0); - if (!__pyx_t_5) break; - - /* "tinyr.pyx":720 - * remaining_count = len(remaining) - * while remaining_count > 0: - * if len(node.records) + remaining_count - 1 < self.m_cap: # <<<<<<<<<<<<<< - * node.records.extend(remaining) - * break - */ - __pyx_t_1 = __pyx_v_node->records; - __Pyx_INCREF(__pyx_t_1); - if (unlikely(__pyx_t_1 == Py_None)) { - PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); - __PYX_ERR(0, 720, __pyx_L1_error) - } - __pyx_t_4 = __Pyx_PyList_GET_SIZE(__pyx_t_1); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(0, 720, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_5 = (((__pyx_t_4 + __pyx_v_remaining_count) - 1) < __pyx_v_self->m_cap); - if (__pyx_t_5) { - - /* "tinyr.pyx":721 - * while remaining_count > 0: - * if len(node.records) + remaining_count - 1 < self.m_cap: - * node.records.extend(remaining) # <<<<<<<<<<<<<< - * break - * if len(newnode.records) + remaining_count - 1 < self.m_cap: - */ - if (unlikely(__pyx_v_node->records == Py_None)) { - PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "extend"); - __PYX_ERR(0, 721, __pyx_L1_error) - } - __pyx_t_2 = __Pyx_PyList_Extend(__pyx_v_node->records, __pyx_v_remaining); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 721, __pyx_L1_error) - - /* "tinyr.pyx":722 - * if len(node.records) + remaining_count - 1 < self.m_cap: - * node.records.extend(remaining) - * break # <<<<<<<<<<<<<< - * if len(newnode.records) + remaining_count - 1 < self.m_cap: - * newnode.records.extend(remaining) - */ - goto __pyx_L4_break; - - /* "tinyr.pyx":720 - * remaining_count = len(remaining) - * while remaining_count > 0: - * if len(node.records) + remaining_count - 1 < self.m_cap: # <<<<<<<<<<<<<< - * node.records.extend(remaining) - * break - */ - } - - /* "tinyr.pyx":723 - * node.records.extend(remaining) - * break - * if len(newnode.records) + remaining_count - 1 < self.m_cap: # <<<<<<<<<<<<<< - * newnode.records.extend(remaining) - * break - */ - __pyx_t_1 = __pyx_v_newnode->records; - __Pyx_INCREF(__pyx_t_1); - if (unlikely(__pyx_t_1 == Py_None)) { - PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); - __PYX_ERR(0, 723, __pyx_L1_error) - } - __pyx_t_4 = __Pyx_PyList_GET_SIZE(__pyx_t_1); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(0, 723, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_5 = (((__pyx_t_4 + __pyx_v_remaining_count) - 1) < __pyx_v_self->m_cap); - if (__pyx_t_5) { - - /* "tinyr.pyx":724 - * break - * if len(newnode.records) + remaining_count - 1 < self.m_cap: - * newnode.records.extend(remaining) # <<<<<<<<<<<<<< - * break - * - */ - if (unlikely(__pyx_v_newnode->records == Py_None)) { - PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "extend"); - __PYX_ERR(0, 724, __pyx_L1_error) - } - __pyx_t_2 = __Pyx_PyList_Extend(__pyx_v_newnode->records, __pyx_v_remaining); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 724, __pyx_L1_error) - - /* "tinyr.pyx":725 - * if len(newnode.records) + remaining_count - 1 < self.m_cap: - * newnode.records.extend(remaining) - * break # <<<<<<<<<<<<<< - * - * self.PickNext(node, remaining, newnode) - */ - goto __pyx_L4_break; - - /* "tinyr.pyx":723 - * node.records.extend(remaining) - * break - * if len(newnode.records) + remaining_count - 1 < self.m_cap: # <<<<<<<<<<<<<< - * newnode.records.extend(remaining) - * break - */ - } - - /* "tinyr.pyx":727 - * break - * - * self.PickNext(node, remaining, newnode) # <<<<<<<<<<<<<< - * remaining_count -= 1 - * - */ - __pyx_t_3 = __pyx_f_5tinyr_5RTree_PickNext(__pyx_v_self, __pyx_v_node, __pyx_v_remaining, __pyx_v_newnode); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 727, __pyx_L1_error) - - /* "tinyr.pyx":728 - * - * self.PickNext(node, remaining, newnode) - * remaining_count -= 1 # <<<<<<<<<<<<<< - * - * if node.is_leaf: - */ - __pyx_v_remaining_count = (__pyx_v_remaining_count - 1); - } - __pyx_L4_break:; - - /* "tinyr.pyx":730 - * remaining_count -= 1 - * - * if node.is_leaf: # <<<<<<<<<<<<<< - * newnode.is_leaf = True - * else: - */ - if (__pyx_v_node->is_leaf) { - - /* "tinyr.pyx":731 - * - * if node.is_leaf: - * newnode.is_leaf = True # <<<<<<<<<<<<<< - * else: - * # child records are inner records - re-set parent of them to newnode - */ - __pyx_v_newnode->is_leaf = 1; - - /* "tinyr.pyx":730 - * remaining_count -= 1 - * - * if node.is_leaf: # <<<<<<<<<<<<<< - * newnode.is_leaf = True - * else: - */ - goto __pyx_L7; - } - - /* "tinyr.pyx":734 - * else: - * # child records are inner records - re-set parent of them to newnode - * for r in newnode.records: # <<<<<<<<<<<<<< - * r.child.parent = newnode - * - */ - /*else*/ { - if (unlikely(__pyx_v_newnode->records == Py_None)) { - PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); - __PYX_ERR(0, 734, __pyx_L1_error) - } - __pyx_t_1 = __pyx_v_newnode->records; __Pyx_INCREF(__pyx_t_1); - __pyx_t_4 = 0; - for (;;) { - { - Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1); - #if !CYTHON_ASSUME_SAFE_MACROS - if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 734, __pyx_L1_error) - #endif - if (__pyx_t_4 >= __pyx_temp) break; - } - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_6 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_4); __Pyx_INCREF(__pyx_t_6); __pyx_t_4++; if (unlikely((0 < 0))) __PYX_ERR(0, 734, __pyx_L1_error) - #else - __pyx_t_6 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 734, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - #endif - if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5tinyr__InnerRecord))))) __PYX_ERR(0, 734, __pyx_L1_error) - __Pyx_XDECREF_SET(__pyx_v_r, ((struct __pyx_obj_5tinyr__InnerRecord *)__pyx_t_6)); - __pyx_t_6 = 0; - - /* "tinyr.pyx":735 - * # child records are inner records - re-set parent of them to newnode - * for r in newnode.records: - * r.child.parent = newnode # <<<<<<<<<<<<<< - * - * return newnode - */ - __Pyx_INCREF((PyObject *)__pyx_v_newnode); - __Pyx_GIVEREF((PyObject *)__pyx_v_newnode); - __Pyx_GOTREF((PyObject *)__pyx_v_r->child->parent); - __Pyx_DECREF((PyObject *)__pyx_v_r->child->parent); - __pyx_v_r->child->parent = __pyx_v_newnode; - - /* "tinyr.pyx":734 - * else: - * # child records are inner records - re-set parent of them to newnode - * for r in newnode.records: # <<<<<<<<<<<<<< - * r.child.parent = newnode - * - */ - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - __pyx_L7:; - - /* "tinyr.pyx":737 - * r.child.parent = newnode - * - * return newnode # <<<<<<<<<<<<<< - * - * cdef inline int PickNext(self, _Node node, list remaining, _Node newnode) except -1: - */ - __Pyx_XDECREF((PyObject *)__pyx_r); - __Pyx_INCREF((PyObject *)__pyx_v_newnode); - __pyx_r = __pyx_v_newnode; - goto __pyx_L0; - - /* "tinyr.pyx":703 - * return (N, NN) - * - * cdef _Node SplitNode(self, _Node node, _Record ir): # <<<<<<<<<<<<<< - * cdef: - * list remaining - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_6); - __Pyx_AddTraceback("tinyr.RTree.SplitNode", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_remaining); - __Pyx_XDECREF((PyObject *)__pyx_v_newnode); - __Pyx_XDECREF((PyObject *)__pyx_v_r); - __Pyx_XGIVEREF((PyObject *)__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "tinyr.pyx":739 - * return newnode - * - * cdef inline int PickNext(self, _Node node, list remaining, _Node newnode) except -1: # <<<<<<<<<<<<<< - * cdef: - * Dfloat area_group_L, area_group_LL - */ - -static CYTHON_INLINE int __pyx_f_5tinyr_5RTree_PickNext(CYTHON_UNUSED struct __pyx_obj_5tinyr_RTree *__pyx_v_self, struct __pyx_obj_5tinyr__Node *__pyx_v_node, PyObject *__pyx_v_remaining, struct __pyx_obj_5tinyr__Node *__pyx_v_newnode) { - __pyx_t_5tinyr_Dfloat __pyx_v_area_group_L; - __pyx_t_5tinyr_Dfloat __pyx_v_area_group_LL; - __pyx_t_5tinyr_Dfloat __pyx_v_d1_next; - __pyx_t_5tinyr_Dfloat __pyx_v_d2_next; - __pyx_t_5tinyr_Dfloat __pyx_v_d1; - __pyx_t_5tinyr_Dfloat __pyx_v_d2; - __pyx_t_5tinyr_Dfloat __pyx_v_d_diff; - __pyx_t_5tinyr_Dfloat __pyx_v_d_diff_max; - __pyx_t_5tinyr_Dfloat __pyx_v_coords[4]; - struct __pyx_obj_5tinyr__Record *__pyx_v_E_next = 0; - struct __pyx_obj_5tinyr__Record *__pyx_v_E = 0; - struct __pyx_obj_5tinyr__Record *__pyx_v_r = 0; - int __pyx_r; - __Pyx_RefNannyDeclarations - Py_ssize_t __pyx_t_1; - int __pyx_t_2; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - __pyx_t_5tinyr_Dfloat __pyx_t_5; - int __pyx_t_6; - Py_ssize_t __pyx_t_7; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("PickNext", 1); - - /* "tinyr.pyx":747 - * _Record E_next, E, r - * - * area_group_L = 0 # <<<<<<<<<<<<<< - * area_group_LL = 0 - * d1_next = 0 - */ - __pyx_v_area_group_L = 0.0; - - /* "tinyr.pyx":748 - * - * area_group_L = 0 - * area_group_LL = 0 # <<<<<<<<<<<<<< - * d1_next = 0 - * d2_next = 0 - */ - __pyx_v_area_group_LL = 0.0; - - /* "tinyr.pyx":749 - * area_group_L = 0 - * area_group_LL = 0 - * d1_next = 0 # <<<<<<<<<<<<<< - * d2_next = 0 - * init_Dfloat4(coords) - */ - __pyx_v_d1_next = 0.0; - - /* "tinyr.pyx":750 - * area_group_LL = 0 - * d1_next = 0 - * d2_next = 0 # <<<<<<<<<<<<<< - * init_Dfloat4(coords) - * - */ - __pyx_v_d2_next = 0.0; - - /* "tinyr.pyx":751 - * d1_next = 0 - * d2_next = 0 - * init_Dfloat4(coords) # <<<<<<<<<<<<<< - * - * if len(remaining) == 1: - */ - __pyx_f_5tinyr_init_Dfloat4(__pyx_v_coords); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 751, __pyx_L1_error) - - /* "tinyr.pyx":753 - * init_Dfloat4(coords) - * - * if len(remaining) == 1: # <<<<<<<<<<<<<< - * E_next = remaining.pop() - * else: - */ - if (unlikely(__pyx_v_remaining == Py_None)) { - PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); - __PYX_ERR(0, 753, __pyx_L1_error) - } - __pyx_t_1 = __Pyx_PyList_GET_SIZE(__pyx_v_remaining); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(0, 753, __pyx_L1_error) - __pyx_t_2 = (__pyx_t_1 == 1); - if (__pyx_t_2) { - - /* "tinyr.pyx":754 - * - * if len(remaining) == 1: - * E_next = remaining.pop() # <<<<<<<<<<<<<< - * else: - * for r in node.records: - */ - if (unlikely(__pyx_v_remaining == Py_None)) { - PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "pop"); - __PYX_ERR(0, 754, __pyx_L1_error) - } - __pyx_t_3 = __Pyx_PyList_Pop(__pyx_v_remaining); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 754, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5tinyr__Record))))) __PYX_ERR(0, 754, __pyx_L1_error) - __pyx_v_E_next = ((struct __pyx_obj_5tinyr__Record *)__pyx_t_3); - __pyx_t_3 = 0; - - /* "tinyr.pyx":753 - * init_Dfloat4(coords) - * - * if len(remaining) == 1: # <<<<<<<<<<<<<< - * E_next = remaining.pop() - * else: - */ - goto __pyx_L3; - } - - /* "tinyr.pyx":756 - * E_next = remaining.pop() - * else: - * for r in node.records: # <<<<<<<<<<<<<< - * area_group_L += area(r.coords) - * - */ - /*else*/ { - if (unlikely(__pyx_v_node->records == Py_None)) { - PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); - __PYX_ERR(0, 756, __pyx_L1_error) - } - __pyx_t_3 = __pyx_v_node->records; __Pyx_INCREF(__pyx_t_3); - __pyx_t_1 = 0; - for (;;) { - { - Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_3); - #if !CYTHON_ASSUME_SAFE_MACROS - if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 756, __pyx_L1_error) - #endif - if (__pyx_t_1 >= __pyx_temp) break; - } - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_4 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_1); __Pyx_INCREF(__pyx_t_4); __pyx_t_1++; if (unlikely((0 < 0))) __PYX_ERR(0, 756, __pyx_L1_error) - #else - __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_3, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 756, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - #endif - if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5tinyr__Record))))) __PYX_ERR(0, 756, __pyx_L1_error) - __Pyx_XDECREF_SET(__pyx_v_r, ((struct __pyx_obj_5tinyr__Record *)__pyx_t_4)); - __pyx_t_4 = 0; - - /* "tinyr.pyx":757 - * else: - * for r in node.records: - * area_group_L += area(r.coords) # <<<<<<<<<<<<<< - * - * for r in newnode.records: - */ - __pyx_t_5 = __pyx_f_5tinyr_area(__pyx_v_r->coords); if (unlikely(__pyx_t_5 == ((__pyx_t_5tinyr_Dfloat)-1) && PyErr_Occurred())) __PYX_ERR(0, 757, __pyx_L1_error) - __pyx_v_area_group_L = (__pyx_v_area_group_L + __pyx_t_5); - - /* "tinyr.pyx":756 - * E_next = remaining.pop() - * else: - * for r in node.records: # <<<<<<<<<<<<<< - * area_group_L += area(r.coords) - * - */ - } - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - - /* "tinyr.pyx":759 - * area_group_L += area(r.coords) - * - * for r in newnode.records: # <<<<<<<<<<<<<< - * area_group_LL += area(r.coords) - * - */ - if (unlikely(__pyx_v_newnode->records == Py_None)) { - PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); - __PYX_ERR(0, 759, __pyx_L1_error) - } - __pyx_t_3 = __pyx_v_newnode->records; __Pyx_INCREF(__pyx_t_3); - __pyx_t_1 = 0; - for (;;) { - { - Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_3); - #if !CYTHON_ASSUME_SAFE_MACROS - if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 759, __pyx_L1_error) - #endif - if (__pyx_t_1 >= __pyx_temp) break; - } - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_4 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_1); __Pyx_INCREF(__pyx_t_4); __pyx_t_1++; if (unlikely((0 < 0))) __PYX_ERR(0, 759, __pyx_L1_error) - #else - __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_3, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 759, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - #endif - if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5tinyr__Record))))) __PYX_ERR(0, 759, __pyx_L1_error) - __Pyx_XDECREF_SET(__pyx_v_r, ((struct __pyx_obj_5tinyr__Record *)__pyx_t_4)); - __pyx_t_4 = 0; - - /* "tinyr.pyx":760 - * - * for r in newnode.records: - * area_group_LL += area(r.coords) # <<<<<<<<<<<<<< - * - * d_diff_max = -Dfloat_min - */ - __pyx_t_5 = __pyx_f_5tinyr_area(__pyx_v_r->coords); if (unlikely(__pyx_t_5 == ((__pyx_t_5tinyr_Dfloat)-1) && PyErr_Occurred())) __PYX_ERR(0, 760, __pyx_L1_error) - __pyx_v_area_group_LL = (__pyx_v_area_group_LL + __pyx_t_5); - - /* "tinyr.pyx":759 - * area_group_L += area(r.coords) - * - * for r in newnode.records: # <<<<<<<<<<<<<< - * area_group_LL += area(r.coords) - * - */ - } - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - - /* "tinyr.pyx":762 - * area_group_LL += area(r.coords) - * - * d_diff_max = -Dfloat_min # <<<<<<<<<<<<<< - * - * node.records.append(None) - */ - __pyx_v_d_diff_max = (-DBL_MIN); - - /* "tinyr.pyx":764 - * d_diff_max = -Dfloat_min - * - * node.records.append(None) # <<<<<<<<<<<<<< - * newnode.records.append(None) - * - */ - if (unlikely(__pyx_v_node->records == Py_None)) { - PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append"); - __PYX_ERR(0, 764, __pyx_L1_error) - } - __pyx_t_6 = __Pyx_PyList_Append(__pyx_v_node->records, Py_None); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 764, __pyx_L1_error) - - /* "tinyr.pyx":765 - * - * node.records.append(None) - * newnode.records.append(None) # <<<<<<<<<<<<<< - * - * for E in remaining: - */ - if (unlikely(__pyx_v_newnode->records == Py_None)) { - PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append"); - __PYX_ERR(0, 765, __pyx_L1_error) - } - __pyx_t_6 = __Pyx_PyList_Append(__pyx_v_newnode->records, Py_None); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 765, __pyx_L1_error) - - /* "tinyr.pyx":767 - * newnode.records.append(None) - * - * for E in remaining: # <<<<<<<<<<<<<< - * - * # temporary add E to self.records / newnode.records as parameter for common_boundires() - */ - if (unlikely(__pyx_v_remaining == Py_None)) { - PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); - __PYX_ERR(0, 767, __pyx_L1_error) - } - __pyx_t_3 = __pyx_v_remaining; __Pyx_INCREF(__pyx_t_3); - __pyx_t_1 = 0; - for (;;) { - { - Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_3); - #if !CYTHON_ASSUME_SAFE_MACROS - if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 767, __pyx_L1_error) - #endif - if (__pyx_t_1 >= __pyx_temp) break; - } - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_4 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_1); __Pyx_INCREF(__pyx_t_4); __pyx_t_1++; if (unlikely((0 < 0))) __PYX_ERR(0, 767, __pyx_L1_error) - #else - __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_3, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 767, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - #endif - if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5tinyr__Record))))) __PYX_ERR(0, 767, __pyx_L1_error) - __Pyx_XDECREF_SET(__pyx_v_E, ((struct __pyx_obj_5tinyr__Record *)__pyx_t_4)); - __pyx_t_4 = 0; - - /* "tinyr.pyx":771 - * # temporary add E to self.records / newnode.records as parameter for common_boundires() - * # -> don't init a new list of records - * node.records[-1] = E # <<<<<<<<<<<<<< - * newnode.records[-1] = E - * - */ - if (unlikely(__pyx_v_node->records == Py_None)) { - PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - __PYX_ERR(0, 771, __pyx_L1_error) - } - if (unlikely((__Pyx_SetItemInt(__pyx_v_node->records, -1L, ((PyObject *)__pyx_v_E), long, 1, __Pyx_PyInt_From_long, 1, 1, 1) < 0))) __PYX_ERR(0, 771, __pyx_L1_error) - - /* "tinyr.pyx":772 - * # -> don't init a new list of records - * node.records[-1] = E - * newnode.records[-1] = E # <<<<<<<<<<<<<< - * - * common_boundaries(node.records, coords) - */ - if (unlikely(__pyx_v_newnode->records == Py_None)) { - PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - __PYX_ERR(0, 772, __pyx_L1_error) - } - if (unlikely((__Pyx_SetItemInt(__pyx_v_newnode->records, -1L, ((PyObject *)__pyx_v_E), long, 1, __Pyx_PyInt_From_long, 1, 1, 1) < 0))) __PYX_ERR(0, 772, __pyx_L1_error) - - /* "tinyr.pyx":774 - * newnode.records[-1] = E - * - * common_boundaries(node.records, coords) # <<<<<<<<<<<<<< - * d1 = area(coords) - area_group_L - * - */ - __pyx_t_4 = __pyx_v_node->records; - __Pyx_INCREF(__pyx_t_4); - __pyx_f_5tinyr_common_boundaries(((PyObject*)__pyx_t_4), __pyx_v_coords); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 774, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - - /* "tinyr.pyx":775 - * - * common_boundaries(node.records, coords) - * d1 = area(coords) - area_group_L # <<<<<<<<<<<<<< - * - * common_boundaries(newnode.records, coords) - */ - __pyx_t_5 = __pyx_f_5tinyr_area(__pyx_v_coords); if (unlikely(__pyx_t_5 == ((__pyx_t_5tinyr_Dfloat)-1) && PyErr_Occurred())) __PYX_ERR(0, 775, __pyx_L1_error) - __pyx_v_d1 = (__pyx_t_5 - __pyx_v_area_group_L); - - /* "tinyr.pyx":777 - * d1 = area(coords) - area_group_L - * - * common_boundaries(newnode.records, coords) # <<<<<<<<<<<<<< - * d2 = area(coords) - area_group_LL - * - */ - __pyx_t_4 = __pyx_v_newnode->records; - __Pyx_INCREF(__pyx_t_4); - __pyx_f_5tinyr_common_boundaries(((PyObject*)__pyx_t_4), __pyx_v_coords); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 777, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - - /* "tinyr.pyx":778 - * - * common_boundaries(newnode.records, coords) - * d2 = area(coords) - area_group_LL # <<<<<<<<<<<<<< - * - * d_diff = d1 - d2 - */ - __pyx_t_5 = __pyx_f_5tinyr_area(__pyx_v_coords); if (unlikely(__pyx_t_5 == ((__pyx_t_5tinyr_Dfloat)-1) && PyErr_Occurred())) __PYX_ERR(0, 778, __pyx_L1_error) - __pyx_v_d2 = (__pyx_t_5 - __pyx_v_area_group_LL); - - /* "tinyr.pyx":780 - * d2 = area(coords) - area_group_LL - * - * d_diff = d1 - d2 # <<<<<<<<<<<<<< - * d_diff = d_diff if d_diff >= 0 else -d_diff # abs diff - * - */ - __pyx_v_d_diff = (__pyx_v_d1 - __pyx_v_d2); - - /* "tinyr.pyx":781 - * - * d_diff = d1 - d2 - * d_diff = d_diff if d_diff >= 0 else -d_diff # abs diff # <<<<<<<<<<<<<< - * - * if d_diff > d_diff_max: - */ - __pyx_t_2 = (__pyx_v_d_diff >= 0.0); - if (__pyx_t_2) { - __pyx_t_5 = __pyx_v_d_diff; - } else { - __pyx_t_5 = (-__pyx_v_d_diff); - } - __pyx_v_d_diff = __pyx_t_5; - - /* "tinyr.pyx":783 - * d_diff = d_diff if d_diff >= 0 else -d_diff # abs diff - * - * if d_diff > d_diff_max: # <<<<<<<<<<<<<< - * d_diff_max = d_diff - * E_next = E - */ - __pyx_t_2 = (__pyx_v_d_diff > __pyx_v_d_diff_max); - if (__pyx_t_2) { - - /* "tinyr.pyx":784 - * - * if d_diff > d_diff_max: - * d_diff_max = d_diff # <<<<<<<<<<<<<< - * E_next = E - * - */ - __pyx_v_d_diff_max = __pyx_v_d_diff; - - /* "tinyr.pyx":785 - * if d_diff > d_diff_max: - * d_diff_max = d_diff - * E_next = E # <<<<<<<<<<<<<< - * - * d1_next = d1 - */ - __Pyx_INCREF((PyObject *)__pyx_v_E); - __Pyx_XDECREF_SET(__pyx_v_E_next, __pyx_v_E); - - /* "tinyr.pyx":787 - * E_next = E - * - * d1_next = d1 # <<<<<<<<<<<<<< - * d2_next = d2 - * - */ - __pyx_v_d1_next = __pyx_v_d1; - - /* "tinyr.pyx":788 - * - * d1_next = d1 - * d2_next = d2 # <<<<<<<<<<<<<< - * - * node.records.pop() - */ - __pyx_v_d2_next = __pyx_v_d2; - - /* "tinyr.pyx":783 - * d_diff = d_diff if d_diff >= 0 else -d_diff # abs diff - * - * if d_diff > d_diff_max: # <<<<<<<<<<<<<< - * d_diff_max = d_diff - * E_next = E - */ - } - - /* "tinyr.pyx":767 - * newnode.records.append(None) - * - * for E in remaining: # <<<<<<<<<<<<<< - * - * # temporary add E to self.records / newnode.records as parameter for common_boundires() - */ - } - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - - /* "tinyr.pyx":790 - * d2_next = d2 - * - * node.records.pop() # <<<<<<<<<<<<<< - * newnode.records.pop() - * - */ - if (unlikely(__pyx_v_node->records == Py_None)) { - PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "pop"); - __PYX_ERR(0, 790, __pyx_L1_error) - } - __pyx_t_3 = __Pyx_PyList_Pop(__pyx_v_node->records); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 790, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - - /* "tinyr.pyx":791 - * - * node.records.pop() - * newnode.records.pop() # <<<<<<<<<<<<<< - * - * remaining.remove(E_next) - */ - if (unlikely(__pyx_v_newnode->records == Py_None)) { - PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "pop"); - __PYX_ERR(0, 791, __pyx_L1_error) - } - __pyx_t_3 = __Pyx_PyList_Pop(__pyx_v_newnode->records); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 791, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - - /* "tinyr.pyx":793 - * newnode.records.pop() - * - * remaining.remove(E_next) # <<<<<<<<<<<<<< - * - * # QS3 - */ - if (unlikely(!__pyx_v_E_next)) { __Pyx_RaiseUnboundLocalError("E_next"); __PYX_ERR(0, 793, __pyx_L1_error) } - __pyx_t_3 = __Pyx_CallUnboundCMethod1(&__pyx_umethod_PyList_Type_remove, __pyx_v_remaining, ((PyObject *)__pyx_v_E_next)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 793, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } - __pyx_L3:; - - /* "tinyr.pyx":796 - * - * # QS3 - * if d1_next < d2_next: # <<<<<<<<<<<<<< - * node.records.append(E_next) - * elif d1_next > d2_next: - */ - __pyx_t_2 = (__pyx_v_d1_next < __pyx_v_d2_next); - if (__pyx_t_2) { - - /* "tinyr.pyx":797 - * # QS3 - * if d1_next < d2_next: - * node.records.append(E_next) # <<<<<<<<<<<<<< - * elif d1_next > d2_next: - * newnode.records.append(E_next) - */ - if (unlikely(__pyx_v_node->records == Py_None)) { - PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append"); - __PYX_ERR(0, 797, __pyx_L1_error) - } - if (unlikely(!__pyx_v_E_next)) { __Pyx_RaiseUnboundLocalError("E_next"); __PYX_ERR(0, 797, __pyx_L1_error) } - __pyx_t_6 = __Pyx_PyList_Append(__pyx_v_node->records, ((PyObject *)__pyx_v_E_next)); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 797, __pyx_L1_error) - - /* "tinyr.pyx":796 - * - * # QS3 - * if d1_next < d2_next: # <<<<<<<<<<<<<< - * node.records.append(E_next) - * elif d1_next > d2_next: - */ - goto __pyx_L14; - } - - /* "tinyr.pyx":798 - * if d1_next < d2_next: - * node.records.append(E_next) - * elif d1_next > d2_next: # <<<<<<<<<<<<<< - * newnode.records.append(E_next) - * elif len(node.records) > len(newnode.records): - */ - __pyx_t_2 = (__pyx_v_d1_next > __pyx_v_d2_next); - if (__pyx_t_2) { - - /* "tinyr.pyx":799 - * node.records.append(E_next) - * elif d1_next > d2_next: - * newnode.records.append(E_next) # <<<<<<<<<<<<<< - * elif len(node.records) > len(newnode.records): - * newnode.records.append(E_next) - */ - if (unlikely(__pyx_v_newnode->records == Py_None)) { - PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append"); - __PYX_ERR(0, 799, __pyx_L1_error) - } - if (unlikely(!__pyx_v_E_next)) { __Pyx_RaiseUnboundLocalError("E_next"); __PYX_ERR(0, 799, __pyx_L1_error) } - __pyx_t_6 = __Pyx_PyList_Append(__pyx_v_newnode->records, ((PyObject *)__pyx_v_E_next)); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 799, __pyx_L1_error) - - /* "tinyr.pyx":798 - * if d1_next < d2_next: - * node.records.append(E_next) - * elif d1_next > d2_next: # <<<<<<<<<<<<<< - * newnode.records.append(E_next) - * elif len(node.records) > len(newnode.records): - */ - goto __pyx_L14; - } - - /* "tinyr.pyx":800 - * elif d1_next > d2_next: - * newnode.records.append(E_next) - * elif len(node.records) > len(newnode.records): # <<<<<<<<<<<<<< - * newnode.records.append(E_next) - * else: - */ - __pyx_t_3 = __pyx_v_node->records; - __Pyx_INCREF(__pyx_t_3); - if (unlikely(__pyx_t_3 == Py_None)) { - PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); - __PYX_ERR(0, 800, __pyx_L1_error) - } - __pyx_t_1 = __Pyx_PyList_GET_SIZE(__pyx_t_3); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(0, 800, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __pyx_v_newnode->records; - __Pyx_INCREF(__pyx_t_3); - if (unlikely(__pyx_t_3 == Py_None)) { - PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); - __PYX_ERR(0, 800, __pyx_L1_error) - } - __pyx_t_7 = __Pyx_PyList_GET_SIZE(__pyx_t_3); if (unlikely(__pyx_t_7 == ((Py_ssize_t)-1))) __PYX_ERR(0, 800, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_2 = (__pyx_t_1 > __pyx_t_7); - if (__pyx_t_2) { - - /* "tinyr.pyx":801 - * newnode.records.append(E_next) - * elif len(node.records) > len(newnode.records): - * newnode.records.append(E_next) # <<<<<<<<<<<<<< - * else: - * node.records.append(E_next) - */ - if (unlikely(__pyx_v_newnode->records == Py_None)) { - PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append"); - __PYX_ERR(0, 801, __pyx_L1_error) - } - if (unlikely(!__pyx_v_E_next)) { __Pyx_RaiseUnboundLocalError("E_next"); __PYX_ERR(0, 801, __pyx_L1_error) } - __pyx_t_6 = __Pyx_PyList_Append(__pyx_v_newnode->records, ((PyObject *)__pyx_v_E_next)); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 801, __pyx_L1_error) - - /* "tinyr.pyx":800 - * elif d1_next > d2_next: - * newnode.records.append(E_next) - * elif len(node.records) > len(newnode.records): # <<<<<<<<<<<<<< - * newnode.records.append(E_next) - * else: - */ - goto __pyx_L14; - } - - /* "tinyr.pyx":803 - * newnode.records.append(E_next) - * else: - * node.records.append(E_next) # <<<<<<<<<<<<<< - * - * - */ - /*else*/ { - if (unlikely(__pyx_v_node->records == Py_None)) { - PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append"); - __PYX_ERR(0, 803, __pyx_L1_error) - } - if (unlikely(!__pyx_v_E_next)) { __Pyx_RaiseUnboundLocalError("E_next"); __PYX_ERR(0, 803, __pyx_L1_error) } - __pyx_t_6 = __Pyx_PyList_Append(__pyx_v_node->records, ((PyObject *)__pyx_v_E_next)); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 803, __pyx_L1_error) - } - __pyx_L14:; - - /* "tinyr.pyx":739 - * return newnode - * - * cdef inline int PickNext(self, _Node node, list remaining, _Node newnode) except -1: # <<<<<<<<<<<<<< - * cdef: - * Dfloat area_group_L, area_group_LL - */ - - /* function exit code */ - __pyx_r = 0; - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_AddTraceback("tinyr.RTree.PickNext", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = -1; - __pyx_L0:; - __Pyx_XDECREF((PyObject *)__pyx_v_E_next); - __Pyx_XDECREF((PyObject *)__pyx_v_E); - __Pyx_XDECREF((PyObject *)__pyx_v_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "tinyr.pyx":806 - * - * - * def valid(self): # <<<<<<<<<<<<<< - * # numbers in comments refer to invariant properties of an RTree - taken from [Gut84] - * cdef: - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_5tinyr_5RTree_27valid(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -); /*proto*/ -static PyMethodDef __pyx_mdef_5tinyr_5RTree_27valid = {"valid", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_5tinyr_5RTree_27valid, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; -static PyObject *__pyx_pw_5tinyr_5RTree_27valid(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -) { - #if !CYTHON_METH_FASTCALL - CYTHON_UNUSED Py_ssize_t __pyx_nargs; - #endif - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("valid (wrapper)", 0); - #if !CYTHON_METH_FASTCALL - #if CYTHON_ASSUME_SAFE_MACROS - __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); - #else - __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; - #endif - #endif - __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); - if (unlikely(__pyx_nargs > 0)) { - __Pyx_RaiseArgtupleInvalid("valid", 1, 0, 0, __pyx_nargs); return NULL;} - if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "valid", 0))) return NULL; - __pyx_r = __pyx_pf_5tinyr_5RTree_26valid(((struct __pyx_obj_5tinyr_RTree *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_5tinyr_5RTree_26valid(struct __pyx_obj_5tinyr_RTree *__pyx_v_self) { - __pyx_t_5tinyr_Dfloat __pyx_v_tmp_coords[4]; - struct __pyx_obj_5tinyr__Node *__pyx_v_node = 0; - __pyx_t_5tinyr_Duint __pyx_v_depth; - __pyx_t_5tinyr_Duint __pyx_v_item_count; - PyObject *__pyx_v_nodedepht = NULL; - PyObject *__pyx_v_leafnodes_and_depth = NULL; - PyObject *__pyx_v_rec = NULL; - PyObject *__pyx_v_ir = NULL; - PyObject *__pyx_v_d = NULL; - CYTHON_UNUSED PyObject *__pyx_v_leaf = NULL; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - Py_ssize_t __pyx_t_3; - PyObject *(*__pyx_t_4)(PyObject *); - PyObject *__pyx_t_5 = NULL; - PyObject *__pyx_t_6 = NULL; - PyObject *__pyx_t_7 = NULL; - PyObject *(*__pyx_t_8)(PyObject *); - __pyx_t_5tinyr_Duint __pyx_t_9; - Py_ssize_t __pyx_t_10; - int __pyx_t_11; - int __pyx_t_12; - PyObject *__pyx_t_13 = NULL; - PyObject *__pyx_t_14 = NULL; - int __pyx_t_15; - int __pyx_t_16; - int __pyx_t_17; - __pyx_t_5tinyr_Dfloat __pyx_t_18; - __pyx_t_5tinyr_Dfloat __pyx_t_19; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("valid", 1); - - /* "tinyr.pyx":813 - * Duint depth, item_count - * - * nodedepht = None # <<<<<<<<<<<<<< - * item_count = 0 - * leafnodes_and_depth = [] - */ - __Pyx_INCREF(Py_None); - __pyx_v_nodedepht = Py_None; - - /* "tinyr.pyx":814 - * - * nodedepht = None - * item_count = 0 # <<<<<<<<<<<<<< - * leafnodes_and_depth = [] - * - */ - __pyx_v_item_count = 0; - - /* "tinyr.pyx":815 - * nodedepht = None - * item_count = 0 - * leafnodes_and_depth = [] # <<<<<<<<<<<<<< - * - * for depth, node in _NodeIter(self): - */ - __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 815, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_v_leafnodes_and_depth = ((PyObject*)__pyx_t_1); - __pyx_t_1 = 0; - - /* "tinyr.pyx":817 - * leafnodes_and_depth = [] - * - * for depth, node in _NodeIter(self): # <<<<<<<<<<<<<< - * if node.is_leaf: - * for rec in node.records: - */ - __pyx_t_1 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_5tinyr__NodeIter), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 817, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) { - __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2); - __pyx_t_3 = 0; - __pyx_t_4 = NULL; - } else { - __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 817, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_4 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 817, __pyx_L1_error) - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - for (;;) { - if (likely(!__pyx_t_4)) { - if (likely(PyList_CheckExact(__pyx_t_2))) { - { - Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_2); - #if !CYTHON_ASSUME_SAFE_MACROS - if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 817, __pyx_L1_error) - #endif - if (__pyx_t_3 >= __pyx_temp) break; - } - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_1); __pyx_t_3++; if (unlikely((0 < 0))) __PYX_ERR(0, 817, __pyx_L1_error) - #else - __pyx_t_1 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 817, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - #endif - } else { - { - Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_2); - #if !CYTHON_ASSUME_SAFE_MACROS - if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 817, __pyx_L1_error) - #endif - if (__pyx_t_3 >= __pyx_temp) break; - } - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_1); __pyx_t_3++; if (unlikely((0 < 0))) __PYX_ERR(0, 817, __pyx_L1_error) - #else - __pyx_t_1 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 817, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - #endif - } - } else { - __pyx_t_1 = __pyx_t_4(__pyx_t_2); - if (unlikely(!__pyx_t_1)) { - PyObject* exc_type = PyErr_Occurred(); - if (exc_type) { - if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); - else __PYX_ERR(0, 817, __pyx_L1_error) - } - break; - } - __Pyx_GOTREF(__pyx_t_1); - } - if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { - PyObject* sequence = __pyx_t_1; - Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); - if (unlikely(size != 2)) { - if (size > 2) __Pyx_RaiseTooManyValuesError(2); - else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); - __PYX_ERR(0, 817, __pyx_L1_error) - } - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - if (likely(PyTuple_CheckExact(sequence))) { - __pyx_t_5 = PyTuple_GET_ITEM(sequence, 0); - __pyx_t_6 = PyTuple_GET_ITEM(sequence, 1); - } else { - __pyx_t_5 = PyList_GET_ITEM(sequence, 0); - __pyx_t_6 = PyList_GET_ITEM(sequence, 1); - } - __Pyx_INCREF(__pyx_t_5); - __Pyx_INCREF(__pyx_t_6); - #else - __pyx_t_5 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 817, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 817, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - #endif - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } else { - Py_ssize_t index = -1; - __pyx_t_7 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 817, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_8 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_7); - index = 0; __pyx_t_5 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_5)) goto __pyx_L5_unpacking_failed; - __Pyx_GOTREF(__pyx_t_5); - index = 1; __pyx_t_6 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_6)) goto __pyx_L5_unpacking_failed; - __Pyx_GOTREF(__pyx_t_6); - if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_7), 2) < 0) __PYX_ERR(0, 817, __pyx_L1_error) - __pyx_t_8 = NULL; - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - goto __pyx_L6_unpacking_done; - __pyx_L5_unpacking_failed:; - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_8 = NULL; - if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); - __PYX_ERR(0, 817, __pyx_L1_error) - __pyx_L6_unpacking_done:; - } - __pyx_t_9 = __Pyx_PyInt_As_unsigned_int(__pyx_t_5); if (unlikely((__pyx_t_9 == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(0, 817, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5tinyr__Node))))) __PYX_ERR(0, 817, __pyx_L1_error) - __pyx_v_depth = __pyx_t_9; - __Pyx_XDECREF_SET(__pyx_v_node, ((struct __pyx_obj_5tinyr__Node *)__pyx_t_6)); - __pyx_t_6 = 0; - - /* "tinyr.pyx":818 - * - * for depth, node in _NodeIter(self): - * if node.is_leaf: # <<<<<<<<<<<<<< - * for rec in node.records: - * assert isinstance(rec, _ChildRecord), depth - */ - if (__pyx_v_node->is_leaf) { - - /* "tinyr.pyx":819 - * for depth, node in _NodeIter(self): - * if node.is_leaf: - * for rec in node.records: # <<<<<<<<<<<<<< - * assert isinstance(rec, _ChildRecord), depth - * - */ - if (unlikely(__pyx_v_node->records == Py_None)) { - PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); - __PYX_ERR(0, 819, __pyx_L1_error) - } - __pyx_t_1 = __pyx_v_node->records; __Pyx_INCREF(__pyx_t_1); - __pyx_t_10 = 0; - for (;;) { - { - Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1); - #if !CYTHON_ASSUME_SAFE_MACROS - if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 819, __pyx_L1_error) - #endif - if (__pyx_t_10 >= __pyx_temp) break; - } - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_6 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_10); __Pyx_INCREF(__pyx_t_6); __pyx_t_10++; if (unlikely((0 < 0))) __PYX_ERR(0, 819, __pyx_L1_error) - #else - __pyx_t_6 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_10); __pyx_t_10++; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 819, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - #endif - __Pyx_XDECREF_SET(__pyx_v_rec, __pyx_t_6); - __pyx_t_6 = 0; - - /* "tinyr.pyx":820 - * if node.is_leaf: - * for rec in node.records: - * assert isinstance(rec, _ChildRecord), depth # <<<<<<<<<<<<<< - * - * # (1) - */ - #ifndef CYTHON_WITHOUT_ASSERTIONS - if (unlikely(__pyx_assertions_enabled())) { - __pyx_t_11 = __Pyx_TypeCheck(__pyx_v_rec, __pyx_ptype_5tinyr__ChildRecord); - if (unlikely(!__pyx_t_11)) { - __pyx_t_6 = __Pyx_PyInt_From_unsigned_int(__pyx_v_depth); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 820, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __pyx_t_5 = PyTuple_Pack(1, __pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 820, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_Raise(__pyx_builtin_AssertionError, __pyx_t_5, 0, 0); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __PYX_ERR(0, 820, __pyx_L1_error) - } - } - #else - if ((1)); else __PYX_ERR(0, 820, __pyx_L1_error) - #endif - - /* "tinyr.pyx":819 - * for depth, node in _NodeIter(self): - * if node.is_leaf: - * for rec in node.records: # <<<<<<<<<<<<<< - * assert isinstance(rec, _ChildRecord), depth - * - */ - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "tinyr.pyx":823 - * - * # (1) - * if not (node is self.root or len(node.records) <= self.M_cap and len(node.records) >= self.m_cap): # <<<<<<<<<<<<<< - * raise RTreeInvalid('non-leaf node has invalid number of entries: %d <= len(%s) <= %d == False' % (self.m_cap, str(node), self.m_cap)) - * - */ - __pyx_t_12 = (__pyx_v_node == __pyx_v_self->root); - if (!__pyx_t_12) { - } else { - __pyx_t_11 = __pyx_t_12; - goto __pyx_L12_bool_binop_done; - } - __pyx_t_1 = __pyx_v_node->records; - __Pyx_INCREF(__pyx_t_1); - if (unlikely(__pyx_t_1 == Py_None)) { - PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); - __PYX_ERR(0, 823, __pyx_L1_error) - } - __pyx_t_10 = __Pyx_PyList_GET_SIZE(__pyx_t_1); if (unlikely(__pyx_t_10 == ((Py_ssize_t)-1))) __PYX_ERR(0, 823, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_12 = (__pyx_t_10 <= __pyx_v_self->M_cap); - if (__pyx_t_12) { - } else { - __pyx_t_11 = __pyx_t_12; - goto __pyx_L12_bool_binop_done; - } - __pyx_t_1 = __pyx_v_node->records; - __Pyx_INCREF(__pyx_t_1); - if (unlikely(__pyx_t_1 == Py_None)) { - PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); - __PYX_ERR(0, 823, __pyx_L1_error) - } - __pyx_t_10 = __Pyx_PyList_GET_SIZE(__pyx_t_1); if (unlikely(__pyx_t_10 == ((Py_ssize_t)-1))) __PYX_ERR(0, 823, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_12 = (__pyx_t_10 >= __pyx_v_self->m_cap); - __pyx_t_11 = __pyx_t_12; - __pyx_L12_bool_binop_done:; - __pyx_t_12 = (!__pyx_t_11); - if (unlikely(__pyx_t_12)) { - - /* "tinyr.pyx":824 - * # (1) - * if not (node is self.root or len(node.records) <= self.M_cap and len(node.records) >= self.m_cap): - * raise RTreeInvalid('non-leaf node has invalid number of entries: %d <= len(%s) <= %d == False' % (self.m_cap, str(node), self.m_cap)) # <<<<<<<<<<<<<< - * - * # (2) - */ - __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_RTreeInvalid); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 824, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_6 = __Pyx_PyInt_From_int(__pyx_v_self->m_cap); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 824, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __pyx_t_7 = __Pyx_PyObject_Str(((PyObject *)__pyx_v_node)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 824, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __pyx_t_13 = __Pyx_PyInt_From_int(__pyx_v_self->m_cap); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 824, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_13); - __pyx_t_14 = PyTuple_New(3); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 824, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_14); - __Pyx_GIVEREF(__pyx_t_6); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_6)) __PYX_ERR(0, 824, __pyx_L1_error); - __Pyx_GIVEREF(__pyx_t_7); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_14, 1, __pyx_t_7)) __PYX_ERR(0, 824, __pyx_L1_error); - __Pyx_GIVEREF(__pyx_t_13); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_14, 2, __pyx_t_13)) __PYX_ERR(0, 824, __pyx_L1_error); - __pyx_t_6 = 0; - __pyx_t_7 = 0; - __pyx_t_13 = 0; - __pyx_t_13 = __Pyx_PyString_Format(__pyx_kp_s_non_leaf_node_has_invalid_number, __pyx_t_14); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 824, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_13); - __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; - __pyx_t_14 = NULL; - __pyx_t_15 = 0; - #if CYTHON_UNPACK_METHODS - if (unlikely(PyMethod_Check(__pyx_t_5))) { - __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_5); - if (likely(__pyx_t_14)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); - __Pyx_INCREF(__pyx_t_14); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_5, function); - __pyx_t_15 = 1; - } - } - #endif - { - PyObject *__pyx_callargs[2] = {__pyx_t_14, __pyx_t_13}; - __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_15, 1+__pyx_t_15); - __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0; - __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 824, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - } - __Pyx_Raise(__pyx_t_1, 0, 0, 0); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __PYX_ERR(0, 824, __pyx_L1_error) - - /* "tinyr.pyx":823 - * - * # (1) - * if not (node is self.root or len(node.records) <= self.M_cap and len(node.records) >= self.m_cap): # <<<<<<<<<<<<<< - * raise RTreeInvalid('non-leaf node has invalid number of entries: %d <= len(%s) <= %d == False' % (self.m_cap, str(node), self.m_cap)) - * - */ - } - - /* "tinyr.pyx":830 - * - * # prepare (6) - * if nodedepht is None: # <<<<<<<<<<<<<< - * nodedepht = depth - * leafnodes_and_depth.append((depth, node)) - */ - __pyx_t_12 = (__pyx_v_nodedepht == Py_None); - if (__pyx_t_12) { - - /* "tinyr.pyx":831 - * # prepare (6) - * if nodedepht is None: - * nodedepht = depth # <<<<<<<<<<<<<< - * leafnodes_and_depth.append((depth, node)) - * - */ - __pyx_t_1 = __Pyx_PyInt_From_unsigned_int(__pyx_v_depth); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 831, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF_SET(__pyx_v_nodedepht, __pyx_t_1); - __pyx_t_1 = 0; - - /* "tinyr.pyx":830 - * - * # prepare (6) - * if nodedepht is None: # <<<<<<<<<<<<<< - * nodedepht = depth - * leafnodes_and_depth.append((depth, node)) - */ - } - - /* "tinyr.pyx":832 - * if nodedepht is None: - * nodedepht = depth - * leafnodes_and_depth.append((depth, node)) # <<<<<<<<<<<<<< - * - * item_count += len(node.records) - */ - __pyx_t_1 = __Pyx_PyInt_From_unsigned_int(__pyx_v_depth); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 832, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 832, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_GIVEREF(__pyx_t_1); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1)) __PYX_ERR(0, 832, __pyx_L1_error); - __Pyx_INCREF((PyObject *)__pyx_v_node); - __Pyx_GIVEREF((PyObject *)__pyx_v_node); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 1, ((PyObject *)__pyx_v_node))) __PYX_ERR(0, 832, __pyx_L1_error); - __pyx_t_1 = 0; - __pyx_t_16 = __Pyx_PyList_Append(__pyx_v_leafnodes_and_depth, __pyx_t_5); if (unlikely(__pyx_t_16 == ((int)-1))) __PYX_ERR(0, 832, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - - /* "tinyr.pyx":834 - * leafnodes_and_depth.append((depth, node)) - * - * item_count += len(node.records) # <<<<<<<<<<<<<< - * - * # height is right - */ - __pyx_t_5 = __pyx_v_node->records; - __Pyx_INCREF(__pyx_t_5); - if (unlikely(__pyx_t_5 == Py_None)) { - PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); - __PYX_ERR(0, 834, __pyx_L1_error) - } - __pyx_t_10 = __Pyx_PyList_GET_SIZE(__pyx_t_5); if (unlikely(__pyx_t_10 == ((Py_ssize_t)-1))) __PYX_ERR(0, 834, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_v_item_count = (__pyx_v_item_count + __pyx_t_10); - - /* "tinyr.pyx":837 - * - * # height is right - * if self._leaf_level != depth: # <<<<<<<<<<<<<< - * raise RTreeInvalid('inconsistent node depth: %d != %d' % (self._leaf_level, depth)) - * - */ - __pyx_t_12 = (__pyx_v_self->_leaf_level != __pyx_v_depth); - if (unlikely(__pyx_t_12)) { - - /* "tinyr.pyx":838 - * # height is right - * if self._leaf_level != depth: - * raise RTreeInvalid('inconsistent node depth: %d != %d' % (self._leaf_level, depth)) # <<<<<<<<<<<<<< - * - * else: - */ - __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_RTreeInvalid); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 838, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_13 = __Pyx_PyInt_From_unsigned_int(__pyx_v_self->_leaf_level); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 838, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_13); - __pyx_t_14 = __Pyx_PyInt_From_unsigned_int(__pyx_v_depth); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 838, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_14); - __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 838, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __Pyx_GIVEREF(__pyx_t_13); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_13)) __PYX_ERR(0, 838, __pyx_L1_error); - __Pyx_GIVEREF(__pyx_t_14); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_14)) __PYX_ERR(0, 838, __pyx_L1_error); - __pyx_t_13 = 0; - __pyx_t_14 = 0; - __pyx_t_14 = __Pyx_PyString_Format(__pyx_kp_s_inconsistent_node_depth_d_d, __pyx_t_7); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 838, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_14); - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_7 = NULL; - __pyx_t_15 = 0; - #if CYTHON_UNPACK_METHODS - if (unlikely(PyMethod_Check(__pyx_t_1))) { - __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_1); - if (likely(__pyx_t_7)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); - __Pyx_INCREF(__pyx_t_7); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_1, function); - __pyx_t_15 = 1; - } - } - #endif - { - PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_t_14}; - __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_15, 1+__pyx_t_15); - __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; - __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; - if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 838, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - __Pyx_Raise(__pyx_t_5, 0, 0, 0); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __PYX_ERR(0, 838, __pyx_L1_error) - - /* "tinyr.pyx":837 - * - * # height is right - * if self._leaf_level != depth: # <<<<<<<<<<<<<< - * raise RTreeInvalid('inconsistent node depth: %d != %d' % (self._leaf_level, depth)) - * - */ - } - - /* "tinyr.pyx":818 - * - * for depth, node in _NodeIter(self): - * if node.is_leaf: # <<<<<<<<<<<<<< - * for rec in node.records: - * assert isinstance(rec, _ChildRecord), depth - */ - goto __pyx_L7; - } - - /* "tinyr.pyx":842 - * else: - * # (3) - * if not node is self.root: # <<<<<<<<<<<<<< - * if not (len(node.records) <= self.M_cap and len(node.records) >= self.m_cap): - * raise RTreeInvalid('non-leaf node has invalid number of entries: %d <= len(%s) <= %d == False' % (self.m_cap, str(node), self.m_cap)) - */ - /*else*/ { - __pyx_t_12 = (__pyx_v_node != __pyx_v_self->root); - if (__pyx_t_12) { - - /* "tinyr.pyx":843 - * # (3) - * if not node is self.root: - * if not (len(node.records) <= self.M_cap and len(node.records) >= self.m_cap): # <<<<<<<<<<<<<< - * raise RTreeInvalid('non-leaf node has invalid number of entries: %d <= len(%s) <= %d == False' % (self.m_cap, str(node), self.m_cap)) - * - */ - __pyx_t_5 = __pyx_v_node->records; - __Pyx_INCREF(__pyx_t_5); - if (unlikely(__pyx_t_5 == Py_None)) { - PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); - __PYX_ERR(0, 843, __pyx_L1_error) - } - __pyx_t_10 = __Pyx_PyList_GET_SIZE(__pyx_t_5); if (unlikely(__pyx_t_10 == ((Py_ssize_t)-1))) __PYX_ERR(0, 843, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_11 = (__pyx_t_10 <= __pyx_v_self->M_cap); - if (__pyx_t_11) { - } else { - __pyx_t_12 = __pyx_t_11; - goto __pyx_L19_bool_binop_done; - } - __pyx_t_5 = __pyx_v_node->records; - __Pyx_INCREF(__pyx_t_5); - if (unlikely(__pyx_t_5 == Py_None)) { - PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); - __PYX_ERR(0, 843, __pyx_L1_error) - } - __pyx_t_10 = __Pyx_PyList_GET_SIZE(__pyx_t_5); if (unlikely(__pyx_t_10 == ((Py_ssize_t)-1))) __PYX_ERR(0, 843, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_11 = (__pyx_t_10 >= __pyx_v_self->m_cap); - __pyx_t_12 = __pyx_t_11; - __pyx_L19_bool_binop_done:; - __pyx_t_11 = (!__pyx_t_12); - if (unlikely(__pyx_t_11)) { - - /* "tinyr.pyx":844 - * if not node is self.root: - * if not (len(node.records) <= self.M_cap and len(node.records) >= self.m_cap): - * raise RTreeInvalid('non-leaf node has invalid number of entries: %d <= len(%s) <= %d == False' % (self.m_cap, str(node), self.m_cap)) # <<<<<<<<<<<<<< - * - * # (4) - */ - __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_RTreeInvalid); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 844, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_14 = __Pyx_PyInt_From_int(__pyx_v_self->m_cap); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 844, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_14); - __pyx_t_7 = __Pyx_PyObject_Str(((PyObject *)__pyx_v_node)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 844, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __pyx_t_13 = __Pyx_PyInt_From_int(__pyx_v_self->m_cap); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 844, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_13); - __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 844, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __Pyx_GIVEREF(__pyx_t_14); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_14)) __PYX_ERR(0, 844, __pyx_L1_error); - __Pyx_GIVEREF(__pyx_t_7); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_7)) __PYX_ERR(0, 844, __pyx_L1_error); - __Pyx_GIVEREF(__pyx_t_13); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_t_13)) __PYX_ERR(0, 844, __pyx_L1_error); - __pyx_t_14 = 0; - __pyx_t_7 = 0; - __pyx_t_13 = 0; - __pyx_t_13 = __Pyx_PyString_Format(__pyx_kp_s_non_leaf_node_has_invalid_number, __pyx_t_6); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 844, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_13); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = NULL; - __pyx_t_15 = 0; - #if CYTHON_UNPACK_METHODS - if (unlikely(PyMethod_Check(__pyx_t_1))) { - __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_1); - if (likely(__pyx_t_6)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); - __Pyx_INCREF(__pyx_t_6); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_1, function); - __pyx_t_15 = 1; - } - } - #endif - { - PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_13}; - __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_15, 1+__pyx_t_15); - __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; - if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 844, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - __Pyx_Raise(__pyx_t_5, 0, 0, 0); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __PYX_ERR(0, 844, __pyx_L1_error) - - /* "tinyr.pyx":843 - * # (3) - * if not node is self.root: - * if not (len(node.records) <= self.M_cap and len(node.records) >= self.m_cap): # <<<<<<<<<<<<<< - * raise RTreeInvalid('non-leaf node has invalid number of entries: %d <= len(%s) <= %d == False' % (self.m_cap, str(node), self.m_cap)) - * - */ - } - - /* "tinyr.pyx":842 - * else: - * # (3) - * if not node is self.root: # <<<<<<<<<<<<<< - * if not (len(node.records) <= self.M_cap and len(node.records) >= self.m_cap): - * raise RTreeInvalid('non-leaf node has invalid number of entries: %d <= len(%s) <= %d == False' % (self.m_cap, str(node), self.m_cap)) - */ - } - - /* "tinyr.pyx":847 - * - * # (4) - * for rec in node.records: # <<<<<<<<<<<<<< - * if not isinstance(rec, _InnerRecord) or \ - * not isinstance((<_InnerRecord>rec).child, _Node): - */ - if (unlikely(__pyx_v_node->records == Py_None)) { - PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); - __PYX_ERR(0, 847, __pyx_L1_error) - } - __pyx_t_5 = __pyx_v_node->records; __Pyx_INCREF(__pyx_t_5); - __pyx_t_10 = 0; - for (;;) { - { - Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_5); - #if !CYTHON_ASSUME_SAFE_MACROS - if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 847, __pyx_L1_error) - #endif - if (__pyx_t_10 >= __pyx_temp) break; - } - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_1 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_10); __Pyx_INCREF(__pyx_t_1); __pyx_t_10++; if (unlikely((0 < 0))) __PYX_ERR(0, 847, __pyx_L1_error) - #else - __pyx_t_1 = __Pyx_PySequence_ITEM(__pyx_t_5, __pyx_t_10); __pyx_t_10++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 847, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - #endif - __Pyx_XDECREF_SET(__pyx_v_rec, __pyx_t_1); - __pyx_t_1 = 0; - - /* "tinyr.pyx":848 - * # (4) - * for rec in node.records: - * if not isinstance(rec, _InnerRecord) or \ # <<<<<<<<<<<<<< - * not isinstance((<_InnerRecord>rec).child, _Node): - * raise RTreeInvalid('misspositioned inner node') - */ - __pyx_t_12 = __Pyx_TypeCheck(__pyx_v_rec, __pyx_ptype_5tinyr__InnerRecord); - __pyx_t_17 = (!__pyx_t_12); - if (!__pyx_t_17) { - } else { - __pyx_t_11 = __pyx_t_17; - goto __pyx_L24_bool_binop_done; - } - - /* "tinyr.pyx":849 - * for rec in node.records: - * if not isinstance(rec, _InnerRecord) or \ - * not isinstance((<_InnerRecord>rec).child, _Node): # <<<<<<<<<<<<<< - * raise RTreeInvalid('misspositioned inner node') - * - */ - __pyx_t_1 = ((PyObject *)((struct __pyx_obj_5tinyr__InnerRecord *)__pyx_v_rec)->child); - __Pyx_INCREF(__pyx_t_1); - __pyx_t_17 = __Pyx_TypeCheck(__pyx_t_1, __pyx_ptype_5tinyr__Node); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_12 = (!__pyx_t_17); - __pyx_t_11 = __pyx_t_12; - __pyx_L24_bool_binop_done:; - - /* "tinyr.pyx":848 - * # (4) - * for rec in node.records: - * if not isinstance(rec, _InnerRecord) or \ # <<<<<<<<<<<<<< - * not isinstance((<_InnerRecord>rec).child, _Node): - * raise RTreeInvalid('misspositioned inner node') - */ - if (unlikely(__pyx_t_11)) { - - /* "tinyr.pyx":850 - * if not isinstance(rec, _InnerRecord) or \ - * not isinstance((<_InnerRecord>rec).child, _Node): - * raise RTreeInvalid('misspositioned inner node') # <<<<<<<<<<<<<< - * - * common_boundaries((<_InnerRecord>rec).child.records, tmp_coords) - */ - __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_RTreeInvalid); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 850, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_13); - __pyx_t_6 = NULL; - __pyx_t_15 = 0; - #if CYTHON_UNPACK_METHODS - if (unlikely(PyMethod_Check(__pyx_t_13))) { - __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_13); - if (likely(__pyx_t_6)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13); - __Pyx_INCREF(__pyx_t_6); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_13, function); - __pyx_t_15 = 1; - } - } - #endif - { - PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_kp_s_misspositioned_inner_node}; - __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_13, __pyx_callargs+1-__pyx_t_15, 1+__pyx_t_15); - __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 850, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; - } - __Pyx_Raise(__pyx_t_1, 0, 0, 0); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __PYX_ERR(0, 850, __pyx_L1_error) - - /* "tinyr.pyx":848 - * # (4) - * for rec in node.records: - * if not isinstance(rec, _InnerRecord) or \ # <<<<<<<<<<<<<< - * not isinstance((<_InnerRecord>rec).child, _Node): - * raise RTreeInvalid('misspositioned inner node') - */ - } - - /* "tinyr.pyx":852 - * raise RTreeInvalid('misspositioned inner node') - * - * common_boundaries((<_InnerRecord>rec).child.records, tmp_coords) # <<<<<<<<<<<<<< - * - * if area((<_Record>rec).coords) != area(tmp_coords): - */ - __pyx_t_1 = ((struct __pyx_obj_5tinyr__InnerRecord *)__pyx_v_rec)->child->records; - __Pyx_INCREF(__pyx_t_1); - __pyx_f_5tinyr_common_boundaries(((PyObject*)__pyx_t_1), __pyx_v_tmp_coords); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 852, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "tinyr.pyx":854 - * common_boundaries((<_InnerRecord>rec).child.records, tmp_coords) - * - * if area((<_Record>rec).coords) != area(tmp_coords): # <<<<<<<<<<<<<< - * raise RTreeInvalid('wrong combined area of records of a node') - * - */ - __pyx_t_18 = __pyx_f_5tinyr_area(((struct __pyx_obj_5tinyr__Record *)__pyx_v_rec)->coords); if (unlikely(__pyx_t_18 == ((__pyx_t_5tinyr_Dfloat)-1) && PyErr_Occurred())) __PYX_ERR(0, 854, __pyx_L1_error) - __pyx_t_19 = __pyx_f_5tinyr_area(__pyx_v_tmp_coords); if (unlikely(__pyx_t_19 == ((__pyx_t_5tinyr_Dfloat)-1) && PyErr_Occurred())) __PYX_ERR(0, 854, __pyx_L1_error) - __pyx_t_11 = (__pyx_t_18 != __pyx_t_19); - if (unlikely(__pyx_t_11)) { - - /* "tinyr.pyx":855 - * - * if area((<_Record>rec).coords) != area(tmp_coords): - * raise RTreeInvalid('wrong combined area of records of a node') # <<<<<<<<<<<<<< - * - * # double-links cover each other - */ - __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_RTreeInvalid); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 855, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_13); - __pyx_t_6 = NULL; - __pyx_t_15 = 0; - #if CYTHON_UNPACK_METHODS - if (unlikely(PyMethod_Check(__pyx_t_13))) { - __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_13); - if (likely(__pyx_t_6)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13); - __Pyx_INCREF(__pyx_t_6); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_13, function); - __pyx_t_15 = 1; - } - } - #endif - { - PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_kp_s_wrong_combined_area_of_records_o}; - __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_13, __pyx_callargs+1-__pyx_t_15, 1+__pyx_t_15); - __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 855, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; - } - __Pyx_Raise(__pyx_t_1, 0, 0, 0); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __PYX_ERR(0, 855, __pyx_L1_error) - - /* "tinyr.pyx":854 - * common_boundaries((<_InnerRecord>rec).child.records, tmp_coords) - * - * if area((<_Record>rec).coords) != area(tmp_coords): # <<<<<<<<<<<<<< - * raise RTreeInvalid('wrong combined area of records of a node') - * - */ - } - - /* "tinyr.pyx":847 - * - * # (4) - * for rec in node.records: # <<<<<<<<<<<<<< - * if not isinstance(rec, _InnerRecord) or \ - * not isinstance((<_InnerRecord>rec).child, _Node): - */ - } - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - - /* "tinyr.pyx":858 - * - * # double-links cover each other - * for ir in node.records: # <<<<<<<<<<<<<< - * if not (<_InnerRecord>ir).child.parent is node: - * raise RTreeInvalid('double-link doesn\'t cover itself') - */ - if (unlikely(__pyx_v_node->records == Py_None)) { - PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); - __PYX_ERR(0, 858, __pyx_L1_error) - } - __pyx_t_5 = __pyx_v_node->records; __Pyx_INCREF(__pyx_t_5); - __pyx_t_10 = 0; - for (;;) { - { - Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_5); - #if !CYTHON_ASSUME_SAFE_MACROS - if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 858, __pyx_L1_error) - #endif - if (__pyx_t_10 >= __pyx_temp) break; - } - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_1 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_10); __Pyx_INCREF(__pyx_t_1); __pyx_t_10++; if (unlikely((0 < 0))) __PYX_ERR(0, 858, __pyx_L1_error) - #else - __pyx_t_1 = __Pyx_PySequence_ITEM(__pyx_t_5, __pyx_t_10); __pyx_t_10++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 858, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - #endif - __Pyx_XDECREF_SET(__pyx_v_ir, __pyx_t_1); - __pyx_t_1 = 0; - - /* "tinyr.pyx":859 - * # double-links cover each other - * for ir in node.records: - * if not (<_InnerRecord>ir).child.parent is node: # <<<<<<<<<<<<<< - * raise RTreeInvalid('double-link doesn\'t cover itself') - * - */ - __pyx_t_11 = (((struct __pyx_obj_5tinyr__InnerRecord *)__pyx_v_ir)->child->parent != __pyx_v_node); - if (unlikely(__pyx_t_11)) { - - /* "tinyr.pyx":860 - * for ir in node.records: - * if not (<_InnerRecord>ir).child.parent is node: - * raise RTreeInvalid('double-link doesn\'t cover itself') # <<<<<<<<<<<<<< - * - * # (5) - */ - __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_RTreeInvalid); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 860, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_13); - __pyx_t_6 = NULL; - __pyx_t_15 = 0; - #if CYTHON_UNPACK_METHODS - if (unlikely(PyMethod_Check(__pyx_t_13))) { - __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_13); - if (likely(__pyx_t_6)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13); - __Pyx_INCREF(__pyx_t_6); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_13, function); - __pyx_t_15 = 1; - } - } - #endif - { - PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_kp_s_double_link_doesn_t_cover_itself}; - __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_13, __pyx_callargs+1-__pyx_t_15, 1+__pyx_t_15); - __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 860, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; - } - __Pyx_Raise(__pyx_t_1, 0, 0, 0); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __PYX_ERR(0, 860, __pyx_L1_error) - - /* "tinyr.pyx":859 - * # double-links cover each other - * for ir in node.records: - * if not (<_InnerRecord>ir).child.parent is node: # <<<<<<<<<<<<<< - * raise RTreeInvalid('double-link doesn\'t cover itself') - * - */ - } - - /* "tinyr.pyx":858 - * - * # double-links cover each other - * for ir in node.records: # <<<<<<<<<<<<<< - * if not (<_InnerRecord>ir).child.parent is node: - * raise RTreeInvalid('double-link doesn\'t cover itself') - */ - } - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - } - __pyx_L7:; - - /* "tinyr.pyx":817 - * leafnodes_and_depth = [] - * - * for depth, node in _NodeIter(self): # <<<<<<<<<<<<<< - * if node.is_leaf: - * for rec in node.records: - */ - } - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "tinyr.pyx":863 - * - * # (5) - * if not self.root.is_leaf: # <<<<<<<<<<<<<< - * - * if len(self.root.records) < 2: - */ - __pyx_t_11 = (!__pyx_v_self->root->is_leaf); - if (__pyx_t_11) { - - /* "tinyr.pyx":865 - * if not self.root.is_leaf: - * - * if len(self.root.records) < 2: # <<<<<<<<<<<<<< - * raise RTreeInvalid('root must have at least 2 records, not %d.' % len(self.root.records)) - * - */ - __pyx_t_2 = __pyx_v_self->root->records; - __Pyx_INCREF(__pyx_t_2); - if (unlikely(__pyx_t_2 == Py_None)) { - PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); - __PYX_ERR(0, 865, __pyx_L1_error) - } - __pyx_t_3 = __Pyx_PyList_GET_SIZE(__pyx_t_2); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(0, 865, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_11 = (__pyx_t_3 < 2); - if (unlikely(__pyx_t_11)) { - - /* "tinyr.pyx":866 - * - * if len(self.root.records) < 2: - * raise RTreeInvalid('root must have at least 2 records, not %d.' % len(self.root.records)) # <<<<<<<<<<<<<< - * - * # (6) - */ - __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_RTreeInvalid); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 866, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_1 = __pyx_v_self->root->records; - __Pyx_INCREF(__pyx_t_1); - if (unlikely(__pyx_t_1 == Py_None)) { - PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); - __PYX_ERR(0, 866, __pyx_L1_error) - } - __pyx_t_3 = __Pyx_PyList_GET_SIZE(__pyx_t_1); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(0, 866, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 866, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_13 = __Pyx_PyString_Format(__pyx_kp_s_root_must_have_at_least_2_record, __pyx_t_1); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 866, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_13); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = NULL; - __pyx_t_15 = 0; - #if CYTHON_UNPACK_METHODS - if (unlikely(PyMethod_Check(__pyx_t_5))) { - __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_5); - if (likely(__pyx_t_1)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); - __Pyx_INCREF(__pyx_t_1); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_5, function); - __pyx_t_15 = 1; - } - } - #endif - { - PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_t_13}; - __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_15, 1+__pyx_t_15); - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; - if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 866, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - } - __Pyx_Raise(__pyx_t_2, 0, 0, 0); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __PYX_ERR(0, 866, __pyx_L1_error) - - /* "tinyr.pyx":865 - * if not self.root.is_leaf: - * - * if len(self.root.records) < 2: # <<<<<<<<<<<<<< - * raise RTreeInvalid('root must have at least 2 records, not %d.' % len(self.root.records)) - * - */ - } - - /* "tinyr.pyx":863 - * - * # (5) - * if not self.root.is_leaf: # <<<<<<<<<<<<<< - * - * if len(self.root.records) < 2: - */ - } - - /* "tinyr.pyx":869 - * - * # (6) - * for d, leaf in leafnodes_and_depth: # <<<<<<<<<<<<<< - * if d != nodedepht: - * raise RTreeInvalid('leaf level is not equal for all leafs') - */ - __pyx_t_2 = __pyx_v_leafnodes_and_depth; __Pyx_INCREF(__pyx_t_2); - __pyx_t_3 = 0; - for (;;) { - { - Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_2); - #if !CYTHON_ASSUME_SAFE_MACROS - if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 869, __pyx_L1_error) - #endif - if (__pyx_t_3 >= __pyx_temp) break; - } - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_5 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely((0 < 0))) __PYX_ERR(0, 869, __pyx_L1_error) - #else - __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 869, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - #endif - if ((likely(PyTuple_CheckExact(__pyx_t_5))) || (PyList_CheckExact(__pyx_t_5))) { - PyObject* sequence = __pyx_t_5; - Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); - if (unlikely(size != 2)) { - if (size > 2) __Pyx_RaiseTooManyValuesError(2); - else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); - __PYX_ERR(0, 869, __pyx_L1_error) - } - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - if (likely(PyTuple_CheckExact(sequence))) { - __pyx_t_13 = PyTuple_GET_ITEM(sequence, 0); - __pyx_t_1 = PyTuple_GET_ITEM(sequence, 1); - } else { - __pyx_t_13 = PyList_GET_ITEM(sequence, 0); - __pyx_t_1 = PyList_GET_ITEM(sequence, 1); - } - __Pyx_INCREF(__pyx_t_13); - __Pyx_INCREF(__pyx_t_1); - #else - __pyx_t_13 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 869, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_13); - __pyx_t_1 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 869, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - #endif - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - } else { - Py_ssize_t index = -1; - __pyx_t_6 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 869, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_8 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_6); - index = 0; __pyx_t_13 = __pyx_t_8(__pyx_t_6); if (unlikely(!__pyx_t_13)) goto __pyx_L37_unpacking_failed; - __Pyx_GOTREF(__pyx_t_13); - index = 1; __pyx_t_1 = __pyx_t_8(__pyx_t_6); if (unlikely(!__pyx_t_1)) goto __pyx_L37_unpacking_failed; - __Pyx_GOTREF(__pyx_t_1); - if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_6), 2) < 0) __PYX_ERR(0, 869, __pyx_L1_error) - __pyx_t_8 = NULL; - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - goto __pyx_L38_unpacking_done; - __pyx_L37_unpacking_failed:; - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_8 = NULL; - if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); - __PYX_ERR(0, 869, __pyx_L1_error) - __pyx_L38_unpacking_done:; - } - __Pyx_XDECREF_SET(__pyx_v_d, __pyx_t_13); - __pyx_t_13 = 0; - __Pyx_XDECREF_SET(__pyx_v_leaf, __pyx_t_1); - __pyx_t_1 = 0; - - /* "tinyr.pyx":870 - * # (6) - * for d, leaf in leafnodes_and_depth: - * if d != nodedepht: # <<<<<<<<<<<<<< - * raise RTreeInvalid('leaf level is not equal for all leafs') - * - */ - __pyx_t_5 = PyObject_RichCompare(__pyx_v_d, __pyx_v_nodedepht, Py_NE); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 870, __pyx_L1_error) - __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely((__pyx_t_11 < 0))) __PYX_ERR(0, 870, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (unlikely(__pyx_t_11)) { - - /* "tinyr.pyx":871 - * for d, leaf in leafnodes_and_depth: - * if d != nodedepht: - * raise RTreeInvalid('leaf level is not equal for all leafs') # <<<<<<<<<<<<<< - * - * # count of items is right - */ - __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_RTreeInvalid); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 871, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_13 = NULL; - __pyx_t_15 = 0; - #if CYTHON_UNPACK_METHODS - if (unlikely(PyMethod_Check(__pyx_t_1))) { - __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_1); - if (likely(__pyx_t_13)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); - __Pyx_INCREF(__pyx_t_13); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_1, function); - __pyx_t_15 = 1; - } - } - #endif - { - PyObject *__pyx_callargs[2] = {__pyx_t_13, __pyx_kp_s_leaf_level_is_not_equal_for_all}; - __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_15, 1+__pyx_t_15); - __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; - if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 871, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - __Pyx_Raise(__pyx_t_5, 0, 0, 0); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __PYX_ERR(0, 871, __pyx_L1_error) - - /* "tinyr.pyx":870 - * # (6) - * for d, leaf in leafnodes_and_depth: - * if d != nodedepht: # <<<<<<<<<<<<<< - * raise RTreeInvalid('leaf level is not equal for all leafs') - * - */ - } - - /* "tinyr.pyx":869 - * - * # (6) - * for d, leaf in leafnodes_and_depth: # <<<<<<<<<<<<<< - * if d != nodedepht: - * raise RTreeInvalid('leaf level is not equal for all leafs') - */ - } - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "tinyr.pyx":874 - * - * # count of items is right - * if item_count != self._node_cnt: # <<<<<<<<<<<<<< - * raise RTreeInvalid('inconsistent item count %d != %d' % (item_count, self._node_cnt)) - * - */ - __pyx_t_11 = (__pyx_v_item_count != __pyx_v_self->_node_cnt); - if (unlikely(__pyx_t_11)) { - - /* "tinyr.pyx":875 - * # count of items is right - * if item_count != self._node_cnt: - * raise RTreeInvalid('inconsistent item count %d != %d' % (item_count, self._node_cnt)) # <<<<<<<<<<<<<< - * - * return True - */ - __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_RTreeInvalid); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 875, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_1 = __Pyx_PyInt_From_unsigned_int(__pyx_v_item_count); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 875, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_13 = __Pyx_PyInt_From_unsigned_int(__pyx_v_self->_node_cnt); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 875, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_13); - __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 875, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __Pyx_GIVEREF(__pyx_t_1); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1)) __PYX_ERR(0, 875, __pyx_L1_error); - __Pyx_GIVEREF(__pyx_t_13); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_13)) __PYX_ERR(0, 875, __pyx_L1_error); - __pyx_t_1 = 0; - __pyx_t_13 = 0; - __pyx_t_13 = __Pyx_PyString_Format(__pyx_kp_s_inconsistent_item_count_d_d, __pyx_t_6); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 875, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_13); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = NULL; - __pyx_t_15 = 0; - #if CYTHON_UNPACK_METHODS - if (unlikely(PyMethod_Check(__pyx_t_5))) { - __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5); - if (likely(__pyx_t_6)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); - __Pyx_INCREF(__pyx_t_6); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_5, function); - __pyx_t_15 = 1; - } - } - #endif - { - PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_13}; - __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_15, 1+__pyx_t_15); - __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; - if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 875, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - } - __Pyx_Raise(__pyx_t_2, 0, 0, 0); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __PYX_ERR(0, 875, __pyx_L1_error) - - /* "tinyr.pyx":874 - * - * # count of items is right - * if item_count != self._node_cnt: # <<<<<<<<<<<<<< - * raise RTreeInvalid('inconsistent item count %d != %d' % (item_count, self._node_cnt)) - * - */ - } - - /* "tinyr.pyx":877 - * raise RTreeInvalid('inconsistent item count %d != %d' % (item_count, self._node_cnt)) - * - * return True # <<<<<<<<<<<<<< - * - * ############################################################################### - */ - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(Py_True); - __pyx_r = Py_True; - goto __pyx_L0; - - /* "tinyr.pyx":806 - * - * - * def valid(self): # <<<<<<<<<<<<<< - * # numbers in comments refer to invariant properties of an RTree - taken from [Gut84] - * cdef: - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_XDECREF(__pyx_t_6); - __Pyx_XDECREF(__pyx_t_7); - __Pyx_XDECREF(__pyx_t_13); - __Pyx_XDECREF(__pyx_t_14); - __Pyx_AddTraceback("tinyr.RTree.valid", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XDECREF((PyObject *)__pyx_v_node); - __Pyx_XDECREF(__pyx_v_nodedepht); - __Pyx_XDECREF(__pyx_v_leafnodes_and_depth); - __Pyx_XDECREF(__pyx_v_rec); - __Pyx_XDECREF(__pyx_v_ir); - __Pyx_XDECREF(__pyx_v_d); - __Pyx_XDECREF(__pyx_v_leaf); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "(tree fragment)":1 - * def __reduce_cython__(self): # <<<<<<<<<<<<<< - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_5tinyr_5RTree_29__reduce_cython__(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -); /*proto*/ -static PyMethodDef __pyx_mdef_5tinyr_5RTree_29__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_5tinyr_5RTree_29__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; -static PyObject *__pyx_pw_5tinyr_5RTree_29__reduce_cython__(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -) { - #if !CYTHON_METH_FASTCALL - CYTHON_UNUSED Py_ssize_t __pyx_nargs; - #endif - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); - #if !CYTHON_METH_FASTCALL - #if CYTHON_ASSUME_SAFE_MACROS - __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); - #else - __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; - #endif - #endif - __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); - if (unlikely(__pyx_nargs > 0)) { - __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL;} - if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__reduce_cython__", 0))) return NULL; - __pyx_r = __pyx_pf_5tinyr_5RTree_28__reduce_cython__(((struct __pyx_obj_5tinyr_RTree *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_5tinyr_5RTree_28__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_5tinyr_RTree *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__reduce_cython__", 1); - - /* "(tree fragment)":2 - * def __reduce_cython__(self): - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" # <<<<<<<<<<<<<< - * def __setstate_cython__(self, __pyx_state): - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - */ - __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_no_default___reduce___due_to_non, 0, 0); - __PYX_ERR(1, 2, __pyx_L1_error) - - /* "(tree fragment)":1 - * def __reduce_cython__(self): # <<<<<<<<<<<<<< - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_AddTraceback("tinyr.RTree.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "(tree fragment)":3 - * def __reduce_cython__(self): - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_5tinyr_5RTree_31__setstate_cython__(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -); /*proto*/ -static PyMethodDef __pyx_mdef_5tinyr_5RTree_31__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_5tinyr_5RTree_31__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; -static PyObject *__pyx_pw_5tinyr_5RTree_31__setstate_cython__(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -) { - CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0; - #if !CYTHON_METH_FASTCALL - CYTHON_UNUSED Py_ssize_t __pyx_nargs; - #endif - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject* values[1] = {0}; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); - #if !CYTHON_METH_FASTCALL - #if CYTHON_ASSUME_SAFE_MACROS - __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); - #else - __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; - #endif - #endif - __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); - { - PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,0}; - if (__pyx_kwds) { - Py_ssize_t kw_args; - switch (__pyx_nargs) { - case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); - switch (__pyx_nargs) { - case 0: - if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) { - (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); - kw_args--; - } - else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 3, __pyx_L3_error) - else goto __pyx_L5_argtuple_error; - } - if (unlikely(kw_args > 0)) { - const Py_ssize_t kwd_pos_args = __pyx_nargs; - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__setstate_cython__") < 0)) __PYX_ERR(1, 3, __pyx_L3_error) - } - } else if (unlikely(__pyx_nargs != 1)) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); - } - __pyx_v___pyx_state = values[0]; - } - goto __pyx_L6_skip; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error) - __pyx_L6_skip:; - goto __pyx_L4_argument_unpacking_done; - __pyx_L3_error:; - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); - } - } - __Pyx_AddTraceback("tinyr.RTree.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_5tinyr_5RTree_30__setstate_cython__(((struct __pyx_obj_5tinyr_RTree *)__pyx_v_self), __pyx_v___pyx_state); - - /* function exit code */ - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); - } - } - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_5tinyr_5RTree_30__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_5tinyr_RTree *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__setstate_cython__", 1); - - /* "(tree fragment)":4 - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" # <<<<<<<<<<<<<< - */ - __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_no_default___reduce___due_to_non, 0, 0); - __PYX_ERR(1, 4, __pyx_L1_error) - - /* "(tree fragment)":3 - * def __reduce_cython__(self): - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_AddTraceback("tinyr.RTree.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "tinyr.pyx":886 - * cdef RTree rtree - * - * def __cinit__(self, RTree rtree): # <<<<<<<<<<<<<< - * self.rtree = rtree - * - */ - -/* Python wrapper */ -static int __pyx_pw_5tinyr_9_Iterator_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static int __pyx_pw_5tinyr_9_Iterator_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - struct __pyx_obj_5tinyr_RTree *__pyx_v_rtree = 0; - CYTHON_UNUSED Py_ssize_t __pyx_nargs; - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject* values[1] = {0}; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0); - #if CYTHON_ASSUME_SAFE_MACROS - __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); - #else - __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1; - #endif - __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - { - PyObject **__pyx_pyargnames[] = {&__pyx_n_s_rtree,0}; - if (__pyx_kwds) { - Py_ssize_t kw_args; - switch (__pyx_nargs) { - case 1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds); - switch (__pyx_nargs) { - case 0: - if (likely((values[0] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_rtree)) != 0)) { - (void)__Pyx_Arg_NewRef_VARARGS(values[0]); - kw_args--; - } - else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 886, __pyx_L3_error) - else goto __pyx_L5_argtuple_error; - } - if (unlikely(kw_args > 0)) { - const Py_ssize_t kwd_pos_args = __pyx_nargs; - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__cinit__") < 0)) __PYX_ERR(0, 886, __pyx_L3_error) - } - } else if (unlikely(__pyx_nargs != 1)) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0); - } - __pyx_v_rtree = ((struct __pyx_obj_5tinyr_RTree *)values[0]); - } - goto __pyx_L6_skip; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 886, __pyx_L3_error) - __pyx_L6_skip:; - goto __pyx_L4_argument_unpacking_done; - __pyx_L3_error:; - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]); - } - } - __Pyx_AddTraceback("tinyr._Iterator.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return -1; - __pyx_L4_argument_unpacking_done:; - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rtree), __pyx_ptype_5tinyr_RTree, 1, "rtree", 0))) __PYX_ERR(0, 886, __pyx_L1_error) - __pyx_r = __pyx_pf_5tinyr_9_Iterator___cinit__(((struct __pyx_obj_5tinyr__Iterator *)__pyx_v_self), __pyx_v_rtree); - - /* function exit code */ - goto __pyx_L0; - __pyx_L1_error:; - __pyx_r = -1; - __pyx_L0:; - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]); - } - } - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_pf_5tinyr_9_Iterator___cinit__(struct __pyx_obj_5tinyr__Iterator *__pyx_v_self, struct __pyx_obj_5tinyr_RTree *__pyx_v_rtree) { - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__cinit__", 1); - - /* "tinyr.pyx":887 - * - * def __cinit__(self, RTree rtree): - * self.rtree = rtree # <<<<<<<<<<<<<< - * - * def __iter__(self): - */ - __Pyx_INCREF((PyObject *)__pyx_v_rtree); - __Pyx_GIVEREF((PyObject *)__pyx_v_rtree); - __Pyx_GOTREF((PyObject *)__pyx_v_self->rtree); - __Pyx_DECREF((PyObject *)__pyx_v_self->rtree); - __pyx_v_self->rtree = __pyx_v_rtree; - - /* "tinyr.pyx":886 - * cdef RTree rtree - * - * def __cinit__(self, RTree rtree): # <<<<<<<<<<<<<< - * self.rtree = rtree - * - */ - - /* function exit code */ - __pyx_r = 0; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "tinyr.pyx":889 - * self.rtree = rtree - * - * def __iter__(self): # <<<<<<<<<<<<<< - * return self - * - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_5tinyr_9_Iterator_3__iter__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_5tinyr_9_Iterator_3__iter__(PyObject *__pyx_v_self) { - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__iter__ (wrapper)", 0); - __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_5tinyr_9_Iterator_2__iter__(((struct __pyx_obj_5tinyr__Iterator *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_5tinyr_9_Iterator_2__iter__(struct __pyx_obj_5tinyr__Iterator *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__iter__", 1); - - /* "tinyr.pyx":890 - * - * def __iter__(self): - * return self # <<<<<<<<<<<<<< - * - * cdef class _NodeIter(_Iterator): - */ - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF((PyObject *)__pyx_v_self); - __pyx_r = ((PyObject *)__pyx_v_self); - goto __pyx_L0; - - /* "tinyr.pyx":889 - * self.rtree = rtree - * - * def __iter__(self): # <<<<<<<<<<<<<< - * return self - * - */ - - /* function exit code */ - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "(tree fragment)":1 - * def __reduce_cython__(self): # <<<<<<<<<<<<<< - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_5tinyr_9_Iterator_5__reduce_cython__(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -); /*proto*/ -static PyMethodDef __pyx_mdef_5tinyr_9_Iterator_5__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_5tinyr_9_Iterator_5__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; -static PyObject *__pyx_pw_5tinyr_9_Iterator_5__reduce_cython__(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -) { - #if !CYTHON_METH_FASTCALL - CYTHON_UNUSED Py_ssize_t __pyx_nargs; - #endif - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); - #if !CYTHON_METH_FASTCALL - #if CYTHON_ASSUME_SAFE_MACROS - __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); - #else - __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; - #endif - #endif - __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); - if (unlikely(__pyx_nargs > 0)) { - __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL;} - if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__reduce_cython__", 0))) return NULL; - __pyx_r = __pyx_pf_5tinyr_9_Iterator_4__reduce_cython__(((struct __pyx_obj_5tinyr__Iterator *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_5tinyr_9_Iterator_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_5tinyr__Iterator *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__reduce_cython__", 1); - - /* "(tree fragment)":2 - * def __reduce_cython__(self): - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" # <<<<<<<<<<<<<< - * def __setstate_cython__(self, __pyx_state): - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - */ - __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_no_default___reduce___due_to_non, 0, 0); - __PYX_ERR(1, 2, __pyx_L1_error) - - /* "(tree fragment)":1 - * def __reduce_cython__(self): # <<<<<<<<<<<<<< - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_AddTraceback("tinyr._Iterator.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "(tree fragment)":3 - * def __reduce_cython__(self): - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_5tinyr_9_Iterator_7__setstate_cython__(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -); /*proto*/ -static PyMethodDef __pyx_mdef_5tinyr_9_Iterator_7__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_5tinyr_9_Iterator_7__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; -static PyObject *__pyx_pw_5tinyr_9_Iterator_7__setstate_cython__(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -) { - CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0; - #if !CYTHON_METH_FASTCALL - CYTHON_UNUSED Py_ssize_t __pyx_nargs; - #endif - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject* values[1] = {0}; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); - #if !CYTHON_METH_FASTCALL - #if CYTHON_ASSUME_SAFE_MACROS - __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); - #else - __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; - #endif - #endif - __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); - { - PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,0}; - if (__pyx_kwds) { - Py_ssize_t kw_args; - switch (__pyx_nargs) { - case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); - switch (__pyx_nargs) { - case 0: - if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) { - (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); - kw_args--; - } - else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 3, __pyx_L3_error) - else goto __pyx_L5_argtuple_error; - } - if (unlikely(kw_args > 0)) { - const Py_ssize_t kwd_pos_args = __pyx_nargs; - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__setstate_cython__") < 0)) __PYX_ERR(1, 3, __pyx_L3_error) - } - } else if (unlikely(__pyx_nargs != 1)) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); - } - __pyx_v___pyx_state = values[0]; - } - goto __pyx_L6_skip; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error) - __pyx_L6_skip:; - goto __pyx_L4_argument_unpacking_done; - __pyx_L3_error:; - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); - } - } - __Pyx_AddTraceback("tinyr._Iterator.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_5tinyr_9_Iterator_6__setstate_cython__(((struct __pyx_obj_5tinyr__Iterator *)__pyx_v_self), __pyx_v___pyx_state); - - /* function exit code */ - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); - } - } - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_5tinyr_9_Iterator_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_5tinyr__Iterator *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__setstate_cython__", 1); - - /* "(tree fragment)":4 - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" # <<<<<<<<<<<<<< - */ - __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_no_default___reduce___due_to_non, 0, 0); - __PYX_ERR(1, 4, __pyx_L1_error) - - /* "(tree fragment)":3 - * def __reduce_cython__(self): - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_AddTraceback("tinyr._Iterator.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "tinyr.pyx":896 - * list nodeset - * - * def __cinit__(self, RTree rtree): # <<<<<<<<<<<<<< - * if rtree.root: - * self.nodeset = [(0, rtree.root)] - */ - -/* Python wrapper */ -static int __pyx_pw_5tinyr_9_NodeIter_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static int __pyx_pw_5tinyr_9_NodeIter_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - struct __pyx_obj_5tinyr_RTree *__pyx_v_rtree = 0; - CYTHON_UNUSED Py_ssize_t __pyx_nargs; - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject* values[1] = {0}; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0); - #if CYTHON_ASSUME_SAFE_MACROS - __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); - #else - __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1; - #endif - __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - { - PyObject **__pyx_pyargnames[] = {&__pyx_n_s_rtree,0}; - if (__pyx_kwds) { - Py_ssize_t kw_args; - switch (__pyx_nargs) { - case 1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds); - switch (__pyx_nargs) { - case 0: - if (likely((values[0] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_rtree)) != 0)) { - (void)__Pyx_Arg_NewRef_VARARGS(values[0]); - kw_args--; - } - else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 896, __pyx_L3_error) - else goto __pyx_L5_argtuple_error; - } - if (unlikely(kw_args > 0)) { - const Py_ssize_t kwd_pos_args = __pyx_nargs; - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__cinit__") < 0)) __PYX_ERR(0, 896, __pyx_L3_error) - } - } else if (unlikely(__pyx_nargs != 1)) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0); - } - __pyx_v_rtree = ((struct __pyx_obj_5tinyr_RTree *)values[0]); - } - goto __pyx_L6_skip; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 896, __pyx_L3_error) - __pyx_L6_skip:; - goto __pyx_L4_argument_unpacking_done; - __pyx_L3_error:; - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]); - } - } - __Pyx_AddTraceback("tinyr._NodeIter.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return -1; - __pyx_L4_argument_unpacking_done:; - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rtree), __pyx_ptype_5tinyr_RTree, 1, "rtree", 0))) __PYX_ERR(0, 896, __pyx_L1_error) - __pyx_r = __pyx_pf_5tinyr_9_NodeIter___cinit__(((struct __pyx_obj_5tinyr__NodeIter *)__pyx_v_self), __pyx_v_rtree); - - /* function exit code */ - goto __pyx_L0; - __pyx_L1_error:; - __pyx_r = -1; - __pyx_L0:; - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]); - } - } - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_pf_5tinyr_9_NodeIter___cinit__(struct __pyx_obj_5tinyr__NodeIter *__pyx_v_self, struct __pyx_obj_5tinyr_RTree *__pyx_v_rtree) { - int __pyx_r; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__cinit__", 1); - - /* "tinyr.pyx":897 - * - * def __cinit__(self, RTree rtree): - * if rtree.root: # <<<<<<<<<<<<<< - * self.nodeset = [(0, rtree.root)] - * else: - */ - __pyx_t_1 = __Pyx_PyObject_IsTrue(((PyObject *)__pyx_v_rtree->root)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 897, __pyx_L1_error) - if (__pyx_t_1) { - - /* "tinyr.pyx":898 - * def __cinit__(self, RTree rtree): - * if rtree.root: - * self.nodeset = [(0, rtree.root)] # <<<<<<<<<<<<<< - * else: - * self.nodeset = [] - */ - __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 898, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(__pyx_int_0); - __Pyx_GIVEREF(__pyx_int_0); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_int_0)) __PYX_ERR(0, 898, __pyx_L1_error); - __Pyx_INCREF((PyObject *)__pyx_v_rtree->root); - __Pyx_GIVEREF((PyObject *)__pyx_v_rtree->root); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_v_rtree->root))) __PYX_ERR(0, 898, __pyx_L1_error); - __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 898, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_GIVEREF(__pyx_t_2); - if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 0, __pyx_t_2)) __PYX_ERR(0, 898, __pyx_L1_error); - __pyx_t_2 = 0; - __Pyx_GIVEREF(__pyx_t_3); - __Pyx_GOTREF(__pyx_v_self->nodeset); - __Pyx_DECREF(__pyx_v_self->nodeset); - __pyx_v_self->nodeset = ((PyObject*)__pyx_t_3); - __pyx_t_3 = 0; - - /* "tinyr.pyx":897 - * - * def __cinit__(self, RTree rtree): - * if rtree.root: # <<<<<<<<<<<<<< - * self.nodeset = [(0, rtree.root)] - * else: - */ - goto __pyx_L3; - } - - /* "tinyr.pyx":900 - * self.nodeset = [(0, rtree.root)] - * else: - * self.nodeset = [] # <<<<<<<<<<<<<< - * - * def __next__(self): - */ - /*else*/ { - __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 900, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_GIVEREF(__pyx_t_3); - __Pyx_GOTREF(__pyx_v_self->nodeset); - __Pyx_DECREF(__pyx_v_self->nodeset); - __pyx_v_self->nodeset = ((PyObject*)__pyx_t_3); - __pyx_t_3 = 0; - } - __pyx_L3:; - - /* "tinyr.pyx":896 - * list nodeset - * - * def __cinit__(self, RTree rtree): # <<<<<<<<<<<<<< - * if rtree.root: - * self.nodeset = [(0, rtree.root)] - */ - - /* function exit code */ - __pyx_r = 0; - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_AddTraceback("tinyr._NodeIter.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = -1; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "tinyr.pyx":902 - * self.nodeset = [] - * - * def __next__(self): # <<<<<<<<<<<<<< - * cdef: - * _Node next - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_5tinyr_9_NodeIter_3__next__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_5tinyr_9_NodeIter_3__next__(PyObject *__pyx_v_self) { - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__next__ (wrapper)", 0); - __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_5tinyr_9_NodeIter_2__next__(((struct __pyx_obj_5tinyr__NodeIter *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_5tinyr_9_NodeIter_2__next__(struct __pyx_obj_5tinyr__NodeIter *__pyx_v_self) { - struct __pyx_obj_5tinyr__Node *__pyx_v_next = 0; - __pyx_t_5tinyr_Duint __pyx_v_level; - PyObject *__pyx_8genexpr2__pyx_v_r = NULL; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_error_without_exception = 0; /* StopIteration */ - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - PyObject *__pyx_t_6 = NULL; - PyObject *__pyx_t_7 = NULL; - PyObject *(*__pyx_t_8)(PyObject *); - __pyx_t_5tinyr_Duint __pyx_t_9; - int __pyx_t_10; - int __pyx_t_11; - Py_ssize_t __pyx_t_12; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__next__", 1); - - /* "tinyr.pyx":907 - * Duint level - * - * try: # <<<<<<<<<<<<<< - * level, next = <_Node>self.nodeset.pop(0) - * except IndexError: - */ - { - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3); - __Pyx_XGOTREF(__pyx_t_1); - __Pyx_XGOTREF(__pyx_t_2); - __Pyx_XGOTREF(__pyx_t_3); - /*try:*/ { - - /* "tinyr.pyx":908 - * - * try: - * level, next = <_Node>self.nodeset.pop(0) # <<<<<<<<<<<<<< - * except IndexError: - * raise StopIteration - */ - if (unlikely(__pyx_v_self->nodeset == Py_None)) { - PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "pop"); - __PYX_ERR(0, 908, __pyx_L3_error) - } - __pyx_t_4 = __Pyx_PyList_PopIndex(__pyx_v_self->nodeset, __pyx_int_0, 0, 1, Py_ssize_t, PyInt_FromSsize_t); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 908, __pyx_L3_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = __pyx_t_4; - __Pyx_INCREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - if ((likely(PyTuple_CheckExact(__pyx_t_5))) || (PyList_CheckExact(__pyx_t_5))) { - PyObject* sequence = __pyx_t_5; - Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); - if (unlikely(size != 2)) { - if (size > 2) __Pyx_RaiseTooManyValuesError(2); - else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); - __PYX_ERR(0, 908, __pyx_L3_error) - } - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - if (likely(PyTuple_CheckExact(sequence))) { - __pyx_t_4 = PyTuple_GET_ITEM(sequence, 0); - __pyx_t_6 = PyTuple_GET_ITEM(sequence, 1); - } else { - __pyx_t_4 = PyList_GET_ITEM(sequence, 0); - __pyx_t_6 = PyList_GET_ITEM(sequence, 1); - } - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(__pyx_t_6); - #else - __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 908, __pyx_L3_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 908, __pyx_L3_error) - __Pyx_GOTREF(__pyx_t_6); - #endif - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - } else { - Py_ssize_t index = -1; - __pyx_t_7 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 908, __pyx_L3_error) - __Pyx_GOTREF(__pyx_t_7); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_8 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_7); - index = 0; __pyx_t_4 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_4)) goto __pyx_L9_unpacking_failed; - __Pyx_GOTREF(__pyx_t_4); - index = 1; __pyx_t_6 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_6)) goto __pyx_L9_unpacking_failed; - __Pyx_GOTREF(__pyx_t_6); - if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_7), 2) < 0) __PYX_ERR(0, 908, __pyx_L3_error) - __pyx_t_8 = NULL; - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - goto __pyx_L10_unpacking_done; - __pyx_L9_unpacking_failed:; - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_8 = NULL; - if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); - __PYX_ERR(0, 908, __pyx_L3_error) - __pyx_L10_unpacking_done:; - } - __pyx_t_9 = __Pyx_PyInt_As_unsigned_int(__pyx_t_4); if (unlikely((__pyx_t_9 == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(0, 908, __pyx_L3_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5tinyr__Node))))) __PYX_ERR(0, 908, __pyx_L3_error) - __pyx_v_level = __pyx_t_9; - __pyx_v_next = ((struct __pyx_obj_5tinyr__Node *)__pyx_t_6); - __pyx_t_6 = 0; - - /* "tinyr.pyx":907 - * Duint level - * - * try: # <<<<<<<<<<<<<< - * level, next = <_Node>self.nodeset.pop(0) - * except IndexError: - */ - } - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - goto __pyx_L8_try_end; - __pyx_L3_error:; - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; - - /* "tinyr.pyx":909 - * try: - * level, next = <_Node>self.nodeset.pop(0) - * except IndexError: # <<<<<<<<<<<<<< - * raise StopIteration - * - */ - __pyx_t_10 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_IndexError); - if (__pyx_t_10) { - __Pyx_AddTraceback("tinyr._NodeIter.__next__", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_4) < 0) __PYX_ERR(0, 909, __pyx_L5_except_error) - __Pyx_XGOTREF(__pyx_t_5); - __Pyx_XGOTREF(__pyx_t_6); - __Pyx_XGOTREF(__pyx_t_4); - - /* "tinyr.pyx":910 - * level, next = <_Node>self.nodeset.pop(0) - * except IndexError: - * raise StopIteration # <<<<<<<<<<<<<< - * - * if not next.is_leaf: - */ - __pyx_error_without_exception = 1; - goto __pyx_L5_except_error;; - } - goto __pyx_L5_except_error; - - /* "tinyr.pyx":907 - * Duint level - * - * try: # <<<<<<<<<<<<<< - * level, next = <_Node>self.nodeset.pop(0) - * except IndexError: - */ - __pyx_L5_except_error:; - __Pyx_XGIVEREF(__pyx_t_1); - __Pyx_XGIVEREF(__pyx_t_2); - __Pyx_XGIVEREF(__pyx_t_3); - __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); - goto __pyx_L1_error; - __pyx_L8_try_end:; - } - - /* "tinyr.pyx":912 - * raise StopIteration - * - * if not next.is_leaf: # <<<<<<<<<<<<<< - * self.nodeset = [ (level+1, (<_InnerRecord>r).child) for r in next.records ] + self.nodeset - * - */ - __pyx_t_11 = (!__pyx_v_next->is_leaf); - if (__pyx_t_11) { - - /* "tinyr.pyx":913 - * - * if not next.is_leaf: - * self.nodeset = [ (level+1, (<_InnerRecord>r).child) for r in next.records ] + self.nodeset # <<<<<<<<<<<<<< - * - * return level, next - */ - { /* enter inner scope */ - __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 913, __pyx_L16_error) - __Pyx_GOTREF(__pyx_t_4); - if (unlikely(__pyx_v_next->records == Py_None)) { - PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); - __PYX_ERR(0, 913, __pyx_L16_error) - } - __pyx_t_6 = __pyx_v_next->records; __Pyx_INCREF(__pyx_t_6); - __pyx_t_12 = 0; - for (;;) { - { - Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_6); - #if !CYTHON_ASSUME_SAFE_MACROS - if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 913, __pyx_L16_error) - #endif - if (__pyx_t_12 >= __pyx_temp) break; - } - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_5 = PyList_GET_ITEM(__pyx_t_6, __pyx_t_12); __Pyx_INCREF(__pyx_t_5); __pyx_t_12++; if (unlikely((0 < 0))) __PYX_ERR(0, 913, __pyx_L16_error) - #else - __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_6, __pyx_t_12); __pyx_t_12++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 913, __pyx_L16_error) - __Pyx_GOTREF(__pyx_t_5); - #endif - __Pyx_XDECREF_SET(__pyx_8genexpr2__pyx_v_r, __pyx_t_5); - __pyx_t_5 = 0; - __pyx_t_5 = __Pyx_PyInt_From_long((__pyx_v_level + 1)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 913, __pyx_L16_error) - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 913, __pyx_L16_error) - __Pyx_GOTREF(__pyx_t_7); - __Pyx_GIVEREF(__pyx_t_5); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5)) __PYX_ERR(0, 913, __pyx_L16_error); - __Pyx_INCREF((PyObject *)((struct __pyx_obj_5tinyr__InnerRecord *)__pyx_8genexpr2__pyx_v_r)->child); - __Pyx_GIVEREF((PyObject *)((struct __pyx_obj_5tinyr__InnerRecord *)__pyx_8genexpr2__pyx_v_r)->child); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_7, 1, ((PyObject *)((struct __pyx_obj_5tinyr__InnerRecord *)__pyx_8genexpr2__pyx_v_r)->child))) __PYX_ERR(0, 913, __pyx_L16_error); - __pyx_t_5 = 0; - if (unlikely(__Pyx_ListComp_Append(__pyx_t_4, (PyObject*)__pyx_t_7))) __PYX_ERR(0, 913, __pyx_L16_error) - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - } - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_XDECREF(__pyx_8genexpr2__pyx_v_r); __pyx_8genexpr2__pyx_v_r = 0; - goto __pyx_L20_exit_scope; - __pyx_L16_error:; - __Pyx_XDECREF(__pyx_8genexpr2__pyx_v_r); __pyx_8genexpr2__pyx_v_r = 0; - goto __pyx_L1_error; - __pyx_L20_exit_scope:; - } /* exit inner scope */ - __pyx_t_6 = PyNumber_Add(__pyx_t_4, __pyx_v_self->nodeset); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 913, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GIVEREF(__pyx_t_6); - __Pyx_GOTREF(__pyx_v_self->nodeset); - __Pyx_DECREF(__pyx_v_self->nodeset); - __pyx_v_self->nodeset = ((PyObject*)__pyx_t_6); - __pyx_t_6 = 0; - - /* "tinyr.pyx":912 - * raise StopIteration - * - * if not next.is_leaf: # <<<<<<<<<<<<<< - * self.nodeset = [ (level+1, (<_InnerRecord>r).child) for r in next.records ] + self.nodeset - * - */ - } - - /* "tinyr.pyx":915 - * self.nodeset = [ (level+1, (<_InnerRecord>r).child) for r in next.records ] + self.nodeset - * - * return level, next # <<<<<<<<<<<<<< - * - * cdef class _RectangleIter(_Iterator): - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_6 = __Pyx_PyInt_From_unsigned_int(__pyx_v_level); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 915, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 915, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_6); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_6)) __PYX_ERR(0, 915, __pyx_L1_error); - __Pyx_INCREF((PyObject *)__pyx_v_next); - __Pyx_GIVEREF((PyObject *)__pyx_v_next); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, ((PyObject *)__pyx_v_next))) __PYX_ERR(0, 915, __pyx_L1_error); - __pyx_t_6 = 0; - __pyx_r = __pyx_t_4; - __pyx_t_4 = 0; - goto __pyx_L0; - - /* "tinyr.pyx":902 - * self.nodeset = [] - * - * def __next__(self): # <<<<<<<<<<<<<< - * cdef: - * _Node next - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_XDECREF(__pyx_t_6); - __Pyx_XDECREF(__pyx_t_7); - if (!__pyx_error_without_exception) { - __Pyx_AddTraceback("tinyr._NodeIter.__next__", __pyx_clineno, __pyx_lineno, __pyx_filename); - } - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XDECREF((PyObject *)__pyx_v_next); - __Pyx_XDECREF(__pyx_8genexpr2__pyx_v_r); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "(tree fragment)":1 - * def __reduce_cython__(self): # <<<<<<<<<<<<<< - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_5tinyr_9_NodeIter_5__reduce_cython__(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -); /*proto*/ -static PyMethodDef __pyx_mdef_5tinyr_9_NodeIter_5__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_5tinyr_9_NodeIter_5__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; -static PyObject *__pyx_pw_5tinyr_9_NodeIter_5__reduce_cython__(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -) { - #if !CYTHON_METH_FASTCALL - CYTHON_UNUSED Py_ssize_t __pyx_nargs; - #endif - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); - #if !CYTHON_METH_FASTCALL - #if CYTHON_ASSUME_SAFE_MACROS - __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); - #else - __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; - #endif - #endif - __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); - if (unlikely(__pyx_nargs > 0)) { - __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL;} - if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__reduce_cython__", 0))) return NULL; - __pyx_r = __pyx_pf_5tinyr_9_NodeIter_4__reduce_cython__(((struct __pyx_obj_5tinyr__NodeIter *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_5tinyr_9_NodeIter_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_5tinyr__NodeIter *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__reduce_cython__", 1); - - /* "(tree fragment)":2 - * def __reduce_cython__(self): - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" # <<<<<<<<<<<<<< - * def __setstate_cython__(self, __pyx_state): - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - */ - __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_no_default___reduce___due_to_non, 0, 0); - __PYX_ERR(1, 2, __pyx_L1_error) - - /* "(tree fragment)":1 - * def __reduce_cython__(self): # <<<<<<<<<<<<<< - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_AddTraceback("tinyr._NodeIter.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "(tree fragment)":3 - * def __reduce_cython__(self): - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_5tinyr_9_NodeIter_7__setstate_cython__(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -); /*proto*/ -static PyMethodDef __pyx_mdef_5tinyr_9_NodeIter_7__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_5tinyr_9_NodeIter_7__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; -static PyObject *__pyx_pw_5tinyr_9_NodeIter_7__setstate_cython__(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -) { - CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0; - #if !CYTHON_METH_FASTCALL - CYTHON_UNUSED Py_ssize_t __pyx_nargs; - #endif - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject* values[1] = {0}; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); - #if !CYTHON_METH_FASTCALL - #if CYTHON_ASSUME_SAFE_MACROS - __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); - #else - __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; - #endif - #endif - __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); - { - PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,0}; - if (__pyx_kwds) { - Py_ssize_t kw_args; - switch (__pyx_nargs) { - case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); - switch (__pyx_nargs) { - case 0: - if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) { - (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); - kw_args--; - } - else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 3, __pyx_L3_error) - else goto __pyx_L5_argtuple_error; - } - if (unlikely(kw_args > 0)) { - const Py_ssize_t kwd_pos_args = __pyx_nargs; - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__setstate_cython__") < 0)) __PYX_ERR(1, 3, __pyx_L3_error) - } - } else if (unlikely(__pyx_nargs != 1)) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); - } - __pyx_v___pyx_state = values[0]; - } - goto __pyx_L6_skip; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error) - __pyx_L6_skip:; - goto __pyx_L4_argument_unpacking_done; - __pyx_L3_error:; - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); - } - } - __Pyx_AddTraceback("tinyr._NodeIter.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_5tinyr_9_NodeIter_6__setstate_cython__(((struct __pyx_obj_5tinyr__NodeIter *)__pyx_v_self), __pyx_v___pyx_state); - - /* function exit code */ - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); - } - } - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_5tinyr_9_NodeIter_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_5tinyr__NodeIter *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__setstate_cython__", 1); - - /* "(tree fragment)":4 - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" # <<<<<<<<<<<<<< - */ - __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_no_default___reduce___due_to_non, 0, 0); - __PYX_ERR(1, 4, __pyx_L1_error) - - /* "(tree fragment)":3 - * def __reduce_cython__(self): - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_AddTraceback("tinyr._NodeIter.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "tinyr.pyx":923 - * int l_level - * - * def __cinit__(self, RTree rtree): # <<<<<<<<<<<<<< - * self.ni = _NodeIter(rtree) - * - */ - -/* Python wrapper */ -static int __pyx_pw_5tinyr_14_RectangleIter_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static int __pyx_pw_5tinyr_14_RectangleIter_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - struct __pyx_obj_5tinyr_RTree *__pyx_v_rtree = 0; - CYTHON_UNUSED Py_ssize_t __pyx_nargs; - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject* values[1] = {0}; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0); - #if CYTHON_ASSUME_SAFE_MACROS - __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); - #else - __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1; - #endif - __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - { - PyObject **__pyx_pyargnames[] = {&__pyx_n_s_rtree,0}; - if (__pyx_kwds) { - Py_ssize_t kw_args; - switch (__pyx_nargs) { - case 1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds); - switch (__pyx_nargs) { - case 0: - if (likely((values[0] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_rtree)) != 0)) { - (void)__Pyx_Arg_NewRef_VARARGS(values[0]); - kw_args--; - } - else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 923, __pyx_L3_error) - else goto __pyx_L5_argtuple_error; - } - if (unlikely(kw_args > 0)) { - const Py_ssize_t kwd_pos_args = __pyx_nargs; - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__cinit__") < 0)) __PYX_ERR(0, 923, __pyx_L3_error) - } - } else if (unlikely(__pyx_nargs != 1)) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0); - } - __pyx_v_rtree = ((struct __pyx_obj_5tinyr_RTree *)values[0]); - } - goto __pyx_L6_skip; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 923, __pyx_L3_error) - __pyx_L6_skip:; - goto __pyx_L4_argument_unpacking_done; - __pyx_L3_error:; - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]); - } - } - __Pyx_AddTraceback("tinyr._RectangleIter.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return -1; - __pyx_L4_argument_unpacking_done:; - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rtree), __pyx_ptype_5tinyr_RTree, 1, "rtree", 0))) __PYX_ERR(0, 923, __pyx_L1_error) - __pyx_r = __pyx_pf_5tinyr_14_RectangleIter___cinit__(((struct __pyx_obj_5tinyr__RectangleIter *)__pyx_v_self), __pyx_v_rtree); - - /* function exit code */ - goto __pyx_L0; - __pyx_L1_error:; - __pyx_r = -1; - __pyx_L0:; - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]); - } - } - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_pf_5tinyr_14_RectangleIter___cinit__(struct __pyx_obj_5tinyr__RectangleIter *__pyx_v_self, struct __pyx_obj_5tinyr_RTree *__pyx_v_rtree) { - int __pyx_r; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__cinit__", 1); - - /* "tinyr.pyx":924 - * - * def __cinit__(self, RTree rtree): - * self.ni = _NodeIter(rtree) # <<<<<<<<<<<<<< - * - * def __next__(self): - */ - __pyx_t_1 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_5tinyr__NodeIter), ((PyObject *)__pyx_v_rtree)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 924, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_GIVEREF(__pyx_t_1); - __Pyx_GOTREF((PyObject *)__pyx_v_self->ni); - __Pyx_DECREF((PyObject *)__pyx_v_self->ni); - __pyx_v_self->ni = ((struct __pyx_obj_5tinyr__NodeIter *)__pyx_t_1); - __pyx_t_1 = 0; - - /* "tinyr.pyx":923 - * int l_level - * - * def __cinit__(self, RTree rtree): # <<<<<<<<<<<<<< - * self.ni = _NodeIter(rtree) - * - */ - - /* function exit code */ - __pyx_r = 0; - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("tinyr._RectangleIter.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = -1; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "tinyr.pyx":926 - * self.ni = _NodeIter(rtree) - * - * def __next__(self): # <<<<<<<<<<<<<< - * cdef: - * _Node nextnode - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_5tinyr_14_RectangleIter_3__next__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_5tinyr_14_RectangleIter_3__next__(PyObject *__pyx_v_self) { - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__next__ (wrapper)", 0); - __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_5tinyr_14_RectangleIter_2__next__(((struct __pyx_obj_5tinyr__RectangleIter *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_5tinyr_14_RectangleIter_2__next__(struct __pyx_obj_5tinyr__RectangleIter *__pyx_v_self) { - struct __pyx_obj_5tinyr__Node *__pyx_v_nextnode = 0; - __pyx_t_5tinyr_Dfloat __pyx_v_coords[4]; - int __pyx_v_level; - PyObject *__pyx_v_rec = NULL; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - int __pyx_t_5; - PyObject *__pyx_t_6 = NULL; - PyObject *(*__pyx_t_7)(PyObject *); - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__next__", 1); - - /* "tinyr.pyx":932 - * int level - * - * if self.leafrecords: # <<<<<<<<<<<<<< - * rec = self.leafrecords.pop() - * return (self.l_level, self.rtree.array_to_tuple((<_ChildRecord>rec).coords) ) - */ - __pyx_t_1 = (__pyx_v_self->leafrecords != Py_None)&&(PyList_GET_SIZE(__pyx_v_self->leafrecords) != 0); - if (__pyx_t_1) { - - /* "tinyr.pyx":933 - * - * if self.leafrecords: - * rec = self.leafrecords.pop() # <<<<<<<<<<<<<< - * return (self.l_level, self.rtree.array_to_tuple((<_ChildRecord>rec).coords) ) - * - */ - if (unlikely(__pyx_v_self->leafrecords == Py_None)) { - PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "pop"); - __PYX_ERR(0, 933, __pyx_L1_error) - } - __pyx_t_2 = __Pyx_PyList_Pop(__pyx_v_self->leafrecords); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 933, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_v_rec = __pyx_t_2; - __pyx_t_2 = 0; - - /* "tinyr.pyx":934 - * if self.leafrecords: - * rec = self.leafrecords.pop() - * return (self.l_level, self.rtree.array_to_tuple((<_ChildRecord>rec).coords) ) # <<<<<<<<<<<<<< - * - * level, nextnode = self.ni.next() - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_self->l_level); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 934, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __pyx_v_self->__pyx_base.rtree->array_to_tuple(((struct __pyx_obj_5tinyr__ChildRecord *)__pyx_v_rec)->__pyx_base.coords); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 934, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 934, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_2); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2)) __PYX_ERR(0, 934, __pyx_L1_error); - __Pyx_GIVEREF(__pyx_t_3); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_3)) __PYX_ERR(0, 934, __pyx_L1_error); - __pyx_t_2 = 0; - __pyx_t_3 = 0; - __pyx_r = __pyx_t_4; - __pyx_t_4 = 0; - goto __pyx_L0; - - /* "tinyr.pyx":932 - * int level - * - * if self.leafrecords: # <<<<<<<<<<<<<< - * rec = self.leafrecords.pop() - * return (self.l_level, self.rtree.array_to_tuple((<_ChildRecord>rec).coords) ) - */ - } - - /* "tinyr.pyx":936 - * return (self.l_level, self.rtree.array_to_tuple((<_ChildRecord>rec).coords) ) - * - * level, nextnode = self.ni.next() # <<<<<<<<<<<<<< - * - * if nextnode.is_leaf: - */ - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->ni), __pyx_n_s_next); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 936, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_2 = NULL; - __pyx_t_5 = 0; - #if CYTHON_UNPACK_METHODS - if (likely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_2)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_2); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - __pyx_t_5 = 1; - } - } - #endif - { - PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL}; - __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5); - __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 936, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } - if ((likely(PyTuple_CheckExact(__pyx_t_4))) || (PyList_CheckExact(__pyx_t_4))) { - PyObject* sequence = __pyx_t_4; - Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); - if (unlikely(size != 2)) { - if (size > 2) __Pyx_RaiseTooManyValuesError(2); - else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); - __PYX_ERR(0, 936, __pyx_L1_error) - } - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - if (likely(PyTuple_CheckExact(sequence))) { - __pyx_t_3 = PyTuple_GET_ITEM(sequence, 0); - __pyx_t_2 = PyTuple_GET_ITEM(sequence, 1); - } else { - __pyx_t_3 = PyList_GET_ITEM(sequence, 0); - __pyx_t_2 = PyList_GET_ITEM(sequence, 1); - } - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(__pyx_t_2); - #else - __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 936, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_2 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 936, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - #endif - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } else { - Py_ssize_t index = -1; - __pyx_t_6 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 936, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_7 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_6); - index = 0; __pyx_t_3 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_3)) goto __pyx_L4_unpacking_failed; - __Pyx_GOTREF(__pyx_t_3); - index = 1; __pyx_t_2 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_2)) goto __pyx_L4_unpacking_failed; - __Pyx_GOTREF(__pyx_t_2); - if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_6), 2) < 0) __PYX_ERR(0, 936, __pyx_L1_error) - __pyx_t_7 = NULL; - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - goto __pyx_L5_unpacking_done; - __pyx_L4_unpacking_failed:; - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_7 = NULL; - if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); - __PYX_ERR(0, 936, __pyx_L1_error) - __pyx_L5_unpacking_done:; - } - __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 936, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5tinyr__Node))))) __PYX_ERR(0, 936, __pyx_L1_error) - __pyx_v_level = __pyx_t_5; - __pyx_v_nextnode = ((struct __pyx_obj_5tinyr__Node *)__pyx_t_2); - __pyx_t_2 = 0; - - /* "tinyr.pyx":938 - * level, nextnode = self.ni.next() - * - * if nextnode.is_leaf: # <<<<<<<<<<<<<< - * self.leafrecords = list(nextnode.records) - * self.l_level = level+1 - */ - if (__pyx_v_nextnode->is_leaf) { - - /* "tinyr.pyx":939 - * - * if nextnode.is_leaf: - * self.leafrecords = list(nextnode.records) # <<<<<<<<<<<<<< - * self.l_level = level+1 - * - */ - __pyx_t_4 = PySequence_List(__pyx_v_nextnode->records); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 939, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_4); - __Pyx_GOTREF(__pyx_v_self->leafrecords); - __Pyx_DECREF(__pyx_v_self->leafrecords); - __pyx_v_self->leafrecords = ((PyObject*)__pyx_t_4); - __pyx_t_4 = 0; - - /* "tinyr.pyx":940 - * if nextnode.is_leaf: - * self.leafrecords = list(nextnode.records) - * self.l_level = level+1 # <<<<<<<<<<<<<< - * - * common_boundaries(nextnode.records, coords) - */ - __pyx_v_self->l_level = (__pyx_v_level + 1); - - /* "tinyr.pyx":938 - * level, nextnode = self.ni.next() - * - * if nextnode.is_leaf: # <<<<<<<<<<<<<< - * self.leafrecords = list(nextnode.records) - * self.l_level = level+1 - */ - } - - /* "tinyr.pyx":942 - * self.l_level = level+1 - * - * common_boundaries(nextnode.records, coords) # <<<<<<<<<<<<<< - * return (level, self.rtree.array_to_tuple(coords)) - * - */ - __pyx_t_4 = __pyx_v_nextnode->records; - __Pyx_INCREF(__pyx_t_4); - __pyx_f_5tinyr_common_boundaries(((PyObject*)__pyx_t_4), __pyx_v_coords); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 942, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - - /* "tinyr.pyx":943 - * - * common_boundaries(nextnode.records, coords) - * return (level, self.rtree.array_to_tuple(coords)) # <<<<<<<<<<<<<< - * - * - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_level); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 943, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_2 = __pyx_v_self->__pyx_base.rtree->array_to_tuple(__pyx_v_coords); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 943, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 943, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_GIVEREF(__pyx_t_4); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4)) __PYX_ERR(0, 943, __pyx_L1_error); - __Pyx_GIVEREF(__pyx_t_2); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2)) __PYX_ERR(0, 943, __pyx_L1_error); - __pyx_t_4 = 0; - __pyx_t_2 = 0; - __pyx_r = __pyx_t_3; - __pyx_t_3 = 0; - goto __pyx_L0; - - /* "tinyr.pyx":926 - * self.ni = _NodeIter(rtree) - * - * def __next__(self): # <<<<<<<<<<<<<< - * cdef: - * _Node nextnode - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_6); - __Pyx_AddTraceback("tinyr._RectangleIter.__next__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XDECREF((PyObject *)__pyx_v_nextnode); - __Pyx_XDECREF(__pyx_v_rec); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "(tree fragment)":1 - * def __reduce_cython__(self): # <<<<<<<<<<<<<< - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_5tinyr_14_RectangleIter_5__reduce_cython__(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -); /*proto*/ -static PyMethodDef __pyx_mdef_5tinyr_14_RectangleIter_5__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_5tinyr_14_RectangleIter_5__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; -static PyObject *__pyx_pw_5tinyr_14_RectangleIter_5__reduce_cython__(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -) { - #if !CYTHON_METH_FASTCALL - CYTHON_UNUSED Py_ssize_t __pyx_nargs; - #endif - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); - #if !CYTHON_METH_FASTCALL - #if CYTHON_ASSUME_SAFE_MACROS - __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); - #else - __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; - #endif - #endif - __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); - if (unlikely(__pyx_nargs > 0)) { - __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL;} - if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__reduce_cython__", 0))) return NULL; - __pyx_r = __pyx_pf_5tinyr_14_RectangleIter_4__reduce_cython__(((struct __pyx_obj_5tinyr__RectangleIter *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_5tinyr_14_RectangleIter_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_5tinyr__RectangleIter *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__reduce_cython__", 1); - - /* "(tree fragment)":2 - * def __reduce_cython__(self): - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" # <<<<<<<<<<<<<< - * def __setstate_cython__(self, __pyx_state): - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - */ - __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_no_default___reduce___due_to_non, 0, 0); - __PYX_ERR(1, 2, __pyx_L1_error) - - /* "(tree fragment)":1 - * def __reduce_cython__(self): # <<<<<<<<<<<<<< - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_AddTraceback("tinyr._RectangleIter.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "(tree fragment)":3 - * def __reduce_cython__(self): - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_5tinyr_14_RectangleIter_7__setstate_cython__(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -); /*proto*/ -static PyMethodDef __pyx_mdef_5tinyr_14_RectangleIter_7__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_5tinyr_14_RectangleIter_7__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; -static PyObject *__pyx_pw_5tinyr_14_RectangleIter_7__setstate_cython__(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -) { - CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0; - #if !CYTHON_METH_FASTCALL - CYTHON_UNUSED Py_ssize_t __pyx_nargs; - #endif - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject* values[1] = {0}; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); - #if !CYTHON_METH_FASTCALL - #if CYTHON_ASSUME_SAFE_MACROS - __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); - #else - __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; - #endif - #endif - __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); - { - PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,0}; - if (__pyx_kwds) { - Py_ssize_t kw_args; - switch (__pyx_nargs) { - case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); - switch (__pyx_nargs) { - case 0: - if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) { - (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); - kw_args--; - } - else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 3, __pyx_L3_error) - else goto __pyx_L5_argtuple_error; - } - if (unlikely(kw_args > 0)) { - const Py_ssize_t kwd_pos_args = __pyx_nargs; - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__setstate_cython__") < 0)) __PYX_ERR(1, 3, __pyx_L3_error) - } - } else if (unlikely(__pyx_nargs != 1)) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); - } - __pyx_v___pyx_state = values[0]; - } - goto __pyx_L6_skip; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error) - __pyx_L6_skip:; - goto __pyx_L4_argument_unpacking_done; - __pyx_L3_error:; - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); - } - } - __Pyx_AddTraceback("tinyr._RectangleIter.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_5tinyr_14_RectangleIter_6__setstate_cython__(((struct __pyx_obj_5tinyr__RectangleIter *)__pyx_v_self), __pyx_v___pyx_state); - - /* function exit code */ - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); - } - } - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_5tinyr_14_RectangleIter_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_5tinyr__RectangleIter *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__setstate_cython__", 1); - - /* "(tree fragment)":4 - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" # <<<<<<<<<<<<<< - */ - __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_no_default___reduce___due_to_non, 0, 0); - __PYX_ERR(1, 4, __pyx_L1_error) - - /* "(tree fragment)":3 - * def __reduce_cython__(self): - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_AddTraceback("tinyr._RectangleIter.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "tinyr.pyx":951 - * object (*returner)(_ChildRecordIter this, _ChildRecord cr) - * - * def __cinit__(self, RTree rtree): # <<<<<<<<<<<<<< - * if rtree.root: - * self.nodeset = [rtree.root] - */ - -/* Python wrapper */ -static int __pyx_pw_5tinyr_16_ChildRecordIter_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static int __pyx_pw_5tinyr_16_ChildRecordIter_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - struct __pyx_obj_5tinyr_RTree *__pyx_v_rtree = 0; - CYTHON_UNUSED Py_ssize_t __pyx_nargs; - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject* values[1] = {0}; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0); - #if CYTHON_ASSUME_SAFE_MACROS - __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); - #else - __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1; - #endif - __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - { - PyObject **__pyx_pyargnames[] = {&__pyx_n_s_rtree,0}; - if (__pyx_kwds) { - Py_ssize_t kw_args; - switch (__pyx_nargs) { - case 1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds); - switch (__pyx_nargs) { - case 0: - if (likely((values[0] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_rtree)) != 0)) { - (void)__Pyx_Arg_NewRef_VARARGS(values[0]); - kw_args--; - } - else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 951, __pyx_L3_error) - else goto __pyx_L5_argtuple_error; - } - if (unlikely(kw_args > 0)) { - const Py_ssize_t kwd_pos_args = __pyx_nargs; - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__cinit__") < 0)) __PYX_ERR(0, 951, __pyx_L3_error) - } - } else if (unlikely(__pyx_nargs != 1)) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0); - } - __pyx_v_rtree = ((struct __pyx_obj_5tinyr_RTree *)values[0]); - } - goto __pyx_L6_skip; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 951, __pyx_L3_error) - __pyx_L6_skip:; - goto __pyx_L4_argument_unpacking_done; - __pyx_L3_error:; - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]); - } - } - __Pyx_AddTraceback("tinyr._ChildRecordIter.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return -1; - __pyx_L4_argument_unpacking_done:; - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rtree), __pyx_ptype_5tinyr_RTree, 1, "rtree", 0))) __PYX_ERR(0, 951, __pyx_L1_error) - __pyx_r = __pyx_pf_5tinyr_16_ChildRecordIter___cinit__(((struct __pyx_obj_5tinyr__ChildRecordIter *)__pyx_v_self), __pyx_v_rtree); - - /* function exit code */ - goto __pyx_L0; - __pyx_L1_error:; - __pyx_r = -1; - __pyx_L0:; - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]); - } - } - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_pf_5tinyr_16_ChildRecordIter___cinit__(struct __pyx_obj_5tinyr__ChildRecordIter *__pyx_v_self, struct __pyx_obj_5tinyr_RTree *__pyx_v_rtree) { - int __pyx_r; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - PyObject *__pyx_t_2 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__cinit__", 1); - - /* "tinyr.pyx":952 - * - * def __cinit__(self, RTree rtree): - * if rtree.root: # <<<<<<<<<<<<<< - * self.nodeset = [rtree.root] - * else: - */ - __pyx_t_1 = __Pyx_PyObject_IsTrue(((PyObject *)__pyx_v_rtree->root)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 952, __pyx_L1_error) - if (__pyx_t_1) { - - /* "tinyr.pyx":953 - * def __cinit__(self, RTree rtree): - * if rtree.root: - * self.nodeset = [rtree.root] # <<<<<<<<<<<<<< - * else: - * self.nodeset = [] - */ - __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 953, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF((PyObject *)__pyx_v_rtree->root); - __Pyx_GIVEREF((PyObject *)__pyx_v_rtree->root); - if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_v_rtree->root))) __PYX_ERR(0, 953, __pyx_L1_error); - __Pyx_GIVEREF(__pyx_t_2); - __Pyx_GOTREF(__pyx_v_self->nodeset); - __Pyx_DECREF(__pyx_v_self->nodeset); - __pyx_v_self->nodeset = ((PyObject*)__pyx_t_2); - __pyx_t_2 = 0; - - /* "tinyr.pyx":952 - * - * def __cinit__(self, RTree rtree): - * if rtree.root: # <<<<<<<<<<<<<< - * self.nodeset = [rtree.root] - * else: - */ - goto __pyx_L3; - } - - /* "tinyr.pyx":955 - * self.nodeset = [rtree.root] - * else: - * self.nodeset = [] # <<<<<<<<<<<<<< - * self.current_crs = [] - * - */ - /*else*/ { - __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 955, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_GIVEREF(__pyx_t_2); - __Pyx_GOTREF(__pyx_v_self->nodeset); - __Pyx_DECREF(__pyx_v_self->nodeset); - __pyx_v_self->nodeset = ((PyObject*)__pyx_t_2); - __pyx_t_2 = 0; - } - __pyx_L3:; - - /* "tinyr.pyx":956 - * else: - * self.nodeset = [] - * self.current_crs = [] # <<<<<<<<<<<<<< - * - * def __next__(self): - */ - __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 956, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_GIVEREF(__pyx_t_2); - __Pyx_GOTREF(__pyx_v_self->current_crs); - __Pyx_DECREF(__pyx_v_self->current_crs); - __pyx_v_self->current_crs = ((PyObject*)__pyx_t_2); - __pyx_t_2 = 0; - - /* "tinyr.pyx":951 - * object (*returner)(_ChildRecordIter this, _ChildRecord cr) - * - * def __cinit__(self, RTree rtree): # <<<<<<<<<<<<<< - * if rtree.root: - * self.nodeset = [rtree.root] - */ - - /* function exit code */ - __pyx_r = 0; - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_2); - __Pyx_AddTraceback("tinyr._ChildRecordIter.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = -1; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "tinyr.pyx":958 - * self.current_crs = [] - * - * def __next__(self): # <<<<<<<<<<<<<< - * cdef: - * _Node node - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_5tinyr_16_ChildRecordIter_3__next__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_5tinyr_16_ChildRecordIter_3__next__(PyObject *__pyx_v_self) { - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__next__ (wrapper)", 0); - __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_5tinyr_16_ChildRecordIter_2__next__(((struct __pyx_obj_5tinyr__ChildRecordIter *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_5tinyr_16_ChildRecordIter_2__next__(struct __pyx_obj_5tinyr__ChildRecordIter *__pyx_v_self) { - struct __pyx_obj_5tinyr__Node *__pyx_v_node = 0; - PyObject *__pyx_8genexpr3__pyx_v_r = NULL; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_error_without_exception = 0; /* StopIteration */ - int __pyx_t_1; - int __pyx_t_2; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - PyObject *__pyx_t_6 = NULL; - int __pyx_t_7; - PyObject *__pyx_t_8 = NULL; - PyObject *__pyx_t_9 = NULL; - Py_ssize_t __pyx_t_10; - int __pyx_t_11; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__next__", 1); - - /* "tinyr.pyx":963 - * _ChildRecord cr - * - * if not self.current_crs: # <<<<<<<<<<<<<< - * try: - * node = self.nodeset.pop(0) - */ - __pyx_t_1 = (__pyx_v_self->current_crs != Py_None)&&(PyList_GET_SIZE(__pyx_v_self->current_crs) != 0); - __pyx_t_2 = (!__pyx_t_1); - if (__pyx_t_2) { - - /* "tinyr.pyx":964 - * - * if not self.current_crs: - * try: # <<<<<<<<<<<<<< - * node = self.nodeset.pop(0) - * except IndexError: - */ - { - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __Pyx_ExceptionSave(&__pyx_t_3, &__pyx_t_4, &__pyx_t_5); - __Pyx_XGOTREF(__pyx_t_3); - __Pyx_XGOTREF(__pyx_t_4); - __Pyx_XGOTREF(__pyx_t_5); - /*try:*/ { - - /* "tinyr.pyx":965 - * if not self.current_crs: - * try: - * node = self.nodeset.pop(0) # <<<<<<<<<<<<<< - * except IndexError: - * raise StopIteration - */ - if (unlikely(__pyx_v_self->nodeset == Py_None)) { - PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "pop"); - __PYX_ERR(0, 965, __pyx_L4_error) - } - __pyx_t_6 = __Pyx_PyList_PopIndex(__pyx_v_self->nodeset, __pyx_int_0, 0, 1, Py_ssize_t, PyInt_FromSsize_t); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 965, __pyx_L4_error) - __Pyx_GOTREF(__pyx_t_6); - if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5tinyr__Node))))) __PYX_ERR(0, 965, __pyx_L4_error) - __pyx_v_node = ((struct __pyx_obj_5tinyr__Node *)__pyx_t_6); - __pyx_t_6 = 0; - - /* "tinyr.pyx":964 - * - * if not self.current_crs: - * try: # <<<<<<<<<<<<<< - * node = self.nodeset.pop(0) - * except IndexError: - */ - } - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - goto __pyx_L9_try_end; - __pyx_L4_error:; - __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - - /* "tinyr.pyx":966 - * try: - * node = self.nodeset.pop(0) - * except IndexError: # <<<<<<<<<<<<<< - * raise StopIteration - * - */ - __pyx_t_7 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_IndexError); - if (__pyx_t_7) { - __Pyx_AddTraceback("tinyr._ChildRecordIter.__next__", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_8, &__pyx_t_9) < 0) __PYX_ERR(0, 966, __pyx_L6_except_error) - __Pyx_XGOTREF(__pyx_t_6); - __Pyx_XGOTREF(__pyx_t_8); - __Pyx_XGOTREF(__pyx_t_9); - - /* "tinyr.pyx":967 - * node = self.nodeset.pop(0) - * except IndexError: - * raise StopIteration # <<<<<<<<<<<<<< - * - * while not node.is_leaf: - */ - __pyx_error_without_exception = 1; - goto __pyx_L6_except_error;; - } - goto __pyx_L6_except_error; - - /* "tinyr.pyx":964 - * - * if not self.current_crs: - * try: # <<<<<<<<<<<<<< - * node = self.nodeset.pop(0) - * except IndexError: - */ - __pyx_L6_except_error:; - __Pyx_XGIVEREF(__pyx_t_3); - __Pyx_XGIVEREF(__pyx_t_4); - __Pyx_XGIVEREF(__pyx_t_5); - __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5); - goto __pyx_L1_error; - __pyx_L9_try_end:; - } - - /* "tinyr.pyx":969 - * raise StopIteration - * - * while not node.is_leaf: # <<<<<<<<<<<<<< - * self.nodeset = [ (<_InnerRecord>r).child for r in node.records ] + self.nodeset - * try: - */ - while (1) { - __pyx_t_2 = (!__pyx_v_node->is_leaf); - if (!__pyx_t_2) break; - - /* "tinyr.pyx":970 - * - * while not node.is_leaf: - * self.nodeset = [ (<_InnerRecord>r).child for r in node.records ] + self.nodeset # <<<<<<<<<<<<<< - * try: - * node = self.nodeset.pop(0) - */ - { /* enter inner scope */ - __pyx_t_9 = PyList_New(0); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 970, __pyx_L16_error) - __Pyx_GOTREF(__pyx_t_9); - if (unlikely(__pyx_v_node->records == Py_None)) { - PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); - __PYX_ERR(0, 970, __pyx_L16_error) - } - __pyx_t_8 = __pyx_v_node->records; __Pyx_INCREF(__pyx_t_8); - __pyx_t_10 = 0; - for (;;) { - { - Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_8); - #if !CYTHON_ASSUME_SAFE_MACROS - if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 970, __pyx_L16_error) - #endif - if (__pyx_t_10 >= __pyx_temp) break; - } - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_6 = PyList_GET_ITEM(__pyx_t_8, __pyx_t_10); __Pyx_INCREF(__pyx_t_6); __pyx_t_10++; if (unlikely((0 < 0))) __PYX_ERR(0, 970, __pyx_L16_error) - #else - __pyx_t_6 = __Pyx_PySequence_ITEM(__pyx_t_8, __pyx_t_10); __pyx_t_10++; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 970, __pyx_L16_error) - __Pyx_GOTREF(__pyx_t_6); - #endif - __Pyx_XDECREF_SET(__pyx_8genexpr3__pyx_v_r, __pyx_t_6); - __pyx_t_6 = 0; - if (unlikely(__Pyx_ListComp_Append(__pyx_t_9, (PyObject*)((struct __pyx_obj_5tinyr__InnerRecord *)__pyx_8genexpr3__pyx_v_r)->child))) __PYX_ERR(0, 970, __pyx_L16_error) - } - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __Pyx_XDECREF(__pyx_8genexpr3__pyx_v_r); __pyx_8genexpr3__pyx_v_r = 0; - goto __pyx_L20_exit_scope; - __pyx_L16_error:; - __Pyx_XDECREF(__pyx_8genexpr3__pyx_v_r); __pyx_8genexpr3__pyx_v_r = 0; - goto __pyx_L1_error; - __pyx_L20_exit_scope:; - } /* exit inner scope */ - __pyx_t_8 = PyNumber_Add(__pyx_t_9, __pyx_v_self->nodeset); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 970, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __Pyx_GIVEREF(__pyx_t_8); - __Pyx_GOTREF(__pyx_v_self->nodeset); - __Pyx_DECREF(__pyx_v_self->nodeset); - __pyx_v_self->nodeset = ((PyObject*)__pyx_t_8); - __pyx_t_8 = 0; - - /* "tinyr.pyx":971 - * while not node.is_leaf: - * self.nodeset = [ (<_InnerRecord>r).child for r in node.records ] + self.nodeset - * try: # <<<<<<<<<<<<<< - * node = self.nodeset.pop(0) - * except IndexError: - */ - { - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_4, &__pyx_t_3); - __Pyx_XGOTREF(__pyx_t_5); - __Pyx_XGOTREF(__pyx_t_4); - __Pyx_XGOTREF(__pyx_t_3); - /*try:*/ { - - /* "tinyr.pyx":972 - * self.nodeset = [ (<_InnerRecord>r).child for r in node.records ] + self.nodeset - * try: - * node = self.nodeset.pop(0) # <<<<<<<<<<<<<< - * except IndexError: - * raise StopIteration - */ - if (unlikely(__pyx_v_self->nodeset == Py_None)) { - PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "pop"); - __PYX_ERR(0, 972, __pyx_L21_error) - } - __pyx_t_8 = __Pyx_PyList_PopIndex(__pyx_v_self->nodeset, __pyx_int_0, 0, 1, Py_ssize_t, PyInt_FromSsize_t); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 972, __pyx_L21_error) - __Pyx_GOTREF(__pyx_t_8); - if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_5tinyr__Node))))) __PYX_ERR(0, 972, __pyx_L21_error) - __Pyx_DECREF_SET(__pyx_v_node, ((struct __pyx_obj_5tinyr__Node *)__pyx_t_8)); - __pyx_t_8 = 0; - - /* "tinyr.pyx":971 - * while not node.is_leaf: - * self.nodeset = [ (<_InnerRecord>r).child for r in node.records ] + self.nodeset - * try: # <<<<<<<<<<<<<< - * node = self.nodeset.pop(0) - * except IndexError: - */ - } - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - goto __pyx_L28_try_end; - __pyx_L21_error:; - __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; - __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; - - /* "tinyr.pyx":973 - * try: - * node = self.nodeset.pop(0) - * except IndexError: # <<<<<<<<<<<<<< - * raise StopIteration - * - */ - __pyx_t_7 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_IndexError); - if (__pyx_t_7) { - __Pyx_AddTraceback("tinyr._ChildRecordIter.__next__", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_8, &__pyx_t_9, &__pyx_t_6) < 0) __PYX_ERR(0, 973, __pyx_L23_except_error) - __Pyx_XGOTREF(__pyx_t_8); - __Pyx_XGOTREF(__pyx_t_9); - __Pyx_XGOTREF(__pyx_t_6); - - /* "tinyr.pyx":974 - * node = self.nodeset.pop(0) - * except IndexError: - * raise StopIteration # <<<<<<<<<<<<<< - * - * self.current_crs.extend(node.records) - */ - __pyx_error_without_exception = 1; - goto __pyx_L23_except_error;; - } - goto __pyx_L23_except_error; - - /* "tinyr.pyx":971 - * while not node.is_leaf: - * self.nodeset = [ (<_InnerRecord>r).child for r in node.records ] + self.nodeset - * try: # <<<<<<<<<<<<<< - * node = self.nodeset.pop(0) - * except IndexError: - */ - __pyx_L23_except_error:; - __Pyx_XGIVEREF(__pyx_t_5); - __Pyx_XGIVEREF(__pyx_t_4); - __Pyx_XGIVEREF(__pyx_t_3); - __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_4, __pyx_t_3); - goto __pyx_L1_error; - __pyx_L28_try_end:; - } - } - - /* "tinyr.pyx":976 - * raise StopIteration - * - * self.current_crs.extend(node.records) # <<<<<<<<<<<<<< - * - * try: - */ - if (unlikely(__pyx_v_self->current_crs == Py_None)) { - PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "extend"); - __PYX_ERR(0, 976, __pyx_L1_error) - } - __pyx_t_6 = __pyx_v_node->records; - __Pyx_INCREF(__pyx_t_6); - __pyx_t_11 = __Pyx_PyList_Extend(__pyx_v_self->current_crs, __pyx_t_6); if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(0, 976, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - - /* "tinyr.pyx":963 - * _ChildRecord cr - * - * if not self.current_crs: # <<<<<<<<<<<<<< - * try: - * node = self.nodeset.pop(0) - */ - } - - /* "tinyr.pyx":978 - * self.current_crs.extend(node.records) - * - * try: # <<<<<<<<<<<<<< - * return self.current_crs.pop(0) - * except IndexError: - */ - { - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __Pyx_ExceptionSave(&__pyx_t_3, &__pyx_t_4, &__pyx_t_5); - __Pyx_XGOTREF(__pyx_t_3); - __Pyx_XGOTREF(__pyx_t_4); - __Pyx_XGOTREF(__pyx_t_5); - /*try:*/ { - - /* "tinyr.pyx":979 - * - * try: - * return self.current_crs.pop(0) # <<<<<<<<<<<<<< - * except IndexError: - * # should not happen - */ - __Pyx_XDECREF(__pyx_r); - if (unlikely(__pyx_v_self->current_crs == Py_None)) { - PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "pop"); - __PYX_ERR(0, 979, __pyx_L31_error) - } - __pyx_t_6 = __Pyx_PyList_PopIndex(__pyx_v_self->current_crs, __pyx_int_0, 0, 1, Py_ssize_t, PyInt_FromSsize_t); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 979, __pyx_L31_error) - __Pyx_GOTREF(__pyx_t_6); - __pyx_r = __pyx_t_6; - __pyx_t_6 = 0; - goto __pyx_L35_try_return; - - /* "tinyr.pyx":978 - * self.current_crs.extend(node.records) - * - * try: # <<<<<<<<<<<<<< - * return self.current_crs.pop(0) - * except IndexError: - */ - } - __pyx_L31_error:; - __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; - __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; - - /* "tinyr.pyx":980 - * try: - * return self.current_crs.pop(0) - * except IndexError: # <<<<<<<<<<<<<< - * # should not happen - * raise StopIteration - */ - __pyx_t_7 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_IndexError); - if (__pyx_t_7) { - __Pyx_AddTraceback("tinyr._ChildRecordIter.__next__", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_9, &__pyx_t_8) < 0) __PYX_ERR(0, 980, __pyx_L33_except_error) - __Pyx_XGOTREF(__pyx_t_6); - __Pyx_XGOTREF(__pyx_t_9); - __Pyx_XGOTREF(__pyx_t_8); - - /* "tinyr.pyx":982 - * except IndexError: - * # should not happen - * raise StopIteration # <<<<<<<<<<<<<< - * - * - */ - __pyx_error_without_exception = 1; - goto __pyx_L33_except_error;; - } - goto __pyx_L33_except_error; - - /* "tinyr.pyx":978 - * self.current_crs.extend(node.records) - * - * try: # <<<<<<<<<<<<<< - * return self.current_crs.pop(0) - * except IndexError: - */ - __pyx_L33_except_error:; - __Pyx_XGIVEREF(__pyx_t_3); - __Pyx_XGIVEREF(__pyx_t_4); - __Pyx_XGIVEREF(__pyx_t_5); - __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5); - goto __pyx_L1_error; - __pyx_L35_try_return:; - __Pyx_XGIVEREF(__pyx_t_3); - __Pyx_XGIVEREF(__pyx_t_4); - __Pyx_XGIVEREF(__pyx_t_5); - __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5); - goto __pyx_L0; - } - - /* "tinyr.pyx":958 - * self.current_crs = [] - * - * def __next__(self): # <<<<<<<<<<<<<< - * cdef: - * _Node node - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_6); - __Pyx_XDECREF(__pyx_t_8); - __Pyx_XDECREF(__pyx_t_9); - if (!__pyx_error_without_exception) { - __Pyx_AddTraceback("tinyr._ChildRecordIter.__next__", __pyx_clineno, __pyx_lineno, __pyx_filename); - } - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XDECREF((PyObject *)__pyx_v_node); - __Pyx_XDECREF(__pyx_8genexpr3__pyx_v_r); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "(tree fragment)":1 - * def __reduce_cython__(self): # <<<<<<<<<<<<<< - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_5tinyr_16_ChildRecordIter_5__reduce_cython__(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -); /*proto*/ -static PyMethodDef __pyx_mdef_5tinyr_16_ChildRecordIter_5__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_5tinyr_16_ChildRecordIter_5__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; -static PyObject *__pyx_pw_5tinyr_16_ChildRecordIter_5__reduce_cython__(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -) { - #if !CYTHON_METH_FASTCALL - CYTHON_UNUSED Py_ssize_t __pyx_nargs; - #endif - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); - #if !CYTHON_METH_FASTCALL - #if CYTHON_ASSUME_SAFE_MACROS - __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); - #else - __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; - #endif - #endif - __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); - if (unlikely(__pyx_nargs > 0)) { - __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL;} - if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__reduce_cython__", 0))) return NULL; - __pyx_r = __pyx_pf_5tinyr_16_ChildRecordIter_4__reduce_cython__(((struct __pyx_obj_5tinyr__ChildRecordIter *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_5tinyr_16_ChildRecordIter_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_5tinyr__ChildRecordIter *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__reduce_cython__", 1); - - /* "(tree fragment)":2 - * def __reduce_cython__(self): - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" # <<<<<<<<<<<<<< - * def __setstate_cython__(self, __pyx_state): - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - */ - __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_no_default___reduce___due_to_non, 0, 0); - __PYX_ERR(1, 2, __pyx_L1_error) - - /* "(tree fragment)":1 - * def __reduce_cython__(self): # <<<<<<<<<<<<<< - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_AddTraceback("tinyr._ChildRecordIter.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "(tree fragment)":3 - * def __reduce_cython__(self): - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_5tinyr_16_ChildRecordIter_7__setstate_cython__(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -); /*proto*/ -static PyMethodDef __pyx_mdef_5tinyr_16_ChildRecordIter_7__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_5tinyr_16_ChildRecordIter_7__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; -static PyObject *__pyx_pw_5tinyr_16_ChildRecordIter_7__setstate_cython__(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -) { - CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0; - #if !CYTHON_METH_FASTCALL - CYTHON_UNUSED Py_ssize_t __pyx_nargs; - #endif - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject* values[1] = {0}; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); - #if !CYTHON_METH_FASTCALL - #if CYTHON_ASSUME_SAFE_MACROS - __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); - #else - __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; - #endif - #endif - __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); - { - PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,0}; - if (__pyx_kwds) { - Py_ssize_t kw_args; - switch (__pyx_nargs) { - case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); - switch (__pyx_nargs) { - case 0: - if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) { - (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); - kw_args--; - } - else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 3, __pyx_L3_error) - else goto __pyx_L5_argtuple_error; - } - if (unlikely(kw_args > 0)) { - const Py_ssize_t kwd_pos_args = __pyx_nargs; - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__setstate_cython__") < 0)) __PYX_ERR(1, 3, __pyx_L3_error) - } - } else if (unlikely(__pyx_nargs != 1)) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); - } - __pyx_v___pyx_state = values[0]; - } - goto __pyx_L6_skip; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error) - __pyx_L6_skip:; - goto __pyx_L4_argument_unpacking_done; - __pyx_L3_error:; - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); - } - } - __Pyx_AddTraceback("tinyr._ChildRecordIter.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_5tinyr_16_ChildRecordIter_6__setstate_cython__(((struct __pyx_obj_5tinyr__ChildRecordIter *)__pyx_v_self), __pyx_v___pyx_state); - - /* function exit code */ - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); - } - } - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_5tinyr_16_ChildRecordIter_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_5tinyr__ChildRecordIter *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__setstate_cython__", 1); - - /* "(tree fragment)":4 - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" # <<<<<<<<<<<<<< - */ - __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_no_default___reduce___due_to_non, 0, 0); - __PYX_ERR(1, 4, __pyx_L1_error) - - /* "(tree fragment)":3 - * def __reduce_cython__(self): - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_AddTraceback("tinyr._ChildRecordIter.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "tinyr.pyx":989 - * _ChildRecordIter cri - * - * def __cinit__(self, RTree rtree): # <<<<<<<<<<<<<< - * self.cri = _ChildRecordIter(rtree) - * - */ - -/* Python wrapper */ -static int __pyx_pw_5tinyr_8_KVIIter_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static int __pyx_pw_5tinyr_8_KVIIter_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - struct __pyx_obj_5tinyr_RTree *__pyx_v_rtree = 0; - CYTHON_UNUSED Py_ssize_t __pyx_nargs; - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject* values[1] = {0}; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0); - #if CYTHON_ASSUME_SAFE_MACROS - __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); - #else - __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1; - #endif - __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - { - PyObject **__pyx_pyargnames[] = {&__pyx_n_s_rtree,0}; - if (__pyx_kwds) { - Py_ssize_t kw_args; - switch (__pyx_nargs) { - case 1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds); - switch (__pyx_nargs) { - case 0: - if (likely((values[0] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_rtree)) != 0)) { - (void)__Pyx_Arg_NewRef_VARARGS(values[0]); - kw_args--; - } - else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 989, __pyx_L3_error) - else goto __pyx_L5_argtuple_error; - } - if (unlikely(kw_args > 0)) { - const Py_ssize_t kwd_pos_args = __pyx_nargs; - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__cinit__") < 0)) __PYX_ERR(0, 989, __pyx_L3_error) - } - } else if (unlikely(__pyx_nargs != 1)) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0); - } - __pyx_v_rtree = ((struct __pyx_obj_5tinyr_RTree *)values[0]); - } - goto __pyx_L6_skip; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 989, __pyx_L3_error) - __pyx_L6_skip:; - goto __pyx_L4_argument_unpacking_done; - __pyx_L3_error:; - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]); - } - } - __Pyx_AddTraceback("tinyr._KVIIter.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return -1; - __pyx_L4_argument_unpacking_done:; - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rtree), __pyx_ptype_5tinyr_RTree, 1, "rtree", 0))) __PYX_ERR(0, 989, __pyx_L1_error) - __pyx_r = __pyx_pf_5tinyr_8_KVIIter___cinit__(((struct __pyx_obj_5tinyr__KVIIter *)__pyx_v_self), __pyx_v_rtree); - - /* function exit code */ - goto __pyx_L0; - __pyx_L1_error:; - __pyx_r = -1; - __pyx_L0:; - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]); - } - } - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_pf_5tinyr_8_KVIIter___cinit__(struct __pyx_obj_5tinyr__KVIIter *__pyx_v_self, struct __pyx_obj_5tinyr_RTree *__pyx_v_rtree) { - int __pyx_r; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__cinit__", 1); - - /* "tinyr.pyx":990 - * - * def __cinit__(self, RTree rtree): - * self.cri = _ChildRecordIter(rtree) # <<<<<<<<<<<<<< - * - * cdef class _KeysIter(_KVIIter): - */ - __pyx_t_1 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_5tinyr__ChildRecordIter), ((PyObject *)__pyx_v_rtree)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 990, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_GIVEREF(__pyx_t_1); - __Pyx_GOTREF((PyObject *)__pyx_v_self->cri); - __Pyx_DECREF((PyObject *)__pyx_v_self->cri); - __pyx_v_self->cri = ((struct __pyx_obj_5tinyr__ChildRecordIter *)__pyx_t_1); - __pyx_t_1 = 0; - - /* "tinyr.pyx":989 - * _ChildRecordIter cri - * - * def __cinit__(self, RTree rtree): # <<<<<<<<<<<<<< - * self.cri = _ChildRecordIter(rtree) - * - */ - - /* function exit code */ - __pyx_r = 0; - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("tinyr._KVIIter.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = -1; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "(tree fragment)":1 - * def __reduce_cython__(self): # <<<<<<<<<<<<<< - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_5tinyr_8_KVIIter_3__reduce_cython__(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -); /*proto*/ -static PyMethodDef __pyx_mdef_5tinyr_8_KVIIter_3__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_5tinyr_8_KVIIter_3__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; -static PyObject *__pyx_pw_5tinyr_8_KVIIter_3__reduce_cython__(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -) { - #if !CYTHON_METH_FASTCALL - CYTHON_UNUSED Py_ssize_t __pyx_nargs; - #endif - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); - #if !CYTHON_METH_FASTCALL - #if CYTHON_ASSUME_SAFE_MACROS - __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); - #else - __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; - #endif - #endif - __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); - if (unlikely(__pyx_nargs > 0)) { - __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL;} - if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__reduce_cython__", 0))) return NULL; - __pyx_r = __pyx_pf_5tinyr_8_KVIIter_2__reduce_cython__(((struct __pyx_obj_5tinyr__KVIIter *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_5tinyr_8_KVIIter_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_5tinyr__KVIIter *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__reduce_cython__", 1); - - /* "(tree fragment)":2 - * def __reduce_cython__(self): - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" # <<<<<<<<<<<<<< - * def __setstate_cython__(self, __pyx_state): - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - */ - __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_no_default___reduce___due_to_non, 0, 0); - __PYX_ERR(1, 2, __pyx_L1_error) - - /* "(tree fragment)":1 - * def __reduce_cython__(self): # <<<<<<<<<<<<<< - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_AddTraceback("tinyr._KVIIter.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "(tree fragment)":3 - * def __reduce_cython__(self): - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_5tinyr_8_KVIIter_5__setstate_cython__(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -); /*proto*/ -static PyMethodDef __pyx_mdef_5tinyr_8_KVIIter_5__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_5tinyr_8_KVIIter_5__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; -static PyObject *__pyx_pw_5tinyr_8_KVIIter_5__setstate_cython__(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -) { - CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0; - #if !CYTHON_METH_FASTCALL - CYTHON_UNUSED Py_ssize_t __pyx_nargs; - #endif - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject* values[1] = {0}; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); - #if !CYTHON_METH_FASTCALL - #if CYTHON_ASSUME_SAFE_MACROS - __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); - #else - __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; - #endif - #endif - __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); - { - PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,0}; - if (__pyx_kwds) { - Py_ssize_t kw_args; - switch (__pyx_nargs) { - case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); - switch (__pyx_nargs) { - case 0: - if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) { - (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); - kw_args--; - } - else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 3, __pyx_L3_error) - else goto __pyx_L5_argtuple_error; - } - if (unlikely(kw_args > 0)) { - const Py_ssize_t kwd_pos_args = __pyx_nargs; - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__setstate_cython__") < 0)) __PYX_ERR(1, 3, __pyx_L3_error) - } - } else if (unlikely(__pyx_nargs != 1)) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); - } - __pyx_v___pyx_state = values[0]; - } - goto __pyx_L6_skip; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error) - __pyx_L6_skip:; - goto __pyx_L4_argument_unpacking_done; - __pyx_L3_error:; - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); - } - } - __Pyx_AddTraceback("tinyr._KVIIter.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_5tinyr_8_KVIIter_4__setstate_cython__(((struct __pyx_obj_5tinyr__KVIIter *)__pyx_v_self), __pyx_v___pyx_state); - - /* function exit code */ - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); - } - } - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_5tinyr_8_KVIIter_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_5tinyr__KVIIter *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__setstate_cython__", 1); - - /* "(tree fragment)":4 - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" # <<<<<<<<<<<<<< - */ - __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_no_default___reduce___due_to_non, 0, 0); - __PYX_ERR(1, 4, __pyx_L1_error) - - /* "(tree fragment)":3 - * def __reduce_cython__(self): - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_AddTraceback("tinyr._KVIIter.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "tinyr.pyx":993 - * - * cdef class _KeysIter(_KVIIter): - * def __next__(self): # <<<<<<<<<<<<<< - * return self.rtree.array_to_tuple((<_ChildRecord>self.cri.next()).coords) - * - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_5tinyr_9_KeysIter_1__next__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_5tinyr_9_KeysIter_1__next__(PyObject *__pyx_v_self) { - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__next__ (wrapper)", 0); - __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_5tinyr_9_KeysIter___next__(((struct __pyx_obj_5tinyr__KeysIter *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_5tinyr_9_KeysIter___next__(struct __pyx_obj_5tinyr__KeysIter *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - int __pyx_t_4; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__next__", 1); - - /* "tinyr.pyx":994 - * cdef class _KeysIter(_KVIIter): - * def __next__(self): - * return self.rtree.array_to_tuple((<_ChildRecord>self.cri.next()).coords) # <<<<<<<<<<<<<< - * - * cdef class _ValuesIter(_KVIIter): - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->__pyx_base.cri), __pyx_n_s_next); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 994, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = NULL; - __pyx_t_4 = 0; - #if CYTHON_UNPACK_METHODS - if (likely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - __pyx_t_4 = 1; - } - } - #endif - { - PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL}; - __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4); - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 994, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - } - __pyx_t_2 = __pyx_v_self->__pyx_base.__pyx_base.rtree->array_to_tuple(((struct __pyx_obj_5tinyr__ChildRecord *)__pyx_t_1)->__pyx_base.coords); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 994, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - goto __pyx_L0; - - /* "tinyr.pyx":993 - * - * cdef class _KeysIter(_KVIIter): - * def __next__(self): # <<<<<<<<<<<<<< - * return self.rtree.array_to_tuple((<_ChildRecord>self.cri.next()).coords) - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_AddTraceback("tinyr._KeysIter.__next__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "(tree fragment)":1 - * def __reduce_cython__(self): # <<<<<<<<<<<<<< - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_5tinyr_9_KeysIter_3__reduce_cython__(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -); /*proto*/ -static PyMethodDef __pyx_mdef_5tinyr_9_KeysIter_3__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_5tinyr_9_KeysIter_3__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; -static PyObject *__pyx_pw_5tinyr_9_KeysIter_3__reduce_cython__(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -) { - #if !CYTHON_METH_FASTCALL - CYTHON_UNUSED Py_ssize_t __pyx_nargs; - #endif - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); - #if !CYTHON_METH_FASTCALL - #if CYTHON_ASSUME_SAFE_MACROS - __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); - #else - __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; - #endif - #endif - __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); - if (unlikely(__pyx_nargs > 0)) { - __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL;} - if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__reduce_cython__", 0))) return NULL; - __pyx_r = __pyx_pf_5tinyr_9_KeysIter_2__reduce_cython__(((struct __pyx_obj_5tinyr__KeysIter *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_5tinyr_9_KeysIter_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_5tinyr__KeysIter *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__reduce_cython__", 1); - - /* "(tree fragment)":2 - * def __reduce_cython__(self): - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" # <<<<<<<<<<<<<< - * def __setstate_cython__(self, __pyx_state): - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - */ - __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_no_default___reduce___due_to_non, 0, 0); - __PYX_ERR(1, 2, __pyx_L1_error) - - /* "(tree fragment)":1 - * def __reduce_cython__(self): # <<<<<<<<<<<<<< - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_AddTraceback("tinyr._KeysIter.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "(tree fragment)":3 - * def __reduce_cython__(self): - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_5tinyr_9_KeysIter_5__setstate_cython__(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -); /*proto*/ -static PyMethodDef __pyx_mdef_5tinyr_9_KeysIter_5__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_5tinyr_9_KeysIter_5__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; -static PyObject *__pyx_pw_5tinyr_9_KeysIter_5__setstate_cython__(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -) { - CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0; - #if !CYTHON_METH_FASTCALL - CYTHON_UNUSED Py_ssize_t __pyx_nargs; - #endif - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject* values[1] = {0}; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); - #if !CYTHON_METH_FASTCALL - #if CYTHON_ASSUME_SAFE_MACROS - __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); - #else - __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; - #endif - #endif - __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); - { - PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,0}; - if (__pyx_kwds) { - Py_ssize_t kw_args; - switch (__pyx_nargs) { - case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); - switch (__pyx_nargs) { - case 0: - if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) { - (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); - kw_args--; - } - else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 3, __pyx_L3_error) - else goto __pyx_L5_argtuple_error; - } - if (unlikely(kw_args > 0)) { - const Py_ssize_t kwd_pos_args = __pyx_nargs; - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__setstate_cython__") < 0)) __PYX_ERR(1, 3, __pyx_L3_error) - } - } else if (unlikely(__pyx_nargs != 1)) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); - } - __pyx_v___pyx_state = values[0]; - } - goto __pyx_L6_skip; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error) - __pyx_L6_skip:; - goto __pyx_L4_argument_unpacking_done; - __pyx_L3_error:; - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); - } - } - __Pyx_AddTraceback("tinyr._KeysIter.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_5tinyr_9_KeysIter_4__setstate_cython__(((struct __pyx_obj_5tinyr__KeysIter *)__pyx_v_self), __pyx_v___pyx_state); - - /* function exit code */ - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); - } - } - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_5tinyr_9_KeysIter_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_5tinyr__KeysIter *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__setstate_cython__", 1); - - /* "(tree fragment)":4 - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" # <<<<<<<<<<<<<< - */ - __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_no_default___reduce___due_to_non, 0, 0); - __PYX_ERR(1, 4, __pyx_L1_error) - - /* "(tree fragment)":3 - * def __reduce_cython__(self): - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_AddTraceback("tinyr._KeysIter.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "tinyr.pyx":997 - * - * cdef class _ValuesIter(_KVIIter): - * def __next__(self): # <<<<<<<<<<<<<< - * return (<_ChildRecord>self.cri.next()).identifier - * - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_5tinyr_11_ValuesIter_1__next__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_5tinyr_11_ValuesIter_1__next__(PyObject *__pyx_v_self) { - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__next__ (wrapper)", 0); - __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_5tinyr_11_ValuesIter___next__(((struct __pyx_obj_5tinyr__ValuesIter *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_5tinyr_11_ValuesIter___next__(struct __pyx_obj_5tinyr__ValuesIter *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - int __pyx_t_4; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__next__", 1); - - /* "tinyr.pyx":998 - * cdef class _ValuesIter(_KVIIter): - * def __next__(self): - * return (<_ChildRecord>self.cri.next()).identifier # <<<<<<<<<<<<<< - * - * cdef class _ItemsIter(_KVIIter): - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->__pyx_base.cri), __pyx_n_s_next); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 998, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = NULL; - __pyx_t_4 = 0; - #if CYTHON_UNPACK_METHODS - if (likely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - __pyx_t_4 = 1; - } - } - #endif - { - PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL}; - __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4); - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 998, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - } - __Pyx_INCREF(((struct __pyx_obj_5tinyr__ChildRecord *)__pyx_t_1)->identifier); - __pyx_r = ((struct __pyx_obj_5tinyr__ChildRecord *)__pyx_t_1)->identifier; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - goto __pyx_L0; - - /* "tinyr.pyx":997 - * - * cdef class _ValuesIter(_KVIIter): - * def __next__(self): # <<<<<<<<<<<<<< - * return (<_ChildRecord>self.cri.next()).identifier - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_AddTraceback("tinyr._ValuesIter.__next__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "(tree fragment)":1 - * def __reduce_cython__(self): # <<<<<<<<<<<<<< - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_5tinyr_11_ValuesIter_3__reduce_cython__(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -); /*proto*/ -static PyMethodDef __pyx_mdef_5tinyr_11_ValuesIter_3__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_5tinyr_11_ValuesIter_3__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; -static PyObject *__pyx_pw_5tinyr_11_ValuesIter_3__reduce_cython__(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -) { - #if !CYTHON_METH_FASTCALL - CYTHON_UNUSED Py_ssize_t __pyx_nargs; - #endif - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); - #if !CYTHON_METH_FASTCALL - #if CYTHON_ASSUME_SAFE_MACROS - __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); - #else - __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; - #endif - #endif - __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); - if (unlikely(__pyx_nargs > 0)) { - __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL;} - if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__reduce_cython__", 0))) return NULL; - __pyx_r = __pyx_pf_5tinyr_11_ValuesIter_2__reduce_cython__(((struct __pyx_obj_5tinyr__ValuesIter *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_5tinyr_11_ValuesIter_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_5tinyr__ValuesIter *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__reduce_cython__", 1); - - /* "(tree fragment)":2 - * def __reduce_cython__(self): - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" # <<<<<<<<<<<<<< - * def __setstate_cython__(self, __pyx_state): - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - */ - __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_no_default___reduce___due_to_non, 0, 0); - __PYX_ERR(1, 2, __pyx_L1_error) - - /* "(tree fragment)":1 - * def __reduce_cython__(self): # <<<<<<<<<<<<<< - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_AddTraceback("tinyr._ValuesIter.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "(tree fragment)":3 - * def __reduce_cython__(self): - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_5tinyr_11_ValuesIter_5__setstate_cython__(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -); /*proto*/ -static PyMethodDef __pyx_mdef_5tinyr_11_ValuesIter_5__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_5tinyr_11_ValuesIter_5__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; -static PyObject *__pyx_pw_5tinyr_11_ValuesIter_5__setstate_cython__(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -) { - CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0; - #if !CYTHON_METH_FASTCALL - CYTHON_UNUSED Py_ssize_t __pyx_nargs; - #endif - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject* values[1] = {0}; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); - #if !CYTHON_METH_FASTCALL - #if CYTHON_ASSUME_SAFE_MACROS - __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); - #else - __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; - #endif - #endif - __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); - { - PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,0}; - if (__pyx_kwds) { - Py_ssize_t kw_args; - switch (__pyx_nargs) { - case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); - switch (__pyx_nargs) { - case 0: - if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) { - (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); - kw_args--; - } - else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 3, __pyx_L3_error) - else goto __pyx_L5_argtuple_error; - } - if (unlikely(kw_args > 0)) { - const Py_ssize_t kwd_pos_args = __pyx_nargs; - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__setstate_cython__") < 0)) __PYX_ERR(1, 3, __pyx_L3_error) - } - } else if (unlikely(__pyx_nargs != 1)) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); - } - __pyx_v___pyx_state = values[0]; - } - goto __pyx_L6_skip; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error) - __pyx_L6_skip:; - goto __pyx_L4_argument_unpacking_done; - __pyx_L3_error:; - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); - } - } - __Pyx_AddTraceback("tinyr._ValuesIter.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_5tinyr_11_ValuesIter_4__setstate_cython__(((struct __pyx_obj_5tinyr__ValuesIter *)__pyx_v_self), __pyx_v___pyx_state); - - /* function exit code */ - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); - } - } - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_5tinyr_11_ValuesIter_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_5tinyr__ValuesIter *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__setstate_cython__", 1); - - /* "(tree fragment)":4 - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" # <<<<<<<<<<<<<< - */ - __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_no_default___reduce___due_to_non, 0, 0); - __PYX_ERR(1, 4, __pyx_L1_error) - - /* "(tree fragment)":3 - * def __reduce_cython__(self): - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_AddTraceback("tinyr._ValuesIter.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "tinyr.pyx":1001 - * - * cdef class _ItemsIter(_KVIIter): - * def __next__(self): # <<<<<<<<<<<<<< - * cdef _ChildRecord cr - * cr = self.cri.next() - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_5tinyr_10_ItemsIter_1__next__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_5tinyr_10_ItemsIter_1__next__(PyObject *__pyx_v_self) { - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__next__ (wrapper)", 0); - __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_5tinyr_10_ItemsIter___next__(((struct __pyx_obj_5tinyr__ItemsIter *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_5tinyr_10_ItemsIter___next__(struct __pyx_obj_5tinyr__ItemsIter *__pyx_v_self) { - struct __pyx_obj_5tinyr__ChildRecord *__pyx_v_cr = 0; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - int __pyx_t_4; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__next__", 1); - - /* "tinyr.pyx":1003 - * def __next__(self): - * cdef _ChildRecord cr - * cr = self.cri.next() # <<<<<<<<<<<<<< - * return ( self.rtree.array_to_tuple(cr.coords), cr.identifier ) - * - */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->__pyx_base.cri), __pyx_n_s_next); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1003, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = NULL; - __pyx_t_4 = 0; - #if CYTHON_UNPACK_METHODS - if (likely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - __pyx_t_4 = 1; - } - } - #endif - { - PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL}; - __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4); - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1003, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - } - if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5tinyr__ChildRecord))))) __PYX_ERR(0, 1003, __pyx_L1_error) - __pyx_v_cr = ((struct __pyx_obj_5tinyr__ChildRecord *)__pyx_t_1); - __pyx_t_1 = 0; - - /* "tinyr.pyx":1004 - * cdef _ChildRecord cr - * cr = self.cri.next() - * return ( self.rtree.array_to_tuple(cr.coords), cr.identifier ) # <<<<<<<<<<<<<< - * - * - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_v_self->__pyx_base.__pyx_base.rtree->array_to_tuple(__pyx_v_cr->__pyx_base.coords); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1004, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1004, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_GIVEREF(__pyx_t_1); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1)) __PYX_ERR(0, 1004, __pyx_L1_error); - __Pyx_INCREF(__pyx_v_cr->identifier); - __Pyx_GIVEREF(__pyx_v_cr->identifier); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_cr->identifier)) __PYX_ERR(0, 1004, __pyx_L1_error); - __pyx_t_1 = 0; - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - goto __pyx_L0; - - /* "tinyr.pyx":1001 - * - * cdef class _ItemsIter(_KVIIter): - * def __next__(self): # <<<<<<<<<<<<<< - * cdef _ChildRecord cr - * cr = self.cri.next() - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_AddTraceback("tinyr._ItemsIter.__next__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XDECREF((PyObject *)__pyx_v_cr); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "(tree fragment)":1 - * def __reduce_cython__(self): # <<<<<<<<<<<<<< - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_5tinyr_10_ItemsIter_3__reduce_cython__(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -); /*proto*/ -static PyMethodDef __pyx_mdef_5tinyr_10_ItemsIter_3__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_5tinyr_10_ItemsIter_3__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; -static PyObject *__pyx_pw_5tinyr_10_ItemsIter_3__reduce_cython__(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -) { - #if !CYTHON_METH_FASTCALL - CYTHON_UNUSED Py_ssize_t __pyx_nargs; - #endif - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); - #if !CYTHON_METH_FASTCALL - #if CYTHON_ASSUME_SAFE_MACROS - __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); - #else - __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; - #endif - #endif - __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); - if (unlikely(__pyx_nargs > 0)) { - __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL;} - if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__reduce_cython__", 0))) return NULL; - __pyx_r = __pyx_pf_5tinyr_10_ItemsIter_2__reduce_cython__(((struct __pyx_obj_5tinyr__ItemsIter *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_5tinyr_10_ItemsIter_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_5tinyr__ItemsIter *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__reduce_cython__", 1); - - /* "(tree fragment)":2 - * def __reduce_cython__(self): - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" # <<<<<<<<<<<<<< - * def __setstate_cython__(self, __pyx_state): - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - */ - __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_no_default___reduce___due_to_non, 0, 0); - __PYX_ERR(1, 2, __pyx_L1_error) - - /* "(tree fragment)":1 - * def __reduce_cython__(self): # <<<<<<<<<<<<<< - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_AddTraceback("tinyr._ItemsIter.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "(tree fragment)":3 - * def __reduce_cython__(self): - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_5tinyr_10_ItemsIter_5__setstate_cython__(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -); /*proto*/ -static PyMethodDef __pyx_mdef_5tinyr_10_ItemsIter_5__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_5tinyr_10_ItemsIter_5__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; -static PyObject *__pyx_pw_5tinyr_10_ItemsIter_5__setstate_cython__(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -) { - CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0; - #if !CYTHON_METH_FASTCALL - CYTHON_UNUSED Py_ssize_t __pyx_nargs; - #endif - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject* values[1] = {0}; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); - #if !CYTHON_METH_FASTCALL - #if CYTHON_ASSUME_SAFE_MACROS - __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); - #else - __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; - #endif - #endif - __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); - { - PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,0}; - if (__pyx_kwds) { - Py_ssize_t kw_args; - switch (__pyx_nargs) { - case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); - switch (__pyx_nargs) { - case 0: - if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) { - (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); - kw_args--; - } - else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 3, __pyx_L3_error) - else goto __pyx_L5_argtuple_error; - } - if (unlikely(kw_args > 0)) { - const Py_ssize_t kwd_pos_args = __pyx_nargs; - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__setstate_cython__") < 0)) __PYX_ERR(1, 3, __pyx_L3_error) - } - } else if (unlikely(__pyx_nargs != 1)) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); - } - __pyx_v___pyx_state = values[0]; - } - goto __pyx_L6_skip; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error) - __pyx_L6_skip:; - goto __pyx_L4_argument_unpacking_done; - __pyx_L3_error:; - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); - } - } - __Pyx_AddTraceback("tinyr._ItemsIter.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_5tinyr_10_ItemsIter_4__setstate_cython__(((struct __pyx_obj_5tinyr__ItemsIter *)__pyx_v_self), __pyx_v___pyx_state); - - /* function exit code */ - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); - } - } - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_5tinyr_10_ItemsIter_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_5tinyr__ItemsIter *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__setstate_cython__", 1); - - /* "(tree fragment)":4 - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" # <<<<<<<<<<<<<< - */ - __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_no_default___reduce___due_to_non, 0, 0); - __PYX_ERR(1, 4, __pyx_L1_error) - - /* "(tree fragment)":3 - * def __reduce_cython__(self): - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_AddTraceback("tinyr._ItemsIter.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "tinyr.pyx":1016 - * - * property levels: - * def __get__(self): # <<<<<<<<<<<<<< - * return self.rtree._leaf_level + 1 # count leaf rectangles, too - * - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_5tinyr_9RTreeInfo_6levels_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_5tinyr_9RTreeInfo_6levels_1__get__(PyObject *__pyx_v_self) { - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_5tinyr_9RTreeInfo_6levels___get__(((struct __pyx_obj_5tinyr_RTreeInfo *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_5tinyr_9RTreeInfo_6levels___get__(struct __pyx_obj_5tinyr_RTreeInfo *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__get__", 1); - - /* "tinyr.pyx":1017 - * property levels: - * def __get__(self): - * return self.rtree._leaf_level + 1 # count leaf rectangles, too # <<<<<<<<<<<<<< - * - * def __init__(self, RTree rtree): - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyInt_From_long((__pyx_v_self->rtree->_leaf_level + 1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1017, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "tinyr.pyx":1016 - * - * property levels: - * def __get__(self): # <<<<<<<<<<<<<< - * return self.rtree._leaf_level + 1 # count leaf rectangles, too - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("tinyr.RTreeInfo.levels.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "tinyr.pyx":1019 - * return self.rtree._leaf_level + 1 # count leaf rectangles, too - * - * def __init__(self, RTree rtree): # <<<<<<<<<<<<<< - * self.rtree = rtree - * - */ - -/* Python wrapper */ -static int __pyx_pw_5tinyr_9RTreeInfo_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static int __pyx_pw_5tinyr_9RTreeInfo_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - struct __pyx_obj_5tinyr_RTree *__pyx_v_rtree = 0; - CYTHON_UNUSED Py_ssize_t __pyx_nargs; - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject* values[1] = {0}; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); - #if CYTHON_ASSUME_SAFE_MACROS - __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); - #else - __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1; - #endif - __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - { - PyObject **__pyx_pyargnames[] = {&__pyx_n_s_rtree,0}; - if (__pyx_kwds) { - Py_ssize_t kw_args; - switch (__pyx_nargs) { - case 1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds); - switch (__pyx_nargs) { - case 0: - if (likely((values[0] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_rtree)) != 0)) { - (void)__Pyx_Arg_NewRef_VARARGS(values[0]); - kw_args--; - } - else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1019, __pyx_L3_error) - else goto __pyx_L5_argtuple_error; - } - if (unlikely(kw_args > 0)) { - const Py_ssize_t kwd_pos_args = __pyx_nargs; - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__init__") < 0)) __PYX_ERR(0, 1019, __pyx_L3_error) - } - } else if (unlikely(__pyx_nargs != 1)) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0); - } - __pyx_v_rtree = ((struct __pyx_obj_5tinyr_RTree *)values[0]); - } - goto __pyx_L6_skip; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__init__", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 1019, __pyx_L3_error) - __pyx_L6_skip:; - goto __pyx_L4_argument_unpacking_done; - __pyx_L3_error:; - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]); - } - } - __Pyx_AddTraceback("tinyr.RTreeInfo.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return -1; - __pyx_L4_argument_unpacking_done:; - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rtree), __pyx_ptype_5tinyr_RTree, 1, "rtree", 0))) __PYX_ERR(0, 1019, __pyx_L1_error) - __pyx_r = __pyx_pf_5tinyr_9RTreeInfo___init__(((struct __pyx_obj_5tinyr_RTreeInfo *)__pyx_v_self), __pyx_v_rtree); - - /* function exit code */ - goto __pyx_L0; - __pyx_L1_error:; - __pyx_r = -1; - __pyx_L0:; - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]); - } - } - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_pf_5tinyr_9RTreeInfo___init__(struct __pyx_obj_5tinyr_RTreeInfo *__pyx_v_self, struct __pyx_obj_5tinyr_RTree *__pyx_v_rtree) { - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__init__", 1); - - /* "tinyr.pyx":1020 - * - * def __init__(self, RTree rtree): - * self.rtree = rtree # <<<<<<<<<<<<<< - * - * def iter_rectangles(self): - */ - __Pyx_INCREF((PyObject *)__pyx_v_rtree); - __Pyx_GIVEREF((PyObject *)__pyx_v_rtree); - __Pyx_GOTREF((PyObject *)__pyx_v_self->rtree); - __Pyx_DECREF((PyObject *)__pyx_v_self->rtree); - __pyx_v_self->rtree = __pyx_v_rtree; - - /* "tinyr.pyx":1019 - * return self.rtree._leaf_level + 1 # count leaf rectangles, too - * - * def __init__(self, RTree rtree): # <<<<<<<<<<<<<< - * self.rtree = rtree - * - */ - - /* function exit code */ - __pyx_r = 0; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "tinyr.pyx":1022 - * self.rtree = rtree - * - * def iter_rectangles(self): # <<<<<<<<<<<<<< - * '''Iterate over key coordinates and combined frames. - * - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_5tinyr_9RTreeInfo_3iter_rectangles(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -); /*proto*/ -PyDoc_STRVAR(__pyx_doc_5tinyr_9RTreeInfo_2iter_rectangles, "Iterate over key coordinates and combined frames.\n \n Combined frames are 2D-indexes under which rectangle entries are stored.\n The iterator returns a tuple (level, coordinates) where level is the\n level of the index node or entry in the tree structure.\n "); -static PyMethodDef __pyx_mdef_5tinyr_9RTreeInfo_3iter_rectangles = {"iter_rectangles", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_5tinyr_9RTreeInfo_3iter_rectangles, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_5tinyr_9RTreeInfo_2iter_rectangles}; -static PyObject *__pyx_pw_5tinyr_9RTreeInfo_3iter_rectangles(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -) { - #if !CYTHON_METH_FASTCALL - CYTHON_UNUSED Py_ssize_t __pyx_nargs; - #endif - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("iter_rectangles (wrapper)", 0); - #if !CYTHON_METH_FASTCALL - #if CYTHON_ASSUME_SAFE_MACROS - __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); - #else - __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; - #endif - #endif - __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); - if (unlikely(__pyx_nargs > 0)) { - __Pyx_RaiseArgtupleInvalid("iter_rectangles", 1, 0, 0, __pyx_nargs); return NULL;} - if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "iter_rectangles", 0))) return NULL; - __pyx_r = __pyx_pf_5tinyr_9RTreeInfo_2iter_rectangles(((struct __pyx_obj_5tinyr_RTreeInfo *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_5tinyr_9RTreeInfo_2iter_rectangles(struct __pyx_obj_5tinyr_RTreeInfo *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("iter_rectangles", 1); - - /* "tinyr.pyx":1029 - * level of the index node or entry in the tree structure. - * ''' - * return _RectangleIter(self.rtree) # <<<<<<<<<<<<<< - * - * property common_boundary: - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_5tinyr__RectangleIter), ((PyObject *)__pyx_v_self->rtree)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1029, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "tinyr.pyx":1022 - * self.rtree = rtree - * - * def iter_rectangles(self): # <<<<<<<<<<<<<< - * '''Iterate over key coordinates and combined frames. - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("tinyr.RTreeInfo.iter_rectangles", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "tinyr.pyx":1032 - * - * property common_boundary: - * def __get__(self): # <<<<<<<<<<<<<< - * cdef: - * Dfloat coords[4] - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_5tinyr_9RTreeInfo_15common_boundary_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_5tinyr_9RTreeInfo_15common_boundary_1__get__(PyObject *__pyx_v_self) { - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_5tinyr_9RTreeInfo_15common_boundary___get__(((struct __pyx_obj_5tinyr_RTreeInfo *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_5tinyr_9RTreeInfo_15common_boundary___get__(struct __pyx_obj_5tinyr_RTreeInfo *__pyx_v_self) { - __pyx_t_5tinyr_Dfloat __pyx_v_coords[4]; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - int __pyx_t_2; - PyObject *__pyx_t_3 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__get__", 1); - - /* "tinyr.pyx":1035 - * cdef: - * Dfloat coords[4] - * if not self.rtree.root: # <<<<<<<<<<<<<< - * return 0 - * common_boundaries(self.rtree.root.records, coords) - */ - __pyx_t_1 = __Pyx_PyObject_IsTrue(((PyObject *)__pyx_v_self->rtree->root)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 1035, __pyx_L1_error) - __pyx_t_2 = (!__pyx_t_1); - if (__pyx_t_2) { - - /* "tinyr.pyx":1036 - * Dfloat coords[4] - * if not self.rtree.root: - * return 0 # <<<<<<<<<<<<<< - * common_boundaries(self.rtree.root.records, coords) - * return self.rtree.array_to_tuple(coords) - */ - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_int_0); - __pyx_r = __pyx_int_0; - goto __pyx_L0; - - /* "tinyr.pyx":1035 - * cdef: - * Dfloat coords[4] - * if not self.rtree.root: # <<<<<<<<<<<<<< - * return 0 - * common_boundaries(self.rtree.root.records, coords) - */ - } - - /* "tinyr.pyx":1037 - * if not self.rtree.root: - * return 0 - * common_boundaries(self.rtree.root.records, coords) # <<<<<<<<<<<<<< - * return self.rtree.array_to_tuple(coords) - * - */ - __pyx_t_3 = __pyx_v_self->rtree->root->records; - __Pyx_INCREF(__pyx_t_3); - __pyx_f_5tinyr_common_boundaries(((PyObject*)__pyx_t_3), __pyx_v_coords); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1037, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - - /* "tinyr.pyx":1038 - * return 0 - * common_boundaries(self.rtree.root.records, coords) - * return self.rtree.array_to_tuple(coords) # <<<<<<<<<<<<<< - * - * property width: - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_3 = __pyx_v_self->rtree->array_to_tuple(__pyx_v_coords); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1038, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_r = __pyx_t_3; - __pyx_t_3 = 0; - goto __pyx_L0; - - /* "tinyr.pyx":1032 - * - * property common_boundary: - * def __get__(self): # <<<<<<<<<<<<<< - * cdef: - * Dfloat coords[4] - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_3); - __Pyx_AddTraceback("tinyr.RTreeInfo.common_boundary.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "tinyr.pyx":1041 - * - * property width: - * def __get__(self): # <<<<<<<<<<<<<< - * cdef: - * Dfloat coords[4] - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_5tinyr_9RTreeInfo_5width_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_5tinyr_9RTreeInfo_5width_1__get__(PyObject *__pyx_v_self) { - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_5tinyr_9RTreeInfo_5width___get__(((struct __pyx_obj_5tinyr_RTreeInfo *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_5tinyr_9RTreeInfo_5width___get__(struct __pyx_obj_5tinyr_RTreeInfo *__pyx_v_self) { - __pyx_t_5tinyr_Dfloat __pyx_v_coords[4]; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - int __pyx_t_2; - PyObject *__pyx_t_3 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__get__", 1); - - /* "tinyr.pyx":1044 - * cdef: - * Dfloat coords[4] - * if not self.rtree.root: # <<<<<<<<<<<<<< - * return 0 - * common_boundaries(self.rtree.root.records, coords) - */ - __pyx_t_1 = __Pyx_PyObject_IsTrue(((PyObject *)__pyx_v_self->rtree->root)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 1044, __pyx_L1_error) - __pyx_t_2 = (!__pyx_t_1); - if (__pyx_t_2) { - - /* "tinyr.pyx":1045 - * Dfloat coords[4] - * if not self.rtree.root: - * return 0 # <<<<<<<<<<<<<< - * common_boundaries(self.rtree.root.records, coords) - * return coords[2]-coords[0] - */ - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_int_0); - __pyx_r = __pyx_int_0; - goto __pyx_L0; - - /* "tinyr.pyx":1044 - * cdef: - * Dfloat coords[4] - * if not self.rtree.root: # <<<<<<<<<<<<<< - * return 0 - * common_boundaries(self.rtree.root.records, coords) - */ - } - - /* "tinyr.pyx":1046 - * if not self.rtree.root: - * return 0 - * common_boundaries(self.rtree.root.records, coords) # <<<<<<<<<<<<<< - * return coords[2]-coords[0] - * - */ - __pyx_t_3 = __pyx_v_self->rtree->root->records; - __Pyx_INCREF(__pyx_t_3); - __pyx_f_5tinyr_common_boundaries(((PyObject*)__pyx_t_3), __pyx_v_coords); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1046, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - - /* "tinyr.pyx":1047 - * return 0 - * common_boundaries(self.rtree.root.records, coords) - * return coords[2]-coords[0] # <<<<<<<<<<<<<< - * - * property height: - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_3 = PyFloat_FromDouble(((__pyx_v_coords[2]) - (__pyx_v_coords[0]))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1047, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_r = __pyx_t_3; - __pyx_t_3 = 0; - goto __pyx_L0; - - /* "tinyr.pyx":1041 - * - * property width: - * def __get__(self): # <<<<<<<<<<<<<< - * cdef: - * Dfloat coords[4] - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_3); - __Pyx_AddTraceback("tinyr.RTreeInfo.width.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "tinyr.pyx":1050 - * - * property height: - * def __get__(self): # <<<<<<<<<<<<<< - * cdef: - * Dfloat coords[4] - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_5tinyr_9RTreeInfo_6height_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_5tinyr_9RTreeInfo_6height_1__get__(PyObject *__pyx_v_self) { - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_5tinyr_9RTreeInfo_6height___get__(((struct __pyx_obj_5tinyr_RTreeInfo *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_5tinyr_9RTreeInfo_6height___get__(struct __pyx_obj_5tinyr_RTreeInfo *__pyx_v_self) { - __pyx_t_5tinyr_Dfloat __pyx_v_coords[4]; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - int __pyx_t_2; - PyObject *__pyx_t_3 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__get__", 1); - - /* "tinyr.pyx":1053 - * cdef: - * Dfloat coords[4] - * if not self.rtree.root: # <<<<<<<<<<<<<< - * return 0 - * common_boundaries(self.rtree.root.records, coords) - */ - __pyx_t_1 = __Pyx_PyObject_IsTrue(((PyObject *)__pyx_v_self->rtree->root)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 1053, __pyx_L1_error) - __pyx_t_2 = (!__pyx_t_1); - if (__pyx_t_2) { - - /* "tinyr.pyx":1054 - * Dfloat coords[4] - * if not self.rtree.root: - * return 0 # <<<<<<<<<<<<<< - * common_boundaries(self.rtree.root.records, coords) - * return coords[3]-coords[1] - */ - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_int_0); - __pyx_r = __pyx_int_0; - goto __pyx_L0; - - /* "tinyr.pyx":1053 - * cdef: - * Dfloat coords[4] - * if not self.rtree.root: # <<<<<<<<<<<<<< - * return 0 - * common_boundaries(self.rtree.root.records, coords) - */ - } - - /* "tinyr.pyx":1055 - * if not self.rtree.root: - * return 0 - * common_boundaries(self.rtree.root.records, coords) # <<<<<<<<<<<<<< - * return coords[3]-coords[1] - * - */ - __pyx_t_3 = __pyx_v_self->rtree->root->records; - __Pyx_INCREF(__pyx_t_3); - __pyx_f_5tinyr_common_boundaries(((PyObject*)__pyx_t_3), __pyx_v_coords); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1055, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - - /* "tinyr.pyx":1056 - * return 0 - * common_boundaries(self.rtree.root.records, coords) - * return coords[3]-coords[1] # <<<<<<<<<<<<<< - * - * def to_dot(self, filelike): - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_3 = PyFloat_FromDouble(((__pyx_v_coords[3]) - (__pyx_v_coords[1]))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1056, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_r = __pyx_t_3; - __pyx_t_3 = 0; - goto __pyx_L0; - - /* "tinyr.pyx":1050 - * - * property height: - * def __get__(self): # <<<<<<<<<<<<<< - * cdef: - * Dfloat coords[4] - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_3); - __Pyx_AddTraceback("tinyr.RTreeInfo.height.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "tinyr.pyx":1058 - * return coords[3]-coords[1] - * - * def to_dot(self, filelike): # <<<<<<<<<<<<<< - * '''Writes simple dot-code into filelike that represents the tree structure.''' - * cdef: - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_5tinyr_9RTreeInfo_5to_dot(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -); /*proto*/ -PyDoc_STRVAR(__pyx_doc_5tinyr_9RTreeInfo_4to_dot, "Writes simple dot-code into filelike that represents the tree structure."); -static PyMethodDef __pyx_mdef_5tinyr_9RTreeInfo_5to_dot = {"to_dot", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_5tinyr_9RTreeInfo_5to_dot, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_5tinyr_9RTreeInfo_4to_dot}; -static PyObject *__pyx_pw_5tinyr_9RTreeInfo_5to_dot(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -) { - PyObject *__pyx_v_filelike = 0; - #if !CYTHON_METH_FASTCALL - CYTHON_UNUSED Py_ssize_t __pyx_nargs; - #endif - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject* values[1] = {0}; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("to_dot (wrapper)", 0); - #if !CYTHON_METH_FASTCALL - #if CYTHON_ASSUME_SAFE_MACROS - __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); - #else - __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; - #endif - #endif - __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); - { - PyObject **__pyx_pyargnames[] = {&__pyx_n_s_filelike,0}; - if (__pyx_kwds) { - Py_ssize_t kw_args; - switch (__pyx_nargs) { - case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); - switch (__pyx_nargs) { - case 0: - if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_filelike)) != 0)) { - (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); - kw_args--; - } - else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1058, __pyx_L3_error) - else goto __pyx_L5_argtuple_error; - } - if (unlikely(kw_args > 0)) { - const Py_ssize_t kwd_pos_args = __pyx_nargs; - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "to_dot") < 0)) __PYX_ERR(0, 1058, __pyx_L3_error) - } - } else if (unlikely(__pyx_nargs != 1)) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); - } - __pyx_v_filelike = values[0]; - } - goto __pyx_L6_skip; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("to_dot", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 1058, __pyx_L3_error) - __pyx_L6_skip:; - goto __pyx_L4_argument_unpacking_done; - __pyx_L3_error:; - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); - } - } - __Pyx_AddTraceback("tinyr.RTreeInfo.to_dot", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_5tinyr_9RTreeInfo_4to_dot(((struct __pyx_obj_5tinyr_RTreeInfo *)__pyx_v_self), __pyx_v_filelike); - - /* function exit code */ - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); - } - } - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_5tinyr_9RTreeInfo_4to_dot(struct __pyx_obj_5tinyr_RTreeInfo *__pyx_v_self, PyObject *__pyx_v_filelike) { - struct __pyx_obj_5tinyr__Node *__pyx_v_node = 0; - struct __pyx_obj_5tinyr__InnerRecord *__pyx_v_ir = 0; - struct __pyx_obj_5tinyr__ChildRecord *__pyx_v_cr = 0; - CYTHON_UNUSED int __pyx_v_level; - unsigned int __pyx_v_nid; - unsigned int __pyx_v_rid; - unsigned int __pyx_v_chid; - unsigned int __pyx_v_lid; - PyObject *__pyx_v_node_record_leaf = 0; - PyObject *__pyx_v_node_record_child = 0; - PyObject *__pyx_v_record = NULL; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - int __pyx_t_4; - Py_ssize_t __pyx_t_5; - PyObject *(*__pyx_t_6)(PyObject *); - PyObject *__pyx_t_7 = NULL; - PyObject *__pyx_t_8 = NULL; - PyObject *(*__pyx_t_9)(PyObject *); - Py_ssize_t __pyx_t_10; - PyObject *__pyx_t_11 = NULL; - int __pyx_t_12; - PyObject *__pyx_t_13 = NULL; - unsigned int __pyx_t_14; - unsigned int __pyx_t_15; - unsigned int __pyx_t_16; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("to_dot", 1); - - /* "tinyr.pyx":1068 - * list node_record_leaf, node_record_child - * - * filelike.write('digraph RTree {\n node [shape=\"none\"]; \n') # <<<<<<<<<<<<<< - * - * node_record_leaf = list() - */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_filelike, __pyx_n_s_write); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1068, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = NULL; - __pyx_t_4 = 0; - #if CYTHON_UNPACK_METHODS - if (likely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - __pyx_t_4 = 1; - } - } - #endif - { - PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_kp_s_digraph_RTree_node_shape_none}; - __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1068, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "tinyr.pyx":1070 - * filelike.write('digraph RTree {\n node [shape=\"none\"]; \n') - * - * node_record_leaf = list() # <<<<<<<<<<<<<< - * node_record_child = list() - * - */ - __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1070, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_v_node_record_leaf = ((PyObject*)__pyx_t_1); - __pyx_t_1 = 0; - - /* "tinyr.pyx":1071 - * - * node_record_leaf = list() - * node_record_child = list() # <<<<<<<<<<<<<< - * - * for level, node in _NodeIter(self.rtree): - */ - __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1071, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_v_node_record_child = ((PyObject*)__pyx_t_1); - __pyx_t_1 = 0; - - /* "tinyr.pyx":1073 - * node_record_child = list() - * - * for level, node in _NodeIter(self.rtree): # <<<<<<<<<<<<<< - * if node.is_leaf: - * for cr in node.records: - */ - __pyx_t_1 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_5tinyr__NodeIter), ((PyObject *)__pyx_v_self->rtree)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1073, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) { - __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2); - __pyx_t_5 = 0; - __pyx_t_6 = NULL; - } else { - __pyx_t_5 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1073, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_6 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1073, __pyx_L1_error) - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - for (;;) { - if (likely(!__pyx_t_6)) { - if (likely(PyList_CheckExact(__pyx_t_2))) { - { - Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_2); - #if !CYTHON_ASSUME_SAFE_MACROS - if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 1073, __pyx_L1_error) - #endif - if (__pyx_t_5 >= __pyx_temp) break; - } - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_5); __Pyx_INCREF(__pyx_t_1); __pyx_t_5++; if (unlikely((0 < 0))) __PYX_ERR(0, 1073, __pyx_L1_error) - #else - __pyx_t_1 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1073, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - #endif - } else { - { - Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_2); - #if !CYTHON_ASSUME_SAFE_MACROS - if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 1073, __pyx_L1_error) - #endif - if (__pyx_t_5 >= __pyx_temp) break; - } - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_5); __Pyx_INCREF(__pyx_t_1); __pyx_t_5++; if (unlikely((0 < 0))) __PYX_ERR(0, 1073, __pyx_L1_error) - #else - __pyx_t_1 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1073, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - #endif - } - } else { - __pyx_t_1 = __pyx_t_6(__pyx_t_2); - if (unlikely(!__pyx_t_1)) { - PyObject* exc_type = PyErr_Occurred(); - if (exc_type) { - if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); - else __PYX_ERR(0, 1073, __pyx_L1_error) - } - break; - } - __Pyx_GOTREF(__pyx_t_1); - } - if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { - PyObject* sequence = __pyx_t_1; - Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); - if (unlikely(size != 2)) { - if (size > 2) __Pyx_RaiseTooManyValuesError(2); - else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); - __PYX_ERR(0, 1073, __pyx_L1_error) - } - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - if (likely(PyTuple_CheckExact(sequence))) { - __pyx_t_3 = PyTuple_GET_ITEM(sequence, 0); - __pyx_t_7 = PyTuple_GET_ITEM(sequence, 1); - } else { - __pyx_t_3 = PyList_GET_ITEM(sequence, 0); - __pyx_t_7 = PyList_GET_ITEM(sequence, 1); - } - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(__pyx_t_7); - #else - __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1073, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_7 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1073, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - #endif - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } else { - Py_ssize_t index = -1; - __pyx_t_8 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1073, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_9 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_8); - index = 0; __pyx_t_3 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_3)) goto __pyx_L5_unpacking_failed; - __Pyx_GOTREF(__pyx_t_3); - index = 1; __pyx_t_7 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_7)) goto __pyx_L5_unpacking_failed; - __Pyx_GOTREF(__pyx_t_7); - if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_8), 2) < 0) __PYX_ERR(0, 1073, __pyx_L1_error) - __pyx_t_9 = NULL; - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - goto __pyx_L6_unpacking_done; - __pyx_L5_unpacking_failed:; - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __pyx_t_9 = NULL; - if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); - __PYX_ERR(0, 1073, __pyx_L1_error) - __pyx_L6_unpacking_done:; - } - __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1073, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5tinyr__Node))))) __PYX_ERR(0, 1073, __pyx_L1_error) - __pyx_v_level = __pyx_t_4; - __Pyx_XDECREF_SET(__pyx_v_node, ((struct __pyx_obj_5tinyr__Node *)__pyx_t_7)); - __pyx_t_7 = 0; - - /* "tinyr.pyx":1074 - * - * for level, node in _NodeIter(self.rtree): - * if node.is_leaf: # <<<<<<<<<<<<<< - * for cr in node.records: - * node_record_leaf.append((id(node), id(cr), id(cr.identifier))) - */ - if (__pyx_v_node->is_leaf) { - - /* "tinyr.pyx":1075 - * for level, node in _NodeIter(self.rtree): - * if node.is_leaf: - * for cr in node.records: # <<<<<<<<<<<<<< - * node_record_leaf.append((id(node), id(cr), id(cr.identifier))) - * - */ - if (unlikely(__pyx_v_node->records == Py_None)) { - PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); - __PYX_ERR(0, 1075, __pyx_L1_error) - } - __pyx_t_1 = __pyx_v_node->records; __Pyx_INCREF(__pyx_t_1); - __pyx_t_10 = 0; - for (;;) { - { - Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1); - #if !CYTHON_ASSUME_SAFE_MACROS - if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 1075, __pyx_L1_error) - #endif - if (__pyx_t_10 >= __pyx_temp) break; - } - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_7 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_10); __Pyx_INCREF(__pyx_t_7); __pyx_t_10++; if (unlikely((0 < 0))) __PYX_ERR(0, 1075, __pyx_L1_error) - #else - __pyx_t_7 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_10); __pyx_t_10++; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1075, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - #endif - if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5tinyr__ChildRecord))))) __PYX_ERR(0, 1075, __pyx_L1_error) - __Pyx_XDECREF_SET(__pyx_v_cr, ((struct __pyx_obj_5tinyr__ChildRecord *)__pyx_t_7)); - __pyx_t_7 = 0; - - /* "tinyr.pyx":1076 - * if node.is_leaf: - * for cr in node.records: - * node_record_leaf.append((id(node), id(cr), id(cr.identifier))) # <<<<<<<<<<<<<< - * - * else: - */ - __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_builtin_id, ((PyObject *)__pyx_v_node)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1076, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_id, ((PyObject *)__pyx_v_cr)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1076, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_builtin_id, __pyx_v_cr->identifier); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1076, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1076, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_11); - __Pyx_GIVEREF(__pyx_t_7); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_7)) __PYX_ERR(0, 1076, __pyx_L1_error); - __Pyx_GIVEREF(__pyx_t_3); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_3)) __PYX_ERR(0, 1076, __pyx_L1_error); - __Pyx_GIVEREF(__pyx_t_8); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_8)) __PYX_ERR(0, 1076, __pyx_L1_error); - __pyx_t_7 = 0; - __pyx_t_3 = 0; - __pyx_t_8 = 0; - __pyx_t_12 = __Pyx_PyList_Append(__pyx_v_node_record_leaf, __pyx_t_11); if (unlikely(__pyx_t_12 == ((int)-1))) __PYX_ERR(0, 1076, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; - - /* "tinyr.pyx":1075 - * for level, node in _NodeIter(self.rtree): - * if node.is_leaf: - * for cr in node.records: # <<<<<<<<<<<<<< - * node_record_leaf.append((id(node), id(cr), id(cr.identifier))) - * - */ - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "tinyr.pyx":1074 - * - * for level, node in _NodeIter(self.rtree): - * if node.is_leaf: # <<<<<<<<<<<<<< - * for cr in node.records: - * node_record_leaf.append((id(node), id(cr), id(cr.identifier))) - */ - goto __pyx_L7; - } - - /* "tinyr.pyx":1079 - * - * else: - * for ir in node.records: # <<<<<<<<<<<<<< - * node_record_child.append((id(node), id(ir), id(ir.child))) - * - */ - /*else*/ { - if (unlikely(__pyx_v_node->records == Py_None)) { - PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); - __PYX_ERR(0, 1079, __pyx_L1_error) - } - __pyx_t_1 = __pyx_v_node->records; __Pyx_INCREF(__pyx_t_1); - __pyx_t_10 = 0; - for (;;) { - { - Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1); - #if !CYTHON_ASSUME_SAFE_MACROS - if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 1079, __pyx_L1_error) - #endif - if (__pyx_t_10 >= __pyx_temp) break; - } - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_11 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_10); __Pyx_INCREF(__pyx_t_11); __pyx_t_10++; if (unlikely((0 < 0))) __PYX_ERR(0, 1079, __pyx_L1_error) - #else - __pyx_t_11 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_10); __pyx_t_10++; if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1079, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_11); - #endif - if (!(likely(((__pyx_t_11) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_11, __pyx_ptype_5tinyr__InnerRecord))))) __PYX_ERR(0, 1079, __pyx_L1_error) - __Pyx_XDECREF_SET(__pyx_v_ir, ((struct __pyx_obj_5tinyr__InnerRecord *)__pyx_t_11)); - __pyx_t_11 = 0; - - /* "tinyr.pyx":1080 - * else: - * for ir in node.records: - * node_record_child.append((id(node), id(ir), id(ir.child))) # <<<<<<<<<<<<<< - * - * filelike.write(' %d [label=<
' % (id(node))) - */ - __pyx_t_11 = __Pyx_PyObject_CallOneArg(__pyx_builtin_id, ((PyObject *)__pyx_v_node)); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1080, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_11); - __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_builtin_id, ((PyObject *)__pyx_v_ir)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1080, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_id, ((PyObject *)__pyx_v_ir->child)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1080, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_7 = PyTuple_New(3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1080, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __Pyx_GIVEREF(__pyx_t_11); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_11)) __PYX_ERR(0, 1080, __pyx_L1_error); - __Pyx_GIVEREF(__pyx_t_8); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_8)) __PYX_ERR(0, 1080, __pyx_L1_error); - __Pyx_GIVEREF(__pyx_t_3); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_7, 2, __pyx_t_3)) __PYX_ERR(0, 1080, __pyx_L1_error); - __pyx_t_11 = 0; - __pyx_t_8 = 0; - __pyx_t_3 = 0; - __pyx_t_12 = __Pyx_PyList_Append(__pyx_v_node_record_child, __pyx_t_7); if (unlikely(__pyx_t_12 == ((int)-1))) __PYX_ERR(0, 1080, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - - /* "tinyr.pyx":1079 - * - * else: - * for ir in node.records: # <<<<<<<<<<<<<< - * node_record_child.append((id(node), id(ir), id(ir.child))) - * - */ - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - __pyx_L7:; - - /* "tinyr.pyx":1082 - * node_record_child.append((id(node), id(ir), id(ir.child))) - * - * filelike.write(' %d [label=<
' % (id(node))) # <<<<<<<<<<<<<< - * for record in node.records: - * filelike.write('' % (id(record), id(record))) - */ - __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_filelike, __pyx_n_s_write); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1082, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_id, ((PyObject *)__pyx_v_node)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1082, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_8 = __Pyx_PyString_FormatSafe(__pyx_kp_s_d_label_TABLE_BORDER_0_CELLBORD, __pyx_t_3); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1082, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = NULL; - __pyx_t_4 = 0; - #if CYTHON_UNPACK_METHODS - if (likely(PyMethod_Check(__pyx_t_7))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_7); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_7, function); - __pyx_t_4 = 1; - } - } - #endif - { - PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_8}; - __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1082, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "tinyr.pyx":1083 - * - * filelike.write(' %d [label=<
%d
' % (id(node))) - * for record in node.records: # <<<<<<<<<<<<<< - * filelike.write('' % (id(record), id(record))) - * filelike.write('
%d
>];\n') - */ - if (unlikely(__pyx_v_node->records == Py_None)) { - PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); - __PYX_ERR(0, 1083, __pyx_L1_error) - } - __pyx_t_1 = __pyx_v_node->records; __Pyx_INCREF(__pyx_t_1); - __pyx_t_10 = 0; - for (;;) { - { - Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1); - #if !CYTHON_ASSUME_SAFE_MACROS - if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 1083, __pyx_L1_error) - #endif - if (__pyx_t_10 >= __pyx_temp) break; - } - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_7 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_10); __Pyx_INCREF(__pyx_t_7); __pyx_t_10++; if (unlikely((0 < 0))) __PYX_ERR(0, 1083, __pyx_L1_error) - #else - __pyx_t_7 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_10); __pyx_t_10++; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1083, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - #endif - __Pyx_XDECREF_SET(__pyx_v_record, __pyx_t_7); - __pyx_t_7 = 0; - - /* "tinyr.pyx":1084 - * filelike.write(' %d [label=<' % (id(node))) - * for record in node.records: - * filelike.write('' % (id(record), id(record))) # <<<<<<<<<<<<<< - * filelike.write('
%d
>];\n') - * - */ - __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_filelike, __pyx_n_s_write); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1084, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_id, __pyx_v_record); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1084, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_11 = __Pyx_PyObject_CallOneArg(__pyx_builtin_id, __pyx_v_record); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1084, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_11); - __pyx_t_13 = PyTuple_New(2); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1084, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_13); - __Pyx_GIVEREF(__pyx_t_3); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_3)) __PYX_ERR(0, 1084, __pyx_L1_error); - __Pyx_GIVEREF(__pyx_t_11); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_13, 1, __pyx_t_11)) __PYX_ERR(0, 1084, __pyx_L1_error); - __pyx_t_3 = 0; - __pyx_t_11 = 0; - __pyx_t_11 = __Pyx_PyString_Format(__pyx_kp_s_TD_PORT_d_CELLSPACING_0_d_TD, __pyx_t_13); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1084, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_11); - __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; - __pyx_t_13 = NULL; - __pyx_t_4 = 0; - #if CYTHON_UNPACK_METHODS - if (likely(PyMethod_Check(__pyx_t_8))) { - __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_8); - if (likely(__pyx_t_13)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); - __Pyx_INCREF(__pyx_t_13); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_8, function); - __pyx_t_4 = 1; - } - } - #endif - { - PyObject *__pyx_callargs[2] = {__pyx_t_13, __pyx_t_11}; - __pyx_t_7 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); - __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; - __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; - if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1084, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - } - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - - /* "tinyr.pyx":1083 - * - * filelike.write(' %d [label=<' % (id(node))) - * for record in node.records: # <<<<<<<<<<<<<< - * filelike.write('' % (id(record), id(record))) - * filelike.write('
%d
>];\n') - */ - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "tinyr.pyx":1085 - * for record in node.records: - * filelike.write('%d' % (id(record), id(record))) - * filelike.write('>];\n') # <<<<<<<<<<<<<< - * - * filelike.write('\n node [shape=\"ellipse\"]; \n') - */ - __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_filelike, __pyx_n_s_write); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1085, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __pyx_t_8 = NULL; - __pyx_t_4 = 0; - #if CYTHON_UNPACK_METHODS - if (likely(PyMethod_Check(__pyx_t_7))) { - __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7); - if (likely(__pyx_t_8)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); - __Pyx_INCREF(__pyx_t_8); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_7, function); - __pyx_t_4 = 1; - } - } - #endif - { - PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_kp_s_TR_TABLE}; - __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); - __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1085, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "tinyr.pyx":1073 - * node_record_child = list() - * - * for level, node in _NodeIter(self.rtree): # <<<<<<<<<<<<<< - * if node.is_leaf: - * for cr in node.records: - */ - } - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "tinyr.pyx":1087 - * filelike.write('>];\n') - * - * filelike.write('\n node [shape=\"ellipse\"]; \n') # <<<<<<<<<<<<<< - * for nid, rid, lid in node_record_leaf: - * filelike.write(' %d;\n' % lid) - */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_filelike, __pyx_n_s_write); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1087, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_7 = NULL; - __pyx_t_4 = 0; - #if CYTHON_UNPACK_METHODS - if (likely(PyMethod_Check(__pyx_t_1))) { - __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_1); - if (likely(__pyx_t_7)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); - __Pyx_INCREF(__pyx_t_7); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_1, function); - __pyx_t_4 = 1; - } - } - #endif - { - PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_kp_s_node_shape_ellipse}; - __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); - __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; - if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1087, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "tinyr.pyx":1088 - * - * filelike.write('\n node [shape=\"ellipse\"]; \n') - * for nid, rid, lid in node_record_leaf: # <<<<<<<<<<<<<< - * filelike.write(' %d;\n' % lid) - * - */ - __pyx_t_2 = __pyx_v_node_record_leaf; __Pyx_INCREF(__pyx_t_2); - __pyx_t_5 = 0; - for (;;) { - { - Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_2); - #if !CYTHON_ASSUME_SAFE_MACROS - if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 1088, __pyx_L1_error) - #endif - if (__pyx_t_5 >= __pyx_temp) break; - } - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_5); __Pyx_INCREF(__pyx_t_1); __pyx_t_5++; if (unlikely((0 < 0))) __PYX_ERR(0, 1088, __pyx_L1_error) - #else - __pyx_t_1 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1088, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - #endif - if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { - PyObject* sequence = __pyx_t_1; - Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); - if (unlikely(size != 3)) { - if (size > 3) __Pyx_RaiseTooManyValuesError(3); - else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); - __PYX_ERR(0, 1088, __pyx_L1_error) - } - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - if (likely(PyTuple_CheckExact(sequence))) { - __pyx_t_7 = PyTuple_GET_ITEM(sequence, 0); - __pyx_t_8 = PyTuple_GET_ITEM(sequence, 1); - __pyx_t_11 = PyTuple_GET_ITEM(sequence, 2); - } else { - __pyx_t_7 = PyList_GET_ITEM(sequence, 0); - __pyx_t_8 = PyList_GET_ITEM(sequence, 1); - __pyx_t_11 = PyList_GET_ITEM(sequence, 2); - } - __Pyx_INCREF(__pyx_t_7); - __Pyx_INCREF(__pyx_t_8); - __Pyx_INCREF(__pyx_t_11); - #else - __pyx_t_7 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1088, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __pyx_t_8 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1088, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - __pyx_t_11 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1088, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_11); - #endif - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } else { - Py_ssize_t index = -1; - __pyx_t_13 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1088, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_13); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_9 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_13); - index = 0; __pyx_t_7 = __pyx_t_9(__pyx_t_13); if (unlikely(!__pyx_t_7)) goto __pyx_L20_unpacking_failed; - __Pyx_GOTREF(__pyx_t_7); - index = 1; __pyx_t_8 = __pyx_t_9(__pyx_t_13); if (unlikely(!__pyx_t_8)) goto __pyx_L20_unpacking_failed; - __Pyx_GOTREF(__pyx_t_8); - index = 2; __pyx_t_11 = __pyx_t_9(__pyx_t_13); if (unlikely(!__pyx_t_11)) goto __pyx_L20_unpacking_failed; - __Pyx_GOTREF(__pyx_t_11); - if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_13), 3) < 0) __PYX_ERR(0, 1088, __pyx_L1_error) - __pyx_t_9 = NULL; - __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; - goto __pyx_L21_unpacking_done; - __pyx_L20_unpacking_failed:; - __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; - __pyx_t_9 = NULL; - if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); - __PYX_ERR(0, 1088, __pyx_L1_error) - __pyx_L21_unpacking_done:; - } - __pyx_t_14 = __Pyx_PyInt_As_unsigned_int(__pyx_t_7); if (unlikely((__pyx_t_14 == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1088, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_15 = __Pyx_PyInt_As_unsigned_int(__pyx_t_8); if (unlikely((__pyx_t_15 == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1088, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __pyx_t_16 = __Pyx_PyInt_As_unsigned_int(__pyx_t_11); if (unlikely((__pyx_t_16 == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1088, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; - __pyx_v_nid = __pyx_t_14; - __pyx_v_rid = __pyx_t_15; - __pyx_v_lid = __pyx_t_16; - - /* "tinyr.pyx":1089 - * filelike.write('\n node [shape=\"ellipse\"]; \n') - * for nid, rid, lid in node_record_leaf: - * filelike.write(' %d;\n' % lid) # <<<<<<<<<<<<<< - * - * filelike.write('\n') - */ - __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_filelike, __pyx_n_s_write); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1089, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_11); - __pyx_t_8 = __Pyx_PyInt_From_unsigned_int(__pyx_v_lid); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1089, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - __pyx_t_7 = __Pyx_PyString_Format(__pyx_kp_s_d, __pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1089, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __pyx_t_8 = NULL; - __pyx_t_4 = 0; - #if CYTHON_UNPACK_METHODS - if (likely(PyMethod_Check(__pyx_t_11))) { - __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_11); - if (likely(__pyx_t_8)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11); - __Pyx_INCREF(__pyx_t_8); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_11, function); - __pyx_t_4 = 1; - } - } - #endif - { - PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_t_7}; - __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_11, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); - __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1089, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "tinyr.pyx":1088 - * - * filelike.write('\n node [shape=\"ellipse\"]; \n') - * for nid, rid, lid in node_record_leaf: # <<<<<<<<<<<<<< - * filelike.write(' %d;\n' % lid) - * - */ - } - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "tinyr.pyx":1091 - * filelike.write(' %d;\n' % lid) - * - * filelike.write('\n') # <<<<<<<<<<<<<< - * - * for nid, rid, chid in node_record_child: - */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_filelike, __pyx_n_s_write); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1091, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_11 = NULL; - __pyx_t_4 = 0; - #if CYTHON_UNPACK_METHODS - if (likely(PyMethod_Check(__pyx_t_1))) { - __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_1); - if (likely(__pyx_t_11)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); - __Pyx_INCREF(__pyx_t_11); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_1, function); - __pyx_t_4 = 1; - } - } - #endif - { - PyObject *__pyx_callargs[2] = {__pyx_t_11, __pyx_kp_s__4}; - __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); - __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; - if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1091, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "tinyr.pyx":1093 - * filelike.write('\n') - * - * for nid, rid, chid in node_record_child: # <<<<<<<<<<<<<< - * filelike.write(' %d->%d [tailport=\"%d:s\"]\n' % ( nid, chid, rid )) - * - */ - __pyx_t_2 = __pyx_v_node_record_child; __Pyx_INCREF(__pyx_t_2); - __pyx_t_5 = 0; - for (;;) { - { - Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_2); - #if !CYTHON_ASSUME_SAFE_MACROS - if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 1093, __pyx_L1_error) - #endif - if (__pyx_t_5 >= __pyx_temp) break; - } - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_5); __Pyx_INCREF(__pyx_t_1); __pyx_t_5++; if (unlikely((0 < 0))) __PYX_ERR(0, 1093, __pyx_L1_error) - #else - __pyx_t_1 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1093, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - #endif - if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { - PyObject* sequence = __pyx_t_1; - Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); - if (unlikely(size != 3)) { - if (size > 3) __Pyx_RaiseTooManyValuesError(3); - else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); - __PYX_ERR(0, 1093, __pyx_L1_error) - } - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - if (likely(PyTuple_CheckExact(sequence))) { - __pyx_t_11 = PyTuple_GET_ITEM(sequence, 0); - __pyx_t_7 = PyTuple_GET_ITEM(sequence, 1); - __pyx_t_8 = PyTuple_GET_ITEM(sequence, 2); - } else { - __pyx_t_11 = PyList_GET_ITEM(sequence, 0); - __pyx_t_7 = PyList_GET_ITEM(sequence, 1); - __pyx_t_8 = PyList_GET_ITEM(sequence, 2); - } - __Pyx_INCREF(__pyx_t_11); - __Pyx_INCREF(__pyx_t_7); - __Pyx_INCREF(__pyx_t_8); - #else - __pyx_t_11 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1093, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_11); - __pyx_t_7 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1093, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __pyx_t_8 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1093, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - #endif - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } else { - Py_ssize_t index = -1; - __pyx_t_13 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1093, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_13); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_9 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_13); - index = 0; __pyx_t_11 = __pyx_t_9(__pyx_t_13); if (unlikely(!__pyx_t_11)) goto __pyx_L25_unpacking_failed; - __Pyx_GOTREF(__pyx_t_11); - index = 1; __pyx_t_7 = __pyx_t_9(__pyx_t_13); if (unlikely(!__pyx_t_7)) goto __pyx_L25_unpacking_failed; - __Pyx_GOTREF(__pyx_t_7); - index = 2; __pyx_t_8 = __pyx_t_9(__pyx_t_13); if (unlikely(!__pyx_t_8)) goto __pyx_L25_unpacking_failed; - __Pyx_GOTREF(__pyx_t_8); - if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_13), 3) < 0) __PYX_ERR(0, 1093, __pyx_L1_error) - __pyx_t_9 = NULL; - __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; - goto __pyx_L26_unpacking_done; - __pyx_L25_unpacking_failed:; - __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; - __pyx_t_9 = NULL; - if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); - __PYX_ERR(0, 1093, __pyx_L1_error) - __pyx_L26_unpacking_done:; - } - __pyx_t_16 = __Pyx_PyInt_As_unsigned_int(__pyx_t_11); if (unlikely((__pyx_t_16 == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1093, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; - __pyx_t_15 = __Pyx_PyInt_As_unsigned_int(__pyx_t_7); if (unlikely((__pyx_t_15 == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1093, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_14 = __Pyx_PyInt_As_unsigned_int(__pyx_t_8); if (unlikely((__pyx_t_14 == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1093, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __pyx_v_nid = __pyx_t_16; - __pyx_v_rid = __pyx_t_15; - __pyx_v_chid = __pyx_t_14; - - /* "tinyr.pyx":1094 - * - * for nid, rid, chid in node_record_child: - * filelike.write(' %d->%d [tailport=\"%d:s\"]\n' % ( nid, chid, rid )) # <<<<<<<<<<<<<< - * - * filelike.write('\n') - */ - __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_filelike, __pyx_n_s_write); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1094, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - __pyx_t_7 = __Pyx_PyInt_From_unsigned_int(__pyx_v_nid); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1094, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __pyx_t_11 = __Pyx_PyInt_From_unsigned_int(__pyx_v_chid); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1094, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_11); - __pyx_t_13 = __Pyx_PyInt_From_unsigned_int(__pyx_v_rid); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1094, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_13); - __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1094, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_GIVEREF(__pyx_t_7); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_7)) __PYX_ERR(0, 1094, __pyx_L1_error); - __Pyx_GIVEREF(__pyx_t_11); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_11)) __PYX_ERR(0, 1094, __pyx_L1_error); - __Pyx_GIVEREF(__pyx_t_13); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_t_13)) __PYX_ERR(0, 1094, __pyx_L1_error); - __pyx_t_7 = 0; - __pyx_t_11 = 0; - __pyx_t_13 = 0; - __pyx_t_13 = __Pyx_PyString_Format(__pyx_kp_s_d_d_tailport_d_s, __pyx_t_3); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1094, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_13); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = NULL; - __pyx_t_4 = 0; - #if CYTHON_UNPACK_METHODS - if (likely(PyMethod_Check(__pyx_t_8))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_8); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_8, function); - __pyx_t_4 = 1; - } - } - #endif - { - PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_13}; - __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1094, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "tinyr.pyx":1093 - * filelike.write('\n') - * - * for nid, rid, chid in node_record_child: # <<<<<<<<<<<<<< - * filelike.write(' %d->%d [tailport=\"%d:s\"]\n' % ( nid, chid, rid )) - * - */ - } - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "tinyr.pyx":1096 - * filelike.write(' %d->%d [tailport=\"%d:s\"]\n' % ( nid, chid, rid )) - * - * filelike.write('\n') # <<<<<<<<<<<<<< - * - * for nid, rid, lid in node_record_leaf: - */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_filelike, __pyx_n_s_write); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1096, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_8 = NULL; - __pyx_t_4 = 0; - #if CYTHON_UNPACK_METHODS - if (likely(PyMethod_Check(__pyx_t_1))) { - __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_1); - if (likely(__pyx_t_8)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); - __Pyx_INCREF(__pyx_t_8); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_1, function); - __pyx_t_4 = 1; - } - } - #endif - { - PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_kp_s__4}; - __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); - __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; - if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1096, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "tinyr.pyx":1098 - * filelike.write('\n') - * - * for nid, rid, lid in node_record_leaf: # <<<<<<<<<<<<<< - * filelike.write(' %d->%d [tailport=\"%d:s\"]\n' % ( nid, lid, rid )) - * - */ - __pyx_t_2 = __pyx_v_node_record_leaf; __Pyx_INCREF(__pyx_t_2); - __pyx_t_5 = 0; - for (;;) { - { - Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_2); - #if !CYTHON_ASSUME_SAFE_MACROS - if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 1098, __pyx_L1_error) - #endif - if (__pyx_t_5 >= __pyx_temp) break; - } - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_5); __Pyx_INCREF(__pyx_t_1); __pyx_t_5++; if (unlikely((0 < 0))) __PYX_ERR(0, 1098, __pyx_L1_error) - #else - __pyx_t_1 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1098, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - #endif - if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { - PyObject* sequence = __pyx_t_1; - Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); - if (unlikely(size != 3)) { - if (size > 3) __Pyx_RaiseTooManyValuesError(3); - else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); - __PYX_ERR(0, 1098, __pyx_L1_error) - } - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - if (likely(PyTuple_CheckExact(sequence))) { - __pyx_t_8 = PyTuple_GET_ITEM(sequence, 0); - __pyx_t_13 = PyTuple_GET_ITEM(sequence, 1); - __pyx_t_3 = PyTuple_GET_ITEM(sequence, 2); - } else { - __pyx_t_8 = PyList_GET_ITEM(sequence, 0); - __pyx_t_13 = PyList_GET_ITEM(sequence, 1); - __pyx_t_3 = PyList_GET_ITEM(sequence, 2); - } - __Pyx_INCREF(__pyx_t_8); - __Pyx_INCREF(__pyx_t_13); - __Pyx_INCREF(__pyx_t_3); - #else - __pyx_t_8 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1098, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - __pyx_t_13 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1098, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_13); - __pyx_t_3 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1098, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - #endif - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } else { - Py_ssize_t index = -1; - __pyx_t_11 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1098, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_11); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_9 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_11); - index = 0; __pyx_t_8 = __pyx_t_9(__pyx_t_11); if (unlikely(!__pyx_t_8)) goto __pyx_L30_unpacking_failed; - __Pyx_GOTREF(__pyx_t_8); - index = 1; __pyx_t_13 = __pyx_t_9(__pyx_t_11); if (unlikely(!__pyx_t_13)) goto __pyx_L30_unpacking_failed; - __Pyx_GOTREF(__pyx_t_13); - index = 2; __pyx_t_3 = __pyx_t_9(__pyx_t_11); if (unlikely(!__pyx_t_3)) goto __pyx_L30_unpacking_failed; - __Pyx_GOTREF(__pyx_t_3); - if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_11), 3) < 0) __PYX_ERR(0, 1098, __pyx_L1_error) - __pyx_t_9 = NULL; - __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; - goto __pyx_L31_unpacking_done; - __pyx_L30_unpacking_failed:; - __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; - __pyx_t_9 = NULL; - if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); - __PYX_ERR(0, 1098, __pyx_L1_error) - __pyx_L31_unpacking_done:; - } - __pyx_t_14 = __Pyx_PyInt_As_unsigned_int(__pyx_t_8); if (unlikely((__pyx_t_14 == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1098, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __pyx_t_15 = __Pyx_PyInt_As_unsigned_int(__pyx_t_13); if (unlikely((__pyx_t_15 == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1098, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; - __pyx_t_16 = __Pyx_PyInt_As_unsigned_int(__pyx_t_3); if (unlikely((__pyx_t_16 == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1098, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_v_nid = __pyx_t_14; - __pyx_v_rid = __pyx_t_15; - __pyx_v_lid = __pyx_t_16; - - /* "tinyr.pyx":1099 - * - * for nid, rid, lid in node_record_leaf: - * filelike.write(' %d->%d [tailport=\"%d:s\"]\n' % ( nid, lid, rid )) # <<<<<<<<<<<<<< - * - * filelike.write('}') - */ - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_filelike, __pyx_n_s_write); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1099, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_13 = __Pyx_PyInt_From_unsigned_int(__pyx_v_nid); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1099, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_13); - __pyx_t_8 = __Pyx_PyInt_From_unsigned_int(__pyx_v_lid); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1099, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - __pyx_t_11 = __Pyx_PyInt_From_unsigned_int(__pyx_v_rid); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1099, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_11); - __pyx_t_7 = PyTuple_New(3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1099, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __Pyx_GIVEREF(__pyx_t_13); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_13)) __PYX_ERR(0, 1099, __pyx_L1_error); - __Pyx_GIVEREF(__pyx_t_8); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_8)) __PYX_ERR(0, 1099, __pyx_L1_error); - __Pyx_GIVEREF(__pyx_t_11); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_7, 2, __pyx_t_11)) __PYX_ERR(0, 1099, __pyx_L1_error); - __pyx_t_13 = 0; - __pyx_t_8 = 0; - __pyx_t_11 = 0; - __pyx_t_11 = __Pyx_PyString_Format(__pyx_kp_s_d_d_tailport_d_s, __pyx_t_7); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1099, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_11); - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_7 = NULL; - __pyx_t_4 = 0; - #if CYTHON_UNPACK_METHODS - if (likely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_7)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_7); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - __pyx_t_4 = 1; - } - } - #endif - { - PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_t_11}; - __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); - __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; - __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1099, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "tinyr.pyx":1098 - * filelike.write('\n') - * - * for nid, rid, lid in node_record_leaf: # <<<<<<<<<<<<<< - * filelike.write(' %d->%d [tailport=\"%d:s\"]\n' % ( nid, lid, rid )) - * - */ - } - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "tinyr.pyx":1101 - * filelike.write(' %d->%d [tailport=\"%d:s\"]\n' % ( nid, lid, rid )) - * - * filelike.write('}') # <<<<<<<<<<<<<< - * - * - */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_filelike, __pyx_n_s_write); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1101, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_3 = NULL; - __pyx_t_4 = 0; - #if CYTHON_UNPACK_METHODS - if (likely(PyMethod_Check(__pyx_t_1))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_1, function); - __pyx_t_4 = 1; - } - } - #endif - { - PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_kp_s__5}; - __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1101, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "tinyr.pyx":1058 - * return coords[3]-coords[1] - * - * def to_dot(self, filelike): # <<<<<<<<<<<<<< - * '''Writes simple dot-code into filelike that represents the tree structure.''' - * cdef: - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_7); - __Pyx_XDECREF(__pyx_t_8); - __Pyx_XDECREF(__pyx_t_11); - __Pyx_XDECREF(__pyx_t_13); - __Pyx_AddTraceback("tinyr.RTreeInfo.to_dot", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XDECREF((PyObject *)__pyx_v_node); - __Pyx_XDECREF((PyObject *)__pyx_v_ir); - __Pyx_XDECREF((PyObject *)__pyx_v_cr); - __Pyx_XDECREF(__pyx_v_node_record_leaf); - __Pyx_XDECREF(__pyx_v_node_record_child); - __Pyx_XDECREF(__pyx_v_record); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "(tree fragment)":1 - * def __reduce_cython__(self): # <<<<<<<<<<<<<< - * cdef tuple state - * cdef object _dict - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_5tinyr_9RTreeInfo_7__reduce_cython__(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -); /*proto*/ -static PyMethodDef __pyx_mdef_5tinyr_9RTreeInfo_7__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_5tinyr_9RTreeInfo_7__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; -static PyObject *__pyx_pw_5tinyr_9RTreeInfo_7__reduce_cython__(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -) { - #if !CYTHON_METH_FASTCALL - CYTHON_UNUSED Py_ssize_t __pyx_nargs; - #endif - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); - #if !CYTHON_METH_FASTCALL - #if CYTHON_ASSUME_SAFE_MACROS - __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); - #else - __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; - #endif - #endif - __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); - if (unlikely(__pyx_nargs > 0)) { - __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL;} - if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__reduce_cython__", 0))) return NULL; - __pyx_r = __pyx_pf_5tinyr_9RTreeInfo_6__reduce_cython__(((struct __pyx_obj_5tinyr_RTreeInfo *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_5tinyr_9RTreeInfo_6__reduce_cython__(struct __pyx_obj_5tinyr_RTreeInfo *__pyx_v_self) { - PyObject *__pyx_v_state = 0; - PyObject *__pyx_v__dict = 0; - int __pyx_v_use_setstate; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_t_2; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__reduce_cython__", 1); - - /* "(tree fragment)":5 - * cdef object _dict - * cdef bint use_setstate - * state = (self.rtree,) # <<<<<<<<<<<<<< - * _dict = getattr(self, '__dict__', None) - * if _dict is not None: - */ - __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF((PyObject *)__pyx_v_self->rtree); - __Pyx_GIVEREF((PyObject *)__pyx_v_self->rtree); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_self->rtree))) __PYX_ERR(1, 5, __pyx_L1_error); - __pyx_v_state = ((PyObject*)__pyx_t_1); - __pyx_t_1 = 0; - - /* "(tree fragment)":6 - * cdef bint use_setstate - * state = (self.rtree,) - * _dict = getattr(self, '__dict__', None) # <<<<<<<<<<<<<< - * if _dict is not None: - * state += (_dict,) - */ - __pyx_t_1 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 6, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_v__dict = __pyx_t_1; - __pyx_t_1 = 0; - - /* "(tree fragment)":7 - * state = (self.rtree,) - * _dict = getattr(self, '__dict__', None) - * if _dict is not None: # <<<<<<<<<<<<<< - * state += (_dict,) - * use_setstate = True - */ - __pyx_t_2 = (__pyx_v__dict != Py_None); - if (__pyx_t_2) { - - /* "(tree fragment)":8 - * _dict = getattr(self, '__dict__', None) - * if _dict is not None: - * state += (_dict,) # <<<<<<<<<<<<<< - * use_setstate = True - * else: - */ - __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 8, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_v__dict); - __Pyx_GIVEREF(__pyx_v__dict); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v__dict)) __PYX_ERR(1, 8, __pyx_L1_error); - __pyx_t_3 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 8, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_3)); - __pyx_t_3 = 0; - - /* "(tree fragment)":9 - * if _dict is not None: - * state += (_dict,) - * use_setstate = True # <<<<<<<<<<<<<< - * else: - * use_setstate = self.rtree is not None - */ - __pyx_v_use_setstate = 1; - - /* "(tree fragment)":7 - * state = (self.rtree,) - * _dict = getattr(self, '__dict__', None) - * if _dict is not None: # <<<<<<<<<<<<<< - * state += (_dict,) - * use_setstate = True - */ - goto __pyx_L3; - } - - /* "(tree fragment)":11 - * use_setstate = True - * else: - * use_setstate = self.rtree is not None # <<<<<<<<<<<<<< - * if use_setstate: - * return __pyx_unpickle_RTreeInfo, (type(self), 0xda92ccd, None), state - */ - /*else*/ { - __pyx_t_2 = (((PyObject *)__pyx_v_self->rtree) != Py_None); - __pyx_v_use_setstate = __pyx_t_2; - } - __pyx_L3:; - - /* "(tree fragment)":12 - * else: - * use_setstate = self.rtree is not None - * if use_setstate: # <<<<<<<<<<<<<< - * return __pyx_unpickle_RTreeInfo, (type(self), 0xda92ccd, None), state - * else: - */ - if (__pyx_v_use_setstate) { - - /* "(tree fragment)":13 - * use_setstate = self.rtree is not None - * if use_setstate: - * return __pyx_unpickle_RTreeInfo, (type(self), 0xda92ccd, None), state # <<<<<<<<<<<<<< - * else: - * return __pyx_unpickle_RTreeInfo, (type(self), 0xda92ccd, state) - */ - __Pyx_XDECREF(__pyx_r); - __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_pyx_unpickle_RTreeInfo); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 13, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); - __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))))) __PYX_ERR(1, 13, __pyx_L1_error); - __Pyx_INCREF(__pyx_int_229190861); - __Pyx_GIVEREF(__pyx_int_229190861); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_229190861)) __PYX_ERR(1, 13, __pyx_L1_error); - __Pyx_INCREF(Py_None); - __Pyx_GIVEREF(Py_None); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 2, Py_None)) __PYX_ERR(1, 13, __pyx_L1_error); - __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 13, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_3); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3)) __PYX_ERR(1, 13, __pyx_L1_error); - __Pyx_GIVEREF(__pyx_t_1); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error); - __Pyx_INCREF(__pyx_v_state); - __Pyx_GIVEREF(__pyx_v_state); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_v_state)) __PYX_ERR(1, 13, __pyx_L1_error); - __pyx_t_3 = 0; - __pyx_t_1 = 0; - __pyx_r = __pyx_t_4; - __pyx_t_4 = 0; - goto __pyx_L0; - - /* "(tree fragment)":12 - * else: - * use_setstate = self.rtree is not None - * if use_setstate: # <<<<<<<<<<<<<< - * return __pyx_unpickle_RTreeInfo, (type(self), 0xda92ccd, None), state - * else: - */ - } - - /* "(tree fragment)":15 - * return __pyx_unpickle_RTreeInfo, (type(self), 0xda92ccd, None), state - * else: - * return __pyx_unpickle_RTreeInfo, (type(self), 0xda92ccd, state) # <<<<<<<<<<<<<< - * def __setstate_cython__(self, __pyx_state): - * __pyx_unpickle_RTreeInfo__set_state(self, __pyx_state) - */ - /*else*/ { - __Pyx_XDECREF(__pyx_r); - __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_pyx_unpickle_RTreeInfo); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 15, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 15, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); - __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))))) __PYX_ERR(1, 15, __pyx_L1_error); - __Pyx_INCREF(__pyx_int_229190861); - __Pyx_GIVEREF(__pyx_int_229190861); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_229190861)) __PYX_ERR(1, 15, __pyx_L1_error); - __Pyx_INCREF(__pyx_v_state); - __Pyx_GIVEREF(__pyx_v_state); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_state)) __PYX_ERR(1, 15, __pyx_L1_error); - __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 15, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_GIVEREF(__pyx_t_4); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4)) __PYX_ERR(1, 15, __pyx_L1_error); - __Pyx_GIVEREF(__pyx_t_1); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_1)) __PYX_ERR(1, 15, __pyx_L1_error); - __pyx_t_4 = 0; - __pyx_t_1 = 0; - __pyx_r = __pyx_t_3; - __pyx_t_3 = 0; - goto __pyx_L0; - } - - /* "(tree fragment)":1 - * def __reduce_cython__(self): # <<<<<<<<<<<<<< - * cdef tuple state - * cdef object _dict - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_AddTraceback("tinyr.RTreeInfo.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_state); - __Pyx_XDECREF(__pyx_v__dict); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "(tree fragment)":16 - * else: - * return __pyx_unpickle_RTreeInfo, (type(self), 0xda92ccd, state) - * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< - * __pyx_unpickle_RTreeInfo__set_state(self, __pyx_state) - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_5tinyr_9RTreeInfo_9__setstate_cython__(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -); /*proto*/ -static PyMethodDef __pyx_mdef_5tinyr_9RTreeInfo_9__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_5tinyr_9RTreeInfo_9__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; -static PyObject *__pyx_pw_5tinyr_9RTreeInfo_9__setstate_cython__(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -) { - PyObject *__pyx_v___pyx_state = 0; - #if !CYTHON_METH_FASTCALL - CYTHON_UNUSED Py_ssize_t __pyx_nargs; - #endif - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject* values[1] = {0}; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); - #if !CYTHON_METH_FASTCALL - #if CYTHON_ASSUME_SAFE_MACROS - __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); - #else - __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; - #endif - #endif - __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); - { - PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,0}; - if (__pyx_kwds) { - Py_ssize_t kw_args; - switch (__pyx_nargs) { - case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); - switch (__pyx_nargs) { - case 0: - if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) { - (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); - kw_args--; - } - else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 16, __pyx_L3_error) - else goto __pyx_L5_argtuple_error; - } - if (unlikely(kw_args > 0)) { - const Py_ssize_t kwd_pos_args = __pyx_nargs; - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__setstate_cython__") < 0)) __PYX_ERR(1, 16, __pyx_L3_error) - } - } else if (unlikely(__pyx_nargs != 1)) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); - } - __pyx_v___pyx_state = values[0]; - } - goto __pyx_L6_skip; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 16, __pyx_L3_error) - __pyx_L6_skip:; - goto __pyx_L4_argument_unpacking_done; - __pyx_L3_error:; - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); - } - } - __Pyx_AddTraceback("tinyr.RTreeInfo.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_5tinyr_9RTreeInfo_8__setstate_cython__(((struct __pyx_obj_5tinyr_RTreeInfo *)__pyx_v_self), __pyx_v___pyx_state); - - /* function exit code */ - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); - } - } - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_5tinyr_9RTreeInfo_8__setstate_cython__(struct __pyx_obj_5tinyr_RTreeInfo *__pyx_v_self, PyObject *__pyx_v___pyx_state) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__setstate_cython__", 1); - - /* "(tree fragment)":17 - * return __pyx_unpickle_RTreeInfo, (type(self), 0xda92ccd, state) - * def __setstate_cython__(self, __pyx_state): - * __pyx_unpickle_RTreeInfo__set_state(self, __pyx_state) # <<<<<<<<<<<<<< - */ - if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_v___pyx_state))) __PYX_ERR(1, 17, __pyx_L1_error) - __pyx_t_1 = __pyx_f_5tinyr___pyx_unpickle_RTreeInfo__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 17, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "(tree fragment)":16 - * else: - * return __pyx_unpickle_RTreeInfo, (type(self), 0xda92ccd, state) - * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< - * __pyx_unpickle_RTreeInfo__set_state(self, __pyx_state) - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("tinyr.RTreeInfo.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "(tree fragment)":1 - * def __pyx_unpickle__Record(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< - * cdef object __pyx_PickleError - * cdef object __pyx_result - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_5tinyr_1__pyx_unpickle__Record(PyObject *__pyx_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -); /*proto*/ -static PyMethodDef __pyx_mdef_5tinyr_1__pyx_unpickle__Record = {"__pyx_unpickle__Record", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_5tinyr_1__pyx_unpickle__Record, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; -static PyObject *__pyx_pw_5tinyr_1__pyx_unpickle__Record(PyObject *__pyx_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -) { - PyObject *__pyx_v___pyx_type = 0; - long __pyx_v___pyx_checksum; - PyObject *__pyx_v___pyx_state = 0; - #if !CYTHON_METH_FASTCALL - CYTHON_UNUSED Py_ssize_t __pyx_nargs; - #endif - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject* values[3] = {0,0,0}; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__pyx_unpickle__Record (wrapper)", 0); - #if !CYTHON_METH_FASTCALL - #if CYTHON_ASSUME_SAFE_MACROS - __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); - #else - __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; - #endif - #endif - __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); - { - PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0}; - if (__pyx_kwds) { - Py_ssize_t kw_args; - switch (__pyx_nargs) { - case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); - switch (__pyx_nargs) { - case 0: - if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_type)) != 0)) { - (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); - kw_args--; - } - else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error) - else goto __pyx_L5_argtuple_error; - CYTHON_FALLTHROUGH; - case 1: - if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_checksum)) != 0)) { - (void)__Pyx_Arg_NewRef_FASTCALL(values[1]); - kw_args--; - } - else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error) - else { - __Pyx_RaiseArgtupleInvalid("__pyx_unpickle__Record", 1, 3, 3, 1); __PYX_ERR(1, 1, __pyx_L3_error) - } - CYTHON_FALLTHROUGH; - case 2: - if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) { - (void)__Pyx_Arg_NewRef_FASTCALL(values[2]); - kw_args--; - } - else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error) - else { - __Pyx_RaiseArgtupleInvalid("__pyx_unpickle__Record", 1, 3, 3, 2); __PYX_ERR(1, 1, __pyx_L3_error) - } - } - if (unlikely(kw_args > 0)) { - const Py_ssize_t kwd_pos_args = __pyx_nargs; - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__pyx_unpickle__Record") < 0)) __PYX_ERR(1, 1, __pyx_L3_error) - } - } else if (unlikely(__pyx_nargs != 3)) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); - values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); - values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); - } - __pyx_v___pyx_type = values[0]; - __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error) - __pyx_v___pyx_state = values[2]; - } - goto __pyx_L6_skip; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__pyx_unpickle__Record", 1, 3, 3, __pyx_nargs); __PYX_ERR(1, 1, __pyx_L3_error) - __pyx_L6_skip:; - goto __pyx_L4_argument_unpacking_done; - __pyx_L3_error:; - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); - } - } - __Pyx_AddTraceback("tinyr.__pyx_unpickle__Record", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_5tinyr___pyx_unpickle__Record(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state); - - /* function exit code */ - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); - } - } - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_5tinyr___pyx_unpickle__Record(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) { - PyObject *__pyx_v___pyx_PickleError = 0; - PyObject *__pyx_v___pyx_result = 0; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_t_2; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - int __pyx_t_5; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__pyx_unpickle__Record", 1); - - /* "(tree fragment)":4 - * cdef object __pyx_PickleError - * cdef object __pyx_result - * if __pyx_checksum not in (0xd6fae5e, 0xd6626c4, 0xfb1b8c2): # <<<<<<<<<<<<<< - * from pickle import PickleError as __pyx_PickleError - * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xd6fae5e, 0xd6626c4, 0xfb1b8c2) = (coords))" % __pyx_checksum - */ - __pyx_t_1 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_t_1, __pyx_tuple__6, Py_NE)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(1, 4, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - if (__pyx_t_2) { - - /* "(tree fragment)":5 - * cdef object __pyx_result - * if __pyx_checksum not in (0xd6fae5e, 0xd6626c4, 0xfb1b8c2): - * from pickle import PickleError as __pyx_PickleError # <<<<<<<<<<<<<< - * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xd6fae5e, 0xd6626c4, 0xfb1b8c2) = (coords))" % __pyx_checksum - * __pyx_result = _Record.__new__(__pyx_type) - */ - __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_n_s_PickleError); - __Pyx_GIVEREF(__pyx_n_s_PickleError); - if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_PickleError)) __PYX_ERR(1, 5, __pyx_L1_error); - __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_1, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_t_1); - __pyx_v___pyx_PickleError = __pyx_t_1; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - - /* "(tree fragment)":6 - * if __pyx_checksum not in (0xd6fae5e, 0xd6626c4, 0xfb1b8c2): - * from pickle import PickleError as __pyx_PickleError - * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xd6fae5e, 0xd6626c4, 0xfb1b8c2) = (coords))" % __pyx_checksum # <<<<<<<<<<<<<< - * __pyx_result = _Record.__new__(__pyx_type) - * if __pyx_state is not None: - */ - __pyx_t_3 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_0x_x_vs_0, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 6, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_Raise(__pyx_v___pyx_PickleError, __pyx_t_1, 0, 0); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __PYX_ERR(1, 6, __pyx_L1_error) - - /* "(tree fragment)":4 - * cdef object __pyx_PickleError - * cdef object __pyx_result - * if __pyx_checksum not in (0xd6fae5e, 0xd6626c4, 0xfb1b8c2): # <<<<<<<<<<<<<< - * from pickle import PickleError as __pyx_PickleError - * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xd6fae5e, 0xd6626c4, 0xfb1b8c2) = (coords))" % __pyx_checksum - */ - } - - /* "(tree fragment)":7 - * from pickle import PickleError as __pyx_PickleError - * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xd6fae5e, 0xd6626c4, 0xfb1b8c2) = (coords))" % __pyx_checksum - * __pyx_result = _Record.__new__(__pyx_type) # <<<<<<<<<<<<<< - * if __pyx_state is not None: - * __pyx_unpickle__Record__set_state(<_Record> __pyx_result, __pyx_state) - */ - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_5tinyr__Record), __pyx_n_s_new); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 7, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = NULL; - __pyx_t_5 = 0; - #if CYTHON_UNPACK_METHODS - if (likely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - __pyx_t_5 = 1; - } - } - #endif - { - PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v___pyx_type}; - __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 7, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } - __pyx_v___pyx_result = __pyx_t_1; - __pyx_t_1 = 0; - - /* "(tree fragment)":8 - * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xd6fae5e, 0xd6626c4, 0xfb1b8c2) = (coords))" % __pyx_checksum - * __pyx_result = _Record.__new__(__pyx_type) - * if __pyx_state is not None: # <<<<<<<<<<<<<< - * __pyx_unpickle__Record__set_state(<_Record> __pyx_result, __pyx_state) - * return __pyx_result - */ - __pyx_t_2 = (__pyx_v___pyx_state != Py_None); - if (__pyx_t_2) { - - /* "(tree fragment)":9 - * __pyx_result = _Record.__new__(__pyx_type) - * if __pyx_state is not None: - * __pyx_unpickle__Record__set_state(<_Record> __pyx_result, __pyx_state) # <<<<<<<<<<<<<< - * return __pyx_result - * cdef __pyx_unpickle__Record__set_state(_Record __pyx_result, tuple __pyx_state): - */ - if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_v___pyx_state))) __PYX_ERR(1, 9, __pyx_L1_error) - __pyx_t_1 = __pyx_f_5tinyr___pyx_unpickle__Record__set_state(((struct __pyx_obj_5tinyr__Record *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 9, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "(tree fragment)":8 - * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xd6fae5e, 0xd6626c4, 0xfb1b8c2) = (coords))" % __pyx_checksum - * __pyx_result = _Record.__new__(__pyx_type) - * if __pyx_state is not None: # <<<<<<<<<<<<<< - * __pyx_unpickle__Record__set_state(<_Record> __pyx_result, __pyx_state) - * return __pyx_result - */ - } - - /* "(tree fragment)":10 - * if __pyx_state is not None: - * __pyx_unpickle__Record__set_state(<_Record> __pyx_result, __pyx_state) - * return __pyx_result # <<<<<<<<<<<<<< - * cdef __pyx_unpickle__Record__set_state(_Record __pyx_result, tuple __pyx_state): - * __pyx_result.coords = __pyx_state[0] - */ - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_v___pyx_result); - __pyx_r = __pyx_v___pyx_result; - goto __pyx_L0; - - /* "(tree fragment)":1 - * def __pyx_unpickle__Record(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< - * cdef object __pyx_PickleError - * cdef object __pyx_result - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_AddTraceback("tinyr.__pyx_unpickle__Record", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v___pyx_PickleError); - __Pyx_XDECREF(__pyx_v___pyx_result); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "(tree fragment)":11 - * __pyx_unpickle__Record__set_state(<_Record> __pyx_result, __pyx_state) - * return __pyx_result - * cdef __pyx_unpickle__Record__set_state(_Record __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<< - * __pyx_result.coords = __pyx_state[0] - * if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'): - */ - -static PyObject *__pyx_f_5tinyr___pyx_unpickle__Record__set_state(struct __pyx_obj_5tinyr__Record *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __pyx_t_5tinyr_Dfloat __pyx_t_2[4]; - int __pyx_t_3; - Py_ssize_t __pyx_t_4; - int __pyx_t_5; - PyObject *__pyx_t_6 = NULL; - PyObject *__pyx_t_7 = NULL; - PyObject *__pyx_t_8 = NULL; - int __pyx_t_9; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__pyx_unpickle__Record__set_state", 1); - - /* "(tree fragment)":12 - * return __pyx_result - * cdef __pyx_unpickle__Record__set_state(_Record __pyx_result, tuple __pyx_state): - * __pyx_result.coords = __pyx_state[0] # <<<<<<<<<<<<<< - * if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'): - * __pyx_result.__dict__.update(__pyx_state[1]) - */ - if (unlikely(__pyx_v___pyx_state == Py_None)) { - PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - __PYX_ERR(1, 12, __pyx_L1_error) - } - __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (unlikely((__Pyx_carray_from_py___pyx_t_5tinyr_Dfloat(__pyx_t_1, __pyx_t_2, 4) < 0))) __PYX_ERR(1, 12, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - memcpy(&(__pyx_v___pyx_result->coords[0]), __pyx_t_2, sizeof(__pyx_v___pyx_result->coords[0]) * (4)); - - /* "(tree fragment)":13 - * cdef __pyx_unpickle__Record__set_state(_Record __pyx_result, tuple __pyx_state): - * __pyx_result.coords = __pyx_state[0] - * if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'): # <<<<<<<<<<<<<< - * __pyx_result.__dict__.update(__pyx_state[1]) - */ - if (unlikely(__pyx_v___pyx_state == Py_None)) { - PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); - __PYX_ERR(1, 13, __pyx_L1_error) - } - __pyx_t_4 = __Pyx_PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(1, 13, __pyx_L1_error) - __pyx_t_5 = (__pyx_t_4 > 1); - if (__pyx_t_5) { - } else { - __pyx_t_3 = __pyx_t_5; - goto __pyx_L4_bool_binop_done; - } - __pyx_t_5 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(1, 13, __pyx_L1_error) - __pyx_t_3 = __pyx_t_5; - __pyx_L4_bool_binop_done:; - if (__pyx_t_3) { - - /* "(tree fragment)":14 - * __pyx_result.coords = __pyx_state[0] - * if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'): - * __pyx_result.__dict__.update(__pyx_state[1]) # <<<<<<<<<<<<<< - */ - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 14, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_update); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - if (unlikely(__pyx_v___pyx_state == Py_None)) { - PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - __PYX_ERR(1, 14, __pyx_L1_error) - } - __pyx_t_6 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 14, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __pyx_t_8 = NULL; - __pyx_t_9 = 0; - #if CYTHON_UNPACK_METHODS - if (likely(PyMethod_Check(__pyx_t_7))) { - __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7); - if (likely(__pyx_t_8)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); - __Pyx_INCREF(__pyx_t_8); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_7, function); - __pyx_t_9 = 1; - } - } - #endif - { - PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_t_6}; - __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_9, 1+__pyx_t_9); - __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 14, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "(tree fragment)":13 - * cdef __pyx_unpickle__Record__set_state(_Record __pyx_result, tuple __pyx_state): - * __pyx_result.coords = __pyx_state[0] - * if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'): # <<<<<<<<<<<<<< - * __pyx_result.__dict__.update(__pyx_state[1]) - */ - } - - /* "(tree fragment)":11 - * __pyx_unpickle__Record__set_state(<_Record> __pyx_result, __pyx_state) - * return __pyx_result - * cdef __pyx_unpickle__Record__set_state(_Record __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<< - * __pyx_result.coords = __pyx_state[0] - * if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'): - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_6); - __Pyx_XDECREF(__pyx_t_7); - __Pyx_XDECREF(__pyx_t_8); - __Pyx_AddTraceback("tinyr.__pyx_unpickle__Record__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "(tree fragment)":1 - * def __pyx_unpickle__ChildRecord(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< - * cdef object __pyx_PickleError - * cdef object __pyx_result - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_5tinyr_3__pyx_unpickle__ChildRecord(PyObject *__pyx_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -); /*proto*/ -static PyMethodDef __pyx_mdef_5tinyr_3__pyx_unpickle__ChildRecord = {"__pyx_unpickle__ChildRecord", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_5tinyr_3__pyx_unpickle__ChildRecord, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; -static PyObject *__pyx_pw_5tinyr_3__pyx_unpickle__ChildRecord(PyObject *__pyx_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -) { - PyObject *__pyx_v___pyx_type = 0; - long __pyx_v___pyx_checksum; - PyObject *__pyx_v___pyx_state = 0; - #if !CYTHON_METH_FASTCALL - CYTHON_UNUSED Py_ssize_t __pyx_nargs; - #endif - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject* values[3] = {0,0,0}; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__pyx_unpickle__ChildRecord (wrapper)", 0); - #if !CYTHON_METH_FASTCALL - #if CYTHON_ASSUME_SAFE_MACROS - __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); - #else - __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; - #endif - #endif - __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); - { - PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0}; - if (__pyx_kwds) { - Py_ssize_t kw_args; - switch (__pyx_nargs) { - case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); - switch (__pyx_nargs) { - case 0: - if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_type)) != 0)) { - (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); - kw_args--; - } - else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error) - else goto __pyx_L5_argtuple_error; - CYTHON_FALLTHROUGH; - case 1: - if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_checksum)) != 0)) { - (void)__Pyx_Arg_NewRef_FASTCALL(values[1]); - kw_args--; - } - else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error) - else { - __Pyx_RaiseArgtupleInvalid("__pyx_unpickle__ChildRecord", 1, 3, 3, 1); __PYX_ERR(1, 1, __pyx_L3_error) - } - CYTHON_FALLTHROUGH; - case 2: - if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) { - (void)__Pyx_Arg_NewRef_FASTCALL(values[2]); - kw_args--; - } - else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error) - else { - __Pyx_RaiseArgtupleInvalid("__pyx_unpickle__ChildRecord", 1, 3, 3, 2); __PYX_ERR(1, 1, __pyx_L3_error) - } - } - if (unlikely(kw_args > 0)) { - const Py_ssize_t kwd_pos_args = __pyx_nargs; - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__pyx_unpickle__ChildRecord") < 0)) __PYX_ERR(1, 1, __pyx_L3_error) - } - } else if (unlikely(__pyx_nargs != 3)) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); - values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); - values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); - } - __pyx_v___pyx_type = values[0]; - __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error) - __pyx_v___pyx_state = values[2]; - } - goto __pyx_L6_skip; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__pyx_unpickle__ChildRecord", 1, 3, 3, __pyx_nargs); __PYX_ERR(1, 1, __pyx_L3_error) - __pyx_L6_skip:; - goto __pyx_L4_argument_unpacking_done; - __pyx_L3_error:; - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); - } - } - __Pyx_AddTraceback("tinyr.__pyx_unpickle__ChildRecord", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_5tinyr_2__pyx_unpickle__ChildRecord(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state); - - /* function exit code */ - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); - } - } - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_5tinyr_2__pyx_unpickle__ChildRecord(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) { - PyObject *__pyx_v___pyx_PickleError = 0; - PyObject *__pyx_v___pyx_result = 0; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_t_2; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - int __pyx_t_5; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__pyx_unpickle__ChildRecord", 1); - - /* "(tree fragment)":4 - * cdef object __pyx_PickleError - * cdef object __pyx_result - * if __pyx_checksum not in (0x9d7f65c, 0xaab32ac, 0xcaebb2a): # <<<<<<<<<<<<<< - * from pickle import PickleError as __pyx_PickleError - * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x9d7f65c, 0xaab32ac, 0xcaebb2a) = (coords, identifier))" % __pyx_checksum - */ - __pyx_t_1 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_t_1, __pyx_tuple__8, Py_NE)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(1, 4, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - if (__pyx_t_2) { - - /* "(tree fragment)":5 - * cdef object __pyx_result - * if __pyx_checksum not in (0x9d7f65c, 0xaab32ac, 0xcaebb2a): - * from pickle import PickleError as __pyx_PickleError # <<<<<<<<<<<<<< - * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x9d7f65c, 0xaab32ac, 0xcaebb2a) = (coords, identifier))" % __pyx_checksum - * __pyx_result = _ChildRecord.__new__(__pyx_type) - */ - __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_n_s_PickleError); - __Pyx_GIVEREF(__pyx_n_s_PickleError); - if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_PickleError)) __PYX_ERR(1, 5, __pyx_L1_error); - __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_1, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_t_1); - __pyx_v___pyx_PickleError = __pyx_t_1; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - - /* "(tree fragment)":6 - * if __pyx_checksum not in (0x9d7f65c, 0xaab32ac, 0xcaebb2a): - * from pickle import PickleError as __pyx_PickleError - * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x9d7f65c, 0xaab32ac, 0xcaebb2a) = (coords, identifier))" % __pyx_checksum # <<<<<<<<<<<<<< - * __pyx_result = _ChildRecord.__new__(__pyx_type) - * if __pyx_state is not None: - */ - __pyx_t_3 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 6, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_Raise(__pyx_v___pyx_PickleError, __pyx_t_1, 0, 0); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __PYX_ERR(1, 6, __pyx_L1_error) - - /* "(tree fragment)":4 - * cdef object __pyx_PickleError - * cdef object __pyx_result - * if __pyx_checksum not in (0x9d7f65c, 0xaab32ac, 0xcaebb2a): # <<<<<<<<<<<<<< - * from pickle import PickleError as __pyx_PickleError - * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x9d7f65c, 0xaab32ac, 0xcaebb2a) = (coords, identifier))" % __pyx_checksum - */ - } - - /* "(tree fragment)":7 - * from pickle import PickleError as __pyx_PickleError - * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x9d7f65c, 0xaab32ac, 0xcaebb2a) = (coords, identifier))" % __pyx_checksum - * __pyx_result = _ChildRecord.__new__(__pyx_type) # <<<<<<<<<<<<<< - * if __pyx_state is not None: - * __pyx_unpickle__ChildRecord__set_state(<_ChildRecord> __pyx_result, __pyx_state) - */ - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_5tinyr__ChildRecord), __pyx_n_s_new); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 7, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = NULL; - __pyx_t_5 = 0; - #if CYTHON_UNPACK_METHODS - if (likely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - __pyx_t_5 = 1; - } - } - #endif - { - PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v___pyx_type}; - __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 7, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } - __pyx_v___pyx_result = __pyx_t_1; - __pyx_t_1 = 0; - - /* "(tree fragment)":8 - * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x9d7f65c, 0xaab32ac, 0xcaebb2a) = (coords, identifier))" % __pyx_checksum - * __pyx_result = _ChildRecord.__new__(__pyx_type) - * if __pyx_state is not None: # <<<<<<<<<<<<<< - * __pyx_unpickle__ChildRecord__set_state(<_ChildRecord> __pyx_result, __pyx_state) - * return __pyx_result - */ - __pyx_t_2 = (__pyx_v___pyx_state != Py_None); - if (__pyx_t_2) { - - /* "(tree fragment)":9 - * __pyx_result = _ChildRecord.__new__(__pyx_type) - * if __pyx_state is not None: - * __pyx_unpickle__ChildRecord__set_state(<_ChildRecord> __pyx_result, __pyx_state) # <<<<<<<<<<<<<< - * return __pyx_result - * cdef __pyx_unpickle__ChildRecord__set_state(_ChildRecord __pyx_result, tuple __pyx_state): - */ - if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_v___pyx_state))) __PYX_ERR(1, 9, __pyx_L1_error) - __pyx_t_1 = __pyx_f_5tinyr___pyx_unpickle__ChildRecord__set_state(((struct __pyx_obj_5tinyr__ChildRecord *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 9, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "(tree fragment)":8 - * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x9d7f65c, 0xaab32ac, 0xcaebb2a) = (coords, identifier))" % __pyx_checksum - * __pyx_result = _ChildRecord.__new__(__pyx_type) - * if __pyx_state is not None: # <<<<<<<<<<<<<< - * __pyx_unpickle__ChildRecord__set_state(<_ChildRecord> __pyx_result, __pyx_state) - * return __pyx_result - */ - } - - /* "(tree fragment)":10 - * if __pyx_state is not None: - * __pyx_unpickle__ChildRecord__set_state(<_ChildRecord> __pyx_result, __pyx_state) - * return __pyx_result # <<<<<<<<<<<<<< - * cdef __pyx_unpickle__ChildRecord__set_state(_ChildRecord __pyx_result, tuple __pyx_state): - * __pyx_result.coords = __pyx_state[0]; __pyx_result.identifier = __pyx_state[1] - */ - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_v___pyx_result); - __pyx_r = __pyx_v___pyx_result; - goto __pyx_L0; - - /* "(tree fragment)":1 - * def __pyx_unpickle__ChildRecord(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< - * cdef object __pyx_PickleError - * cdef object __pyx_result - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_AddTraceback("tinyr.__pyx_unpickle__ChildRecord", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v___pyx_PickleError); - __Pyx_XDECREF(__pyx_v___pyx_result); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "(tree fragment)":11 - * __pyx_unpickle__ChildRecord__set_state(<_ChildRecord> __pyx_result, __pyx_state) - * return __pyx_result - * cdef __pyx_unpickle__ChildRecord__set_state(_ChildRecord __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<< - * __pyx_result.coords = __pyx_state[0]; __pyx_result.identifier = __pyx_state[1] - * if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'): - */ - -static PyObject *__pyx_f_5tinyr___pyx_unpickle__ChildRecord__set_state(struct __pyx_obj_5tinyr__ChildRecord *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - __pyx_t_5tinyr_Dfloat __pyx_t_2[4]; - int __pyx_t_3; - Py_ssize_t __pyx_t_4; - int __pyx_t_5; - PyObject *__pyx_t_6 = NULL; - PyObject *__pyx_t_7 = NULL; - PyObject *__pyx_t_8 = NULL; - int __pyx_t_9; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__pyx_unpickle__ChildRecord__set_state", 1); - - /* "(tree fragment)":12 - * return __pyx_result - * cdef __pyx_unpickle__ChildRecord__set_state(_ChildRecord __pyx_result, tuple __pyx_state): - * __pyx_result.coords = __pyx_state[0]; __pyx_result.identifier = __pyx_state[1] # <<<<<<<<<<<<<< - * if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'): - * __pyx_result.__dict__.update(__pyx_state[2]) - */ - if (unlikely(__pyx_v___pyx_state == Py_None)) { - PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - __PYX_ERR(1, 12, __pyx_L1_error) - } - __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (unlikely((__Pyx_carray_from_py___pyx_t_5tinyr_Dfloat(__pyx_t_1, __pyx_t_2, 4) < 0))) __PYX_ERR(1, 12, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - memcpy(&(__pyx_v___pyx_result->__pyx_base.coords[0]), __pyx_t_2, sizeof(__pyx_v___pyx_result->__pyx_base.coords[0]) * (4)); - if (unlikely(__pyx_v___pyx_state == Py_None)) { - PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - __PYX_ERR(1, 12, __pyx_L1_error) - } - __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_GIVEREF(__pyx_t_1); - __Pyx_GOTREF(__pyx_v___pyx_result->identifier); - __Pyx_DECREF(__pyx_v___pyx_result->identifier); - __pyx_v___pyx_result->identifier = __pyx_t_1; - __pyx_t_1 = 0; - - /* "(tree fragment)":13 - * cdef __pyx_unpickle__ChildRecord__set_state(_ChildRecord __pyx_result, tuple __pyx_state): - * __pyx_result.coords = __pyx_state[0]; __pyx_result.identifier = __pyx_state[1] - * if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'): # <<<<<<<<<<<<<< - * __pyx_result.__dict__.update(__pyx_state[2]) - */ - if (unlikely(__pyx_v___pyx_state == Py_None)) { - PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); - __PYX_ERR(1, 13, __pyx_L1_error) - } - __pyx_t_4 = __Pyx_PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(1, 13, __pyx_L1_error) - __pyx_t_5 = (__pyx_t_4 > 2); - if (__pyx_t_5) { - } else { - __pyx_t_3 = __pyx_t_5; - goto __pyx_L4_bool_binop_done; - } - __pyx_t_5 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(1, 13, __pyx_L1_error) - __pyx_t_3 = __pyx_t_5; - __pyx_L4_bool_binop_done:; - if (__pyx_t_3) { - - /* "(tree fragment)":14 - * __pyx_result.coords = __pyx_state[0]; __pyx_result.identifier = __pyx_state[1] - * if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'): - * __pyx_result.__dict__.update(__pyx_state[2]) # <<<<<<<<<<<<<< - */ - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 14, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_update); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - if (unlikely(__pyx_v___pyx_state == Py_None)) { - PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - __PYX_ERR(1, 14, __pyx_L1_error) - } - __pyx_t_6 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 14, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __pyx_t_8 = NULL; - __pyx_t_9 = 0; - #if CYTHON_UNPACK_METHODS - if (likely(PyMethod_Check(__pyx_t_7))) { - __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7); - if (likely(__pyx_t_8)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); - __Pyx_INCREF(__pyx_t_8); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_7, function); - __pyx_t_9 = 1; - } - } - #endif - { - PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_t_6}; - __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_9, 1+__pyx_t_9); - __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 14, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "(tree fragment)":13 - * cdef __pyx_unpickle__ChildRecord__set_state(_ChildRecord __pyx_result, tuple __pyx_state): - * __pyx_result.coords = __pyx_state[0]; __pyx_result.identifier = __pyx_state[1] - * if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'): # <<<<<<<<<<<<<< - * __pyx_result.__dict__.update(__pyx_state[2]) - */ - } - - /* "(tree fragment)":11 - * __pyx_unpickle__ChildRecord__set_state(<_ChildRecord> __pyx_result, __pyx_state) - * return __pyx_result - * cdef __pyx_unpickle__ChildRecord__set_state(_ChildRecord __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<< - * __pyx_result.coords = __pyx_state[0]; __pyx_result.identifier = __pyx_state[1] - * if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'): - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_6); - __Pyx_XDECREF(__pyx_t_7); - __Pyx_XDECREF(__pyx_t_8); - __Pyx_AddTraceback("tinyr.__pyx_unpickle__ChildRecord__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "(tree fragment)":1 - * def __pyx_unpickle_RTreeInfo(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< - * cdef object __pyx_PickleError - * cdef object __pyx_result - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_5tinyr_5__pyx_unpickle_RTreeInfo(PyObject *__pyx_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -); /*proto*/ -static PyMethodDef __pyx_mdef_5tinyr_5__pyx_unpickle_RTreeInfo = {"__pyx_unpickle_RTreeInfo", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_5tinyr_5__pyx_unpickle_RTreeInfo, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; -static PyObject *__pyx_pw_5tinyr_5__pyx_unpickle_RTreeInfo(PyObject *__pyx_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -) { - PyObject *__pyx_v___pyx_type = 0; - long __pyx_v___pyx_checksum; - PyObject *__pyx_v___pyx_state = 0; - #if !CYTHON_METH_FASTCALL - CYTHON_UNUSED Py_ssize_t __pyx_nargs; - #endif - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject* values[3] = {0,0,0}; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__pyx_unpickle_RTreeInfo (wrapper)", 0); - #if !CYTHON_METH_FASTCALL - #if CYTHON_ASSUME_SAFE_MACROS - __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); - #else - __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; - #endif - #endif - __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); - { - PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0}; - if (__pyx_kwds) { - Py_ssize_t kw_args; - switch (__pyx_nargs) { - case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); - switch (__pyx_nargs) { - case 0: - if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_type)) != 0)) { - (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); - kw_args--; - } - else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error) - else goto __pyx_L5_argtuple_error; - CYTHON_FALLTHROUGH; - case 1: - if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_checksum)) != 0)) { - (void)__Pyx_Arg_NewRef_FASTCALL(values[1]); - kw_args--; - } - else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error) - else { - __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_RTreeInfo", 1, 3, 3, 1); __PYX_ERR(1, 1, __pyx_L3_error) - } - CYTHON_FALLTHROUGH; - case 2: - if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) { - (void)__Pyx_Arg_NewRef_FASTCALL(values[2]); - kw_args--; - } - else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error) - else { - __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_RTreeInfo", 1, 3, 3, 2); __PYX_ERR(1, 1, __pyx_L3_error) - } - } - if (unlikely(kw_args > 0)) { - const Py_ssize_t kwd_pos_args = __pyx_nargs; - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__pyx_unpickle_RTreeInfo") < 0)) __PYX_ERR(1, 1, __pyx_L3_error) - } - } else if (unlikely(__pyx_nargs != 3)) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); - values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); - values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); - } - __pyx_v___pyx_type = values[0]; - __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error) - __pyx_v___pyx_state = values[2]; - } - goto __pyx_L6_skip; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_RTreeInfo", 1, 3, 3, __pyx_nargs); __PYX_ERR(1, 1, __pyx_L3_error) - __pyx_L6_skip:; - goto __pyx_L4_argument_unpacking_done; - __pyx_L3_error:; - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); - } - } - __Pyx_AddTraceback("tinyr.__pyx_unpickle_RTreeInfo", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_5tinyr_4__pyx_unpickle_RTreeInfo(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state); - - /* function exit code */ - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); - } - } - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_5tinyr_4__pyx_unpickle_RTreeInfo(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) { - PyObject *__pyx_v___pyx_PickleError = 0; - PyObject *__pyx_v___pyx_result = 0; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_t_2; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - int __pyx_t_5; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__pyx_unpickle_RTreeInfo", 1); - - /* "(tree fragment)":4 - * cdef object __pyx_PickleError - * cdef object __pyx_result - * if __pyx_checksum not in (0xda92ccd, 0x4106bf8, 0x9a335a4): # <<<<<<<<<<<<<< - * from pickle import PickleError as __pyx_PickleError - * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xda92ccd, 0x4106bf8, 0x9a335a4) = (rtree))" % __pyx_checksum - */ - __pyx_t_1 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_t_1, __pyx_tuple__9, Py_NE)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(1, 4, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - if (__pyx_t_2) { - - /* "(tree fragment)":5 - * cdef object __pyx_result - * if __pyx_checksum not in (0xda92ccd, 0x4106bf8, 0x9a335a4): - * from pickle import PickleError as __pyx_PickleError # <<<<<<<<<<<<<< - * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xda92ccd, 0x4106bf8, 0x9a335a4) = (rtree))" % __pyx_checksum - * __pyx_result = RTreeInfo.__new__(__pyx_type) - */ - __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_n_s_PickleError); - __Pyx_GIVEREF(__pyx_n_s_PickleError); - if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_PickleError)) __PYX_ERR(1, 5, __pyx_L1_error); - __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_1, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_t_1); - __pyx_v___pyx_PickleError = __pyx_t_1; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - - /* "(tree fragment)":6 - * if __pyx_checksum not in (0xda92ccd, 0x4106bf8, 0x9a335a4): - * from pickle import PickleError as __pyx_PickleError - * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xda92ccd, 0x4106bf8, 0x9a335a4) = (rtree))" % __pyx_checksum # <<<<<<<<<<<<<< - * __pyx_result = RTreeInfo.__new__(__pyx_type) - * if __pyx_state is not None: - */ - __pyx_t_3 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_3, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 6, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_Raise(__pyx_v___pyx_PickleError, __pyx_t_1, 0, 0); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __PYX_ERR(1, 6, __pyx_L1_error) - - /* "(tree fragment)":4 - * cdef object __pyx_PickleError - * cdef object __pyx_result - * if __pyx_checksum not in (0xda92ccd, 0x4106bf8, 0x9a335a4): # <<<<<<<<<<<<<< - * from pickle import PickleError as __pyx_PickleError - * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xda92ccd, 0x4106bf8, 0x9a335a4) = (rtree))" % __pyx_checksum - */ - } - - /* "(tree fragment)":7 - * from pickle import PickleError as __pyx_PickleError - * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xda92ccd, 0x4106bf8, 0x9a335a4) = (rtree))" % __pyx_checksum - * __pyx_result = RTreeInfo.__new__(__pyx_type) # <<<<<<<<<<<<<< - * if __pyx_state is not None: - * __pyx_unpickle_RTreeInfo__set_state( __pyx_result, __pyx_state) - */ - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_5tinyr_RTreeInfo), __pyx_n_s_new); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 7, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = NULL; - __pyx_t_5 = 0; - #if CYTHON_UNPACK_METHODS - if (likely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - __pyx_t_5 = 1; - } - } - #endif - { - PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v___pyx_type}; - __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 7, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } - __pyx_v___pyx_result = __pyx_t_1; - __pyx_t_1 = 0; - - /* "(tree fragment)":8 - * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xda92ccd, 0x4106bf8, 0x9a335a4) = (rtree))" % __pyx_checksum - * __pyx_result = RTreeInfo.__new__(__pyx_type) - * if __pyx_state is not None: # <<<<<<<<<<<<<< - * __pyx_unpickle_RTreeInfo__set_state( __pyx_result, __pyx_state) - * return __pyx_result - */ - __pyx_t_2 = (__pyx_v___pyx_state != Py_None); - if (__pyx_t_2) { - - /* "(tree fragment)":9 - * __pyx_result = RTreeInfo.__new__(__pyx_type) - * if __pyx_state is not None: - * __pyx_unpickle_RTreeInfo__set_state( __pyx_result, __pyx_state) # <<<<<<<<<<<<<< - * return __pyx_result - * cdef __pyx_unpickle_RTreeInfo__set_state(RTreeInfo __pyx_result, tuple __pyx_state): - */ - if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_v___pyx_state))) __PYX_ERR(1, 9, __pyx_L1_error) - __pyx_t_1 = __pyx_f_5tinyr___pyx_unpickle_RTreeInfo__set_state(((struct __pyx_obj_5tinyr_RTreeInfo *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 9, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "(tree fragment)":8 - * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xda92ccd, 0x4106bf8, 0x9a335a4) = (rtree))" % __pyx_checksum - * __pyx_result = RTreeInfo.__new__(__pyx_type) - * if __pyx_state is not None: # <<<<<<<<<<<<<< - * __pyx_unpickle_RTreeInfo__set_state( __pyx_result, __pyx_state) - * return __pyx_result - */ - } - - /* "(tree fragment)":10 - * if __pyx_state is not None: - * __pyx_unpickle_RTreeInfo__set_state( __pyx_result, __pyx_state) - * return __pyx_result # <<<<<<<<<<<<<< - * cdef __pyx_unpickle_RTreeInfo__set_state(RTreeInfo __pyx_result, tuple __pyx_state): - * __pyx_result.rtree = __pyx_state[0] - */ - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_v___pyx_result); - __pyx_r = __pyx_v___pyx_result; - goto __pyx_L0; - - /* "(tree fragment)":1 - * def __pyx_unpickle_RTreeInfo(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< - * cdef object __pyx_PickleError - * cdef object __pyx_result - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_AddTraceback("tinyr.__pyx_unpickle_RTreeInfo", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v___pyx_PickleError); - __Pyx_XDECREF(__pyx_v___pyx_result); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "(tree fragment)":11 - * __pyx_unpickle_RTreeInfo__set_state( __pyx_result, __pyx_state) - * return __pyx_result - * cdef __pyx_unpickle_RTreeInfo__set_state(RTreeInfo __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<< - * __pyx_result.rtree = __pyx_state[0] - * if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'): - */ - -static PyObject *__pyx_f_5tinyr___pyx_unpickle_RTreeInfo__set_state(struct __pyx_obj_5tinyr_RTreeInfo *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_t_2; - Py_ssize_t __pyx_t_3; - int __pyx_t_4; - PyObject *__pyx_t_5 = NULL; - PyObject *__pyx_t_6 = NULL; - PyObject *__pyx_t_7 = NULL; - int __pyx_t_8; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__pyx_unpickle_RTreeInfo__set_state", 1); - - /* "(tree fragment)":12 - * return __pyx_result - * cdef __pyx_unpickle_RTreeInfo__set_state(RTreeInfo __pyx_result, tuple __pyx_state): - * __pyx_result.rtree = __pyx_state[0] # <<<<<<<<<<<<<< - * if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'): - * __pyx_result.__dict__.update(__pyx_state[1]) - */ - if (unlikely(__pyx_v___pyx_state == Py_None)) { - PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - __PYX_ERR(1, 12, __pyx_L1_error) - } - __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5tinyr_RTree))))) __PYX_ERR(1, 12, __pyx_L1_error) - __Pyx_GIVEREF(__pyx_t_1); - __Pyx_GOTREF((PyObject *)__pyx_v___pyx_result->rtree); - __Pyx_DECREF((PyObject *)__pyx_v___pyx_result->rtree); - __pyx_v___pyx_result->rtree = ((struct __pyx_obj_5tinyr_RTree *)__pyx_t_1); - __pyx_t_1 = 0; - - /* "(tree fragment)":13 - * cdef __pyx_unpickle_RTreeInfo__set_state(RTreeInfo __pyx_result, tuple __pyx_state): - * __pyx_result.rtree = __pyx_state[0] - * if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'): # <<<<<<<<<<<<<< - * __pyx_result.__dict__.update(__pyx_state[1]) - */ - if (unlikely(__pyx_v___pyx_state == Py_None)) { - PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); - __PYX_ERR(1, 13, __pyx_L1_error) - } - __pyx_t_3 = __Pyx_PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(1, 13, __pyx_L1_error) - __pyx_t_4 = (__pyx_t_3 > 1); - if (__pyx_t_4) { - } else { - __pyx_t_2 = __pyx_t_4; - goto __pyx_L4_bool_binop_done; - } - __pyx_t_4 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(1, 13, __pyx_L1_error) - __pyx_t_2 = __pyx_t_4; - __pyx_L4_bool_binop_done:; - if (__pyx_t_2) { - - /* "(tree fragment)":14 - * __pyx_result.rtree = __pyx_state[0] - * if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'): - * __pyx_result.__dict__.update(__pyx_state[1]) # <<<<<<<<<<<<<< - */ - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 14, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_update); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 14, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (unlikely(__pyx_v___pyx_state == Py_None)) { - PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - __PYX_ERR(1, 14, __pyx_L1_error) - } - __pyx_t_5 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 14, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_7 = NULL; - __pyx_t_8 = 0; - #if CYTHON_UNPACK_METHODS - if (likely(PyMethod_Check(__pyx_t_6))) { - __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6); - if (likely(__pyx_t_7)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); - __Pyx_INCREF(__pyx_t_7); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_6, function); - __pyx_t_8 = 1; - } - } - #endif - { - PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_t_5}; - __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_8, 1+__pyx_t_8); - __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 14, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "(tree fragment)":13 - * cdef __pyx_unpickle_RTreeInfo__set_state(RTreeInfo __pyx_result, tuple __pyx_state): - * __pyx_result.rtree = __pyx_state[0] - * if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'): # <<<<<<<<<<<<<< - * __pyx_result.__dict__.update(__pyx_state[1]) - */ - } - - /* "(tree fragment)":11 - * __pyx_unpickle_RTreeInfo__set_state( __pyx_result, __pyx_state) - * return __pyx_result - * cdef __pyx_unpickle_RTreeInfo__set_state(RTreeInfo __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<< - * __pyx_result.rtree = __pyx_state[0] - * if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'): - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_XDECREF(__pyx_t_6); - __Pyx_XDECREF(__pyx_t_7); - __Pyx_AddTraceback("tinyr.__pyx_unpickle_RTreeInfo__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} -static struct __pyx_vtabstruct_5tinyr__Record __pyx_vtable_5tinyr__Record; - -static PyObject *__pyx_tp_new_5tinyr__Record(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { - struct __pyx_obj_5tinyr__Record *p; - PyObject *o; - #if CYTHON_COMPILING_IN_LIMITED_API - allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc); - o = alloc_func(t, 0); - #else - if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) { - o = (*t->tp_alloc)(t, 0); - } else { - o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0); - } - if (unlikely(!o)) return 0; - #endif - p = ((struct __pyx_obj_5tinyr__Record *)o); - p->__pyx_vtab = __pyx_vtabptr_5tinyr__Record; - return o; -} - -static void __pyx_tp_dealloc_5tinyr__Record(PyObject *o) { - #if CYTHON_USE_TP_FINALIZE - if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && (!PyType_IS_GC(Py_TYPE(o)) || !__Pyx_PyObject_GC_IsFinalized(o))) { - if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_5tinyr__Record) { - if (PyObject_CallFinalizerFromDealloc(o)) return; - } - } - #endif - #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY - (*Py_TYPE(o)->tp_free)(o); - #else - { - freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free); - if (tp_free) tp_free(o); - } - #endif -} - -static PyMethodDef __pyx_methods_5tinyr__Record[] = { - {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_5tinyr_7_Record_1__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, - {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_5tinyr_7_Record_3__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, - {0, 0, 0, 0} -}; -#if CYTHON_USE_TYPE_SPECS -static PyType_Slot __pyx_type_5tinyr__Record_slots[] = { - {Py_tp_dealloc, (void *)__pyx_tp_dealloc_5tinyr__Record}, - {Py_tp_methods, (void *)__pyx_methods_5tinyr__Record}, - {Py_tp_new, (void *)__pyx_tp_new_5tinyr__Record}, - {0, 0}, -}; -static PyType_Spec __pyx_type_5tinyr__Record_spec = { - "tinyr._Record", - sizeof(struct __pyx_obj_5tinyr__Record), - 0, - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, - __pyx_type_5tinyr__Record_slots, -}; -#else - -static PyTypeObject __pyx_type_5tinyr__Record = { - PyVarObject_HEAD_INIT(0, 0) - "tinyr.""_Record", /*tp_name*/ - sizeof(struct __pyx_obj_5tinyr__Record), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - __pyx_tp_dealloc_5tinyr__Record, /*tp_dealloc*/ - #if PY_VERSION_HEX < 0x030800b4 - 0, /*tp_print*/ - #endif - #if PY_VERSION_HEX >= 0x030800b4 - 0, /*tp_vectorcall_offset*/ - #endif - 0, /*tp_getattr*/ - 0, /*tp_setattr*/ - #if PY_MAJOR_VERSION < 3 - 0, /*tp_compare*/ - #endif - #if PY_MAJOR_VERSION >= 3 - 0, /*tp_as_async*/ - #endif - 0, /*tp_repr*/ - 0, /*tp_as_number*/ - 0, /*tp_as_sequence*/ - 0, /*tp_as_mapping*/ - 0, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - 0, /*tp_getattro*/ - 0, /*tp_setattro*/ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/ - 0, /*tp_doc*/ - 0, /*tp_traverse*/ - 0, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - __pyx_methods_5tinyr__Record, /*tp_methods*/ - 0, /*tp_members*/ - 0, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - #if !CYTHON_USE_TYPE_SPECS - 0, /*tp_dictoffset*/ - #endif - 0, /*tp_init*/ - 0, /*tp_alloc*/ - __pyx_tp_new_5tinyr__Record, /*tp_new*/ - 0, /*tp_free*/ - 0, /*tp_is_gc*/ - 0, /*tp_bases*/ - 0, /*tp_mro*/ - 0, /*tp_cache*/ - 0, /*tp_subclasses*/ - 0, /*tp_weaklist*/ - 0, /*tp_del*/ - 0, /*tp_version_tag*/ - #if PY_VERSION_HEX >= 0x030400a1 - #if CYTHON_USE_TP_FINALIZE - 0, /*tp_finalize*/ - #else - NULL, /*tp_finalize*/ - #endif - #endif - #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) - 0, /*tp_vectorcall*/ - #endif - #if __PYX_NEED_TP_PRINT_SLOT == 1 - 0, /*tp_print*/ - #endif - #if PY_VERSION_HEX >= 0x030C0000 - 0, /*tp_watched*/ - #endif - #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 - 0, /*tp_pypy_flags*/ - #endif -}; -#endif -static struct __pyx_vtabstruct_5tinyr__ChildRecord __pyx_vtable_5tinyr__ChildRecord; - -static PyObject *__pyx_tp_new_5tinyr__ChildRecord(PyTypeObject *t, PyObject *a, PyObject *k) { - struct __pyx_obj_5tinyr__ChildRecord *p; - PyObject *o = __pyx_tp_new_5tinyr__Record(t, a, k); - if (unlikely(!o)) return 0; - p = ((struct __pyx_obj_5tinyr__ChildRecord *)o); - p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_5tinyr__Record*)__pyx_vtabptr_5tinyr__ChildRecord; - p->identifier = Py_None; Py_INCREF(Py_None); - return o; -} - -static void __pyx_tp_dealloc_5tinyr__ChildRecord(PyObject *o) { - struct __pyx_obj_5tinyr__ChildRecord *p = (struct __pyx_obj_5tinyr__ChildRecord *)o; - #if CYTHON_USE_TP_FINALIZE - if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { - if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_5tinyr__ChildRecord) { - if (PyObject_CallFinalizerFromDealloc(o)) return; - } - } - #endif - PyObject_GC_UnTrack(o); - Py_CLEAR(p->identifier); - __pyx_tp_dealloc_5tinyr__Record(o); -} - -static int __pyx_tp_traverse_5tinyr__ChildRecord(PyObject *o, visitproc v, void *a) { - int e; - struct __pyx_obj_5tinyr__ChildRecord *p = (struct __pyx_obj_5tinyr__ChildRecord *)o; - e = ((likely(__pyx_ptype_5tinyr__Record)) ? ((__pyx_ptype_5tinyr__Record->tp_traverse) ? __pyx_ptype_5tinyr__Record->tp_traverse(o, v, a) : 0) : __Pyx_call_next_tp_traverse(o, v, a, __pyx_tp_traverse_5tinyr__ChildRecord)); if (e) return e; - if (p->identifier) { - e = (*v)(p->identifier, a); if (e) return e; - } - return 0; -} - -static int __pyx_tp_clear_5tinyr__ChildRecord(PyObject *o) { - PyObject* tmp; - struct __pyx_obj_5tinyr__ChildRecord *p = (struct __pyx_obj_5tinyr__ChildRecord *)o; - if (likely(__pyx_ptype_5tinyr__Record)) { if (__pyx_ptype_5tinyr__Record->tp_clear) __pyx_ptype_5tinyr__Record->tp_clear(o); } else __Pyx_call_next_tp_clear(o, __pyx_tp_clear_5tinyr__ChildRecord); - tmp = ((PyObject*)p->identifier); - p->identifier = Py_None; Py_INCREF(Py_None); - Py_XDECREF(tmp); - return 0; -} - -static PyMethodDef __pyx_methods_5tinyr__ChildRecord[] = { - {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_5tinyr_12_ChildRecord_3__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, - {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_5tinyr_12_ChildRecord_5__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, - {0, 0, 0, 0} -}; -#if CYTHON_USE_TYPE_SPECS -static PyType_Slot __pyx_type_5tinyr__ChildRecord_slots[] = { - {Py_tp_dealloc, (void *)__pyx_tp_dealloc_5tinyr__ChildRecord}, - {Py_tp_traverse, (void *)__pyx_tp_traverse_5tinyr__ChildRecord}, - {Py_tp_clear, (void *)__pyx_tp_clear_5tinyr__ChildRecord}, - {Py_tp_methods, (void *)__pyx_methods_5tinyr__ChildRecord}, - {Py_tp_init, (void *)__pyx_pw_5tinyr_12_ChildRecord_1__init__}, - {Py_tp_new, (void *)__pyx_tp_new_5tinyr__ChildRecord}, - {0, 0}, -}; -static PyType_Spec __pyx_type_5tinyr__ChildRecord_spec = { - "tinyr._ChildRecord", - sizeof(struct __pyx_obj_5tinyr__ChildRecord), - 0, - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, - __pyx_type_5tinyr__ChildRecord_slots, -}; -#else - -static PyTypeObject __pyx_type_5tinyr__ChildRecord = { - PyVarObject_HEAD_INIT(0, 0) - "tinyr.""_ChildRecord", /*tp_name*/ - sizeof(struct __pyx_obj_5tinyr__ChildRecord), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - __pyx_tp_dealloc_5tinyr__ChildRecord, /*tp_dealloc*/ - #if PY_VERSION_HEX < 0x030800b4 - 0, /*tp_print*/ - #endif - #if PY_VERSION_HEX >= 0x030800b4 - 0, /*tp_vectorcall_offset*/ - #endif - 0, /*tp_getattr*/ - 0, /*tp_setattr*/ - #if PY_MAJOR_VERSION < 3 - 0, /*tp_compare*/ - #endif - #if PY_MAJOR_VERSION >= 3 - 0, /*tp_as_async*/ - #endif - 0, /*tp_repr*/ - 0, /*tp_as_number*/ - 0, /*tp_as_sequence*/ - 0, /*tp_as_mapping*/ - 0, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - 0, /*tp_getattro*/ - 0, /*tp_setattro*/ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ - 0, /*tp_doc*/ - __pyx_tp_traverse_5tinyr__ChildRecord, /*tp_traverse*/ - __pyx_tp_clear_5tinyr__ChildRecord, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - __pyx_methods_5tinyr__ChildRecord, /*tp_methods*/ - 0, /*tp_members*/ - 0, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - #if !CYTHON_USE_TYPE_SPECS - 0, /*tp_dictoffset*/ - #endif - __pyx_pw_5tinyr_12_ChildRecord_1__init__, /*tp_init*/ - 0, /*tp_alloc*/ - __pyx_tp_new_5tinyr__ChildRecord, /*tp_new*/ - 0, /*tp_free*/ - 0, /*tp_is_gc*/ - 0, /*tp_bases*/ - 0, /*tp_mro*/ - 0, /*tp_cache*/ - 0, /*tp_subclasses*/ - 0, /*tp_weaklist*/ - 0, /*tp_del*/ - 0, /*tp_version_tag*/ - #if PY_VERSION_HEX >= 0x030400a1 - #if CYTHON_USE_TP_FINALIZE - 0, /*tp_finalize*/ - #else - NULL, /*tp_finalize*/ - #endif - #endif - #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) - 0, /*tp_vectorcall*/ - #endif - #if __PYX_NEED_TP_PRINT_SLOT == 1 - 0, /*tp_print*/ - #endif - #if PY_VERSION_HEX >= 0x030C0000 - 0, /*tp_watched*/ - #endif - #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 - 0, /*tp_pypy_flags*/ - #endif -}; -#endif -static struct __pyx_vtabstruct_5tinyr__InnerRecord __pyx_vtable_5tinyr__InnerRecord; - -static PyObject *__pyx_tp_new_5tinyr__InnerRecord(PyTypeObject *t, PyObject *a, PyObject *k) { - struct __pyx_obj_5tinyr__InnerRecord *p; - PyObject *o = __pyx_tp_new_5tinyr__Record(t, a, k); - if (unlikely(!o)) return 0; - p = ((struct __pyx_obj_5tinyr__InnerRecord *)o); - p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_5tinyr__Record*)__pyx_vtabptr_5tinyr__InnerRecord; - p->child = ((struct __pyx_obj_5tinyr__Node *)Py_None); Py_INCREF(Py_None); - if (unlikely(__pyx_pw_5tinyr_12_InnerRecord_1__cinit__(o, a, k) < 0)) goto bad; - return o; - bad: - Py_DECREF(o); o = 0; - return NULL; -} - -static void __pyx_tp_dealloc_5tinyr__InnerRecord(PyObject *o) { - struct __pyx_obj_5tinyr__InnerRecord *p = (struct __pyx_obj_5tinyr__InnerRecord *)o; - #if CYTHON_USE_TP_FINALIZE - if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { - if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_5tinyr__InnerRecord) { - if (PyObject_CallFinalizerFromDealloc(o)) return; - } - } - #endif - PyObject_GC_UnTrack(o); - Py_CLEAR(p->child); - __pyx_tp_dealloc_5tinyr__Record(o); -} - -static int __pyx_tp_traverse_5tinyr__InnerRecord(PyObject *o, visitproc v, void *a) { - int e; - struct __pyx_obj_5tinyr__InnerRecord *p = (struct __pyx_obj_5tinyr__InnerRecord *)o; - e = ((likely(__pyx_ptype_5tinyr__Record)) ? ((__pyx_ptype_5tinyr__Record->tp_traverse) ? __pyx_ptype_5tinyr__Record->tp_traverse(o, v, a) : 0) : __Pyx_call_next_tp_traverse(o, v, a, __pyx_tp_traverse_5tinyr__InnerRecord)); if (e) return e; - if (p->child) { - e = (*v)(((PyObject *)p->child), a); if (e) return e; - } - return 0; -} - -static int __pyx_tp_clear_5tinyr__InnerRecord(PyObject *o) { - PyObject* tmp; - struct __pyx_obj_5tinyr__InnerRecord *p = (struct __pyx_obj_5tinyr__InnerRecord *)o; - if (likely(__pyx_ptype_5tinyr__Record)) { if (__pyx_ptype_5tinyr__Record->tp_clear) __pyx_ptype_5tinyr__Record->tp_clear(o); } else __Pyx_call_next_tp_clear(o, __pyx_tp_clear_5tinyr__InnerRecord); - tmp = ((PyObject*)p->child); - p->child = ((struct __pyx_obj_5tinyr__Node *)Py_None); Py_INCREF(Py_None); - Py_XDECREF(tmp); - return 0; -} - -static PyMethodDef __pyx_methods_5tinyr__InnerRecord[] = { - {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_5tinyr_12_InnerRecord_3__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, - {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_5tinyr_12_InnerRecord_5__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, - {0, 0, 0, 0} -}; -#if CYTHON_USE_TYPE_SPECS -static PyType_Slot __pyx_type_5tinyr__InnerRecord_slots[] = { - {Py_tp_dealloc, (void *)__pyx_tp_dealloc_5tinyr__InnerRecord}, - {Py_tp_traverse, (void *)__pyx_tp_traverse_5tinyr__InnerRecord}, - {Py_tp_clear, (void *)__pyx_tp_clear_5tinyr__InnerRecord}, - {Py_tp_methods, (void *)__pyx_methods_5tinyr__InnerRecord}, - {Py_tp_new, (void *)__pyx_tp_new_5tinyr__InnerRecord}, - {0, 0}, -}; -static PyType_Spec __pyx_type_5tinyr__InnerRecord_spec = { - "tinyr._InnerRecord", - sizeof(struct __pyx_obj_5tinyr__InnerRecord), - 0, - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, - __pyx_type_5tinyr__InnerRecord_slots, -}; -#else - -static PyTypeObject __pyx_type_5tinyr__InnerRecord = { - PyVarObject_HEAD_INIT(0, 0) - "tinyr.""_InnerRecord", /*tp_name*/ - sizeof(struct __pyx_obj_5tinyr__InnerRecord), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - __pyx_tp_dealloc_5tinyr__InnerRecord, /*tp_dealloc*/ - #if PY_VERSION_HEX < 0x030800b4 - 0, /*tp_print*/ - #endif - #if PY_VERSION_HEX >= 0x030800b4 - 0, /*tp_vectorcall_offset*/ - #endif - 0, /*tp_getattr*/ - 0, /*tp_setattr*/ - #if PY_MAJOR_VERSION < 3 - 0, /*tp_compare*/ - #endif - #if PY_MAJOR_VERSION >= 3 - 0, /*tp_as_async*/ - #endif - 0, /*tp_repr*/ - 0, /*tp_as_number*/ - 0, /*tp_as_sequence*/ - 0, /*tp_as_mapping*/ - 0, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - 0, /*tp_getattro*/ - 0, /*tp_setattro*/ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ - 0, /*tp_doc*/ - __pyx_tp_traverse_5tinyr__InnerRecord, /*tp_traverse*/ - __pyx_tp_clear_5tinyr__InnerRecord, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - __pyx_methods_5tinyr__InnerRecord, /*tp_methods*/ - 0, /*tp_members*/ - 0, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - #if !CYTHON_USE_TYPE_SPECS - 0, /*tp_dictoffset*/ - #endif - 0, /*tp_init*/ - 0, /*tp_alloc*/ - __pyx_tp_new_5tinyr__InnerRecord, /*tp_new*/ - 0, /*tp_free*/ - 0, /*tp_is_gc*/ - 0, /*tp_bases*/ - 0, /*tp_mro*/ - 0, /*tp_cache*/ - 0, /*tp_subclasses*/ - 0, /*tp_weaklist*/ - 0, /*tp_del*/ - 0, /*tp_version_tag*/ - #if PY_VERSION_HEX >= 0x030400a1 - #if CYTHON_USE_TP_FINALIZE - 0, /*tp_finalize*/ - #else - NULL, /*tp_finalize*/ - #endif - #endif - #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) - 0, /*tp_vectorcall*/ - #endif - #if __PYX_NEED_TP_PRINT_SLOT == 1 - 0, /*tp_print*/ - #endif - #if PY_VERSION_HEX >= 0x030C0000 - 0, /*tp_watched*/ - #endif - #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 - 0, /*tp_pypy_flags*/ - #endif -}; -#endif -static struct __pyx_vtabstruct_5tinyr__Node __pyx_vtable_5tinyr__Node; - -static PyObject *__pyx_tp_new_5tinyr__Node(PyTypeObject *t, PyObject *a, PyObject *k) { - struct __pyx_obj_5tinyr__Node *p; - PyObject *o; - #if CYTHON_COMPILING_IN_LIMITED_API - allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc); - o = alloc_func(t, 0); - #else - if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) { - o = (*t->tp_alloc)(t, 0); - } else { - o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0); - } - if (unlikely(!o)) return 0; - #endif - p = ((struct __pyx_obj_5tinyr__Node *)o); - p->__pyx_vtab = __pyx_vtabptr_5tinyr__Node; - p->parent = ((struct __pyx_obj_5tinyr__Node *)Py_None); Py_INCREF(Py_None); - p->records = ((PyObject*)Py_None); Py_INCREF(Py_None); - if (unlikely(__pyx_pw_5tinyr_5_Node_1__cinit__(o, a, k) < 0)) goto bad; - return o; - bad: - Py_DECREF(o); o = 0; - return NULL; -} - -static void __pyx_tp_dealloc_5tinyr__Node(PyObject *o) { - struct __pyx_obj_5tinyr__Node *p = (struct __pyx_obj_5tinyr__Node *)o; - #if CYTHON_USE_TP_FINALIZE - if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { - if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_5tinyr__Node) { - if (PyObject_CallFinalizerFromDealloc(o)) return; - } - } - #endif - PyObject_GC_UnTrack(o); - Py_CLEAR(p->parent); - Py_CLEAR(p->records); - #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY - (*Py_TYPE(o)->tp_free)(o); - #else - { - freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free); - if (tp_free) tp_free(o); - } - #endif -} - -static int __pyx_tp_traverse_5tinyr__Node(PyObject *o, visitproc v, void *a) { - int e; - struct __pyx_obj_5tinyr__Node *p = (struct __pyx_obj_5tinyr__Node *)o; - if (p->parent) { - e = (*v)(((PyObject *)p->parent), a); if (e) return e; - } - if (p->records) { - e = (*v)(p->records, a); if (e) return e; - } - return 0; -} - -static int __pyx_tp_clear_5tinyr__Node(PyObject *o) { - PyObject* tmp; - struct __pyx_obj_5tinyr__Node *p = (struct __pyx_obj_5tinyr__Node *)o; - tmp = ((PyObject*)p->parent); - p->parent = ((struct __pyx_obj_5tinyr__Node *)Py_None); Py_INCREF(Py_None); - Py_XDECREF(tmp); - tmp = ((PyObject*)p->records); - p->records = ((PyObject*)Py_None); Py_INCREF(Py_None); - Py_XDECREF(tmp); - return 0; -} - -static PyMethodDef __pyx_methods_5tinyr__Node[] = { - {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_5tinyr_5_Node_3__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, - {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_5tinyr_5_Node_5__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, - {0, 0, 0, 0} -}; -#if CYTHON_USE_TYPE_SPECS -static PyType_Slot __pyx_type_5tinyr__Node_slots[] = { - {Py_tp_dealloc, (void *)__pyx_tp_dealloc_5tinyr__Node}, - {Py_tp_traverse, (void *)__pyx_tp_traverse_5tinyr__Node}, - {Py_tp_clear, (void *)__pyx_tp_clear_5tinyr__Node}, - {Py_tp_methods, (void *)__pyx_methods_5tinyr__Node}, - {Py_tp_new, (void *)__pyx_tp_new_5tinyr__Node}, - {0, 0}, -}; -static PyType_Spec __pyx_type_5tinyr__Node_spec = { - "tinyr._Node", - sizeof(struct __pyx_obj_5tinyr__Node), - 0, - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, - __pyx_type_5tinyr__Node_slots, -}; -#else - -static PyTypeObject __pyx_type_5tinyr__Node = { - PyVarObject_HEAD_INIT(0, 0) - "tinyr.""_Node", /*tp_name*/ - sizeof(struct __pyx_obj_5tinyr__Node), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - __pyx_tp_dealloc_5tinyr__Node, /*tp_dealloc*/ - #if PY_VERSION_HEX < 0x030800b4 - 0, /*tp_print*/ - #endif - #if PY_VERSION_HEX >= 0x030800b4 - 0, /*tp_vectorcall_offset*/ - #endif - 0, /*tp_getattr*/ - 0, /*tp_setattr*/ - #if PY_MAJOR_VERSION < 3 - 0, /*tp_compare*/ - #endif - #if PY_MAJOR_VERSION >= 3 - 0, /*tp_as_async*/ - #endif - 0, /*tp_repr*/ - 0, /*tp_as_number*/ - 0, /*tp_as_sequence*/ - 0, /*tp_as_mapping*/ - 0, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - 0, /*tp_getattro*/ - 0, /*tp_setattro*/ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ - 0, /*tp_doc*/ - __pyx_tp_traverse_5tinyr__Node, /*tp_traverse*/ - __pyx_tp_clear_5tinyr__Node, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - __pyx_methods_5tinyr__Node, /*tp_methods*/ - 0, /*tp_members*/ - 0, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - #if !CYTHON_USE_TYPE_SPECS - 0, /*tp_dictoffset*/ - #endif - 0, /*tp_init*/ - 0, /*tp_alloc*/ - __pyx_tp_new_5tinyr__Node, /*tp_new*/ - 0, /*tp_free*/ - 0, /*tp_is_gc*/ - 0, /*tp_bases*/ - 0, /*tp_mro*/ - 0, /*tp_cache*/ - 0, /*tp_subclasses*/ - 0, /*tp_weaklist*/ - 0, /*tp_del*/ - 0, /*tp_version_tag*/ - #if PY_VERSION_HEX >= 0x030400a1 - #if CYTHON_USE_TP_FINALIZE - 0, /*tp_finalize*/ - #else - NULL, /*tp_finalize*/ - #endif - #endif - #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) - 0, /*tp_vectorcall*/ - #endif - #if __PYX_NEED_TP_PRINT_SLOT == 1 - 0, /*tp_print*/ - #endif - #if PY_VERSION_HEX >= 0x030C0000 - 0, /*tp_watched*/ - #endif - #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 - 0, /*tp_pypy_flags*/ - #endif -}; -#endif -static struct __pyx_vtabstruct_5tinyr_RTree __pyx_vtable_5tinyr_RTree; - -static PyObject *__pyx_tp_new_5tinyr_RTree(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { - struct __pyx_obj_5tinyr_RTree *p; - PyObject *o; - #if CYTHON_COMPILING_IN_LIMITED_API - allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc); - o = alloc_func(t, 0); - #else - if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) { - o = (*t->tp_alloc)(t, 0); - } else { - o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0); - } - if (unlikely(!o)) return 0; - #endif - p = ((struct __pyx_obj_5tinyr_RTree *)o); - p->__pyx_vtab = __pyx_vtabptr_5tinyr_RTree; - p->root = ((struct __pyx_obj_5tinyr__Node *)Py_None); Py_INCREF(Py_None); - if (unlikely(__pyx_pw_5tinyr_5RTree_1__cinit__(o, __pyx_empty_tuple, NULL) < 0)) goto bad; - return o; - bad: - Py_DECREF(o); o = 0; - return NULL; -} - -static void __pyx_tp_dealloc_5tinyr_RTree(PyObject *o) { - struct __pyx_obj_5tinyr_RTree *p = (struct __pyx_obj_5tinyr_RTree *)o; - #if CYTHON_USE_TP_FINALIZE - if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { - if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_5tinyr_RTree) { - if (PyObject_CallFinalizerFromDealloc(o)) return; - } - } - #endif - PyObject_GC_UnTrack(o); - Py_CLEAR(p->root); - #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY - (*Py_TYPE(o)->tp_free)(o); - #else - { - freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free); - if (tp_free) tp_free(o); - } - #endif -} - -static int __pyx_tp_traverse_5tinyr_RTree(PyObject *o, visitproc v, void *a) { - int e; - struct __pyx_obj_5tinyr_RTree *p = (struct __pyx_obj_5tinyr_RTree *)o; - if (p->root) { - e = (*v)(((PyObject *)p->root), a); if (e) return e; - } - return 0; -} - -static int __pyx_tp_clear_5tinyr_RTree(PyObject *o) { - PyObject* tmp; - struct __pyx_obj_5tinyr_RTree *p = (struct __pyx_obj_5tinyr_RTree *)o; - tmp = ((PyObject*)p->root); - p->root = ((struct __pyx_obj_5tinyr__Node *)Py_None); Py_INCREF(Py_None); - Py_XDECREF(tmp); - return 0; -} -static PyObject *__pyx_sq_item_5tinyr_RTree(PyObject *o, Py_ssize_t i) { - PyObject *r; - PyObject *x = PyInt_FromSsize_t(i); if(!x) return 0; - r = Py_TYPE(o)->tp_as_mapping->mp_subscript(o, x); - Py_DECREF(x); - return r; -} - -static PyObject *__pyx_getprop_5tinyr_5RTree_min_cap(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_5tinyr_5RTree_7min_cap_1__get__(o); -} - -static PyObject *__pyx_getprop_5tinyr_5RTree_max_cap(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_5tinyr_5RTree_7max_cap_1__get__(o); -} - -static PyMethodDef __pyx_methods_5tinyr_RTree[] = { - {"iterkeys", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_5tinyr_5RTree_9iterkeys, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, - {"itervalues", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_5tinyr_5RTree_11itervalues, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, - {"iteritems", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_5tinyr_5RTree_13iteritems, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, - {"get_info", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_5tinyr_5RTree_15get_info, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, - {"insert", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_5tinyr_5RTree_17insert, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_5tinyr_5RTree_16insert}, - {"search", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_5tinyr_5RTree_19search, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_5tinyr_5RTree_18search}, - {"copy", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_5tinyr_5RTree_21copy, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, - {"search_surrounding", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_5tinyr_5RTree_23search_surrounding, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_5tinyr_5RTree_22search_surrounding}, - {"remove", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_5tinyr_5RTree_25remove, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_5tinyr_5RTree_24remove}, - {"valid", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_5tinyr_5RTree_27valid, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, - {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_5tinyr_5RTree_29__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, - {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_5tinyr_5RTree_31__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, - {0, 0, 0, 0} -}; - -static struct PyGetSetDef __pyx_getsets_5tinyr_RTree[] = { - {(char *)"min_cap", __pyx_getprop_5tinyr_5RTree_min_cap, 0, (char *)0, 0}, - {(char *)"max_cap", __pyx_getprop_5tinyr_5RTree_max_cap, 0, (char *)0, 0}, - {0, 0, 0, 0, 0} -}; -#if CYTHON_USE_TYPE_SPECS -static PyType_Slot __pyx_type_5tinyr_RTree_slots[] = { - {Py_tp_dealloc, (void *)__pyx_tp_dealloc_5tinyr_RTree}, - {Py_sq_length, (void *)__pyx_pw_5tinyr_5RTree_5__len__}, - {Py_sq_item, (void *)__pyx_sq_item_5tinyr_RTree}, - {Py_mp_length, (void *)__pyx_pw_5tinyr_5RTree_5__len__}, - {Py_mp_subscript, (void *)__pyx_pw_5tinyr_5RTree_7__getitem__}, - {Py_tp_doc, (void *)PyDoc_STR("RTree - structure for 2D-indexed items.\n \n @param interleaved: It True, all methods that accept coordinates expect it to be in format (x1, y1, x2, y2). \n If False, coordinates are supposed to be (x1, x2, y1, y2)\n Default: True\n @param max_cap: Maximum of capacity of an index node. Default: 5\n @param min_cap: Minimum of entries an index node must hold. Default: 2\n ")}, - {Py_tp_traverse, (void *)__pyx_tp_traverse_5tinyr_RTree}, - {Py_tp_clear, (void *)__pyx_tp_clear_5tinyr_RTree}, - {Py_tp_methods, (void *)__pyx_methods_5tinyr_RTree}, - {Py_tp_getset, (void *)__pyx_getsets_5tinyr_RTree}, - {Py_tp_init, (void *)__pyx_pw_5tinyr_5RTree_3__init__}, - {Py_tp_new, (void *)__pyx_tp_new_5tinyr_RTree}, - {0, 0}, -}; -static PyType_Spec __pyx_type_5tinyr_RTree_spec = { - "tinyr.RTree", - sizeof(struct __pyx_obj_5tinyr_RTree), - 0, - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, - __pyx_type_5tinyr_RTree_slots, -}; -#else - -static PySequenceMethods __pyx_tp_as_sequence_RTree = { - __pyx_pw_5tinyr_5RTree_5__len__, /*sq_length*/ - 0, /*sq_concat*/ - 0, /*sq_repeat*/ - __pyx_sq_item_5tinyr_RTree, /*sq_item*/ - 0, /*sq_slice*/ - 0, /*sq_ass_item*/ - 0, /*sq_ass_slice*/ - 0, /*sq_contains*/ - 0, /*sq_inplace_concat*/ - 0, /*sq_inplace_repeat*/ -}; - -static PyMappingMethods __pyx_tp_as_mapping_RTree = { - __pyx_pw_5tinyr_5RTree_5__len__, /*mp_length*/ - __pyx_pw_5tinyr_5RTree_7__getitem__, /*mp_subscript*/ - 0, /*mp_ass_subscript*/ -}; - -static PyTypeObject __pyx_type_5tinyr_RTree = { - PyVarObject_HEAD_INIT(0, 0) - "tinyr.""RTree", /*tp_name*/ - sizeof(struct __pyx_obj_5tinyr_RTree), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - __pyx_tp_dealloc_5tinyr_RTree, /*tp_dealloc*/ - #if PY_VERSION_HEX < 0x030800b4 - 0, /*tp_print*/ - #endif - #if PY_VERSION_HEX >= 0x030800b4 - 0, /*tp_vectorcall_offset*/ - #endif - 0, /*tp_getattr*/ - 0, /*tp_setattr*/ - #if PY_MAJOR_VERSION < 3 - 0, /*tp_compare*/ - #endif - #if PY_MAJOR_VERSION >= 3 - 0, /*tp_as_async*/ - #endif - 0, /*tp_repr*/ - 0, /*tp_as_number*/ - &__pyx_tp_as_sequence_RTree, /*tp_as_sequence*/ - &__pyx_tp_as_mapping_RTree, /*tp_as_mapping*/ - 0, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - 0, /*tp_getattro*/ - 0, /*tp_setattro*/ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ - PyDoc_STR("RTree - structure for 2D-indexed items.\n \n @param interleaved: It True, all methods that accept coordinates expect it to be in format (x1, y1, x2, y2). \n If False, coordinates are supposed to be (x1, x2, y1, y2)\n Default: True\n @param max_cap: Maximum of capacity of an index node. Default: 5\n @param min_cap: Minimum of entries an index node must hold. Default: 2\n "), /*tp_doc*/ - __pyx_tp_traverse_5tinyr_RTree, /*tp_traverse*/ - __pyx_tp_clear_5tinyr_RTree, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - __pyx_methods_5tinyr_RTree, /*tp_methods*/ - 0, /*tp_members*/ - __pyx_getsets_5tinyr_RTree, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - #if !CYTHON_USE_TYPE_SPECS - 0, /*tp_dictoffset*/ - #endif - __pyx_pw_5tinyr_5RTree_3__init__, /*tp_init*/ - 0, /*tp_alloc*/ - __pyx_tp_new_5tinyr_RTree, /*tp_new*/ - 0, /*tp_free*/ - 0, /*tp_is_gc*/ - 0, /*tp_bases*/ - 0, /*tp_mro*/ - 0, /*tp_cache*/ - 0, /*tp_subclasses*/ - 0, /*tp_weaklist*/ - 0, /*tp_del*/ - 0, /*tp_version_tag*/ - #if PY_VERSION_HEX >= 0x030400a1 - #if CYTHON_USE_TP_FINALIZE - 0, /*tp_finalize*/ - #else - NULL, /*tp_finalize*/ - #endif - #endif - #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) - 0, /*tp_vectorcall*/ - #endif - #if __PYX_NEED_TP_PRINT_SLOT == 1 - 0, /*tp_print*/ - #endif - #if PY_VERSION_HEX >= 0x030C0000 - 0, /*tp_watched*/ - #endif - #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 - 0, /*tp_pypy_flags*/ - #endif -}; -#endif - -static PyObject *__pyx_tp_new_5tinyr__Iterator(PyTypeObject *t, PyObject *a, PyObject *k) { - struct __pyx_obj_5tinyr__Iterator *p; - PyObject *o; - #if CYTHON_COMPILING_IN_LIMITED_API - allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc); - o = alloc_func(t, 0); - #else - if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) { - o = (*t->tp_alloc)(t, 0); - } else { - o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0); - } - if (unlikely(!o)) return 0; - #endif - p = ((struct __pyx_obj_5tinyr__Iterator *)o); - p->rtree = ((struct __pyx_obj_5tinyr_RTree *)Py_None); Py_INCREF(Py_None); - if (unlikely(__pyx_pw_5tinyr_9_Iterator_1__cinit__(o, a, k) < 0)) goto bad; - return o; - bad: - Py_DECREF(o); o = 0; - return NULL; -} - -static void __pyx_tp_dealloc_5tinyr__Iterator(PyObject *o) { - struct __pyx_obj_5tinyr__Iterator *p = (struct __pyx_obj_5tinyr__Iterator *)o; - #if CYTHON_USE_TP_FINALIZE - if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { - if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_5tinyr__Iterator) { - if (PyObject_CallFinalizerFromDealloc(o)) return; - } - } - #endif - PyObject_GC_UnTrack(o); - Py_CLEAR(p->rtree); - #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY - (*Py_TYPE(o)->tp_free)(o); - #else - { - freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free); - if (tp_free) tp_free(o); - } - #endif -} - -static int __pyx_tp_traverse_5tinyr__Iterator(PyObject *o, visitproc v, void *a) { - int e; - struct __pyx_obj_5tinyr__Iterator *p = (struct __pyx_obj_5tinyr__Iterator *)o; - if (p->rtree) { - e = (*v)(((PyObject *)p->rtree), a); if (e) return e; - } - return 0; -} - -static int __pyx_tp_clear_5tinyr__Iterator(PyObject *o) { - PyObject* tmp; - struct __pyx_obj_5tinyr__Iterator *p = (struct __pyx_obj_5tinyr__Iterator *)o; - tmp = ((PyObject*)p->rtree); - p->rtree = ((struct __pyx_obj_5tinyr_RTree *)Py_None); Py_INCREF(Py_None); - Py_XDECREF(tmp); - return 0; -} - -static PyMethodDef __pyx_methods_5tinyr__Iterator[] = { - {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_5tinyr_9_Iterator_5__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, - {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_5tinyr_9_Iterator_7__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, - {0, 0, 0, 0} -}; -#if CYTHON_USE_TYPE_SPECS -static PyType_Slot __pyx_type_5tinyr__Iterator_slots[] = { - {Py_tp_dealloc, (void *)__pyx_tp_dealloc_5tinyr__Iterator}, - {Py_tp_traverse, (void *)__pyx_tp_traverse_5tinyr__Iterator}, - {Py_tp_clear, (void *)__pyx_tp_clear_5tinyr__Iterator}, - {Py_tp_iter, (void *)__pyx_pw_5tinyr_9_Iterator_3__iter__}, - {Py_tp_methods, (void *)__pyx_methods_5tinyr__Iterator}, - {Py_tp_new, (void *)__pyx_tp_new_5tinyr__Iterator}, - {0, 0}, -}; -static PyType_Spec __pyx_type_5tinyr__Iterator_spec = { - "tinyr._Iterator", - sizeof(struct __pyx_obj_5tinyr__Iterator), - 0, - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, - __pyx_type_5tinyr__Iterator_slots, -}; -#else - -static PyTypeObject __pyx_type_5tinyr__Iterator = { - PyVarObject_HEAD_INIT(0, 0) - "tinyr.""_Iterator", /*tp_name*/ - sizeof(struct __pyx_obj_5tinyr__Iterator), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - __pyx_tp_dealloc_5tinyr__Iterator, /*tp_dealloc*/ - #if PY_VERSION_HEX < 0x030800b4 - 0, /*tp_print*/ - #endif - #if PY_VERSION_HEX >= 0x030800b4 - 0, /*tp_vectorcall_offset*/ - #endif - 0, /*tp_getattr*/ - 0, /*tp_setattr*/ - #if PY_MAJOR_VERSION < 3 - 0, /*tp_compare*/ - #endif - #if PY_MAJOR_VERSION >= 3 - 0, /*tp_as_async*/ - #endif - 0, /*tp_repr*/ - 0, /*tp_as_number*/ - 0, /*tp_as_sequence*/ - 0, /*tp_as_mapping*/ - 0, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - 0, /*tp_getattro*/ - 0, /*tp_setattro*/ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ - 0, /*tp_doc*/ - __pyx_tp_traverse_5tinyr__Iterator, /*tp_traverse*/ - __pyx_tp_clear_5tinyr__Iterator, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - __pyx_pw_5tinyr_9_Iterator_3__iter__, /*tp_iter*/ - 0, /*tp_iternext*/ - __pyx_methods_5tinyr__Iterator, /*tp_methods*/ - 0, /*tp_members*/ - 0, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - #if !CYTHON_USE_TYPE_SPECS - 0, /*tp_dictoffset*/ - #endif - 0, /*tp_init*/ - 0, /*tp_alloc*/ - __pyx_tp_new_5tinyr__Iterator, /*tp_new*/ - 0, /*tp_free*/ - 0, /*tp_is_gc*/ - 0, /*tp_bases*/ - 0, /*tp_mro*/ - 0, /*tp_cache*/ - 0, /*tp_subclasses*/ - 0, /*tp_weaklist*/ - 0, /*tp_del*/ - 0, /*tp_version_tag*/ - #if PY_VERSION_HEX >= 0x030400a1 - #if CYTHON_USE_TP_FINALIZE - 0, /*tp_finalize*/ - #else - NULL, /*tp_finalize*/ - #endif - #endif - #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) - 0, /*tp_vectorcall*/ - #endif - #if __PYX_NEED_TP_PRINT_SLOT == 1 - 0, /*tp_print*/ - #endif - #if PY_VERSION_HEX >= 0x030C0000 - 0, /*tp_watched*/ - #endif - #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 - 0, /*tp_pypy_flags*/ - #endif -}; -#endif - -static PyObject *__pyx_tp_new_5tinyr__ChildRecordIter(PyTypeObject *t, PyObject *a, PyObject *k) { - struct __pyx_obj_5tinyr__ChildRecordIter *p; - PyObject *o = __pyx_tp_new_5tinyr__Iterator(t, a, k); - if (unlikely(!o)) return 0; - p = ((struct __pyx_obj_5tinyr__ChildRecordIter *)o); - p->nodeset = ((PyObject*)Py_None); Py_INCREF(Py_None); - p->current_crs = ((PyObject*)Py_None); Py_INCREF(Py_None); - if (unlikely(__pyx_pw_5tinyr_16_ChildRecordIter_1__cinit__(o, a, k) < 0)) goto bad; - return o; - bad: - Py_DECREF(o); o = 0; - return NULL; -} - -static void __pyx_tp_dealloc_5tinyr__ChildRecordIter(PyObject *o) { - struct __pyx_obj_5tinyr__ChildRecordIter *p = (struct __pyx_obj_5tinyr__ChildRecordIter *)o; - #if CYTHON_USE_TP_FINALIZE - if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { - if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_5tinyr__ChildRecordIter) { - if (PyObject_CallFinalizerFromDealloc(o)) return; - } - } - #endif - PyObject_GC_UnTrack(o); - Py_CLEAR(p->nodeset); - Py_CLEAR(p->current_crs); - PyObject_GC_Track(o); - __pyx_tp_dealloc_5tinyr__Iterator(o); -} - -static int __pyx_tp_traverse_5tinyr__ChildRecordIter(PyObject *o, visitproc v, void *a) { - int e; - struct __pyx_obj_5tinyr__ChildRecordIter *p = (struct __pyx_obj_5tinyr__ChildRecordIter *)o; - e = __pyx_tp_traverse_5tinyr__Iterator(o, v, a); if (e) return e; - if (p->nodeset) { - e = (*v)(p->nodeset, a); if (e) return e; - } - if (p->current_crs) { - e = (*v)(p->current_crs, a); if (e) return e; - } - return 0; -} - -static int __pyx_tp_clear_5tinyr__ChildRecordIter(PyObject *o) { - PyObject* tmp; - struct __pyx_obj_5tinyr__ChildRecordIter *p = (struct __pyx_obj_5tinyr__ChildRecordIter *)o; - __pyx_tp_clear_5tinyr__Iterator(o); - tmp = ((PyObject*)p->nodeset); - p->nodeset = ((PyObject*)Py_None); Py_INCREF(Py_None); - Py_XDECREF(tmp); - tmp = ((PyObject*)p->current_crs); - p->current_crs = ((PyObject*)Py_None); Py_INCREF(Py_None); - Py_XDECREF(tmp); - return 0; -} - -static PyObject *__pyx_specialmethod___pyx_pw_5tinyr_16_ChildRecordIter_3__next__(PyObject *self, CYTHON_UNUSED PyObject *arg) { - PyObject *res = __pyx_pw_5tinyr_16_ChildRecordIter_3__next__(self); - if (!res && !PyErr_Occurred()) { PyErr_SetNone(PyExc_StopIteration); } - return res; -} - -static PyMethodDef __pyx_methods_5tinyr__ChildRecordIter[] = { - {"__next__", (PyCFunction)__pyx_specialmethod___pyx_pw_5tinyr_16_ChildRecordIter_3__next__, METH_NOARGS|METH_COEXIST, 0}, - {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_5tinyr_16_ChildRecordIter_5__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, - {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_5tinyr_16_ChildRecordIter_7__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, - {0, 0, 0, 0} -}; -#if CYTHON_USE_TYPE_SPECS -static PyType_Slot __pyx_type_5tinyr__ChildRecordIter_slots[] = { - {Py_tp_dealloc, (void *)__pyx_tp_dealloc_5tinyr__ChildRecordIter}, - {Py_tp_traverse, (void *)__pyx_tp_traverse_5tinyr__ChildRecordIter}, - {Py_tp_clear, (void *)__pyx_tp_clear_5tinyr__ChildRecordIter}, - {Py_tp_iternext, (void *)__pyx_pw_5tinyr_16_ChildRecordIter_3__next__}, - {Py_tp_methods, (void *)__pyx_methods_5tinyr__ChildRecordIter}, - {Py_tp_new, (void *)__pyx_tp_new_5tinyr__ChildRecordIter}, - {0, 0}, -}; -static PyType_Spec __pyx_type_5tinyr__ChildRecordIter_spec = { - "tinyr._ChildRecordIter", - sizeof(struct __pyx_obj_5tinyr__ChildRecordIter), - 0, - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, - __pyx_type_5tinyr__ChildRecordIter_slots, -}; -#else - -static PyTypeObject __pyx_type_5tinyr__ChildRecordIter = { - PyVarObject_HEAD_INIT(0, 0) - "tinyr.""_ChildRecordIter", /*tp_name*/ - sizeof(struct __pyx_obj_5tinyr__ChildRecordIter), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - __pyx_tp_dealloc_5tinyr__ChildRecordIter, /*tp_dealloc*/ - #if PY_VERSION_HEX < 0x030800b4 - 0, /*tp_print*/ - #endif - #if PY_VERSION_HEX >= 0x030800b4 - 0, /*tp_vectorcall_offset*/ - #endif - 0, /*tp_getattr*/ - 0, /*tp_setattr*/ - #if PY_MAJOR_VERSION < 3 - 0, /*tp_compare*/ - #endif - #if PY_MAJOR_VERSION >= 3 - 0, /*tp_as_async*/ - #endif - 0, /*tp_repr*/ - 0, /*tp_as_number*/ - 0, /*tp_as_sequence*/ - 0, /*tp_as_mapping*/ - 0, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - 0, /*tp_getattro*/ - 0, /*tp_setattro*/ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ - 0, /*tp_doc*/ - __pyx_tp_traverse_5tinyr__ChildRecordIter, /*tp_traverse*/ - __pyx_tp_clear_5tinyr__ChildRecordIter, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - #if CYTHON_COMPILING_IN_PYPY || 0 - __pyx_pw_5tinyr_9_Iterator_3__iter__, /*tp_iter*/ - #else - 0, /*tp_iter*/ - #endif - __pyx_pw_5tinyr_16_ChildRecordIter_3__next__, /*tp_iternext*/ - __pyx_methods_5tinyr__ChildRecordIter, /*tp_methods*/ - 0, /*tp_members*/ - 0, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - #if !CYTHON_USE_TYPE_SPECS - 0, /*tp_dictoffset*/ - #endif - 0, /*tp_init*/ - 0, /*tp_alloc*/ - __pyx_tp_new_5tinyr__ChildRecordIter, /*tp_new*/ - 0, /*tp_free*/ - 0, /*tp_is_gc*/ - 0, /*tp_bases*/ - 0, /*tp_mro*/ - 0, /*tp_cache*/ - 0, /*tp_subclasses*/ - 0, /*tp_weaklist*/ - 0, /*tp_del*/ - 0, /*tp_version_tag*/ - #if PY_VERSION_HEX >= 0x030400a1 - #if CYTHON_USE_TP_FINALIZE - 0, /*tp_finalize*/ - #else - NULL, /*tp_finalize*/ - #endif - #endif - #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) - 0, /*tp_vectorcall*/ - #endif - #if __PYX_NEED_TP_PRINT_SLOT == 1 - 0, /*tp_print*/ - #endif - #if PY_VERSION_HEX >= 0x030C0000 - 0, /*tp_watched*/ - #endif - #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 - 0, /*tp_pypy_flags*/ - #endif -}; -#endif - -static PyObject *__pyx_tp_new_5tinyr__KVIIter(PyTypeObject *t, PyObject *a, PyObject *k) { - struct __pyx_obj_5tinyr__KVIIter *p; - PyObject *o = __pyx_tp_new_5tinyr__Iterator(t, a, k); - if (unlikely(!o)) return 0; - p = ((struct __pyx_obj_5tinyr__KVIIter *)o); - p->cri = ((struct __pyx_obj_5tinyr__ChildRecordIter *)Py_None); Py_INCREF(Py_None); - if (unlikely(__pyx_pw_5tinyr_8_KVIIter_1__cinit__(o, a, k) < 0)) goto bad; - return o; - bad: - Py_DECREF(o); o = 0; - return NULL; -} - -static void __pyx_tp_dealloc_5tinyr__KVIIter(PyObject *o) { - struct __pyx_obj_5tinyr__KVIIter *p = (struct __pyx_obj_5tinyr__KVIIter *)o; - #if CYTHON_USE_TP_FINALIZE - if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { - if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_5tinyr__KVIIter) { - if (PyObject_CallFinalizerFromDealloc(o)) return; - } - } - #endif - PyObject_GC_UnTrack(o); - Py_CLEAR(p->cri); - PyObject_GC_Track(o); - __pyx_tp_dealloc_5tinyr__Iterator(o); -} - -static int __pyx_tp_traverse_5tinyr__KVIIter(PyObject *o, visitproc v, void *a) { - int e; - struct __pyx_obj_5tinyr__KVIIter *p = (struct __pyx_obj_5tinyr__KVIIter *)o; - e = __pyx_tp_traverse_5tinyr__Iterator(o, v, a); if (e) return e; - if (p->cri) { - e = (*v)(((PyObject *)p->cri), a); if (e) return e; - } - return 0; -} - -static int __pyx_tp_clear_5tinyr__KVIIter(PyObject *o) { - PyObject* tmp; - struct __pyx_obj_5tinyr__KVIIter *p = (struct __pyx_obj_5tinyr__KVIIter *)o; - __pyx_tp_clear_5tinyr__Iterator(o); - tmp = ((PyObject*)p->cri); - p->cri = ((struct __pyx_obj_5tinyr__ChildRecordIter *)Py_None); Py_INCREF(Py_None); - Py_XDECREF(tmp); - return 0; -} - -static PyMethodDef __pyx_methods_5tinyr__KVIIter[] = { - {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_5tinyr_8_KVIIter_3__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, - {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_5tinyr_8_KVIIter_5__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, - {0, 0, 0, 0} -}; -#if CYTHON_USE_TYPE_SPECS -static PyType_Slot __pyx_type_5tinyr__KVIIter_slots[] = { - {Py_tp_dealloc, (void *)__pyx_tp_dealloc_5tinyr__KVIIter}, - {Py_tp_traverse, (void *)__pyx_tp_traverse_5tinyr__KVIIter}, - {Py_tp_clear, (void *)__pyx_tp_clear_5tinyr__KVIIter}, - {Py_tp_methods, (void *)__pyx_methods_5tinyr__KVIIter}, - {Py_tp_new, (void *)__pyx_tp_new_5tinyr__KVIIter}, - {0, 0}, -}; -static PyType_Spec __pyx_type_5tinyr__KVIIter_spec = { - "tinyr._KVIIter", - sizeof(struct __pyx_obj_5tinyr__KVIIter), - 0, - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, - __pyx_type_5tinyr__KVIIter_slots, -}; -#else - -static PyTypeObject __pyx_type_5tinyr__KVIIter = { - PyVarObject_HEAD_INIT(0, 0) - "tinyr.""_KVIIter", /*tp_name*/ - sizeof(struct __pyx_obj_5tinyr__KVIIter), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - __pyx_tp_dealloc_5tinyr__KVIIter, /*tp_dealloc*/ - #if PY_VERSION_HEX < 0x030800b4 - 0, /*tp_print*/ - #endif - #if PY_VERSION_HEX >= 0x030800b4 - 0, /*tp_vectorcall_offset*/ - #endif - 0, /*tp_getattr*/ - 0, /*tp_setattr*/ - #if PY_MAJOR_VERSION < 3 - 0, /*tp_compare*/ - #endif - #if PY_MAJOR_VERSION >= 3 - 0, /*tp_as_async*/ - #endif - 0, /*tp_repr*/ - 0, /*tp_as_number*/ - 0, /*tp_as_sequence*/ - 0, /*tp_as_mapping*/ - 0, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - 0, /*tp_getattro*/ - 0, /*tp_setattro*/ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ - 0, /*tp_doc*/ - __pyx_tp_traverse_5tinyr__KVIIter, /*tp_traverse*/ - __pyx_tp_clear_5tinyr__KVIIter, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - #if CYTHON_COMPILING_IN_PYPY || 0 - __pyx_pw_5tinyr_9_Iterator_3__iter__, /*tp_iter*/ - #else - 0, /*tp_iter*/ - #endif - 0, /*tp_iternext*/ - __pyx_methods_5tinyr__KVIIter, /*tp_methods*/ - 0, /*tp_members*/ - 0, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - #if !CYTHON_USE_TYPE_SPECS - 0, /*tp_dictoffset*/ - #endif - 0, /*tp_init*/ - 0, /*tp_alloc*/ - __pyx_tp_new_5tinyr__KVIIter, /*tp_new*/ - 0, /*tp_free*/ - 0, /*tp_is_gc*/ - 0, /*tp_bases*/ - 0, /*tp_mro*/ - 0, /*tp_cache*/ - 0, /*tp_subclasses*/ - 0, /*tp_weaklist*/ - 0, /*tp_del*/ - 0, /*tp_version_tag*/ - #if PY_VERSION_HEX >= 0x030400a1 - #if CYTHON_USE_TP_FINALIZE - 0, /*tp_finalize*/ - #else - NULL, /*tp_finalize*/ - #endif - #endif - #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) - 0, /*tp_vectorcall*/ - #endif - #if __PYX_NEED_TP_PRINT_SLOT == 1 - 0, /*tp_print*/ - #endif - #if PY_VERSION_HEX >= 0x030C0000 - 0, /*tp_watched*/ - #endif - #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 - 0, /*tp_pypy_flags*/ - #endif -}; -#endif - -static PyObject *__pyx_specialmethod___pyx_pw_5tinyr_9_KeysIter_1__next__(PyObject *self, CYTHON_UNUSED PyObject *arg) { - PyObject *res = __pyx_pw_5tinyr_9_KeysIter_1__next__(self); - if (!res && !PyErr_Occurred()) { PyErr_SetNone(PyExc_StopIteration); } - return res; -} - -static PyMethodDef __pyx_methods_5tinyr__KeysIter[] = { - {"__next__", (PyCFunction)__pyx_specialmethod___pyx_pw_5tinyr_9_KeysIter_1__next__, METH_NOARGS|METH_COEXIST, 0}, - {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_5tinyr_9_KeysIter_3__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, - {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_5tinyr_9_KeysIter_5__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, - {0, 0, 0, 0} -}; -#if CYTHON_USE_TYPE_SPECS -static PyType_Slot __pyx_type_5tinyr__KeysIter_slots[] = { - {Py_tp_traverse, (void *)__pyx_tp_traverse_5tinyr__KVIIter}, - {Py_tp_clear, (void *)__pyx_tp_clear_5tinyr__KVIIter}, - {Py_tp_iternext, (void *)__pyx_pw_5tinyr_9_KeysIter_1__next__}, - {Py_tp_methods, (void *)__pyx_methods_5tinyr__KeysIter}, - {Py_tp_new, (void *)__pyx_tp_new_5tinyr__KVIIter}, - {0, 0}, -}; -static PyType_Spec __pyx_type_5tinyr__KeysIter_spec = { - "tinyr._KeysIter", - sizeof(struct __pyx_obj_5tinyr__KeysIter), - 0, - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, - __pyx_type_5tinyr__KeysIter_slots, -}; -#else - -static PyTypeObject __pyx_type_5tinyr__KeysIter = { - PyVarObject_HEAD_INIT(0, 0) - "tinyr.""_KeysIter", /*tp_name*/ - sizeof(struct __pyx_obj_5tinyr__KeysIter), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - __pyx_tp_dealloc_5tinyr__KVIIter, /*tp_dealloc*/ - #if PY_VERSION_HEX < 0x030800b4 - 0, /*tp_print*/ - #endif - #if PY_VERSION_HEX >= 0x030800b4 - 0, /*tp_vectorcall_offset*/ - #endif - 0, /*tp_getattr*/ - 0, /*tp_setattr*/ - #if PY_MAJOR_VERSION < 3 - 0, /*tp_compare*/ - #endif - #if PY_MAJOR_VERSION >= 3 - 0, /*tp_as_async*/ - #endif - 0, /*tp_repr*/ - 0, /*tp_as_number*/ - 0, /*tp_as_sequence*/ - 0, /*tp_as_mapping*/ - 0, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - 0, /*tp_getattro*/ - 0, /*tp_setattro*/ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ - 0, /*tp_doc*/ - __pyx_tp_traverse_5tinyr__KVIIter, /*tp_traverse*/ - __pyx_tp_clear_5tinyr__KVIIter, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - #if CYTHON_COMPILING_IN_PYPY || 0 - __pyx_pw_5tinyr_9_Iterator_3__iter__, /*tp_iter*/ - #else - 0, /*tp_iter*/ - #endif - __pyx_pw_5tinyr_9_KeysIter_1__next__, /*tp_iternext*/ - __pyx_methods_5tinyr__KeysIter, /*tp_methods*/ - 0, /*tp_members*/ - 0, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - #if !CYTHON_USE_TYPE_SPECS - 0, /*tp_dictoffset*/ - #endif - 0, /*tp_init*/ - 0, /*tp_alloc*/ - __pyx_tp_new_5tinyr__KVIIter, /*tp_new*/ - 0, /*tp_free*/ - 0, /*tp_is_gc*/ - 0, /*tp_bases*/ - 0, /*tp_mro*/ - 0, /*tp_cache*/ - 0, /*tp_subclasses*/ - 0, /*tp_weaklist*/ - 0, /*tp_del*/ - 0, /*tp_version_tag*/ - #if PY_VERSION_HEX >= 0x030400a1 - #if CYTHON_USE_TP_FINALIZE - 0, /*tp_finalize*/ - #else - NULL, /*tp_finalize*/ - #endif - #endif - #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) - 0, /*tp_vectorcall*/ - #endif - #if __PYX_NEED_TP_PRINT_SLOT == 1 - 0, /*tp_print*/ - #endif - #if PY_VERSION_HEX >= 0x030C0000 - 0, /*tp_watched*/ - #endif - #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 - 0, /*tp_pypy_flags*/ - #endif -}; -#endif - -static PyObject *__pyx_specialmethod___pyx_pw_5tinyr_11_ValuesIter_1__next__(PyObject *self, CYTHON_UNUSED PyObject *arg) { - PyObject *res = __pyx_pw_5tinyr_11_ValuesIter_1__next__(self); - if (!res && !PyErr_Occurred()) { PyErr_SetNone(PyExc_StopIteration); } - return res; -} - -static PyMethodDef __pyx_methods_5tinyr__ValuesIter[] = { - {"__next__", (PyCFunction)__pyx_specialmethod___pyx_pw_5tinyr_11_ValuesIter_1__next__, METH_NOARGS|METH_COEXIST, 0}, - {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_5tinyr_11_ValuesIter_3__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, - {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_5tinyr_11_ValuesIter_5__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, - {0, 0, 0, 0} -}; -#if CYTHON_USE_TYPE_SPECS -static PyType_Slot __pyx_type_5tinyr__ValuesIter_slots[] = { - {Py_tp_traverse, (void *)__pyx_tp_traverse_5tinyr__KVIIter}, - {Py_tp_clear, (void *)__pyx_tp_clear_5tinyr__KVIIter}, - {Py_tp_iternext, (void *)__pyx_pw_5tinyr_11_ValuesIter_1__next__}, - {Py_tp_methods, (void *)__pyx_methods_5tinyr__ValuesIter}, - {Py_tp_new, (void *)__pyx_tp_new_5tinyr__KVIIter}, - {0, 0}, -}; -static PyType_Spec __pyx_type_5tinyr__ValuesIter_spec = { - "tinyr._ValuesIter", - sizeof(struct __pyx_obj_5tinyr__ValuesIter), - 0, - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, - __pyx_type_5tinyr__ValuesIter_slots, -}; -#else - -static PyTypeObject __pyx_type_5tinyr__ValuesIter = { - PyVarObject_HEAD_INIT(0, 0) - "tinyr.""_ValuesIter", /*tp_name*/ - sizeof(struct __pyx_obj_5tinyr__ValuesIter), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - __pyx_tp_dealloc_5tinyr__KVIIter, /*tp_dealloc*/ - #if PY_VERSION_HEX < 0x030800b4 - 0, /*tp_print*/ - #endif - #if PY_VERSION_HEX >= 0x030800b4 - 0, /*tp_vectorcall_offset*/ - #endif - 0, /*tp_getattr*/ - 0, /*tp_setattr*/ - #if PY_MAJOR_VERSION < 3 - 0, /*tp_compare*/ - #endif - #if PY_MAJOR_VERSION >= 3 - 0, /*tp_as_async*/ - #endif - 0, /*tp_repr*/ - 0, /*tp_as_number*/ - 0, /*tp_as_sequence*/ - 0, /*tp_as_mapping*/ - 0, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - 0, /*tp_getattro*/ - 0, /*tp_setattro*/ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ - 0, /*tp_doc*/ - __pyx_tp_traverse_5tinyr__KVIIter, /*tp_traverse*/ - __pyx_tp_clear_5tinyr__KVIIter, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - #if CYTHON_COMPILING_IN_PYPY || 0 - __pyx_pw_5tinyr_9_Iterator_3__iter__, /*tp_iter*/ - #else - 0, /*tp_iter*/ - #endif - __pyx_pw_5tinyr_11_ValuesIter_1__next__, /*tp_iternext*/ - __pyx_methods_5tinyr__ValuesIter, /*tp_methods*/ - 0, /*tp_members*/ - 0, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - #if !CYTHON_USE_TYPE_SPECS - 0, /*tp_dictoffset*/ - #endif - 0, /*tp_init*/ - 0, /*tp_alloc*/ - __pyx_tp_new_5tinyr__KVIIter, /*tp_new*/ - 0, /*tp_free*/ - 0, /*tp_is_gc*/ - 0, /*tp_bases*/ - 0, /*tp_mro*/ - 0, /*tp_cache*/ - 0, /*tp_subclasses*/ - 0, /*tp_weaklist*/ - 0, /*tp_del*/ - 0, /*tp_version_tag*/ - #if PY_VERSION_HEX >= 0x030400a1 - #if CYTHON_USE_TP_FINALIZE - 0, /*tp_finalize*/ - #else - NULL, /*tp_finalize*/ - #endif - #endif - #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) - 0, /*tp_vectorcall*/ - #endif - #if __PYX_NEED_TP_PRINT_SLOT == 1 - 0, /*tp_print*/ - #endif - #if PY_VERSION_HEX >= 0x030C0000 - 0, /*tp_watched*/ - #endif - #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 - 0, /*tp_pypy_flags*/ - #endif -}; -#endif - -static PyObject *__pyx_specialmethod___pyx_pw_5tinyr_10_ItemsIter_1__next__(PyObject *self, CYTHON_UNUSED PyObject *arg) { - PyObject *res = __pyx_pw_5tinyr_10_ItemsIter_1__next__(self); - if (!res && !PyErr_Occurred()) { PyErr_SetNone(PyExc_StopIteration); } - return res; -} - -static PyMethodDef __pyx_methods_5tinyr__ItemsIter[] = { - {"__next__", (PyCFunction)__pyx_specialmethod___pyx_pw_5tinyr_10_ItemsIter_1__next__, METH_NOARGS|METH_COEXIST, 0}, - {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_5tinyr_10_ItemsIter_3__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, - {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_5tinyr_10_ItemsIter_5__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, - {0, 0, 0, 0} -}; -#if CYTHON_USE_TYPE_SPECS -static PyType_Slot __pyx_type_5tinyr__ItemsIter_slots[] = { - {Py_tp_traverse, (void *)__pyx_tp_traverse_5tinyr__KVIIter}, - {Py_tp_clear, (void *)__pyx_tp_clear_5tinyr__KVIIter}, - {Py_tp_iternext, (void *)__pyx_pw_5tinyr_10_ItemsIter_1__next__}, - {Py_tp_methods, (void *)__pyx_methods_5tinyr__ItemsIter}, - {Py_tp_new, (void *)__pyx_tp_new_5tinyr__KVIIter}, - {0, 0}, -}; -static PyType_Spec __pyx_type_5tinyr__ItemsIter_spec = { - "tinyr._ItemsIter", - sizeof(struct __pyx_obj_5tinyr__ItemsIter), - 0, - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, - __pyx_type_5tinyr__ItemsIter_slots, -}; -#else - -static PyTypeObject __pyx_type_5tinyr__ItemsIter = { - PyVarObject_HEAD_INIT(0, 0) - "tinyr.""_ItemsIter", /*tp_name*/ - sizeof(struct __pyx_obj_5tinyr__ItemsIter), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - __pyx_tp_dealloc_5tinyr__KVIIter, /*tp_dealloc*/ - #if PY_VERSION_HEX < 0x030800b4 - 0, /*tp_print*/ - #endif - #if PY_VERSION_HEX >= 0x030800b4 - 0, /*tp_vectorcall_offset*/ - #endif - 0, /*tp_getattr*/ - 0, /*tp_setattr*/ - #if PY_MAJOR_VERSION < 3 - 0, /*tp_compare*/ - #endif - #if PY_MAJOR_VERSION >= 3 - 0, /*tp_as_async*/ - #endif - 0, /*tp_repr*/ - 0, /*tp_as_number*/ - 0, /*tp_as_sequence*/ - 0, /*tp_as_mapping*/ - 0, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - 0, /*tp_getattro*/ - 0, /*tp_setattro*/ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ - 0, /*tp_doc*/ - __pyx_tp_traverse_5tinyr__KVIIter, /*tp_traverse*/ - __pyx_tp_clear_5tinyr__KVIIter, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - #if CYTHON_COMPILING_IN_PYPY || 0 - __pyx_pw_5tinyr_9_Iterator_3__iter__, /*tp_iter*/ - #else - 0, /*tp_iter*/ - #endif - __pyx_pw_5tinyr_10_ItemsIter_1__next__, /*tp_iternext*/ - __pyx_methods_5tinyr__ItemsIter, /*tp_methods*/ - 0, /*tp_members*/ - 0, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - #if !CYTHON_USE_TYPE_SPECS - 0, /*tp_dictoffset*/ - #endif - 0, /*tp_init*/ - 0, /*tp_alloc*/ - __pyx_tp_new_5tinyr__KVIIter, /*tp_new*/ - 0, /*tp_free*/ - 0, /*tp_is_gc*/ - 0, /*tp_bases*/ - 0, /*tp_mro*/ - 0, /*tp_cache*/ - 0, /*tp_subclasses*/ - 0, /*tp_weaklist*/ - 0, /*tp_del*/ - 0, /*tp_version_tag*/ - #if PY_VERSION_HEX >= 0x030400a1 - #if CYTHON_USE_TP_FINALIZE - 0, /*tp_finalize*/ - #else - NULL, /*tp_finalize*/ - #endif - #endif - #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) - 0, /*tp_vectorcall*/ - #endif - #if __PYX_NEED_TP_PRINT_SLOT == 1 - 0, /*tp_print*/ - #endif - #if PY_VERSION_HEX >= 0x030C0000 - 0, /*tp_watched*/ - #endif - #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 - 0, /*tp_pypy_flags*/ - #endif -}; -#endif - -static PyObject *__pyx_tp_new_5tinyr__NodeIter(PyTypeObject *t, PyObject *a, PyObject *k) { - struct __pyx_obj_5tinyr__NodeIter *p; - PyObject *o = __pyx_tp_new_5tinyr__Iterator(t, a, k); - if (unlikely(!o)) return 0; - p = ((struct __pyx_obj_5tinyr__NodeIter *)o); - p->nodeset = ((PyObject*)Py_None); Py_INCREF(Py_None); - if (unlikely(__pyx_pw_5tinyr_9_NodeIter_1__cinit__(o, a, k) < 0)) goto bad; - return o; - bad: - Py_DECREF(o); o = 0; - return NULL; -} - -static void __pyx_tp_dealloc_5tinyr__NodeIter(PyObject *o) { - struct __pyx_obj_5tinyr__NodeIter *p = (struct __pyx_obj_5tinyr__NodeIter *)o; - #if CYTHON_USE_TP_FINALIZE - if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { - if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_5tinyr__NodeIter) { - if (PyObject_CallFinalizerFromDealloc(o)) return; - } - } - #endif - PyObject_GC_UnTrack(o); - Py_CLEAR(p->nodeset); - PyObject_GC_Track(o); - __pyx_tp_dealloc_5tinyr__Iterator(o); -} - -static int __pyx_tp_traverse_5tinyr__NodeIter(PyObject *o, visitproc v, void *a) { - int e; - struct __pyx_obj_5tinyr__NodeIter *p = (struct __pyx_obj_5tinyr__NodeIter *)o; - e = __pyx_tp_traverse_5tinyr__Iterator(o, v, a); if (e) return e; - if (p->nodeset) { - e = (*v)(p->nodeset, a); if (e) return e; - } - return 0; -} - -static int __pyx_tp_clear_5tinyr__NodeIter(PyObject *o) { - PyObject* tmp; - struct __pyx_obj_5tinyr__NodeIter *p = (struct __pyx_obj_5tinyr__NodeIter *)o; - __pyx_tp_clear_5tinyr__Iterator(o); - tmp = ((PyObject*)p->nodeset); - p->nodeset = ((PyObject*)Py_None); Py_INCREF(Py_None); - Py_XDECREF(tmp); - return 0; -} - -static PyObject *__pyx_specialmethod___pyx_pw_5tinyr_9_NodeIter_3__next__(PyObject *self, CYTHON_UNUSED PyObject *arg) { - PyObject *res = __pyx_pw_5tinyr_9_NodeIter_3__next__(self); - if (!res && !PyErr_Occurred()) { PyErr_SetNone(PyExc_StopIteration); } - return res; -} - -static PyMethodDef __pyx_methods_5tinyr__NodeIter[] = { - {"__next__", (PyCFunction)__pyx_specialmethod___pyx_pw_5tinyr_9_NodeIter_3__next__, METH_NOARGS|METH_COEXIST, 0}, - {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_5tinyr_9_NodeIter_5__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, - {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_5tinyr_9_NodeIter_7__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, - {0, 0, 0, 0} -}; -#if CYTHON_USE_TYPE_SPECS -static PyType_Slot __pyx_type_5tinyr__NodeIter_slots[] = { - {Py_tp_dealloc, (void *)__pyx_tp_dealloc_5tinyr__NodeIter}, - {Py_tp_traverse, (void *)__pyx_tp_traverse_5tinyr__NodeIter}, - {Py_tp_clear, (void *)__pyx_tp_clear_5tinyr__NodeIter}, - {Py_tp_iternext, (void *)__pyx_pw_5tinyr_9_NodeIter_3__next__}, - {Py_tp_methods, (void *)__pyx_methods_5tinyr__NodeIter}, - {Py_tp_new, (void *)__pyx_tp_new_5tinyr__NodeIter}, - {0, 0}, -}; -static PyType_Spec __pyx_type_5tinyr__NodeIter_spec = { - "tinyr._NodeIter", - sizeof(struct __pyx_obj_5tinyr__NodeIter), - 0, - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, - __pyx_type_5tinyr__NodeIter_slots, -}; -#else - -static PyTypeObject __pyx_type_5tinyr__NodeIter = { - PyVarObject_HEAD_INIT(0, 0) - "tinyr.""_NodeIter", /*tp_name*/ - sizeof(struct __pyx_obj_5tinyr__NodeIter), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - __pyx_tp_dealloc_5tinyr__NodeIter, /*tp_dealloc*/ - #if PY_VERSION_HEX < 0x030800b4 - 0, /*tp_print*/ - #endif - #if PY_VERSION_HEX >= 0x030800b4 - 0, /*tp_vectorcall_offset*/ - #endif - 0, /*tp_getattr*/ - 0, /*tp_setattr*/ - #if PY_MAJOR_VERSION < 3 - 0, /*tp_compare*/ - #endif - #if PY_MAJOR_VERSION >= 3 - 0, /*tp_as_async*/ - #endif - 0, /*tp_repr*/ - 0, /*tp_as_number*/ - 0, /*tp_as_sequence*/ - 0, /*tp_as_mapping*/ - 0, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - 0, /*tp_getattro*/ - 0, /*tp_setattro*/ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ - 0, /*tp_doc*/ - __pyx_tp_traverse_5tinyr__NodeIter, /*tp_traverse*/ - __pyx_tp_clear_5tinyr__NodeIter, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - #if CYTHON_COMPILING_IN_PYPY || 0 - __pyx_pw_5tinyr_9_Iterator_3__iter__, /*tp_iter*/ - #else - 0, /*tp_iter*/ - #endif - __pyx_pw_5tinyr_9_NodeIter_3__next__, /*tp_iternext*/ - __pyx_methods_5tinyr__NodeIter, /*tp_methods*/ - 0, /*tp_members*/ - 0, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - #if !CYTHON_USE_TYPE_SPECS - 0, /*tp_dictoffset*/ - #endif - 0, /*tp_init*/ - 0, /*tp_alloc*/ - __pyx_tp_new_5tinyr__NodeIter, /*tp_new*/ - 0, /*tp_free*/ - 0, /*tp_is_gc*/ - 0, /*tp_bases*/ - 0, /*tp_mro*/ - 0, /*tp_cache*/ - 0, /*tp_subclasses*/ - 0, /*tp_weaklist*/ - 0, /*tp_del*/ - 0, /*tp_version_tag*/ - #if PY_VERSION_HEX >= 0x030400a1 - #if CYTHON_USE_TP_FINALIZE - 0, /*tp_finalize*/ - #else - NULL, /*tp_finalize*/ - #endif - #endif - #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) - 0, /*tp_vectorcall*/ - #endif - #if __PYX_NEED_TP_PRINT_SLOT == 1 - 0, /*tp_print*/ - #endif - #if PY_VERSION_HEX >= 0x030C0000 - 0, /*tp_watched*/ - #endif - #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 - 0, /*tp_pypy_flags*/ - #endif -}; -#endif - -static PyObject *__pyx_tp_new_5tinyr__RectangleIter(PyTypeObject *t, PyObject *a, PyObject *k) { - struct __pyx_obj_5tinyr__RectangleIter *p; - PyObject *o = __pyx_tp_new_5tinyr__Iterator(t, a, k); - if (unlikely(!o)) return 0; - p = ((struct __pyx_obj_5tinyr__RectangleIter *)o); - p->ni = ((struct __pyx_obj_5tinyr__NodeIter *)Py_None); Py_INCREF(Py_None); - p->leafrecords = ((PyObject*)Py_None); Py_INCREF(Py_None); - if (unlikely(__pyx_pw_5tinyr_14_RectangleIter_1__cinit__(o, a, k) < 0)) goto bad; - return o; - bad: - Py_DECREF(o); o = 0; - return NULL; -} - -static void __pyx_tp_dealloc_5tinyr__RectangleIter(PyObject *o) { - struct __pyx_obj_5tinyr__RectangleIter *p = (struct __pyx_obj_5tinyr__RectangleIter *)o; - #if CYTHON_USE_TP_FINALIZE - if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { - if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_5tinyr__RectangleIter) { - if (PyObject_CallFinalizerFromDealloc(o)) return; - } - } - #endif - PyObject_GC_UnTrack(o); - Py_CLEAR(p->ni); - Py_CLEAR(p->leafrecords); - PyObject_GC_Track(o); - __pyx_tp_dealloc_5tinyr__Iterator(o); -} - -static int __pyx_tp_traverse_5tinyr__RectangleIter(PyObject *o, visitproc v, void *a) { - int e; - struct __pyx_obj_5tinyr__RectangleIter *p = (struct __pyx_obj_5tinyr__RectangleIter *)o; - e = __pyx_tp_traverse_5tinyr__Iterator(o, v, a); if (e) return e; - if (p->ni) { - e = (*v)(((PyObject *)p->ni), a); if (e) return e; - } - if (p->leafrecords) { - e = (*v)(p->leafrecords, a); if (e) return e; - } - return 0; -} - -static int __pyx_tp_clear_5tinyr__RectangleIter(PyObject *o) { - PyObject* tmp; - struct __pyx_obj_5tinyr__RectangleIter *p = (struct __pyx_obj_5tinyr__RectangleIter *)o; - __pyx_tp_clear_5tinyr__Iterator(o); - tmp = ((PyObject*)p->ni); - p->ni = ((struct __pyx_obj_5tinyr__NodeIter *)Py_None); Py_INCREF(Py_None); - Py_XDECREF(tmp); - tmp = ((PyObject*)p->leafrecords); - p->leafrecords = ((PyObject*)Py_None); Py_INCREF(Py_None); - Py_XDECREF(tmp); - return 0; -} - -static PyObject *__pyx_specialmethod___pyx_pw_5tinyr_14_RectangleIter_3__next__(PyObject *self, CYTHON_UNUSED PyObject *arg) { - PyObject *res = __pyx_pw_5tinyr_14_RectangleIter_3__next__(self); - if (!res && !PyErr_Occurred()) { PyErr_SetNone(PyExc_StopIteration); } - return res; -} - -static PyMethodDef __pyx_methods_5tinyr__RectangleIter[] = { - {"__next__", (PyCFunction)__pyx_specialmethod___pyx_pw_5tinyr_14_RectangleIter_3__next__, METH_NOARGS|METH_COEXIST, 0}, - {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_5tinyr_14_RectangleIter_5__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, - {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_5tinyr_14_RectangleIter_7__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, - {0, 0, 0, 0} -}; -#if CYTHON_USE_TYPE_SPECS -static PyType_Slot __pyx_type_5tinyr__RectangleIter_slots[] = { - {Py_tp_dealloc, (void *)__pyx_tp_dealloc_5tinyr__RectangleIter}, - {Py_tp_traverse, (void *)__pyx_tp_traverse_5tinyr__RectangleIter}, - {Py_tp_clear, (void *)__pyx_tp_clear_5tinyr__RectangleIter}, - {Py_tp_iternext, (void *)__pyx_pw_5tinyr_14_RectangleIter_3__next__}, - {Py_tp_methods, (void *)__pyx_methods_5tinyr__RectangleIter}, - {Py_tp_new, (void *)__pyx_tp_new_5tinyr__RectangleIter}, - {0, 0}, -}; -static PyType_Spec __pyx_type_5tinyr__RectangleIter_spec = { - "tinyr._RectangleIter", - sizeof(struct __pyx_obj_5tinyr__RectangleIter), - 0, - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, - __pyx_type_5tinyr__RectangleIter_slots, -}; -#else - -static PyTypeObject __pyx_type_5tinyr__RectangleIter = { - PyVarObject_HEAD_INIT(0, 0) - "tinyr.""_RectangleIter", /*tp_name*/ - sizeof(struct __pyx_obj_5tinyr__RectangleIter), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - __pyx_tp_dealloc_5tinyr__RectangleIter, /*tp_dealloc*/ - #if PY_VERSION_HEX < 0x030800b4 - 0, /*tp_print*/ - #endif - #if PY_VERSION_HEX >= 0x030800b4 - 0, /*tp_vectorcall_offset*/ - #endif - 0, /*tp_getattr*/ - 0, /*tp_setattr*/ - #if PY_MAJOR_VERSION < 3 - 0, /*tp_compare*/ - #endif - #if PY_MAJOR_VERSION >= 3 - 0, /*tp_as_async*/ - #endif - 0, /*tp_repr*/ - 0, /*tp_as_number*/ - 0, /*tp_as_sequence*/ - 0, /*tp_as_mapping*/ - 0, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - 0, /*tp_getattro*/ - 0, /*tp_setattro*/ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ - 0, /*tp_doc*/ - __pyx_tp_traverse_5tinyr__RectangleIter, /*tp_traverse*/ - __pyx_tp_clear_5tinyr__RectangleIter, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - #if CYTHON_COMPILING_IN_PYPY || 0 - __pyx_pw_5tinyr_9_Iterator_3__iter__, /*tp_iter*/ - #else - 0, /*tp_iter*/ - #endif - __pyx_pw_5tinyr_14_RectangleIter_3__next__, /*tp_iternext*/ - __pyx_methods_5tinyr__RectangleIter, /*tp_methods*/ - 0, /*tp_members*/ - 0, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - #if !CYTHON_USE_TYPE_SPECS - 0, /*tp_dictoffset*/ - #endif - 0, /*tp_init*/ - 0, /*tp_alloc*/ - __pyx_tp_new_5tinyr__RectangleIter, /*tp_new*/ - 0, /*tp_free*/ - 0, /*tp_is_gc*/ - 0, /*tp_bases*/ - 0, /*tp_mro*/ - 0, /*tp_cache*/ - 0, /*tp_subclasses*/ - 0, /*tp_weaklist*/ - 0, /*tp_del*/ - 0, /*tp_version_tag*/ - #if PY_VERSION_HEX >= 0x030400a1 - #if CYTHON_USE_TP_FINALIZE - 0, /*tp_finalize*/ - #else - NULL, /*tp_finalize*/ - #endif - #endif - #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) - 0, /*tp_vectorcall*/ - #endif - #if __PYX_NEED_TP_PRINT_SLOT == 1 - 0, /*tp_print*/ - #endif - #if PY_VERSION_HEX >= 0x030C0000 - 0, /*tp_watched*/ - #endif - #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 - 0, /*tp_pypy_flags*/ - #endif -}; -#endif - -static PyObject *__pyx_tp_new_5tinyr_RTreeInfo(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { - struct __pyx_obj_5tinyr_RTreeInfo *p; - PyObject *o; - #if CYTHON_COMPILING_IN_LIMITED_API - allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc); - o = alloc_func(t, 0); - #else - if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) { - o = (*t->tp_alloc)(t, 0); - } else { - o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0); - } - if (unlikely(!o)) return 0; - #endif - p = ((struct __pyx_obj_5tinyr_RTreeInfo *)o); - p->rtree = ((struct __pyx_obj_5tinyr_RTree *)Py_None); Py_INCREF(Py_None); - return o; -} - -static void __pyx_tp_dealloc_5tinyr_RTreeInfo(PyObject *o) { - struct __pyx_obj_5tinyr_RTreeInfo *p = (struct __pyx_obj_5tinyr_RTreeInfo *)o; - #if CYTHON_USE_TP_FINALIZE - if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { - if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_5tinyr_RTreeInfo) { - if (PyObject_CallFinalizerFromDealloc(o)) return; - } - } - #endif - PyObject_GC_UnTrack(o); - Py_CLEAR(p->rtree); - #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY - (*Py_TYPE(o)->tp_free)(o); - #else - { - freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free); - if (tp_free) tp_free(o); - } - #endif -} - -static int __pyx_tp_traverse_5tinyr_RTreeInfo(PyObject *o, visitproc v, void *a) { - int e; - struct __pyx_obj_5tinyr_RTreeInfo *p = (struct __pyx_obj_5tinyr_RTreeInfo *)o; - if (p->rtree) { - e = (*v)(((PyObject *)p->rtree), a); if (e) return e; - } - return 0; -} - -static int __pyx_tp_clear_5tinyr_RTreeInfo(PyObject *o) { - PyObject* tmp; - struct __pyx_obj_5tinyr_RTreeInfo *p = (struct __pyx_obj_5tinyr_RTreeInfo *)o; - tmp = ((PyObject*)p->rtree); - p->rtree = ((struct __pyx_obj_5tinyr_RTree *)Py_None); Py_INCREF(Py_None); - Py_XDECREF(tmp); - return 0; -} - -static PyObject *__pyx_getprop_5tinyr_9RTreeInfo_levels(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_5tinyr_9RTreeInfo_6levels_1__get__(o); -} - -static PyObject *__pyx_getprop_5tinyr_9RTreeInfo_common_boundary(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_5tinyr_9RTreeInfo_15common_boundary_1__get__(o); -} - -static PyObject *__pyx_getprop_5tinyr_9RTreeInfo_width(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_5tinyr_9RTreeInfo_5width_1__get__(o); -} - -static PyObject *__pyx_getprop_5tinyr_9RTreeInfo_height(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_5tinyr_9RTreeInfo_6height_1__get__(o); -} - -static PyMethodDef __pyx_methods_5tinyr_RTreeInfo[] = { - {"iter_rectangles", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_5tinyr_9RTreeInfo_3iter_rectangles, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_5tinyr_9RTreeInfo_2iter_rectangles}, - {"to_dot", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_5tinyr_9RTreeInfo_5to_dot, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_5tinyr_9RTreeInfo_4to_dot}, - {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_5tinyr_9RTreeInfo_7__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, - {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_5tinyr_9RTreeInfo_9__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, - {0, 0, 0, 0} -}; - -static struct PyGetSetDef __pyx_getsets_5tinyr_RTreeInfo[] = { - {(char *)"levels", __pyx_getprop_5tinyr_9RTreeInfo_levels, 0, (char *)0, 0}, - {(char *)"common_boundary", __pyx_getprop_5tinyr_9RTreeInfo_common_boundary, 0, (char *)0, 0}, - {(char *)"width", __pyx_getprop_5tinyr_9RTreeInfo_width, 0, (char *)0, 0}, - {(char *)"height", __pyx_getprop_5tinyr_9RTreeInfo_height, 0, (char *)0, 0}, - {0, 0, 0, 0, 0} -}; -#if CYTHON_USE_TYPE_SPECS -static PyType_Slot __pyx_type_5tinyr_RTreeInfo_slots[] = { - {Py_tp_dealloc, (void *)__pyx_tp_dealloc_5tinyr_RTreeInfo}, - {Py_tp_doc, (void *)PyDoc_STR("Provides some meta-info about an existing RTree\n \n @param rtree: an RTree object\n ")}, - {Py_tp_traverse, (void *)__pyx_tp_traverse_5tinyr_RTreeInfo}, - {Py_tp_clear, (void *)__pyx_tp_clear_5tinyr_RTreeInfo}, - {Py_tp_methods, (void *)__pyx_methods_5tinyr_RTreeInfo}, - {Py_tp_getset, (void *)__pyx_getsets_5tinyr_RTreeInfo}, - {Py_tp_init, (void *)__pyx_pw_5tinyr_9RTreeInfo_1__init__}, - {Py_tp_new, (void *)__pyx_tp_new_5tinyr_RTreeInfo}, - {0, 0}, -}; -static PyType_Spec __pyx_type_5tinyr_RTreeInfo_spec = { - "tinyr.RTreeInfo", - sizeof(struct __pyx_obj_5tinyr_RTreeInfo), - 0, - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, - __pyx_type_5tinyr_RTreeInfo_slots, -}; -#else - -static PyTypeObject __pyx_type_5tinyr_RTreeInfo = { - PyVarObject_HEAD_INIT(0, 0) - "tinyr.""RTreeInfo", /*tp_name*/ - sizeof(struct __pyx_obj_5tinyr_RTreeInfo), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - __pyx_tp_dealloc_5tinyr_RTreeInfo, /*tp_dealloc*/ - #if PY_VERSION_HEX < 0x030800b4 - 0, /*tp_print*/ - #endif - #if PY_VERSION_HEX >= 0x030800b4 - 0, /*tp_vectorcall_offset*/ - #endif - 0, /*tp_getattr*/ - 0, /*tp_setattr*/ - #if PY_MAJOR_VERSION < 3 - 0, /*tp_compare*/ - #endif - #if PY_MAJOR_VERSION >= 3 - 0, /*tp_as_async*/ - #endif - 0, /*tp_repr*/ - 0, /*tp_as_number*/ - 0, /*tp_as_sequence*/ - 0, /*tp_as_mapping*/ - 0, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - 0, /*tp_getattro*/ - 0, /*tp_setattro*/ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ - PyDoc_STR("Provides some meta-info about an existing RTree\n \n @param rtree: an RTree object\n "), /*tp_doc*/ - __pyx_tp_traverse_5tinyr_RTreeInfo, /*tp_traverse*/ - __pyx_tp_clear_5tinyr_RTreeInfo, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - __pyx_methods_5tinyr_RTreeInfo, /*tp_methods*/ - 0, /*tp_members*/ - __pyx_getsets_5tinyr_RTreeInfo, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - #if !CYTHON_USE_TYPE_SPECS - 0, /*tp_dictoffset*/ - #endif - __pyx_pw_5tinyr_9RTreeInfo_1__init__, /*tp_init*/ - 0, /*tp_alloc*/ - __pyx_tp_new_5tinyr_RTreeInfo, /*tp_new*/ - 0, /*tp_free*/ - 0, /*tp_is_gc*/ - 0, /*tp_bases*/ - 0, /*tp_mro*/ - 0, /*tp_cache*/ - 0, /*tp_subclasses*/ - 0, /*tp_weaklist*/ - 0, /*tp_del*/ - 0, /*tp_version_tag*/ - #if PY_VERSION_HEX >= 0x030400a1 - #if CYTHON_USE_TP_FINALIZE - 0, /*tp_finalize*/ - #else - NULL, /*tp_finalize*/ - #endif - #endif - #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) - 0, /*tp_vectorcall*/ - #endif - #if __PYX_NEED_TP_PRINT_SLOT == 1 - 0, /*tp_print*/ - #endif - #if PY_VERSION_HEX >= 0x030C0000 - 0, /*tp_watched*/ - #endif - #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 - 0, /*tp_pypy_flags*/ - #endif -}; -#endif - -static PyMethodDef __pyx_methods[] = { - {0, 0, 0, 0} -}; -#ifndef CYTHON_SMALL_CODE -#if defined(__clang__) - #define CYTHON_SMALL_CODE -#elif defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)) - #define CYTHON_SMALL_CODE __attribute__((cold)) -#else - #define CYTHON_SMALL_CODE -#endif -#endif -/* #### Code section: pystring_table ### */ - -static int __Pyx_CreateStringTabAndInitStrings(void) { - __Pyx_StringTabEntry __pyx_string_tab[] = { - {&__pyx_n_s_AssertionError, __pyx_k_AssertionError, sizeof(__pyx_k_AssertionError), 0, 0, 1, 1}, - {&__pyx_n_s_AttributeError, __pyx_k_AttributeError, sizeof(__pyx_k_AttributeError), 0, 0, 1, 1}, - {&__pyx_n_s_ChildRecord, __pyx_k_ChildRecord, sizeof(__pyx_k_ChildRecord), 0, 0, 1, 1}, - {&__pyx_n_s_ChildRecordIter, __pyx_k_ChildRecordIter, sizeof(__pyx_k_ChildRecordIter), 0, 0, 1, 1}, - {&__pyx_n_s_ChildRecordIter___reduce_cython, __pyx_k_ChildRecordIter___reduce_cython, sizeof(__pyx_k_ChildRecordIter___reduce_cython), 0, 0, 1, 1}, - {&__pyx_n_s_ChildRecordIter___setstate_cyth, __pyx_k_ChildRecordIter___setstate_cyth, sizeof(__pyx_k_ChildRecordIter___setstate_cyth), 0, 0, 1, 1}, - {&__pyx_n_s_ChildRecord___reduce_cython, __pyx_k_ChildRecord___reduce_cython, sizeof(__pyx_k_ChildRecord___reduce_cython), 0, 0, 1, 1}, - {&__pyx_n_s_ChildRecord___setstate_cython, __pyx_k_ChildRecord___setstate_cython, sizeof(__pyx_k_ChildRecord___setstate_cython), 0, 0, 1, 1}, - {&__pyx_kp_s_Incompatible_checksums_0x_x_vs_0, __pyx_k_Incompatible_checksums_0x_x_vs_0, sizeof(__pyx_k_Incompatible_checksums_0x_x_vs_0), 0, 0, 1, 0}, - {&__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_2, __pyx_k_Incompatible_checksums_0x_x_vs_0_2, sizeof(__pyx_k_Incompatible_checksums_0x_x_vs_0_2), 0, 0, 1, 0}, - {&__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_3, __pyx_k_Incompatible_checksums_0x_x_vs_0_3, sizeof(__pyx_k_Incompatible_checksums_0x_x_vs_0_3), 0, 0, 1, 0}, - {&__pyx_n_s_IndexError, __pyx_k_IndexError, sizeof(__pyx_k_IndexError), 0, 0, 1, 1}, - {&__pyx_n_s_InnerRecord, __pyx_k_InnerRecord, sizeof(__pyx_k_InnerRecord), 0, 0, 1, 1}, - {&__pyx_n_s_InnerRecord___reduce_cython, __pyx_k_InnerRecord___reduce_cython, sizeof(__pyx_k_InnerRecord___reduce_cython), 0, 0, 1, 1}, - {&__pyx_n_s_InnerRecord___setstate_cython, __pyx_k_InnerRecord___setstate_cython, sizeof(__pyx_k_InnerRecord___setstate_cython), 0, 0, 1, 1}, - {&__pyx_n_s_ItemsIter, __pyx_k_ItemsIter, sizeof(__pyx_k_ItemsIter), 0, 0, 1, 1}, - {&__pyx_n_s_ItemsIter___reduce_cython, __pyx_k_ItemsIter___reduce_cython, sizeof(__pyx_k_ItemsIter___reduce_cython), 0, 0, 1, 1}, - {&__pyx_n_s_ItemsIter___setstate_cython, __pyx_k_ItemsIter___setstate_cython, sizeof(__pyx_k_ItemsIter___setstate_cython), 0, 0, 1, 1}, - {&__pyx_n_s_Iterator, __pyx_k_Iterator, sizeof(__pyx_k_Iterator), 0, 0, 1, 1}, - {&__pyx_n_s_Iterator___reduce_cython, __pyx_k_Iterator___reduce_cython, sizeof(__pyx_k_Iterator___reduce_cython), 0, 0, 1, 1}, - {&__pyx_n_s_Iterator___setstate_cython, __pyx_k_Iterator___setstate_cython, sizeof(__pyx_k_Iterator___setstate_cython), 0, 0, 1, 1}, - {&__pyx_n_s_KVIIter, __pyx_k_KVIIter, sizeof(__pyx_k_KVIIter), 0, 0, 1, 1}, - {&__pyx_n_s_KVIIter___reduce_cython, __pyx_k_KVIIter___reduce_cython, sizeof(__pyx_k_KVIIter___reduce_cython), 0, 0, 1, 1}, - {&__pyx_n_s_KVIIter___setstate_cython, __pyx_k_KVIIter___setstate_cython, sizeof(__pyx_k_KVIIter___setstate_cython), 0, 0, 1, 1}, - {&__pyx_n_s_KeyError, __pyx_k_KeyError, sizeof(__pyx_k_KeyError), 0, 0, 1, 1}, - {&__pyx_n_s_KeysIter, __pyx_k_KeysIter, sizeof(__pyx_k_KeysIter), 0, 0, 1, 1}, - {&__pyx_n_s_KeysIter___reduce_cython, __pyx_k_KeysIter___reduce_cython, sizeof(__pyx_k_KeysIter___reduce_cython), 0, 0, 1, 1}, - {&__pyx_n_s_KeysIter___setstate_cython, __pyx_k_KeysIter___setstate_cython, sizeof(__pyx_k_KeysIter___setstate_cython), 0, 0, 1, 1}, - {&__pyx_n_s_L, __pyx_k_L, sizeof(__pyx_k_L), 0, 0, 1, 1}, - {&__pyx_n_s_Node, __pyx_k_Node, sizeof(__pyx_k_Node), 0, 0, 1, 1}, - {&__pyx_n_s_NodeIter, __pyx_k_NodeIter, sizeof(__pyx_k_NodeIter), 0, 0, 1, 1}, - {&__pyx_n_s_NodeIter___reduce_cython, __pyx_k_NodeIter___reduce_cython, sizeof(__pyx_k_NodeIter___reduce_cython), 0, 0, 1, 1}, - {&__pyx_n_s_NodeIter___setstate_cython, __pyx_k_NodeIter___setstate_cython, sizeof(__pyx_k_NodeIter___setstate_cython), 0, 0, 1, 1}, - {&__pyx_n_s_Node___reduce_cython, __pyx_k_Node___reduce_cython, sizeof(__pyx_k_Node___reduce_cython), 0, 0, 1, 1}, - {&__pyx_n_s_Node___setstate_cython, __pyx_k_Node___setstate_cython, sizeof(__pyx_k_Node___setstate_cython), 0, 0, 1, 1}, - {&__pyx_n_s_NotImplemented, __pyx_k_NotImplemented, sizeof(__pyx_k_NotImplemented), 0, 0, 1, 1}, - {&__pyx_n_s_OverflowError, __pyx_k_OverflowError, sizeof(__pyx_k_OverflowError), 0, 0, 1, 1}, - {&__pyx_n_s_PickleError, __pyx_k_PickleError, sizeof(__pyx_k_PickleError), 0, 0, 1, 1}, - {&__pyx_n_s_RTree, __pyx_k_RTree, sizeof(__pyx_k_RTree), 0, 0, 1, 1}, - {&__pyx_n_s_RTreeInfo, __pyx_k_RTreeInfo, sizeof(__pyx_k_RTreeInfo), 0, 0, 1, 1}, - {&__pyx_n_s_RTreeInfo___reduce_cython, __pyx_k_RTreeInfo___reduce_cython, sizeof(__pyx_k_RTreeInfo___reduce_cython), 0, 0, 1, 1}, - {&__pyx_n_s_RTreeInfo___setstate_cython, __pyx_k_RTreeInfo___setstate_cython, sizeof(__pyx_k_RTreeInfo___setstate_cython), 0, 0, 1, 1}, - {&__pyx_n_s_RTreeInfo_iter_rectangles, __pyx_k_RTreeInfo_iter_rectangles, sizeof(__pyx_k_RTreeInfo_iter_rectangles), 0, 0, 1, 1}, - {&__pyx_n_s_RTreeInfo_to_dot, __pyx_k_RTreeInfo_to_dot, sizeof(__pyx_k_RTreeInfo_to_dot), 0, 0, 1, 1}, - {&__pyx_n_s_RTreeInvalid, __pyx_k_RTreeInvalid, sizeof(__pyx_k_RTreeInvalid), 0, 0, 1, 1}, - {&__pyx_n_s_RTree___reduce_cython, __pyx_k_RTree___reduce_cython, sizeof(__pyx_k_RTree___reduce_cython), 0, 0, 1, 1}, - {&__pyx_n_s_RTree___setstate_cython, __pyx_k_RTree___setstate_cython, sizeof(__pyx_k_RTree___setstate_cython), 0, 0, 1, 1}, - {&__pyx_n_s_RTree_copy, __pyx_k_RTree_copy, sizeof(__pyx_k_RTree_copy), 0, 0, 1, 1}, - {&__pyx_n_s_RTree_get_info, __pyx_k_RTree_get_info, sizeof(__pyx_k_RTree_get_info), 0, 0, 1, 1}, - {&__pyx_n_s_RTree_insert, __pyx_k_RTree_insert, sizeof(__pyx_k_RTree_insert), 0, 0, 1, 1}, - {&__pyx_n_s_RTree_iteritems, __pyx_k_RTree_iteritems, sizeof(__pyx_k_RTree_iteritems), 0, 0, 1, 1}, - {&__pyx_n_s_RTree_iterkeys, __pyx_k_RTree_iterkeys, sizeof(__pyx_k_RTree_iterkeys), 0, 0, 1, 1}, - {&__pyx_n_s_RTree_itervalues, __pyx_k_RTree_itervalues, sizeof(__pyx_k_RTree_itervalues), 0, 0, 1, 1}, - {&__pyx_n_s_RTree_remove, __pyx_k_RTree_remove, sizeof(__pyx_k_RTree_remove), 0, 0, 1, 1}, - {&__pyx_n_s_RTree_search, __pyx_k_RTree_search, sizeof(__pyx_k_RTree_search), 0, 0, 1, 1}, - {&__pyx_n_s_RTree_search_surrounding, __pyx_k_RTree_search_surrounding, sizeof(__pyx_k_RTree_search_surrounding), 0, 0, 1, 1}, - {&__pyx_n_s_RTree_valid, __pyx_k_RTree_valid, sizeof(__pyx_k_RTree_valid), 0, 0, 1, 1}, - {&__pyx_n_s_Record, __pyx_k_Record, sizeof(__pyx_k_Record), 0, 0, 1, 1}, - {&__pyx_n_s_Record___reduce_cython, __pyx_k_Record___reduce_cython, sizeof(__pyx_k_Record___reduce_cython), 0, 0, 1, 1}, - {&__pyx_n_s_Record___setstate_cython, __pyx_k_Record___setstate_cython, sizeof(__pyx_k_Record___setstate_cython), 0, 0, 1, 1}, - {&__pyx_n_s_RectangleIter, __pyx_k_RectangleIter, sizeof(__pyx_k_RectangleIter), 0, 0, 1, 1}, - {&__pyx_n_s_RectangleIter___reduce_cython, __pyx_k_RectangleIter___reduce_cython, sizeof(__pyx_k_RectangleIter___reduce_cython), 0, 0, 1, 1}, - {&__pyx_n_s_RectangleIter___setstate_cython, __pyx_k_RectangleIter___setstate_cython, sizeof(__pyx_k_RectangleIter___setstate_cython), 0, 0, 1, 1}, - {&__pyx_n_s_StopIteration, __pyx_k_StopIteration, sizeof(__pyx_k_StopIteration), 0, 0, 1, 1}, - {&__pyx_kp_s_TD_PORT_d_CELLSPACING_0_d_TD, __pyx_k_TD_PORT_d_CELLSPACING_0_d_TD, sizeof(__pyx_k_TD_PORT_d_CELLSPACING_0_d_TD), 0, 0, 1, 0}, - {&__pyx_kp_s_TR_TABLE, __pyx_k_TR_TABLE, sizeof(__pyx_k_TR_TABLE), 0, 0, 1, 0}, - {&__pyx_n_s_TypeError, __pyx_k_TypeError, sizeof(__pyx_k_TypeError), 0, 0, 1, 1}, - {&__pyx_n_s_ValueError, __pyx_k_ValueError, sizeof(__pyx_k_ValueError), 0, 0, 1, 1}, - {&__pyx_n_s_ValuesIter, __pyx_k_ValuesIter, sizeof(__pyx_k_ValuesIter), 0, 0, 1, 1}, - {&__pyx_n_s_ValuesIter___reduce_cython, __pyx_k_ValuesIter___reduce_cython, sizeof(__pyx_k_ValuesIter___reduce_cython), 0, 0, 1, 1}, - {&__pyx_n_s_ValuesIter___setstate_cython, __pyx_k_ValuesIter___setstate_cython, sizeof(__pyx_k_ValuesIter___setstate_cython), 0, 0, 1, 1}, - {&__pyx_n_s__10, __pyx_k__10, sizeof(__pyx_k__10), 0, 0, 1, 1}, - {&__pyx_kp_s__4, __pyx_k__4, sizeof(__pyx_k__4), 0, 0, 1, 0}, - {&__pyx_kp_s__5, __pyx_k__5, sizeof(__pyx_k__5), 0, 0, 1, 0}, - {&__pyx_n_s__65, __pyx_k__65, sizeof(__pyx_k__65), 0, 0, 1, 1}, - {&__pyx_kp_u__7, __pyx_k__7, sizeof(__pyx_k__7), 0, 1, 0, 0}, - {&__pyx_n_s_asyncio_coroutines, __pyx_k_asyncio_coroutines, sizeof(__pyx_k_asyncio_coroutines), 0, 0, 1, 1}, - {&__pyx_n_s_chid, __pyx_k_chid, sizeof(__pyx_k_chid), 0, 0, 1, 1}, - {&__pyx_n_s_child, __pyx_k_child, sizeof(__pyx_k_child), 0, 0, 1, 1}, - {&__pyx_n_s_class, __pyx_k_class, sizeof(__pyx_k_class), 0, 0, 1, 1}, - {&__pyx_n_s_cline_in_traceback, __pyx_k_cline_in_traceback, sizeof(__pyx_k_cline_in_traceback), 0, 0, 1, 1}, - {&__pyx_n_s_combinations, __pyx_k_combinations, sizeof(__pyx_k_combinations), 0, 0, 1, 1}, - {&__pyx_kp_s_coordinates_as_list_or_tuple_exp, __pyx_k_coordinates_as_list_or_tuple_exp, sizeof(__pyx_k_coordinates_as_list_or_tuple_exp), 0, 0, 1, 0}, - {&__pyx_n_s_coords, __pyx_k_coords, sizeof(__pyx_k_coords), 0, 0, 1, 1}, - {&__pyx_n_s_coords_a, __pyx_k_coords_a, sizeof(__pyx_k_coords_a), 0, 0, 1, 1}, - {&__pyx_n_s_copy, __pyx_k_copy, sizeof(__pyx_k_copy), 0, 0, 1, 1}, - {&__pyx_n_s_cr, __pyx_k_cr, sizeof(__pyx_k_cr), 0, 0, 1, 1}, - {&__pyx_kp_s_d, __pyx_k_d, sizeof(__pyx_k_d), 0, 0, 1, 0}, - {&__pyx_n_s_d_2, __pyx_k_d_2, sizeof(__pyx_k_d_2), 0, 0, 1, 1}, - {&__pyx_kp_s_d_d_tailport_d_s, __pyx_k_d_d_tailport_d_s, sizeof(__pyx_k_d_d_tailport_d_s), 0, 0, 1, 0}, - {&__pyx_kp_s_d_label_TABLE_BORDER_0_CELLBORD, __pyx_k_d_label_TABLE_BORDER_0_CELLBORD, sizeof(__pyx_k_d_label_TABLE_BORDER_0_CELLBORD), 0, 0, 1, 0}, - {&__pyx_n_s_depth, __pyx_k_depth, sizeof(__pyx_k_depth), 0, 0, 1, 1}, - {&__pyx_n_s_dict, __pyx_k_dict, sizeof(__pyx_k_dict), 0, 0, 1, 1}, - {&__pyx_n_s_dict_2, __pyx_k_dict_2, sizeof(__pyx_k_dict_2), 0, 0, 1, 1}, - {&__pyx_kp_s_digraph_RTree_node_shape_none, __pyx_k_digraph_RTree_node_shape_none, sizeof(__pyx_k_digraph_RTree_node_shape_none), 0, 0, 1, 0}, - {&__pyx_kp_u_disable, __pyx_k_disable, sizeof(__pyx_k_disable), 0, 1, 0, 0}, - {&__pyx_n_s_doc, __pyx_k_doc, sizeof(__pyx_k_doc), 0, 0, 1, 1}, - {&__pyx_kp_s_double_link_doesn_t_cover_itself, __pyx_k_double_link_doesn_t_cover_itself, sizeof(__pyx_k_double_link_doesn_t_cover_itself), 0, 0, 1, 0}, - {&__pyx_kp_u_enable, __pyx_k_enable, sizeof(__pyx_k_enable), 0, 1, 0, 0}, - {&__pyx_n_s_enumerate, __pyx_k_enumerate, sizeof(__pyx_k_enumerate), 0, 0, 1, 1}, - {&__pyx_n_s_filelike, __pyx_k_filelike, sizeof(__pyx_k_filelike), 0, 0, 1, 1}, - {&__pyx_kp_s_for_min_max_capacities_it_s_requ, __pyx_k_for_min_max_capacities_it_s_requ, sizeof(__pyx_k_for_min_max_capacities_it_s_requ), 0, 0, 1, 0}, - {&__pyx_kp_u_gc, __pyx_k_gc, sizeof(__pyx_k_gc), 0, 1, 0, 0}, - {&__pyx_n_s_get_info, __pyx_k_get_info, sizeof(__pyx_k_get_info), 0, 0, 1, 1}, - {&__pyx_n_s_getstate, __pyx_k_getstate, sizeof(__pyx_k_getstate), 0, 0, 1, 1}, - {&__pyx_n_s_id, __pyx_k_id, sizeof(__pyx_k_id), 0, 0, 1, 1}, - {&__pyx_n_s_identifier, __pyx_k_identifier, sizeof(__pyx_k_identifier), 0, 0, 1, 1}, - {&__pyx_n_s_import, __pyx_k_import, sizeof(__pyx_k_import), 0, 0, 1, 1}, - {&__pyx_kp_s_inconsistent_item_count_d_d, __pyx_k_inconsistent_item_count_d_d, sizeof(__pyx_k_inconsistent_item_count_d_d), 0, 0, 1, 0}, - {&__pyx_kp_s_inconsistent_node_depth_d_d, __pyx_k_inconsistent_node_depth_d_d, sizeof(__pyx_k_inconsistent_node_depth_d_d), 0, 0, 1, 0}, - {&__pyx_kp_s_indexing_RTree_only_possible_wit, __pyx_k_indexing_RTree_only_possible_wit, sizeof(__pyx_k_indexing_RTree_only_possible_wit), 0, 0, 1, 0}, - {&__pyx_n_s_init_subclass, __pyx_k_init_subclass, sizeof(__pyx_k_init_subclass), 0, 0, 1, 1}, - {&__pyx_n_s_initializing, __pyx_k_initializing, sizeof(__pyx_k_initializing), 0, 0, 1, 1}, - {&__pyx_n_s_insert, __pyx_k_insert, sizeof(__pyx_k_insert), 0, 0, 1, 1}, - {&__pyx_n_s_interleaved, __pyx_k_interleaved, sizeof(__pyx_k_interleaved), 0, 0, 1, 1}, - {&__pyx_n_s_ir, __pyx_k_ir, sizeof(__pyx_k_ir), 0, 0, 1, 1}, - {&__pyx_n_s_is_coroutine, __pyx_k_is_coroutine, sizeof(__pyx_k_is_coroutine), 0, 0, 1, 1}, - {&__pyx_kp_u_isenabled, __pyx_k_isenabled, sizeof(__pyx_k_isenabled), 0, 1, 0, 0}, - {&__pyx_n_s_item_count, __pyx_k_item_count, sizeof(__pyx_k_item_count), 0, 0, 1, 1}, - {&__pyx_n_s_iter_rectangles, __pyx_k_iter_rectangles, sizeof(__pyx_k_iter_rectangles), 0, 0, 1, 1}, - {&__pyx_n_s_iteritems, __pyx_k_iteritems, sizeof(__pyx_k_iteritems), 0, 0, 1, 1}, - {&__pyx_n_s_iterkeys, __pyx_k_iterkeys, sizeof(__pyx_k_iterkeys), 0, 0, 1, 1}, - {&__pyx_n_s_itertools, __pyx_k_itertools, sizeof(__pyx_k_itertools), 0, 0, 1, 1}, - {&__pyx_n_s_itervalues, __pyx_k_itervalues, sizeof(__pyx_k_itervalues), 0, 0, 1, 1}, - {&__pyx_n_s_key, __pyx_k_key, sizeof(__pyx_k_key), 0, 0, 1, 1}, - {&__pyx_n_s_leaf, __pyx_k_leaf, sizeof(__pyx_k_leaf), 0, 0, 1, 1}, - {&__pyx_kp_s_leaf_level_is_not_equal_for_all, __pyx_k_leaf_level_is_not_equal_for_all, sizeof(__pyx_k_leaf_level_is_not_equal_for_all), 0, 0, 1, 0}, - {&__pyx_n_s_leafnodes, __pyx_k_leafnodes, sizeof(__pyx_k_leafnodes), 0, 0, 1, 1}, - {&__pyx_n_s_leafnodes_and_depth, __pyx_k_leafnodes_and_depth, sizeof(__pyx_k_leafnodes_and_depth), 0, 0, 1, 1}, - {&__pyx_kp_s_len_coords_must_be_4_len_is_d, __pyx_k_len_coords_must_be_4_len_is_d, sizeof(__pyx_k_len_coords_must_be_4_len_is_d), 0, 0, 1, 0}, - {&__pyx_kp_s_len_coords_must_be_4_length_is_d, __pyx_k_len_coords_must_be_4_length_is_d, sizeof(__pyx_k_len_coords_must_be_4_length_is_d), 0, 0, 1, 0}, - {&__pyx_kp_s_len_point_must_be_2_len_is_d, __pyx_k_len_point_must_be_2_len_is_d, sizeof(__pyx_k_len_point_must_be_2_len_is_d), 0, 0, 1, 0}, - {&__pyx_n_s_level, __pyx_k_level, sizeof(__pyx_k_level), 0, 0, 1, 1}, - {&__pyx_n_s_lid, __pyx_k_lid, sizeof(__pyx_k_lid), 0, 0, 1, 1}, - {&__pyx_n_s_main, __pyx_k_main, sizeof(__pyx_k_main), 0, 0, 1, 1}, - {&__pyx_n_s_max_cap, __pyx_k_max_cap, sizeof(__pyx_k_max_cap), 0, 0, 1, 1}, - {&__pyx_n_s_metaclass, __pyx_k_metaclass, sizeof(__pyx_k_metaclass), 0, 0, 1, 1}, - {&__pyx_n_s_min_cap, __pyx_k_min_cap, sizeof(__pyx_k_min_cap), 0, 0, 1, 1}, - {&__pyx_kp_s_misspositioned_inner_node, __pyx_k_misspositioned_inner_node, sizeof(__pyx_k_misspositioned_inner_node), 0, 0, 1, 0}, - {&__pyx_n_s_module, __pyx_k_module, sizeof(__pyx_k_module), 0, 0, 1, 1}, - {&__pyx_n_s_mro_entries, __pyx_k_mro_entries, sizeof(__pyx_k_mro_entries), 0, 0, 1, 1}, - {&__pyx_n_s_n, __pyx_k_n, sizeof(__pyx_k_n), 0, 0, 1, 1}, - {&__pyx_n_s_name, __pyx_k_name, sizeof(__pyx_k_name), 0, 0, 1, 1}, - {&__pyx_n_s_new, __pyx_k_new, sizeof(__pyx_k_new), 0, 0, 1, 1}, - {&__pyx_n_s_next, __pyx_k_next, sizeof(__pyx_k_next), 0, 0, 1, 1}, - {&__pyx_n_s_nid, __pyx_k_nid, sizeof(__pyx_k_nid), 0, 0, 1, 1}, - {&__pyx_kp_s_no_default___reduce___due_to_non, __pyx_k_no_default___reduce___due_to_non, sizeof(__pyx_k_no_default___reduce___due_to_non), 0, 0, 1, 0}, - {&__pyx_kp_s_no_parent_entry_holds_the_child, __pyx_k_no_parent_entry_holds_the_child, sizeof(__pyx_k_no_parent_entry_holds_the_child), 0, 0, 1, 0}, - {&__pyx_n_s_node, __pyx_k_node, sizeof(__pyx_k_node), 0, 0, 1, 1}, - {&__pyx_n_s_node_record_child, __pyx_k_node_record_child, sizeof(__pyx_k_node_record_child), 0, 0, 1, 1}, - {&__pyx_n_s_node_record_leaf, __pyx_k_node_record_leaf, sizeof(__pyx_k_node_record_leaf), 0, 0, 1, 1}, - {&__pyx_kp_s_node_shape_ellipse, __pyx_k_node_shape_ellipse, sizeof(__pyx_k_node_shape_ellipse), 0, 0, 1, 0}, - {&__pyx_n_s_nodedepht, __pyx_k_nodedepht, sizeof(__pyx_k_nodedepht), 0, 0, 1, 1}, - {&__pyx_kp_s_non_leaf_node_has_invalid_number, __pyx_k_non_leaf_node_has_invalid_number, sizeof(__pyx_k_non_leaf_node_has_invalid_number), 0, 0, 1, 0}, - {&__pyx_n_s_parent, __pyx_k_parent, sizeof(__pyx_k_parent), 0, 0, 1, 1}, - {&__pyx_n_s_pickle, __pyx_k_pickle, sizeof(__pyx_k_pickle), 0, 0, 1, 1}, - {&__pyx_n_s_point, __pyx_k_point, sizeof(__pyx_k_point), 0, 0, 1, 1}, - {&__pyx_n_s_pop, __pyx_k_pop, sizeof(__pyx_k_pop), 0, 0, 1, 1}, - {&__pyx_n_s_prepare, __pyx_k_prepare, sizeof(__pyx_k_prepare), 0, 0, 1, 1}, - {&__pyx_n_s_pyx_PickleError, __pyx_k_pyx_PickleError, sizeof(__pyx_k_pyx_PickleError), 0, 0, 1, 1}, - {&__pyx_n_s_pyx_checksum, __pyx_k_pyx_checksum, sizeof(__pyx_k_pyx_checksum), 0, 0, 1, 1}, - {&__pyx_n_s_pyx_result, __pyx_k_pyx_result, sizeof(__pyx_k_pyx_result), 0, 0, 1, 1}, - {&__pyx_n_s_pyx_state, __pyx_k_pyx_state, sizeof(__pyx_k_pyx_state), 0, 0, 1, 1}, - {&__pyx_n_s_pyx_type, __pyx_k_pyx_type, sizeof(__pyx_k_pyx_type), 0, 0, 1, 1}, - {&__pyx_n_s_pyx_unpickle_RTreeInfo, __pyx_k_pyx_unpickle_RTreeInfo, sizeof(__pyx_k_pyx_unpickle_RTreeInfo), 0, 0, 1, 1}, - {&__pyx_n_s_pyx_unpickle__ChildRecord, __pyx_k_pyx_unpickle__ChildRecord, sizeof(__pyx_k_pyx_unpickle__ChildRecord), 0, 0, 1, 1}, - {&__pyx_n_s_pyx_unpickle__Record, __pyx_k_pyx_unpickle__Record, sizeof(__pyx_k_pyx_unpickle__Record), 0, 0, 1, 1}, - {&__pyx_n_s_pyx_vtable, __pyx_k_pyx_vtable, sizeof(__pyx_k_pyx_vtable), 0, 0, 1, 1}, - {&__pyx_n_s_qualname, __pyx_k_qualname, sizeof(__pyx_k_qualname), 0, 0, 1, 1}, - {&__pyx_n_s_range, __pyx_k_range, sizeof(__pyx_k_range), 0, 0, 1, 1}, - {&__pyx_n_s_rec, __pyx_k_rec, sizeof(__pyx_k_rec), 0, 0, 1, 1}, - {&__pyx_n_s_record, __pyx_k_record, sizeof(__pyx_k_record), 0, 0, 1, 1}, - {&__pyx_n_s_reduce, __pyx_k_reduce, sizeof(__pyx_k_reduce), 0, 0, 1, 1}, - {&__pyx_n_s_reduce_cython, __pyx_k_reduce_cython, sizeof(__pyx_k_reduce_cython), 0, 0, 1, 1}, - {&__pyx_n_s_reduce_ex, __pyx_k_reduce_ex, sizeof(__pyx_k_reduce_ex), 0, 0, 1, 1}, - {&__pyx_n_s_remove, __pyx_k_remove, sizeof(__pyx_k_remove), 0, 0, 1, 1}, - {&__pyx_n_s_result, __pyx_k_result, sizeof(__pyx_k_result), 0, 0, 1, 1}, - {&__pyx_n_s_ret, __pyx_k_ret, sizeof(__pyx_k_ret), 0, 0, 1, 1}, - {&__pyx_n_s_rid, __pyx_k_rid, sizeof(__pyx_k_rid), 0, 0, 1, 1}, - {&__pyx_kp_s_root_must_have_at_least_2_record, __pyx_k_root_must_have_at_least_2_record, sizeof(__pyx_k_root_must_have_at_least_2_record), 0, 0, 1, 0}, - {&__pyx_n_s_rtree, __pyx_k_rtree, sizeof(__pyx_k_rtree), 0, 0, 1, 1}, - {&__pyx_n_s_search, __pyx_k_search, sizeof(__pyx_k_search), 0, 0, 1, 1}, - {&__pyx_n_s_search_surrounding, __pyx_k_search_surrounding, sizeof(__pyx_k_search_surrounding), 0, 0, 1, 1}, - {&__pyx_n_s_self, __pyx_k_self, sizeof(__pyx_k_self), 0, 0, 1, 1}, - {&__pyx_n_s_set_name, __pyx_k_set_name, sizeof(__pyx_k_set_name), 0, 0, 1, 1}, - {&__pyx_n_s_setstate, __pyx_k_setstate, sizeof(__pyx_k_setstate), 0, 0, 1, 1}, - {&__pyx_n_s_setstate_cython, __pyx_k_setstate_cython, sizeof(__pyx_k_setstate_cython), 0, 0, 1, 1}, - {&__pyx_n_s_spec, __pyx_k_spec, sizeof(__pyx_k_spec), 0, 0, 1, 1}, - {&__pyx_n_s_state, __pyx_k_state, sizeof(__pyx_k_state), 0, 0, 1, 1}, - {&__pyx_kp_s_stringsource, __pyx_k_stringsource, sizeof(__pyx_k_stringsource), 0, 0, 1, 0}, - {&__pyx_n_s_super, __pyx_k_super, sizeof(__pyx_k_super), 0, 0, 1, 1}, - {&__pyx_n_s_test, __pyx_k_test, sizeof(__pyx_k_test), 0, 0, 1, 1}, - {&__pyx_n_s_tinyr, __pyx_k_tinyr, sizeof(__pyx_k_tinyr), 0, 0, 1, 1}, - {&__pyx_n_u_tinyr, __pyx_k_tinyr, sizeof(__pyx_k_tinyr), 0, 1, 0, 1}, - {&__pyx_kp_s_tinyr_tinyr_pyx, __pyx_k_tinyr_tinyr_pyx, sizeof(__pyx_k_tinyr_tinyr_pyx), 0, 0, 1, 0}, - {&__pyx_n_s_tmp_coords, __pyx_k_tmp_coords, sizeof(__pyx_k_tmp_coords), 0, 0, 1, 1}, - {&__pyx_n_s_to_dot, __pyx_k_to_dot, sizeof(__pyx_k_to_dot), 0, 0, 1, 1}, - {&__pyx_n_s_update, __pyx_k_update, sizeof(__pyx_k_update), 0, 0, 1, 1}, - {&__pyx_n_s_use_setstate, __pyx_k_use_setstate, sizeof(__pyx_k_use_setstate), 0, 0, 1, 1}, - {&__pyx_n_s_valid, __pyx_k_valid, sizeof(__pyx_k_valid), 0, 0, 1, 1}, - {&__pyx_n_s_write, __pyx_k_write, sizeof(__pyx_k_write), 0, 0, 1, 1}, - {&__pyx_kp_s_wrong_combined_area_of_records_o, __pyx_k_wrong_combined_area_of_records_o, sizeof(__pyx_k_wrong_combined_area_of_records_o), 0, 0, 1, 0}, - {0, 0, 0, 0, 0, 0, 0} - }; - return __Pyx_InitStrings(__pyx_string_tab); -} -/* #### Code section: cached_builtins ### */ -static CYTHON_SMALL_CODE int __Pyx_InitCachedBuiltins(void) { - __pyx_builtin_range = __Pyx_GetBuiltinName(__pyx_n_s_range); if (!__pyx_builtin_range) __PYX_ERR(0, 86, __pyx_L1_error) - __pyx_builtin_NotImplemented = __Pyx_GetBuiltinName(__pyx_n_s_NotImplemented); if (!__pyx_builtin_NotImplemented) __PYX_ERR(0, 141, __pyx_L1_error) - __pyx_builtin_TypeError = __Pyx_GetBuiltinName(__pyx_n_s_TypeError); if (!__pyx_builtin_TypeError) __PYX_ERR(1, 2, __pyx_L1_error) - __pyx_builtin_ValueError = __Pyx_GetBuiltinName(__pyx_n_s_ValueError); if (!__pyx_builtin_ValueError) __PYX_ERR(0, 365, __pyx_L1_error) - __pyx_builtin_AttributeError = __Pyx_GetBuiltinName(__pyx_n_s_AttributeError); if (!__pyx_builtin_AttributeError) __PYX_ERR(0, 391, __pyx_L1_error) - __pyx_builtin_AssertionError = __Pyx_GetBuiltinName(__pyx_n_s_AssertionError); if (!__pyx_builtin_AssertionError) __PYX_ERR(0, 455, __pyx_L1_error) - __pyx_builtin_KeyError = __Pyx_GetBuiltinName(__pyx_n_s_KeyError); if (!__pyx_builtin_KeyError) __PYX_ERR(0, 544, __pyx_L1_error) - __pyx_builtin_IndexError = __Pyx_GetBuiltinName(__pyx_n_s_IndexError); if (!__pyx_builtin_IndexError) __PYX_ERR(0, 909, __pyx_L1_error) - __pyx_builtin_StopIteration = __Pyx_GetBuiltinName(__pyx_n_s_StopIteration); if (!__pyx_builtin_StopIteration) __PYX_ERR(0, 910, __pyx_L1_error) - __pyx_builtin_id = __Pyx_GetBuiltinName(__pyx_n_s_id); if (!__pyx_builtin_id) __PYX_ERR(0, 1076, __pyx_L1_error) - __pyx_builtin_OverflowError = __Pyx_GetBuiltinName(__pyx_n_s_OverflowError); if (!__pyx_builtin_OverflowError) __PYX_ERR(1, 83, __pyx_L1_error) - __pyx_builtin_enumerate = __Pyx_GetBuiltinName(__pyx_n_s_enumerate); if (!__pyx_builtin_enumerate) __PYX_ERR(1, 86, __pyx_L1_error) - return 0; - __pyx_L1_error:; - return -1; -} -/* #### Code section: cached_constants ### */ - -static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0); - - /* "tinyr.pyx":358 - * - * def __cinit__(self): - * self.root = _Node(None) # <<<<<<<<<<<<<< - * self.root.is_leaf = True - * self._leaf_level = 0 - */ - __pyx_tuple_ = PyTuple_Pack(1, Py_None); if (unlikely(!__pyx_tuple_)) __PYX_ERR(0, 358, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple_); - __Pyx_GIVEREF(__pyx_tuple_); - - /* "tinyr.pyx":365 - * def __init__(self, interleaved=True, max_cap=5, min_cap=2): - * if min_cap > max_cap/2.: - * raise ValueError('for min/max capacities, it\'s required that min_cap <= max_cap/2.0') # <<<<<<<<<<<<<< - * - * if interleaved: - */ - __pyx_tuple__2 = PyTuple_Pack(1, __pyx_kp_s_for_min_max_capacities_it_s_requ); if (unlikely(!__pyx_tuple__2)) __PYX_ERR(0, 365, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__2); - __Pyx_GIVEREF(__pyx_tuple__2); - - /* "tinyr.pyx":391 - * elif len(item) == 4: - * return self.search(item) - * raise AttributeError('indexing RTree only possible with rectangle or point (x, y)') # <<<<<<<<<<<<<< - * - * def iterkeys(self): - */ - __pyx_tuple__3 = PyTuple_Pack(1, __pyx_kp_s_indexing_RTree_only_possible_wit); if (unlikely(!__pyx_tuple__3)) __PYX_ERR(0, 391, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__3); - __Pyx_GIVEREF(__pyx_tuple__3); - - /* "(tree fragment)":4 - * cdef object __pyx_PickleError - * cdef object __pyx_result - * if __pyx_checksum not in (0xd6fae5e, 0xd6626c4, 0xfb1b8c2): # <<<<<<<<<<<<<< - * from pickle import PickleError as __pyx_PickleError - * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xd6fae5e, 0xd6626c4, 0xfb1b8c2) = (coords))" % __pyx_checksum - */ - __pyx_tuple__6 = PyTuple_Pack(3, __pyx_int_225422942, __pyx_int_224798404, __pyx_int_263305410); if (unlikely(!__pyx_tuple__6)) __PYX_ERR(1, 4, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__6); - __Pyx_GIVEREF(__pyx_tuple__6); - __pyx_tuple__8 = PyTuple_Pack(3, __pyx_int_165148252, __pyx_int_178991788, __pyx_int_212777770); if (unlikely(!__pyx_tuple__8)) __PYX_ERR(1, 4, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__8); - __Pyx_GIVEREF(__pyx_tuple__8); - __pyx_tuple__9 = PyTuple_Pack(3, __pyx_int_229190861, __pyx_int_68185080, __pyx_int_161691044); if (unlikely(!__pyx_tuple__9)) __PYX_ERR(1, 4, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__9); - __Pyx_GIVEREF(__pyx_tuple__9); - - /* "(tree fragment)":1 - * def __reduce_cython__(self): # <<<<<<<<<<<<<< - * cdef tuple state - * cdef object _dict - */ - __pyx_tuple__11 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_state, __pyx_n_s_dict_2, __pyx_n_s_use_setstate); if (unlikely(!__pyx_tuple__11)) __PYX_ERR(1, 1, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__11); - __Pyx_GIVEREF(__pyx_tuple__11); - __pyx_codeobj__12 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__11, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__12)) __PYX_ERR(1, 1, __pyx_L1_error) - - /* "(tree fragment)":16 - * else: - * return __pyx_unpickle__Record, (type(self), 0xd6fae5e, state) - * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< - * __pyx_unpickle__Record__set_state(self, __pyx_state) - */ - __pyx_tuple__13 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_pyx_state); if (unlikely(!__pyx_tuple__13)) __PYX_ERR(1, 16, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__13); - __Pyx_GIVEREF(__pyx_tuple__13); - __pyx_codeobj__14 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 16, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__14)) __PYX_ERR(1, 16, __pyx_L1_error) - - /* "(tree fragment)":1 - * def __reduce_cython__(self): # <<<<<<<<<<<<<< - * cdef tuple state - * cdef object _dict - */ - __pyx_codeobj__15 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__11, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__15)) __PYX_ERR(1, 1, __pyx_L1_error) - - /* "(tree fragment)":16 - * else: - * return __pyx_unpickle__ChildRecord, (type(self), 0x9d7f65c, state) - * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< - * __pyx_unpickle__ChildRecord__set_state(self, __pyx_state) - */ - __pyx_codeobj__16 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 16, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__16)) __PYX_ERR(1, 16, __pyx_L1_error) - - /* "(tree fragment)":1 - * def __reduce_cython__(self): # <<<<<<<<<<<<<< - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): - */ - __pyx_tuple__17 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__17)) __PYX_ERR(1, 1, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__17); - __Pyx_GIVEREF(__pyx_tuple__17); - __pyx_codeobj__18 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__17, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__18)) __PYX_ERR(1, 1, __pyx_L1_error) - - /* "(tree fragment)":3 - * def __reduce_cython__(self): - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - */ - __pyx_codeobj__19 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__19)) __PYX_ERR(1, 3, __pyx_L1_error) - - /* "(tree fragment)":1 - * def __reduce_cython__(self): # <<<<<<<<<<<<<< - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): - */ - __pyx_codeobj__20 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__17, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__20)) __PYX_ERR(1, 1, __pyx_L1_error) - - /* "(tree fragment)":3 - * def __reduce_cython__(self): - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - */ - __pyx_codeobj__21 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__21)) __PYX_ERR(1, 3, __pyx_L1_error) - - /* "tinyr.pyx":393 - * raise AttributeError('indexing RTree only possible with rectangle or point (x, y)') - * - * def iterkeys(self): # <<<<<<<<<<<<<< - * return _KeysIter(self) - * - */ - __pyx_codeobj__22 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__17, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tinyr_tinyr_pyx, __pyx_n_s_iterkeys, 393, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__22)) __PYX_ERR(0, 393, __pyx_L1_error) - - /* "tinyr.pyx":396 - * return _KeysIter(self) - * - * def itervalues(self): # <<<<<<<<<<<<<< - * return _ValuesIter(self) - * - */ - __pyx_codeobj__23 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__17, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tinyr_tinyr_pyx, __pyx_n_s_itervalues, 396, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__23)) __PYX_ERR(0, 396, __pyx_L1_error) - - /* "tinyr.pyx":399 - * return _ValuesIter(self) - * - * def iteritems(self): # <<<<<<<<<<<<<< - * return _ItemsIter(self) - * - */ - __pyx_codeobj__24 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__17, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tinyr_tinyr_pyx, __pyx_n_s_iteritems, 399, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__24)) __PYX_ERR(0, 399, __pyx_L1_error) - - /* "tinyr.pyx":402 - * return _ItemsIter(self) - * - * def get_info(self): # <<<<<<<<<<<<<< - * return RTreeInfo(self) - * - */ - __pyx_codeobj__25 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__17, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tinyr_tinyr_pyx, __pyx_n_s_get_info, 402, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__25)) __PYX_ERR(0, 402, __pyx_L1_error) - - /* "tinyr.pyx":405 - * return RTreeInfo(self) - * - * def insert(self, object key, object coords): # <<<<<<<<<<<<<< - * '''Insert an item. - * - */ - __pyx_tuple__26 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_key, __pyx_n_s_coords, __pyx_n_s_cr, __pyx_n_s_L); if (unlikely(!__pyx_tuple__26)) __PYX_ERR(0, 405, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__26); - __Pyx_GIVEREF(__pyx_tuple__26); - __pyx_codeobj__27 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__26, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tinyr_tinyr_pyx, __pyx_n_s_insert, 405, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__27)) __PYX_ERR(0, 405, __pyx_L1_error) - - /* "tinyr.pyx":431 - * - * - * def search(self, object coords): # <<<<<<<<<<<<<< - * '''Search overlapping items. - * - */ - __pyx_tuple__28 = PyTuple_Pack(7, __pyx_n_s_self, __pyx_n_s_coords, __pyx_n_s_node, __pyx_n_s_cr, __pyx_n_s_coords_a, __pyx_n_s_leafnodes, __pyx_n_s_result); if (unlikely(!__pyx_tuple__28)) __PYX_ERR(0, 431, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__28); - __Pyx_GIVEREF(__pyx_tuple__28); - __pyx_codeobj__29 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__28, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tinyr_tinyr_pyx, __pyx_n_s_search, 431, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__29)) __PYX_ERR(0, 431, __pyx_L1_error) - - /* "tinyr.pyx":462 - * return result - * - * def copy(self): # <<<<<<<<<<<<<< - * cdef: - * RTree ret - */ - __pyx_tuple__30 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_ret); if (unlikely(!__pyx_tuple__30)) __PYX_ERR(0, 462, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__30); - __Pyx_GIVEREF(__pyx_tuple__30); - __pyx_codeobj__31 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__30, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tinyr_tinyr_pyx, __pyx_n_s_copy, 462, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__31)) __PYX_ERR(0, 462, __pyx_L1_error) - - /* "tinyr.pyx":472 - * return ret - * - * def search_surrounding(self, point): # <<<<<<<<<<<<<< - * '''Search items that surround a point. - * - */ - __pyx_tuple__32 = PyTuple_Pack(7, __pyx_n_s_self, __pyx_n_s_point, __pyx_n_s_node, __pyx_n_s_cr, __pyx_n_s_coords_a, __pyx_n_s_leafnodes, __pyx_n_s_result); if (unlikely(!__pyx_tuple__32)) __PYX_ERR(0, 472, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__32); - __Pyx_GIVEREF(__pyx_tuple__32); - __pyx_codeobj__33 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__32, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tinyr_tinyr_pyx, __pyx_n_s_search_surrounding, 472, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__33)) __PYX_ERR(0, 472, __pyx_L1_error) - - /* "tinyr.pyx":524 - * return 0 - * - * def remove(self, identifier, coords): # <<<<<<<<<<<<<< - * '''Delete an item - * - */ - __pyx_tuple__34 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_identifier, __pyx_n_s_coords, __pyx_n_s_leaf, __pyx_n_s_coords_a); if (unlikely(!__pyx_tuple__34)) __PYX_ERR(0, 524, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__34); - __Pyx_GIVEREF(__pyx_tuple__34); - __pyx_codeobj__35 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__34, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tinyr_tinyr_pyx, __pyx_n_s_remove, 524, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__35)) __PYX_ERR(0, 524, __pyx_L1_error) - - /* "tinyr.pyx":806 - * - * - * def valid(self): # <<<<<<<<<<<<<< - * # numbers in comments refer to invariant properties of an RTree - taken from [Gut84] - * cdef: - */ - __pyx_tuple__36 = PyTuple_Pack(12, __pyx_n_s_self, __pyx_n_s_tmp_coords, __pyx_n_s_node, __pyx_n_s_n, __pyx_n_s_depth, __pyx_n_s_item_count, __pyx_n_s_nodedepht, __pyx_n_s_leafnodes_and_depth, __pyx_n_s_rec, __pyx_n_s_ir, __pyx_n_s_d_2, __pyx_n_s_leaf); if (unlikely(!__pyx_tuple__36)) __PYX_ERR(0, 806, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__36); - __Pyx_GIVEREF(__pyx_tuple__36); - __pyx_codeobj__37 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 12, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__36, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tinyr_tinyr_pyx, __pyx_n_s_valid, 806, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__37)) __PYX_ERR(0, 806, __pyx_L1_error) - - /* "(tree fragment)":1 - * def __reduce_cython__(self): # <<<<<<<<<<<<<< - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): - */ - __pyx_codeobj__38 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__17, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__38)) __PYX_ERR(1, 1, __pyx_L1_error) - - /* "(tree fragment)":3 - * def __reduce_cython__(self): - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - */ - __pyx_codeobj__39 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__39)) __PYX_ERR(1, 3, __pyx_L1_error) - - /* "(tree fragment)":1 - * def __reduce_cython__(self): # <<<<<<<<<<<<<< - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): - */ - __pyx_codeobj__40 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__17, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__40)) __PYX_ERR(1, 1, __pyx_L1_error) - - /* "(tree fragment)":3 - * def __reduce_cython__(self): - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - */ - __pyx_codeobj__41 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__41)) __PYX_ERR(1, 3, __pyx_L1_error) - - /* "(tree fragment)":1 - * def __reduce_cython__(self): # <<<<<<<<<<<<<< - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): - */ - __pyx_codeobj__42 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__17, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__42)) __PYX_ERR(1, 1, __pyx_L1_error) - - /* "(tree fragment)":3 - * def __reduce_cython__(self): - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - */ - __pyx_codeobj__43 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__43)) __PYX_ERR(1, 3, __pyx_L1_error) - - /* "(tree fragment)":1 - * def __reduce_cython__(self): # <<<<<<<<<<<<<< - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): - */ - __pyx_codeobj__44 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__17, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__44)) __PYX_ERR(1, 1, __pyx_L1_error) - - /* "(tree fragment)":3 - * def __reduce_cython__(self): - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - */ - __pyx_codeobj__45 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__45)) __PYX_ERR(1, 3, __pyx_L1_error) - - /* "(tree fragment)":1 - * def __reduce_cython__(self): # <<<<<<<<<<<<<< - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): - */ - __pyx_codeobj__46 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__17, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__46)) __PYX_ERR(1, 1, __pyx_L1_error) - - /* "(tree fragment)":3 - * def __reduce_cython__(self): - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - */ - __pyx_codeobj__47 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__47)) __PYX_ERR(1, 3, __pyx_L1_error) - - /* "(tree fragment)":1 - * def __reduce_cython__(self): # <<<<<<<<<<<<<< - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): - */ - __pyx_codeobj__48 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__17, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__48)) __PYX_ERR(1, 1, __pyx_L1_error) - - /* "(tree fragment)":3 - * def __reduce_cython__(self): - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - */ - __pyx_codeobj__49 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__49)) __PYX_ERR(1, 3, __pyx_L1_error) - - /* "(tree fragment)":1 - * def __reduce_cython__(self): # <<<<<<<<<<<<<< - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): - */ - __pyx_codeobj__50 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__17, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__50)) __PYX_ERR(1, 1, __pyx_L1_error) - - /* "(tree fragment)":3 - * def __reduce_cython__(self): - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - */ - __pyx_codeobj__51 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__51)) __PYX_ERR(1, 3, __pyx_L1_error) - - /* "(tree fragment)":1 - * def __reduce_cython__(self): # <<<<<<<<<<<<<< - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): - */ - __pyx_codeobj__52 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__17, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__52)) __PYX_ERR(1, 1, __pyx_L1_error) - - /* "(tree fragment)":3 - * def __reduce_cython__(self): - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - */ - __pyx_codeobj__53 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__53)) __PYX_ERR(1, 3, __pyx_L1_error) - - /* "(tree fragment)":1 - * def __reduce_cython__(self): # <<<<<<<<<<<<<< - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): - */ - __pyx_codeobj__54 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__17, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__54)) __PYX_ERR(1, 1, __pyx_L1_error) - - /* "(tree fragment)":3 - * def __reduce_cython__(self): - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - */ - __pyx_codeobj__55 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__55)) __PYX_ERR(1, 3, __pyx_L1_error) - - /* "tinyr.pyx":1022 - * self.rtree = rtree - * - * def iter_rectangles(self): # <<<<<<<<<<<<<< - * '''Iterate over key coordinates and combined frames. - * - */ - __pyx_codeobj__56 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__17, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tinyr_tinyr_pyx, __pyx_n_s_iter_rectangles, 1022, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__56)) __PYX_ERR(0, 1022, __pyx_L1_error) - - /* "tinyr.pyx":1058 - * return coords[3]-coords[1] - * - * def to_dot(self, filelike): # <<<<<<<<<<<<<< - * '''Writes simple dot-code into filelike that represents the tree structure.''' - * cdef: - */ - __pyx_tuple__57 = PyTuple_Pack(13, __pyx_n_s_self, __pyx_n_s_filelike, __pyx_n_s_node, __pyx_n_s_ir, __pyx_n_s_cr, __pyx_n_s_level, __pyx_n_s_nid, __pyx_n_s_rid, __pyx_n_s_chid, __pyx_n_s_lid, __pyx_n_s_node_record_leaf, __pyx_n_s_node_record_child, __pyx_n_s_record); if (unlikely(!__pyx_tuple__57)) __PYX_ERR(0, 1058, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__57); - __Pyx_GIVEREF(__pyx_tuple__57); - __pyx_codeobj__58 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 13, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__57, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tinyr_tinyr_pyx, __pyx_n_s_to_dot, 1058, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__58)) __PYX_ERR(0, 1058, __pyx_L1_error) - - /* "(tree fragment)":1 - * def __reduce_cython__(self): # <<<<<<<<<<<<<< - * cdef tuple state - * cdef object _dict - */ - __pyx_codeobj__59 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__11, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__59)) __PYX_ERR(1, 1, __pyx_L1_error) - - /* "(tree fragment)":16 - * else: - * return __pyx_unpickle_RTreeInfo, (type(self), 0xda92ccd, state) - * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< - * __pyx_unpickle_RTreeInfo__set_state(self, __pyx_state) - */ - __pyx_codeobj__60 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 16, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__60)) __PYX_ERR(1, 16, __pyx_L1_error) - - /* "(tree fragment)":1 - * def __pyx_unpickle__Record(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< - * cdef object __pyx_PickleError - * cdef object __pyx_result - */ - __pyx_tuple__61 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__61)) __PYX_ERR(1, 1, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__61); - __Pyx_GIVEREF(__pyx_tuple__61); - __pyx_codeobj__62 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__61, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle__Record, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__62)) __PYX_ERR(1, 1, __pyx_L1_error) - __pyx_codeobj__63 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__61, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle__ChildRecord, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__63)) __PYX_ERR(1, 1, __pyx_L1_error) - __pyx_codeobj__64 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__61, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_RTreeInfo, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__64)) __PYX_ERR(1, 1, __pyx_L1_error) - __Pyx_RefNannyFinishContext(); - return 0; - __pyx_L1_error:; - __Pyx_RefNannyFinishContext(); - return -1; -} -/* #### Code section: init_constants ### */ - -static CYTHON_SMALL_CODE int __Pyx_InitConstants(void) { - __pyx_umethod_PyList_Type_pop.type = (PyObject*)&PyList_Type; - __pyx_umethod_PyList_Type_pop.method_name = &__pyx_n_s_pop; - __pyx_umethod_PyList_Type_remove.type = (PyObject*)&PyList_Type; - __pyx_umethod_PyList_Type_remove.method_name = &__pyx_n_s_remove; - if (__Pyx_CreateStringTabAndInitStrings() < 0) __PYX_ERR(0, 1, __pyx_L1_error); - __pyx_float_2_ = PyFloat_FromDouble(2.); if (unlikely(!__pyx_float_2_)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_int_0 = PyInt_FromLong(0); if (unlikely(!__pyx_int_0)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_int_2 = PyInt_FromLong(2); if (unlikely(!__pyx_int_2)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_int_5 = PyInt_FromLong(5); if (unlikely(!__pyx_int_5)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_int_68185080 = PyInt_FromLong(68185080L); if (unlikely(!__pyx_int_68185080)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_int_161691044 = PyInt_FromLong(161691044L); if (unlikely(!__pyx_int_161691044)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_int_165148252 = PyInt_FromLong(165148252L); if (unlikely(!__pyx_int_165148252)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_int_178991788 = PyInt_FromLong(178991788L); if (unlikely(!__pyx_int_178991788)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_int_212777770 = PyInt_FromLong(212777770L); if (unlikely(!__pyx_int_212777770)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_int_224798404 = PyInt_FromLong(224798404L); if (unlikely(!__pyx_int_224798404)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_int_225422942 = PyInt_FromLong(225422942L); if (unlikely(!__pyx_int_225422942)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_int_229190861 = PyInt_FromLong(229190861L); if (unlikely(!__pyx_int_229190861)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_int_263305410 = PyInt_FromLong(263305410L); if (unlikely(!__pyx_int_263305410)) __PYX_ERR(0, 1, __pyx_L1_error) - return 0; - __pyx_L1_error:; - return -1; -} -/* #### Code section: init_globals ### */ - -static CYTHON_SMALL_CODE int __Pyx_InitGlobals(void) { - /* AssertionsEnabled.init */ - if (likely(__Pyx_init_assertions_enabled() == 0)); else - -if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1, __pyx_L1_error) - - return 0; - __pyx_L1_error:; - return -1; -} -/* #### Code section: init_module ### */ - -static CYTHON_SMALL_CODE int __Pyx_modinit_global_init_code(void); /*proto*/ -static CYTHON_SMALL_CODE int __Pyx_modinit_variable_export_code(void); /*proto*/ -static CYTHON_SMALL_CODE int __Pyx_modinit_function_export_code(void); /*proto*/ -static CYTHON_SMALL_CODE int __Pyx_modinit_type_init_code(void); /*proto*/ -static CYTHON_SMALL_CODE int __Pyx_modinit_type_import_code(void); /*proto*/ -static CYTHON_SMALL_CODE int __Pyx_modinit_variable_import_code(void); /*proto*/ -static CYTHON_SMALL_CODE int __Pyx_modinit_function_import_code(void); /*proto*/ - -static int __Pyx_modinit_global_init_code(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_modinit_global_init_code", 0); - /*--- Global init code ---*/ - __Pyx_RefNannyFinishContext(); - return 0; -} - -static int __Pyx_modinit_variable_export_code(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_modinit_variable_export_code", 0); - /*--- Variable export code ---*/ - __Pyx_RefNannyFinishContext(); - return 0; -} - -static int __Pyx_modinit_function_export_code(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_modinit_function_export_code", 0); - /*--- Function export code ---*/ - __Pyx_RefNannyFinishContext(); - return 0; -} - -static int __Pyx_modinit_type_init_code(void) { - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__Pyx_modinit_type_init_code", 0); - /*--- Type init code ---*/ - __pyx_vtabptr_5tinyr__Record = &__pyx_vtable_5tinyr__Record; - __pyx_vtable_5tinyr__Record.overlaps = (int (*)(struct __pyx_obj_5tinyr__Record *, __pyx_t_5tinyr_Dfloat *))__pyx_f_5tinyr_7_Record_overlaps; - __pyx_vtable_5tinyr__Record.copy_coords_to = (void (*)(struct __pyx_obj_5tinyr__Record *, __pyx_t_5tinyr_Dfloat *))__pyx_f_5tinyr_7_Record_copy_coords_to; - __pyx_vtable_5tinyr__Record.copy = (struct __pyx_obj_5tinyr__Record *(*)(struct __pyx_obj_5tinyr__Record *, struct __pyx_obj_5tinyr__Node *))__pyx_f_5tinyr_7_Record_copy; - #if CYTHON_USE_TYPE_SPECS - __pyx_ptype_5tinyr__Record = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_5tinyr__Record_spec, NULL); if (unlikely(!__pyx_ptype_5tinyr__Record)) __PYX_ERR(0, 129, __pyx_L1_error) - if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_5tinyr__Record_spec, __pyx_ptype_5tinyr__Record) < 0) __PYX_ERR(0, 129, __pyx_L1_error) - #else - __pyx_ptype_5tinyr__Record = &__pyx_type_5tinyr__Record; - #endif - #if !CYTHON_COMPILING_IN_LIMITED_API - #endif - #if !CYTHON_USE_TYPE_SPECS - if (__Pyx_PyType_Ready(__pyx_ptype_5tinyr__Record) < 0) __PYX_ERR(0, 129, __pyx_L1_error) - #endif - #if PY_MAJOR_VERSION < 3 - __pyx_ptype_5tinyr__Record->tp_print = 0; - #endif - #if !CYTHON_COMPILING_IN_LIMITED_API - if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_5tinyr__Record->tp_dictoffset && __pyx_ptype_5tinyr__Record->tp_getattro == PyObject_GenericGetAttr)) { - __pyx_ptype_5tinyr__Record->tp_getattro = __Pyx_PyObject_GenericGetAttr; - } - #endif - if (__Pyx_SetVtable(__pyx_ptype_5tinyr__Record, __pyx_vtabptr_5tinyr__Record) < 0) __PYX_ERR(0, 129, __pyx_L1_error) - #if !CYTHON_COMPILING_IN_LIMITED_API - if (__Pyx_MergeVtables(__pyx_ptype_5tinyr__Record) < 0) __PYX_ERR(0, 129, __pyx_L1_error) - #endif - if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Record, (PyObject *) __pyx_ptype_5tinyr__Record) < 0) __PYX_ERR(0, 129, __pyx_L1_error) - #if !CYTHON_COMPILING_IN_LIMITED_API - if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_5tinyr__Record) < 0) __PYX_ERR(0, 129, __pyx_L1_error) - #endif - __pyx_vtabptr_5tinyr__ChildRecord = &__pyx_vtable_5tinyr__ChildRecord; - __pyx_vtable_5tinyr__ChildRecord.__pyx_base = *__pyx_vtabptr_5tinyr__Record; - __pyx_vtable_5tinyr__ChildRecord.__pyx_base.copy = (struct __pyx_obj_5tinyr__Record *(*)(struct __pyx_obj_5tinyr__Record *, struct __pyx_obj_5tinyr__Node *))__pyx_f_5tinyr_12_ChildRecord_copy; - #if CYTHON_USE_TYPE_SPECS - __pyx_t_1 = PyTuple_Pack(1, (PyObject *)__pyx_ptype_5tinyr__Record); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 143, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_ptype_5tinyr__ChildRecord = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_5tinyr__ChildRecord_spec, __pyx_t_1); - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - if (unlikely(!__pyx_ptype_5tinyr__ChildRecord)) __PYX_ERR(0, 143, __pyx_L1_error) - if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_5tinyr__ChildRecord_spec, __pyx_ptype_5tinyr__ChildRecord) < 0) __PYX_ERR(0, 143, __pyx_L1_error) - #else - __pyx_ptype_5tinyr__ChildRecord = &__pyx_type_5tinyr__ChildRecord; - #endif - #if !CYTHON_COMPILING_IN_LIMITED_API - __pyx_ptype_5tinyr__ChildRecord->tp_base = __pyx_ptype_5tinyr__Record; - #endif - #if !CYTHON_USE_TYPE_SPECS - if (__Pyx_PyType_Ready(__pyx_ptype_5tinyr__ChildRecord) < 0) __PYX_ERR(0, 143, __pyx_L1_error) - #endif - #if PY_MAJOR_VERSION < 3 - __pyx_ptype_5tinyr__ChildRecord->tp_print = 0; - #endif - #if !CYTHON_COMPILING_IN_LIMITED_API - if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_5tinyr__ChildRecord->tp_dictoffset && __pyx_ptype_5tinyr__ChildRecord->tp_getattro == PyObject_GenericGetAttr)) { - __pyx_ptype_5tinyr__ChildRecord->tp_getattro = __Pyx_PyObject_GenericGetAttr; - } - #endif - if (__Pyx_SetVtable(__pyx_ptype_5tinyr__ChildRecord, __pyx_vtabptr_5tinyr__ChildRecord) < 0) __PYX_ERR(0, 143, __pyx_L1_error) - #if !CYTHON_COMPILING_IN_LIMITED_API - if (__Pyx_MergeVtables(__pyx_ptype_5tinyr__ChildRecord) < 0) __PYX_ERR(0, 143, __pyx_L1_error) - #endif - if (PyObject_SetAttr(__pyx_m, __pyx_n_s_ChildRecord, (PyObject *) __pyx_ptype_5tinyr__ChildRecord) < 0) __PYX_ERR(0, 143, __pyx_L1_error) - #if !CYTHON_COMPILING_IN_LIMITED_API - if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_5tinyr__ChildRecord) < 0) __PYX_ERR(0, 143, __pyx_L1_error) - #endif - __pyx_vtabptr_5tinyr__InnerRecord = &__pyx_vtable_5tinyr__InnerRecord; - __pyx_vtable_5tinyr__InnerRecord.__pyx_base = *__pyx_vtabptr_5tinyr__Record; - __pyx_vtable_5tinyr__InnerRecord.__pyx_base.copy = (struct __pyx_obj_5tinyr__Record *(*)(struct __pyx_obj_5tinyr__Record *, struct __pyx_obj_5tinyr__Node *))__pyx_f_5tinyr_12_InnerRecord_copy; - #if CYTHON_USE_TYPE_SPECS - __pyx_t_1 = PyTuple_Pack(1, (PyObject *)__pyx_ptype_5tinyr__Record); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 158, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_ptype_5tinyr__InnerRecord = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_5tinyr__InnerRecord_spec, __pyx_t_1); - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - if (unlikely(!__pyx_ptype_5tinyr__InnerRecord)) __PYX_ERR(0, 158, __pyx_L1_error) - if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_5tinyr__InnerRecord_spec, __pyx_ptype_5tinyr__InnerRecord) < 0) __PYX_ERR(0, 158, __pyx_L1_error) - #else - __pyx_ptype_5tinyr__InnerRecord = &__pyx_type_5tinyr__InnerRecord; - #endif - #if !CYTHON_COMPILING_IN_LIMITED_API - __pyx_ptype_5tinyr__InnerRecord->tp_base = __pyx_ptype_5tinyr__Record; - #endif - #if !CYTHON_USE_TYPE_SPECS - if (__Pyx_PyType_Ready(__pyx_ptype_5tinyr__InnerRecord) < 0) __PYX_ERR(0, 158, __pyx_L1_error) - #endif - #if PY_MAJOR_VERSION < 3 - __pyx_ptype_5tinyr__InnerRecord->tp_print = 0; - #endif - #if !CYTHON_COMPILING_IN_LIMITED_API - if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_5tinyr__InnerRecord->tp_dictoffset && __pyx_ptype_5tinyr__InnerRecord->tp_getattro == PyObject_GenericGetAttr)) { - __pyx_ptype_5tinyr__InnerRecord->tp_getattro = __Pyx_PyObject_GenericGetAttr; - } - #endif - if (__Pyx_SetVtable(__pyx_ptype_5tinyr__InnerRecord, __pyx_vtabptr_5tinyr__InnerRecord) < 0) __PYX_ERR(0, 158, __pyx_L1_error) - #if !CYTHON_COMPILING_IN_LIMITED_API - if (__Pyx_MergeVtables(__pyx_ptype_5tinyr__InnerRecord) < 0) __PYX_ERR(0, 158, __pyx_L1_error) - #endif - if (PyObject_SetAttr(__pyx_m, __pyx_n_s_InnerRecord, (PyObject *) __pyx_ptype_5tinyr__InnerRecord) < 0) __PYX_ERR(0, 158, __pyx_L1_error) - #if !CYTHON_COMPILING_IN_LIMITED_API - if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_5tinyr__InnerRecord) < 0) __PYX_ERR(0, 158, __pyx_L1_error) - #endif - __pyx_vtabptr_5tinyr__Node = &__pyx_vtable_5tinyr__Node; - __pyx_vtable_5tinyr__Node.copy = (struct __pyx_obj_5tinyr__Node *(*)(struct __pyx_obj_5tinyr__Node *, struct __pyx_obj_5tinyr__Node *))__pyx_f_5tinyr_5_Node_copy; - __pyx_vtable_5tinyr__Node.common_boundaries = (void (*)(struct __pyx_obj_5tinyr__Node *, __pyx_t_5tinyr_Dfloat *))__pyx_f_5tinyr_5_Node_common_boundaries; - __pyx_vtable_5tinyr__Node.choose_subtree_least_enlargement = (struct __pyx_obj_5tinyr__Record *(*)(struct __pyx_obj_5tinyr__Node *, struct __pyx_obj_5tinyr__Record *))__pyx_f_5tinyr_5_Node_choose_subtree_least_enlargement; - __pyx_vtable_5tinyr__Node.find_overlapping_leafs_recursive = (void (*)(struct __pyx_obj_5tinyr__Node *, PyObject *, __pyx_t_5tinyr_Dfloat *))__pyx_f_5tinyr_5_Node_find_overlapping_leafs_recursive; - __pyx_vtable_5tinyr__Node.addChild = (void (*)(struct __pyx_obj_5tinyr__Node *, struct __pyx_obj_5tinyr__Node *))__pyx_f_5tinyr_5_Node_addChild; - #if CYTHON_USE_TYPE_SPECS - __pyx_ptype_5tinyr__Node = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_5tinyr__Node_spec, NULL); if (unlikely(!__pyx_ptype_5tinyr__Node)) __PYX_ERR(0, 173, __pyx_L1_error) - if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_5tinyr__Node_spec, __pyx_ptype_5tinyr__Node) < 0) __PYX_ERR(0, 173, __pyx_L1_error) - #else - __pyx_ptype_5tinyr__Node = &__pyx_type_5tinyr__Node; - #endif - #if !CYTHON_COMPILING_IN_LIMITED_API - #endif - #if !CYTHON_USE_TYPE_SPECS - if (__Pyx_PyType_Ready(__pyx_ptype_5tinyr__Node) < 0) __PYX_ERR(0, 173, __pyx_L1_error) - #endif - #if PY_MAJOR_VERSION < 3 - __pyx_ptype_5tinyr__Node->tp_print = 0; - #endif - #if !CYTHON_COMPILING_IN_LIMITED_API - if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_5tinyr__Node->tp_dictoffset && __pyx_ptype_5tinyr__Node->tp_getattro == PyObject_GenericGetAttr)) { - __pyx_ptype_5tinyr__Node->tp_getattro = __Pyx_PyObject_GenericGetAttr; - } - #endif - if (__Pyx_SetVtable(__pyx_ptype_5tinyr__Node, __pyx_vtabptr_5tinyr__Node) < 0) __PYX_ERR(0, 173, __pyx_L1_error) - #if !CYTHON_COMPILING_IN_LIMITED_API - if (__Pyx_MergeVtables(__pyx_ptype_5tinyr__Node) < 0) __PYX_ERR(0, 173, __pyx_L1_error) - #endif - if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Node, (PyObject *) __pyx_ptype_5tinyr__Node) < 0) __PYX_ERR(0, 173, __pyx_L1_error) - #if !CYTHON_COMPILING_IN_LIMITED_API - if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_5tinyr__Node) < 0) __PYX_ERR(0, 173, __pyx_L1_error) - #endif - __pyx_vtabptr_5tinyr_RTree = &__pyx_vtable_5tinyr_RTree; - __pyx_vtable_5tinyr_RTree.insert_at_node = (int (*)(struct __pyx_obj_5tinyr_RTree *, struct __pyx_obj_5tinyr__Record *, struct __pyx_obj_5tinyr__Node *))__pyx_f_5tinyr_5RTree_insert_at_node; - __pyx_vtable_5tinyr_RTree.after_remove = (void (*)(struct __pyx_obj_5tinyr_RTree *, struct __pyx_obj_5tinyr__Node *))__pyx_f_5tinyr_5RTree_after_remove; - __pyx_vtable_5tinyr_RTree.FindLeaf_and_remove = (struct __pyx_obj_5tinyr__Node *(*)(struct __pyx_obj_5tinyr_RTree *, PyObject *, __pyx_t_5tinyr_Dfloat *))__pyx_f_5tinyr_5RTree_FindLeaf_and_remove; - __pyx_vtable_5tinyr_RTree.CondenseTree = (int (*)(struct __pyx_obj_5tinyr_RTree *, struct __pyx_obj_5tinyr__Node *))__pyx_f_5tinyr_5RTree_CondenseTree; - __pyx_vtable_5tinyr_RTree.find_inner_node = (struct __pyx_obj_5tinyr__Node *(*)(struct __pyx_obj_5tinyr_RTree *, struct __pyx_obj_5tinyr__InnerRecord *))__pyx_f_5tinyr_5RTree_find_inner_node; - __pyx_vtable_5tinyr_RTree.subtree_len = (__pyx_t_5tinyr_Duint (*)(struct __pyx_obj_5tinyr_RTree *, struct __pyx_obj_5tinyr__InnerRecord *))__pyx_f_5tinyr_5RTree_subtree_len; - __pyx_vtable_5tinyr_RTree.is_full = (int (*)(struct __pyx_obj_5tinyr_RTree *, struct __pyx_obj_5tinyr__Node *))__pyx_f_5tinyr_5RTree_is_full; - __pyx_vtable_5tinyr_RTree._ChooseLeaf = (struct __pyx_obj_5tinyr__Node *(*)(struct __pyx_obj_5tinyr_RTree *, struct __pyx_obj_5tinyr__Record *))__pyx_f_5tinyr_5RTree__ChooseLeaf; - __pyx_vtable_5tinyr_RTree._AdjustTree = (PyObject *(*)(struct __pyx_obj_5tinyr_RTree *, struct __pyx_obj_5tinyr__Node *, struct __pyx_obj_5tinyr__Node *))__pyx_f_5tinyr_5RTree__AdjustTree; - __pyx_vtable_5tinyr_RTree.SplitNode = (struct __pyx_obj_5tinyr__Node *(*)(struct __pyx_obj_5tinyr_RTree *, struct __pyx_obj_5tinyr__Node *, struct __pyx_obj_5tinyr__Record *))__pyx_f_5tinyr_5RTree_SplitNode; - __pyx_vtable_5tinyr_RTree.PickNext = (int (*)(struct __pyx_obj_5tinyr_RTree *, struct __pyx_obj_5tinyr__Node *, PyObject *, struct __pyx_obj_5tinyr__Node *))__pyx_f_5tinyr_5RTree_PickNext; - #if CYTHON_USE_TYPE_SPECS - __pyx_ptype_5tinyr_RTree = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_5tinyr_RTree_spec, NULL); if (unlikely(!__pyx_ptype_5tinyr_RTree)) __PYX_ERR(0, 329, __pyx_L1_error) - if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_5tinyr_RTree_spec, __pyx_ptype_5tinyr_RTree) < 0) __PYX_ERR(0, 329, __pyx_L1_error) - #else - __pyx_ptype_5tinyr_RTree = &__pyx_type_5tinyr_RTree; - #endif - #if !CYTHON_COMPILING_IN_LIMITED_API - #endif - #if !CYTHON_USE_TYPE_SPECS - if (__Pyx_PyType_Ready(__pyx_ptype_5tinyr_RTree) < 0) __PYX_ERR(0, 329, __pyx_L1_error) - #endif - #if PY_MAJOR_VERSION < 3 - __pyx_ptype_5tinyr_RTree->tp_print = 0; - #endif - #if !CYTHON_COMPILING_IN_LIMITED_API - if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_5tinyr_RTree->tp_dictoffset && __pyx_ptype_5tinyr_RTree->tp_getattro == PyObject_GenericGetAttr)) { - __pyx_ptype_5tinyr_RTree->tp_getattro = __Pyx_PyObject_GenericGetAttr; - } - #endif - if (__Pyx_SetVtable(__pyx_ptype_5tinyr_RTree, __pyx_vtabptr_5tinyr_RTree) < 0) __PYX_ERR(0, 329, __pyx_L1_error) - #if !CYTHON_COMPILING_IN_LIMITED_API - if (__Pyx_MergeVtables(__pyx_ptype_5tinyr_RTree) < 0) __PYX_ERR(0, 329, __pyx_L1_error) - #endif - if (PyObject_SetAttr(__pyx_m, __pyx_n_s_RTree, (PyObject *) __pyx_ptype_5tinyr_RTree) < 0) __PYX_ERR(0, 329, __pyx_L1_error) - #if !CYTHON_COMPILING_IN_LIMITED_API - if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_5tinyr_RTree) < 0) __PYX_ERR(0, 329, __pyx_L1_error) - #endif - #if CYTHON_USE_TYPE_SPECS - __pyx_ptype_5tinyr__Iterator = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_5tinyr__Iterator_spec, NULL); if (unlikely(!__pyx_ptype_5tinyr__Iterator)) __PYX_ERR(0, 883, __pyx_L1_error) - if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_5tinyr__Iterator_spec, __pyx_ptype_5tinyr__Iterator) < 0) __PYX_ERR(0, 883, __pyx_L1_error) - #else - __pyx_ptype_5tinyr__Iterator = &__pyx_type_5tinyr__Iterator; - #endif - #if !CYTHON_COMPILING_IN_LIMITED_API - #endif - #if !CYTHON_USE_TYPE_SPECS - if (__Pyx_PyType_Ready(__pyx_ptype_5tinyr__Iterator) < 0) __PYX_ERR(0, 883, __pyx_L1_error) - #endif - #if PY_MAJOR_VERSION < 3 - __pyx_ptype_5tinyr__Iterator->tp_print = 0; - #endif - #if !CYTHON_COMPILING_IN_LIMITED_API - if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_5tinyr__Iterator->tp_dictoffset && __pyx_ptype_5tinyr__Iterator->tp_getattro == PyObject_GenericGetAttr)) { - __pyx_ptype_5tinyr__Iterator->tp_getattro = __Pyx_PyObject_GenericGetAttr; - } - #endif - if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Iterator, (PyObject *) __pyx_ptype_5tinyr__Iterator) < 0) __PYX_ERR(0, 883, __pyx_L1_error) - #if !CYTHON_COMPILING_IN_LIMITED_API - if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_5tinyr__Iterator) < 0) __PYX_ERR(0, 883, __pyx_L1_error) - #endif - #if CYTHON_USE_TYPE_SPECS - __pyx_t_1 = PyTuple_Pack(1, (PyObject *)__pyx_ptype_5tinyr__Iterator); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 946, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_ptype_5tinyr__ChildRecordIter = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_5tinyr__ChildRecordIter_spec, __pyx_t_1); - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - if (unlikely(!__pyx_ptype_5tinyr__ChildRecordIter)) __PYX_ERR(0, 946, __pyx_L1_error) - if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_5tinyr__ChildRecordIter_spec, __pyx_ptype_5tinyr__ChildRecordIter) < 0) __PYX_ERR(0, 946, __pyx_L1_error) - #else - __pyx_ptype_5tinyr__ChildRecordIter = &__pyx_type_5tinyr__ChildRecordIter; - #endif - #if !CYTHON_COMPILING_IN_LIMITED_API - __pyx_ptype_5tinyr__ChildRecordIter->tp_base = __pyx_ptype_5tinyr__Iterator; - #endif - #if !CYTHON_USE_TYPE_SPECS - if (__Pyx_PyType_Ready(__pyx_ptype_5tinyr__ChildRecordIter) < 0) __PYX_ERR(0, 946, __pyx_L1_error) - #endif - #if PY_MAJOR_VERSION < 3 - __pyx_ptype_5tinyr__ChildRecordIter->tp_print = 0; - #endif - #if !CYTHON_COMPILING_IN_LIMITED_API - if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_5tinyr__ChildRecordIter->tp_dictoffset && __pyx_ptype_5tinyr__ChildRecordIter->tp_getattro == PyObject_GenericGetAttr)) { - __pyx_ptype_5tinyr__ChildRecordIter->tp_getattro = __Pyx_PyObject_GenericGetAttr; - } - #endif - if (PyObject_SetAttr(__pyx_m, __pyx_n_s_ChildRecordIter, (PyObject *) __pyx_ptype_5tinyr__ChildRecordIter) < 0) __PYX_ERR(0, 946, __pyx_L1_error) - #if !CYTHON_COMPILING_IN_LIMITED_API - if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_5tinyr__ChildRecordIter) < 0) __PYX_ERR(0, 946, __pyx_L1_error) - #endif - #if CYTHON_USE_TYPE_SPECS - __pyx_t_1 = PyTuple_Pack(1, (PyObject *)__pyx_ptype_5tinyr__Iterator); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 985, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_ptype_5tinyr__KVIIter = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_5tinyr__KVIIter_spec, __pyx_t_1); - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - if (unlikely(!__pyx_ptype_5tinyr__KVIIter)) __PYX_ERR(0, 985, __pyx_L1_error) - if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_5tinyr__KVIIter_spec, __pyx_ptype_5tinyr__KVIIter) < 0) __PYX_ERR(0, 985, __pyx_L1_error) - #else - __pyx_ptype_5tinyr__KVIIter = &__pyx_type_5tinyr__KVIIter; - #endif - #if !CYTHON_COMPILING_IN_LIMITED_API - __pyx_ptype_5tinyr__KVIIter->tp_base = __pyx_ptype_5tinyr__Iterator; - #endif - #if !CYTHON_USE_TYPE_SPECS - if (__Pyx_PyType_Ready(__pyx_ptype_5tinyr__KVIIter) < 0) __PYX_ERR(0, 985, __pyx_L1_error) - #endif - #if PY_MAJOR_VERSION < 3 - __pyx_ptype_5tinyr__KVIIter->tp_print = 0; - #endif - #if !CYTHON_COMPILING_IN_LIMITED_API - if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_5tinyr__KVIIter->tp_dictoffset && __pyx_ptype_5tinyr__KVIIter->tp_getattro == PyObject_GenericGetAttr)) { - __pyx_ptype_5tinyr__KVIIter->tp_getattro = __Pyx_PyObject_GenericGetAttr; - } - #endif - if (PyObject_SetAttr(__pyx_m, __pyx_n_s_KVIIter, (PyObject *) __pyx_ptype_5tinyr__KVIIter) < 0) __PYX_ERR(0, 985, __pyx_L1_error) - #if !CYTHON_COMPILING_IN_LIMITED_API - if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_5tinyr__KVIIter) < 0) __PYX_ERR(0, 985, __pyx_L1_error) - #endif - #if CYTHON_USE_TYPE_SPECS - __pyx_t_1 = PyTuple_Pack(1, (PyObject *)__pyx_ptype_5tinyr__KVIIter); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 992, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_ptype_5tinyr__KeysIter = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_5tinyr__KeysIter_spec, __pyx_t_1); - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - if (unlikely(!__pyx_ptype_5tinyr__KeysIter)) __PYX_ERR(0, 992, __pyx_L1_error) - if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_5tinyr__KeysIter_spec, __pyx_ptype_5tinyr__KeysIter) < 0) __PYX_ERR(0, 992, __pyx_L1_error) - #else - __pyx_ptype_5tinyr__KeysIter = &__pyx_type_5tinyr__KeysIter; - #endif - #if !CYTHON_COMPILING_IN_LIMITED_API - __pyx_ptype_5tinyr__KeysIter->tp_base = __pyx_ptype_5tinyr__KVIIter; - #endif - #if !CYTHON_USE_TYPE_SPECS - if (__Pyx_PyType_Ready(__pyx_ptype_5tinyr__KeysIter) < 0) __PYX_ERR(0, 992, __pyx_L1_error) - #endif - #if PY_MAJOR_VERSION < 3 - __pyx_ptype_5tinyr__KeysIter->tp_print = 0; - #endif - #if !CYTHON_COMPILING_IN_LIMITED_API - if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_5tinyr__KeysIter->tp_dictoffset && __pyx_ptype_5tinyr__KeysIter->tp_getattro == PyObject_GenericGetAttr)) { - __pyx_ptype_5tinyr__KeysIter->tp_getattro = __Pyx_PyObject_GenericGetAttr; - } - #endif - if (PyObject_SetAttr(__pyx_m, __pyx_n_s_KeysIter, (PyObject *) __pyx_ptype_5tinyr__KeysIter) < 0) __PYX_ERR(0, 992, __pyx_L1_error) - #if !CYTHON_COMPILING_IN_LIMITED_API - if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_5tinyr__KeysIter) < 0) __PYX_ERR(0, 992, __pyx_L1_error) - #endif - #if CYTHON_USE_TYPE_SPECS - __pyx_t_1 = PyTuple_Pack(1, (PyObject *)__pyx_ptype_5tinyr__KVIIter); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 996, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_ptype_5tinyr__ValuesIter = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_5tinyr__ValuesIter_spec, __pyx_t_1); - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - if (unlikely(!__pyx_ptype_5tinyr__ValuesIter)) __PYX_ERR(0, 996, __pyx_L1_error) - if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_5tinyr__ValuesIter_spec, __pyx_ptype_5tinyr__ValuesIter) < 0) __PYX_ERR(0, 996, __pyx_L1_error) - #else - __pyx_ptype_5tinyr__ValuesIter = &__pyx_type_5tinyr__ValuesIter; - #endif - #if !CYTHON_COMPILING_IN_LIMITED_API - __pyx_ptype_5tinyr__ValuesIter->tp_base = __pyx_ptype_5tinyr__KVIIter; - #endif - #if !CYTHON_USE_TYPE_SPECS - if (__Pyx_PyType_Ready(__pyx_ptype_5tinyr__ValuesIter) < 0) __PYX_ERR(0, 996, __pyx_L1_error) - #endif - #if PY_MAJOR_VERSION < 3 - __pyx_ptype_5tinyr__ValuesIter->tp_print = 0; - #endif - #if !CYTHON_COMPILING_IN_LIMITED_API - if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_5tinyr__ValuesIter->tp_dictoffset && __pyx_ptype_5tinyr__ValuesIter->tp_getattro == PyObject_GenericGetAttr)) { - __pyx_ptype_5tinyr__ValuesIter->tp_getattro = __Pyx_PyObject_GenericGetAttr; - } - #endif - if (PyObject_SetAttr(__pyx_m, __pyx_n_s_ValuesIter, (PyObject *) __pyx_ptype_5tinyr__ValuesIter) < 0) __PYX_ERR(0, 996, __pyx_L1_error) - #if !CYTHON_COMPILING_IN_LIMITED_API - if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_5tinyr__ValuesIter) < 0) __PYX_ERR(0, 996, __pyx_L1_error) - #endif - #if CYTHON_USE_TYPE_SPECS - __pyx_t_1 = PyTuple_Pack(1, (PyObject *)__pyx_ptype_5tinyr__KVIIter); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1000, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_ptype_5tinyr__ItemsIter = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_5tinyr__ItemsIter_spec, __pyx_t_1); - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - if (unlikely(!__pyx_ptype_5tinyr__ItemsIter)) __PYX_ERR(0, 1000, __pyx_L1_error) - if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_5tinyr__ItemsIter_spec, __pyx_ptype_5tinyr__ItemsIter) < 0) __PYX_ERR(0, 1000, __pyx_L1_error) - #else - __pyx_ptype_5tinyr__ItemsIter = &__pyx_type_5tinyr__ItemsIter; - #endif - #if !CYTHON_COMPILING_IN_LIMITED_API - __pyx_ptype_5tinyr__ItemsIter->tp_base = __pyx_ptype_5tinyr__KVIIter; - #endif - #if !CYTHON_USE_TYPE_SPECS - if (__Pyx_PyType_Ready(__pyx_ptype_5tinyr__ItemsIter) < 0) __PYX_ERR(0, 1000, __pyx_L1_error) - #endif - #if PY_MAJOR_VERSION < 3 - __pyx_ptype_5tinyr__ItemsIter->tp_print = 0; - #endif - #if !CYTHON_COMPILING_IN_LIMITED_API - if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_5tinyr__ItemsIter->tp_dictoffset && __pyx_ptype_5tinyr__ItemsIter->tp_getattro == PyObject_GenericGetAttr)) { - __pyx_ptype_5tinyr__ItemsIter->tp_getattro = __Pyx_PyObject_GenericGetAttr; - } - #endif - if (PyObject_SetAttr(__pyx_m, __pyx_n_s_ItemsIter, (PyObject *) __pyx_ptype_5tinyr__ItemsIter) < 0) __PYX_ERR(0, 1000, __pyx_L1_error) - #if !CYTHON_COMPILING_IN_LIMITED_API - if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_5tinyr__ItemsIter) < 0) __PYX_ERR(0, 1000, __pyx_L1_error) - #endif - #if CYTHON_USE_TYPE_SPECS - __pyx_t_1 = PyTuple_Pack(1, (PyObject *)__pyx_ptype_5tinyr__Iterator); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 892, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_ptype_5tinyr__NodeIter = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_5tinyr__NodeIter_spec, __pyx_t_1); - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - if (unlikely(!__pyx_ptype_5tinyr__NodeIter)) __PYX_ERR(0, 892, __pyx_L1_error) - if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_5tinyr__NodeIter_spec, __pyx_ptype_5tinyr__NodeIter) < 0) __PYX_ERR(0, 892, __pyx_L1_error) - #else - __pyx_ptype_5tinyr__NodeIter = &__pyx_type_5tinyr__NodeIter; - #endif - #if !CYTHON_COMPILING_IN_LIMITED_API - __pyx_ptype_5tinyr__NodeIter->tp_base = __pyx_ptype_5tinyr__Iterator; - #endif - #if !CYTHON_USE_TYPE_SPECS - if (__Pyx_PyType_Ready(__pyx_ptype_5tinyr__NodeIter) < 0) __PYX_ERR(0, 892, __pyx_L1_error) - #endif - #if PY_MAJOR_VERSION < 3 - __pyx_ptype_5tinyr__NodeIter->tp_print = 0; - #endif - #if !CYTHON_COMPILING_IN_LIMITED_API - if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_5tinyr__NodeIter->tp_dictoffset && __pyx_ptype_5tinyr__NodeIter->tp_getattro == PyObject_GenericGetAttr)) { - __pyx_ptype_5tinyr__NodeIter->tp_getattro = __Pyx_PyObject_GenericGetAttr; - } - #endif - if (PyObject_SetAttr(__pyx_m, __pyx_n_s_NodeIter, (PyObject *) __pyx_ptype_5tinyr__NodeIter) < 0) __PYX_ERR(0, 892, __pyx_L1_error) - #if !CYTHON_COMPILING_IN_LIMITED_API - if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_5tinyr__NodeIter) < 0) __PYX_ERR(0, 892, __pyx_L1_error) - #endif - #if CYTHON_USE_TYPE_SPECS - __pyx_t_1 = PyTuple_Pack(1, (PyObject *)__pyx_ptype_5tinyr__Iterator); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 917, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_ptype_5tinyr__RectangleIter = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_5tinyr__RectangleIter_spec, __pyx_t_1); - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - if (unlikely(!__pyx_ptype_5tinyr__RectangleIter)) __PYX_ERR(0, 917, __pyx_L1_error) - if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_5tinyr__RectangleIter_spec, __pyx_ptype_5tinyr__RectangleIter) < 0) __PYX_ERR(0, 917, __pyx_L1_error) - #else - __pyx_ptype_5tinyr__RectangleIter = &__pyx_type_5tinyr__RectangleIter; - #endif - #if !CYTHON_COMPILING_IN_LIMITED_API - __pyx_ptype_5tinyr__RectangleIter->tp_base = __pyx_ptype_5tinyr__Iterator; - #endif - #if !CYTHON_USE_TYPE_SPECS - if (__Pyx_PyType_Ready(__pyx_ptype_5tinyr__RectangleIter) < 0) __PYX_ERR(0, 917, __pyx_L1_error) - #endif - #if PY_MAJOR_VERSION < 3 - __pyx_ptype_5tinyr__RectangleIter->tp_print = 0; - #endif - #if !CYTHON_COMPILING_IN_LIMITED_API - if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_5tinyr__RectangleIter->tp_dictoffset && __pyx_ptype_5tinyr__RectangleIter->tp_getattro == PyObject_GenericGetAttr)) { - __pyx_ptype_5tinyr__RectangleIter->tp_getattro = __Pyx_PyObject_GenericGetAttr; - } - #endif - if (PyObject_SetAttr(__pyx_m, __pyx_n_s_RectangleIter, (PyObject *) __pyx_ptype_5tinyr__RectangleIter) < 0) __PYX_ERR(0, 917, __pyx_L1_error) - #if !CYTHON_COMPILING_IN_LIMITED_API - if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_5tinyr__RectangleIter) < 0) __PYX_ERR(0, 917, __pyx_L1_error) - #endif - #if CYTHON_USE_TYPE_SPECS - __pyx_ptype_5tinyr_RTreeInfo = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_5tinyr_RTreeInfo_spec, NULL); if (unlikely(!__pyx_ptype_5tinyr_RTreeInfo)) __PYX_ERR(0, 1007, __pyx_L1_error) - if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_5tinyr_RTreeInfo_spec, __pyx_ptype_5tinyr_RTreeInfo) < 0) __PYX_ERR(0, 1007, __pyx_L1_error) - #else - __pyx_ptype_5tinyr_RTreeInfo = &__pyx_type_5tinyr_RTreeInfo; - #endif - #if !CYTHON_COMPILING_IN_LIMITED_API - #endif - #if !CYTHON_USE_TYPE_SPECS - if (__Pyx_PyType_Ready(__pyx_ptype_5tinyr_RTreeInfo) < 0) __PYX_ERR(0, 1007, __pyx_L1_error) - #endif - #if PY_MAJOR_VERSION < 3 - __pyx_ptype_5tinyr_RTreeInfo->tp_print = 0; - #endif - #if !CYTHON_COMPILING_IN_LIMITED_API - if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_5tinyr_RTreeInfo->tp_dictoffset && __pyx_ptype_5tinyr_RTreeInfo->tp_getattro == PyObject_GenericGetAttr)) { - __pyx_ptype_5tinyr_RTreeInfo->tp_getattro = __Pyx_PyObject_GenericGetAttr; - } - #endif - if (PyObject_SetAttr(__pyx_m, __pyx_n_s_RTreeInfo, (PyObject *) __pyx_ptype_5tinyr_RTreeInfo) < 0) __PYX_ERR(0, 1007, __pyx_L1_error) - #if !CYTHON_COMPILING_IN_LIMITED_API - if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_5tinyr_RTreeInfo) < 0) __PYX_ERR(0, 1007, __pyx_L1_error) - #endif - __Pyx_RefNannyFinishContext(); - return 0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_RefNannyFinishContext(); - return -1; -} - -static int __Pyx_modinit_type_import_code(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_modinit_type_import_code", 0); - /*--- Type import code ---*/ - __Pyx_RefNannyFinishContext(); - return 0; -} - -static int __Pyx_modinit_variable_import_code(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_modinit_variable_import_code", 0); - /*--- Variable import code ---*/ - __Pyx_RefNannyFinishContext(); - return 0; -} - -static int __Pyx_modinit_function_import_code(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_modinit_function_import_code", 0); - /*--- Function import code ---*/ - __Pyx_RefNannyFinishContext(); - return 0; -} - - -#if PY_MAJOR_VERSION >= 3 -#if CYTHON_PEP489_MULTI_PHASE_INIT -static PyObject* __pyx_pymod_create(PyObject *spec, PyModuleDef *def); /*proto*/ -static int __pyx_pymod_exec_tinyr(PyObject* module); /*proto*/ -static PyModuleDef_Slot __pyx_moduledef_slots[] = { - {Py_mod_create, (void*)__pyx_pymod_create}, - {Py_mod_exec, (void*)__pyx_pymod_exec_tinyr}, - {0, NULL} -}; -#endif - -#ifdef __cplusplus -namespace { - struct PyModuleDef __pyx_moduledef = - #else - static struct PyModuleDef __pyx_moduledef = - #endif - { - PyModuleDef_HEAD_INIT, - "tinyr", - __pyx_k_Fast_2D_R_Tree_implementation_i, /* m_doc */ - #if CYTHON_PEP489_MULTI_PHASE_INIT - 0, /* m_size */ - #elif CYTHON_USE_MODULE_STATE - sizeof(__pyx_mstate), /* m_size */ - #else - -1, /* m_size */ - #endif - __pyx_methods /* m_methods */, - #if CYTHON_PEP489_MULTI_PHASE_INIT - __pyx_moduledef_slots, /* m_slots */ - #else - NULL, /* m_reload */ - #endif - #if CYTHON_USE_MODULE_STATE - __pyx_m_traverse, /* m_traverse */ - __pyx_m_clear, /* m_clear */ - NULL /* m_free */ - #else - NULL, /* m_traverse */ - NULL, /* m_clear */ - NULL /* m_free */ - #endif - }; - #ifdef __cplusplus -} /* anonymous namespace */ -#endif -#endif - -#ifndef CYTHON_NO_PYINIT_EXPORT -#define __Pyx_PyMODINIT_FUNC PyMODINIT_FUNC -#elif PY_MAJOR_VERSION < 3 -#ifdef __cplusplus -#define __Pyx_PyMODINIT_FUNC extern "C" void -#else -#define __Pyx_PyMODINIT_FUNC void -#endif -#else -#ifdef __cplusplus -#define __Pyx_PyMODINIT_FUNC extern "C" PyObject * -#else -#define __Pyx_PyMODINIT_FUNC PyObject * -#endif -#endif - - -#if PY_MAJOR_VERSION < 3 -__Pyx_PyMODINIT_FUNC inittinyr(void) CYTHON_SMALL_CODE; /*proto*/ -#if !defined(CYTHON_NO_PYINIT_EXPORT) && (defined(_WIN32) || defined(WIN32) || defined(MS_WINDOWS)) -__Pyx_PyMODINIT_FUNC init__init__(void) { inittinyr(); } -#endif -__Pyx_PyMODINIT_FUNC inittinyr(void) -#else -__Pyx_PyMODINIT_FUNC PyInit_tinyr(void) CYTHON_SMALL_CODE; /*proto*/ -#if !defined(CYTHON_NO_PYINIT_EXPORT) && (defined(_WIN32) || defined(WIN32) || defined(MS_WINDOWS)) -__Pyx_PyMODINIT_FUNC PyInit___init__(void) { return PyInit_tinyr(); } -#endif -__Pyx_PyMODINIT_FUNC PyInit_tinyr(void) -#if CYTHON_PEP489_MULTI_PHASE_INIT -{ - return PyModuleDef_Init(&__pyx_moduledef); -} -static CYTHON_SMALL_CODE int __Pyx_check_single_interpreter(void) { - #if PY_VERSION_HEX >= 0x030700A1 - static PY_INT64_T main_interpreter_id = -1; - PY_INT64_T current_id = PyInterpreterState_GetID(PyThreadState_Get()->interp); - if (main_interpreter_id == -1) { - main_interpreter_id = current_id; - return (unlikely(current_id == -1)) ? -1 : 0; - } else if (unlikely(main_interpreter_id != current_id)) - #else - static PyInterpreterState *main_interpreter = NULL; - PyInterpreterState *current_interpreter = PyThreadState_Get()->interp; - if (!main_interpreter) { - main_interpreter = current_interpreter; - } else if (unlikely(main_interpreter != current_interpreter)) - #endif - { - PyErr_SetString( - PyExc_ImportError, - "Interpreter change detected - this module can only be loaded into one interpreter per process."); - return -1; - } - return 0; -} -#if CYTHON_COMPILING_IN_LIMITED_API -static CYTHON_SMALL_CODE int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *module, const char* from_name, const char* to_name, int allow_none) -#else -static CYTHON_SMALL_CODE int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const char* from_name, const char* to_name, int allow_none) -#endif -{ - PyObject *value = PyObject_GetAttrString(spec, from_name); - int result = 0; - if (likely(value)) { - if (allow_none || value != Py_None) { -#if CYTHON_COMPILING_IN_LIMITED_API - result = PyModule_AddObject(module, to_name, value); -#else - result = PyDict_SetItemString(moddict, to_name, value); -#endif - } - Py_DECREF(value); - } else if (PyErr_ExceptionMatches(PyExc_AttributeError)) { - PyErr_Clear(); - } else { - result = -1; - } - return result; -} -static CYTHON_SMALL_CODE PyObject* __pyx_pymod_create(PyObject *spec, PyModuleDef *def) { - PyObject *module = NULL, *moddict, *modname; - CYTHON_UNUSED_VAR(def); - if (__Pyx_check_single_interpreter()) - return NULL; - if (__pyx_m) - return __Pyx_NewRef(__pyx_m); - modname = PyObject_GetAttrString(spec, "name"); - if (unlikely(!modname)) goto bad; - module = PyModule_NewObject(modname); - Py_DECREF(modname); - if (unlikely(!module)) goto bad; -#if CYTHON_COMPILING_IN_LIMITED_API - moddict = module; -#else - moddict = PyModule_GetDict(module); - if (unlikely(!moddict)) goto bad; -#endif - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "loader", "__loader__", 1) < 0)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "origin", "__file__", 1) < 0)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "parent", "__package__", 1) < 0)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "submodule_search_locations", "__path__", 0) < 0)) goto bad; - return module; -bad: - Py_XDECREF(module); - return NULL; -} - - -static CYTHON_SMALL_CODE int __pyx_pymod_exec_tinyr(PyObject *__pyx_pyinit_module) -#endif -#endif -{ - int stringtab_initialized = 0; - #if CYTHON_USE_MODULE_STATE - int pystate_addmodule_run = 0; - #endif - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannyDeclarations - #if CYTHON_PEP489_MULTI_PHASE_INIT - if (__pyx_m) { - if (__pyx_m == __pyx_pyinit_module) return 0; - PyErr_SetString(PyExc_RuntimeError, "Module 'tinyr' has already been imported. Re-initialisation is not supported."); - return -1; - } - #elif PY_MAJOR_VERSION >= 3 - if (__pyx_m) return __Pyx_NewRef(__pyx_m); - #endif - /*--- Module creation code ---*/ - #if CYTHON_PEP489_MULTI_PHASE_INIT - __pyx_m = __pyx_pyinit_module; - Py_INCREF(__pyx_m); - #else - #if PY_MAJOR_VERSION < 3 - __pyx_m = Py_InitModule4("tinyr", __pyx_methods, __pyx_k_Fast_2D_R_Tree_implementation_i, 0, PYTHON_API_VERSION); Py_XINCREF(__pyx_m); - if (unlikely(!__pyx_m)) __PYX_ERR(0, 1, __pyx_L1_error) - #elif CYTHON_USE_MODULE_STATE - __pyx_t_1 = PyModule_Create(&__pyx_moduledef); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1, __pyx_L1_error) - { - int add_module_result = PyState_AddModule(__pyx_t_1, &__pyx_moduledef); - __pyx_t_1 = 0; /* transfer ownership from __pyx_t_1 to "tinyr" pseudovariable */ - if (unlikely((add_module_result < 0))) __PYX_ERR(0, 1, __pyx_L1_error) - pystate_addmodule_run = 1; - } - #else - __pyx_m = PyModule_Create(&__pyx_moduledef); - if (unlikely(!__pyx_m)) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - #endif - CYTHON_UNUSED_VAR(__pyx_t_1); - __pyx_d = PyModule_GetDict(__pyx_m); if (unlikely(!__pyx_d)) __PYX_ERR(0, 1, __pyx_L1_error) - Py_INCREF(__pyx_d); - __pyx_b = __Pyx_PyImport_AddModuleRef(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_b)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_cython_runtime = __Pyx_PyImport_AddModuleRef((const char *) "cython_runtime"); if (unlikely(!__pyx_cython_runtime)) __PYX_ERR(0, 1, __pyx_L1_error) - if (PyObject_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #if CYTHON_REFNANNY -__Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny"); -if (!__Pyx_RefNanny) { - PyErr_Clear(); - __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny"); - if (!__Pyx_RefNanny) - Py_FatalError("failed to import 'refnanny' module"); -} -#endif - __Pyx_RefNannySetupContext("__Pyx_PyMODINIT_FUNC PyInit_tinyr(void)", 0); - if (__Pyx_check_binary_version(__PYX_LIMITED_VERSION_HEX, __Pyx_get_runtime_version(), CYTHON_COMPILING_IN_LIMITED_API) < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #ifdef __Pxy_PyFrame_Initialize_Offsets - __Pxy_PyFrame_Initialize_Offsets(); - #endif - __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_empty_unicode = PyUnicode_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_unicode)) __PYX_ERR(0, 1, __pyx_L1_error) - #ifdef __Pyx_CyFunction_USED - if (__pyx_CyFunction_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - #ifdef __Pyx_FusedFunction_USED - if (__pyx_FusedFunction_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - #ifdef __Pyx_Coroutine_USED - if (__pyx_Coroutine_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - #ifdef __Pyx_Generator_USED - if (__pyx_Generator_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - #ifdef __Pyx_AsyncGen_USED - if (__pyx_AsyncGen_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - #ifdef __Pyx_StopAsyncIteration_USED - if (__pyx_StopAsyncIteration_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - /*--- Library function declarations ---*/ - /*--- Threads initialization code ---*/ - #if defined(WITH_THREAD) && PY_VERSION_HEX < 0x030700F0 && defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS - PyEval_InitThreads(); - #endif - /*--- Initialize various global constants etc. ---*/ - if (__Pyx_InitConstants() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - stringtab_initialized = 1; - if (__Pyx_InitGlobals() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #if PY_MAJOR_VERSION < 3 && (__PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT) - if (__Pyx_init_sys_getdefaultencoding_params() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - if (__pyx_module_is_main_tinyr) { - if (PyObject_SetAttr(__pyx_m, __pyx_n_s_name, __pyx_n_s_main) < 0) __PYX_ERR(0, 1, __pyx_L1_error) - } - if (!CYTHON_PEP489_MULTI_PHASE_INIT) { - if (unlikely((__Pyx_SetPackagePathFromImportLib(__pyx_n_u_tinyr) < 0))) __PYX_ERR(0, 1, __pyx_L1_error) - } - #if PY_MAJOR_VERSION >= 3 - { - PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) __PYX_ERR(0, 1, __pyx_L1_error) - if (!PyDict_GetItemString(modules, "tinyr")) { - if (unlikely((PyDict_SetItemString(modules, "tinyr", __pyx_m) < 0))) __PYX_ERR(0, 1, __pyx_L1_error) - } - } - #endif - /*--- Builtin init code ---*/ - if (__Pyx_InitCachedBuiltins() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - /*--- Constants init code ---*/ - if (__Pyx_InitCachedConstants() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - /*--- Global type/function init code ---*/ - (void)__Pyx_modinit_global_init_code(); - (void)__Pyx_modinit_variable_export_code(); - (void)__Pyx_modinit_function_export_code(); - if (unlikely((__Pyx_modinit_type_init_code() < 0))) __PYX_ERR(0, 1, __pyx_L1_error) - (void)__Pyx_modinit_type_import_code(); - (void)__Pyx_modinit_variable_import_code(); - (void)__Pyx_modinit_function_import_code(); - /*--- Execution code ---*/ - #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED) - if (__Pyx_patch_abc() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - - /* "tinyr.pyx":37 - * # cython: profile=False - * - * import itertools # <<<<<<<<<<<<<< - * - * - */ - __pyx_t_2 = __Pyx_ImportDottedModule(__pyx_n_s_itertools, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 37, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_itertools, __pyx_t_2) < 0) __PYX_ERR(0, 37, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "tinyr.pyx":62 - * cdef class _ItemsIter(_KVIIter) - * - * class RTreeInvalid(Exception): # <<<<<<<<<<<<<< - * pass - * - */ - __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 62, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])); - __Pyx_GIVEREF((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])))) __PYX_ERR(0, 62, __pyx_L1_error); - __pyx_t_3 = __Pyx_PEP560_update_bases(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 62, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = __Pyx_CalculateMetaclass(NULL, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 62, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = __Pyx_Py3MetaclassPrepare(__pyx_t_4, __pyx_t_3, __pyx_n_s_RTreeInvalid, __pyx_n_s_RTreeInvalid, (PyObject *) NULL, __pyx_n_s_tinyr, (PyObject *) NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 62, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - if (__pyx_t_3 != __pyx_t_2) { - if (unlikely((PyDict_SetItemString(__pyx_t_5, "__orig_bases__", __pyx_t_2) < 0))) __PYX_ERR(0, 62, __pyx_L1_error) - } - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_Py3ClassCreate(__pyx_t_4, __pyx_n_s_RTreeInvalid, __pyx_t_3, __pyx_t_5, NULL, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 62, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_RTreeInvalid, __pyx_t_2) < 0) __PYX_ERR(0, 62, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - - /* "(tree fragment)":1 - * def __reduce_cython__(self): # <<<<<<<<<<<<<< - * cdef tuple state - * cdef object _dict - */ - __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_5tinyr_7_Record_1__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Record___reduce_cython, NULL, __pyx_n_s_tinyr, __pyx_d, ((PyObject *)__pyx_codeobj__12)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_5tinyr__Record, __pyx_n_s_reduce_cython, __pyx_t_3) < 0) __PYX_ERR(1, 1, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - PyType_Modified(__pyx_ptype_5tinyr__Record); - - /* "(tree fragment)":16 - * else: - * return __pyx_unpickle__Record, (type(self), 0xd6fae5e, state) - * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< - * __pyx_unpickle__Record__set_state(self, __pyx_state) - */ - __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_5tinyr_7_Record_3__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Record___setstate_cython, NULL, __pyx_n_s_tinyr, __pyx_d, ((PyObject *)__pyx_codeobj__14)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 16, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_5tinyr__Record, __pyx_n_s_setstate_cython, __pyx_t_3) < 0) __PYX_ERR(1, 16, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - PyType_Modified(__pyx_ptype_5tinyr__Record); - - /* "(tree fragment)":1 - * def __reduce_cython__(self): # <<<<<<<<<<<<<< - * cdef tuple state - * cdef object _dict - */ - __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_5tinyr_12_ChildRecord_3__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ChildRecord___reduce_cython, NULL, __pyx_n_s_tinyr, __pyx_d, ((PyObject *)__pyx_codeobj__15)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_5tinyr__ChildRecord, __pyx_n_s_reduce_cython, __pyx_t_3) < 0) __PYX_ERR(1, 1, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - PyType_Modified(__pyx_ptype_5tinyr__ChildRecord); - - /* "(tree fragment)":16 - * else: - * return __pyx_unpickle__ChildRecord, (type(self), 0x9d7f65c, state) - * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< - * __pyx_unpickle__ChildRecord__set_state(self, __pyx_state) - */ - __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_5tinyr_12_ChildRecord_5__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ChildRecord___setstate_cython, NULL, __pyx_n_s_tinyr, __pyx_d, ((PyObject *)__pyx_codeobj__16)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 16, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_5tinyr__ChildRecord, __pyx_n_s_setstate_cython, __pyx_t_3) < 0) __PYX_ERR(1, 16, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - PyType_Modified(__pyx_ptype_5tinyr__ChildRecord); - - /* "(tree fragment)":1 - * def __reduce_cython__(self): # <<<<<<<<<<<<<< - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): - */ - __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_5tinyr_12_InnerRecord_3__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_InnerRecord___reduce_cython, NULL, __pyx_n_s_tinyr, __pyx_d, ((PyObject *)__pyx_codeobj__18)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_reduce_cython, __pyx_t_3) < 0) __PYX_ERR(1, 1, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - - /* "(tree fragment)":3 - * def __reduce_cython__(self): - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - */ - __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_5tinyr_12_InnerRecord_5__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_InnerRecord___setstate_cython, NULL, __pyx_n_s_tinyr, __pyx_d, ((PyObject *)__pyx_codeobj__19)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 3, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_setstate_cython, __pyx_t_3) < 0) __PYX_ERR(1, 3, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - - /* "(tree fragment)":1 - * def __reduce_cython__(self): # <<<<<<<<<<<<<< - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): - */ - __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_5tinyr_5_Node_3__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Node___reduce_cython, NULL, __pyx_n_s_tinyr, __pyx_d, ((PyObject *)__pyx_codeobj__20)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_reduce_cython, __pyx_t_3) < 0) __PYX_ERR(1, 1, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - - /* "(tree fragment)":3 - * def __reduce_cython__(self): - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - */ - __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_5tinyr_5_Node_5__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Node___setstate_cython, NULL, __pyx_n_s_tinyr, __pyx_d, ((PyObject *)__pyx_codeobj__21)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 3, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_setstate_cython, __pyx_t_3) < 0) __PYX_ERR(1, 3, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - - /* "tinyr.pyx":393 - * raise AttributeError('indexing RTree only possible with rectangle or point (x, y)') - * - * def iterkeys(self): # <<<<<<<<<<<<<< - * return _KeysIter(self) - * - */ - __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_5tinyr_5RTree_9iterkeys, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_RTree_iterkeys, NULL, __pyx_n_s_tinyr, __pyx_d, ((PyObject *)__pyx_codeobj__22)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 393, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_5tinyr_RTree, __pyx_n_s_iterkeys, __pyx_t_3) < 0) __PYX_ERR(0, 393, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - PyType_Modified(__pyx_ptype_5tinyr_RTree); - - /* "tinyr.pyx":396 - * return _KeysIter(self) - * - * def itervalues(self): # <<<<<<<<<<<<<< - * return _ValuesIter(self) - * - */ - __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_5tinyr_5RTree_11itervalues, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_RTree_itervalues, NULL, __pyx_n_s_tinyr, __pyx_d, ((PyObject *)__pyx_codeobj__23)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 396, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_5tinyr_RTree, __pyx_n_s_itervalues, __pyx_t_3) < 0) __PYX_ERR(0, 396, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - PyType_Modified(__pyx_ptype_5tinyr_RTree); - - /* "tinyr.pyx":399 - * return _ValuesIter(self) - * - * def iteritems(self): # <<<<<<<<<<<<<< - * return _ItemsIter(self) - * - */ - __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_5tinyr_5RTree_13iteritems, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_RTree_iteritems, NULL, __pyx_n_s_tinyr, __pyx_d, ((PyObject *)__pyx_codeobj__24)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 399, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_5tinyr_RTree, __pyx_n_s_iteritems, __pyx_t_3) < 0) __PYX_ERR(0, 399, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - PyType_Modified(__pyx_ptype_5tinyr_RTree); - - /* "tinyr.pyx":402 - * return _ItemsIter(self) - * - * def get_info(self): # <<<<<<<<<<<<<< - * return RTreeInfo(self) - * - */ - __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_5tinyr_5RTree_15get_info, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_RTree_get_info, NULL, __pyx_n_s_tinyr, __pyx_d, ((PyObject *)__pyx_codeobj__25)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 402, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_5tinyr_RTree, __pyx_n_s_get_info, __pyx_t_3) < 0) __PYX_ERR(0, 402, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - PyType_Modified(__pyx_ptype_5tinyr_RTree); - - /* "tinyr.pyx":405 - * return RTreeInfo(self) - * - * def insert(self, object key, object coords): # <<<<<<<<<<<<<< - * '''Insert an item. - * - */ - __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_5tinyr_5RTree_17insert, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_RTree_insert, NULL, __pyx_n_s_tinyr, __pyx_d, ((PyObject *)__pyx_codeobj__27)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 405, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_5tinyr_RTree, __pyx_n_s_insert, __pyx_t_3) < 0) __PYX_ERR(0, 405, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - PyType_Modified(__pyx_ptype_5tinyr_RTree); - - /* "tinyr.pyx":431 - * - * - * def search(self, object coords): # <<<<<<<<<<<<<< - * '''Search overlapping items. - * - */ - __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_5tinyr_5RTree_19search, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_RTree_search, NULL, __pyx_n_s_tinyr, __pyx_d, ((PyObject *)__pyx_codeobj__29)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 431, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_5tinyr_RTree, __pyx_n_s_search, __pyx_t_3) < 0) __PYX_ERR(0, 431, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - PyType_Modified(__pyx_ptype_5tinyr_RTree); - - /* "tinyr.pyx":462 - * return result - * - * def copy(self): # <<<<<<<<<<<<<< - * cdef: - * RTree ret - */ - __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_5tinyr_5RTree_21copy, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_RTree_copy, NULL, __pyx_n_s_tinyr, __pyx_d, ((PyObject *)__pyx_codeobj__31)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 462, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_5tinyr_RTree, __pyx_n_s_copy, __pyx_t_3) < 0) __PYX_ERR(0, 462, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - PyType_Modified(__pyx_ptype_5tinyr_RTree); - - /* "tinyr.pyx":472 - * return ret - * - * def search_surrounding(self, point): # <<<<<<<<<<<<<< - * '''Search items that surround a point. - * - */ - __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_5tinyr_5RTree_23search_surrounding, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_RTree_search_surrounding, NULL, __pyx_n_s_tinyr, __pyx_d, ((PyObject *)__pyx_codeobj__33)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 472, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_5tinyr_RTree, __pyx_n_s_search_surrounding, __pyx_t_3) < 0) __PYX_ERR(0, 472, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - PyType_Modified(__pyx_ptype_5tinyr_RTree); - - /* "tinyr.pyx":524 - * return 0 - * - * def remove(self, identifier, coords): # <<<<<<<<<<<<<< - * '''Delete an item - * - */ - __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_5tinyr_5RTree_25remove, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_RTree_remove, NULL, __pyx_n_s_tinyr, __pyx_d, ((PyObject *)__pyx_codeobj__35)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 524, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_5tinyr_RTree, __pyx_n_s_remove, __pyx_t_3) < 0) __PYX_ERR(0, 524, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - PyType_Modified(__pyx_ptype_5tinyr_RTree); - - /* "tinyr.pyx":806 - * - * - * def valid(self): # <<<<<<<<<<<<<< - * # numbers in comments refer to invariant properties of an RTree - taken from [Gut84] - * cdef: - */ - __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_5tinyr_5RTree_27valid, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_RTree_valid, NULL, __pyx_n_s_tinyr, __pyx_d, ((PyObject *)__pyx_codeobj__37)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 806, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_5tinyr_RTree, __pyx_n_s_valid, __pyx_t_3) < 0) __PYX_ERR(0, 806, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - PyType_Modified(__pyx_ptype_5tinyr_RTree); - - /* "(tree fragment)":1 - * def __reduce_cython__(self): # <<<<<<<<<<<<<< - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): - */ - __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_5tinyr_5RTree_29__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_RTree___reduce_cython, NULL, __pyx_n_s_tinyr, __pyx_d, ((PyObject *)__pyx_codeobj__38)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_reduce_cython, __pyx_t_3) < 0) __PYX_ERR(1, 1, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - - /* "(tree fragment)":3 - * def __reduce_cython__(self): - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - */ - __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_5tinyr_5RTree_31__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_RTree___setstate_cython, NULL, __pyx_n_s_tinyr, __pyx_d, ((PyObject *)__pyx_codeobj__39)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 3, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_setstate_cython, __pyx_t_3) < 0) __PYX_ERR(1, 3, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - - /* "(tree fragment)":1 - * def __reduce_cython__(self): # <<<<<<<<<<<<<< - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): - */ - __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_5tinyr_9_Iterator_5__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Iterator___reduce_cython, NULL, __pyx_n_s_tinyr, __pyx_d, ((PyObject *)__pyx_codeobj__40)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_reduce_cython, __pyx_t_3) < 0) __PYX_ERR(1, 1, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - - /* "(tree fragment)":3 - * def __reduce_cython__(self): - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - */ - __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_5tinyr_9_Iterator_7__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Iterator___setstate_cython, NULL, __pyx_n_s_tinyr, __pyx_d, ((PyObject *)__pyx_codeobj__41)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 3, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_setstate_cython, __pyx_t_3) < 0) __PYX_ERR(1, 3, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - - /* "(tree fragment)":1 - * def __reduce_cython__(self): # <<<<<<<<<<<<<< - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): - */ - __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_5tinyr_9_NodeIter_5__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_NodeIter___reduce_cython, NULL, __pyx_n_s_tinyr, __pyx_d, ((PyObject *)__pyx_codeobj__42)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_reduce_cython, __pyx_t_3) < 0) __PYX_ERR(1, 1, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - - /* "(tree fragment)":3 - * def __reduce_cython__(self): - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - */ - __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_5tinyr_9_NodeIter_7__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_NodeIter___setstate_cython, NULL, __pyx_n_s_tinyr, __pyx_d, ((PyObject *)__pyx_codeobj__43)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 3, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_setstate_cython, __pyx_t_3) < 0) __PYX_ERR(1, 3, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - - /* "(tree fragment)":1 - * def __reduce_cython__(self): # <<<<<<<<<<<<<< - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): - */ - __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_5tinyr_14_RectangleIter_5__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_RectangleIter___reduce_cython, NULL, __pyx_n_s_tinyr, __pyx_d, ((PyObject *)__pyx_codeobj__44)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_reduce_cython, __pyx_t_3) < 0) __PYX_ERR(1, 1, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - - /* "(tree fragment)":3 - * def __reduce_cython__(self): - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - */ - __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_5tinyr_14_RectangleIter_7__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_RectangleIter___setstate_cython, NULL, __pyx_n_s_tinyr, __pyx_d, ((PyObject *)__pyx_codeobj__45)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 3, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_setstate_cython, __pyx_t_3) < 0) __PYX_ERR(1, 3, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - - /* "(tree fragment)":1 - * def __reduce_cython__(self): # <<<<<<<<<<<<<< - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): - */ - __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_5tinyr_16_ChildRecordIter_5__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ChildRecordIter___reduce_cython, NULL, __pyx_n_s_tinyr, __pyx_d, ((PyObject *)__pyx_codeobj__46)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_reduce_cython, __pyx_t_3) < 0) __PYX_ERR(1, 1, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - - /* "(tree fragment)":3 - * def __reduce_cython__(self): - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - */ - __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_5tinyr_16_ChildRecordIter_7__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ChildRecordIter___setstate_cyth, NULL, __pyx_n_s_tinyr, __pyx_d, ((PyObject *)__pyx_codeobj__47)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 3, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_setstate_cython, __pyx_t_3) < 0) __PYX_ERR(1, 3, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - - /* "(tree fragment)":1 - * def __reduce_cython__(self): # <<<<<<<<<<<<<< - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): - */ - __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_5tinyr_8_KVIIter_3__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_KVIIter___reduce_cython, NULL, __pyx_n_s_tinyr, __pyx_d, ((PyObject *)__pyx_codeobj__48)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_reduce_cython, __pyx_t_3) < 0) __PYX_ERR(1, 1, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - - /* "(tree fragment)":3 - * def __reduce_cython__(self): - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - */ - __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_5tinyr_8_KVIIter_5__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_KVIIter___setstate_cython, NULL, __pyx_n_s_tinyr, __pyx_d, ((PyObject *)__pyx_codeobj__49)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 3, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_setstate_cython, __pyx_t_3) < 0) __PYX_ERR(1, 3, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - - /* "(tree fragment)":1 - * def __reduce_cython__(self): # <<<<<<<<<<<<<< - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): - */ - __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_5tinyr_9_KeysIter_3__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_KeysIter___reduce_cython, NULL, __pyx_n_s_tinyr, __pyx_d, ((PyObject *)__pyx_codeobj__50)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_reduce_cython, __pyx_t_3) < 0) __PYX_ERR(1, 1, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - - /* "(tree fragment)":3 - * def __reduce_cython__(self): - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - */ - __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_5tinyr_9_KeysIter_5__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_KeysIter___setstate_cython, NULL, __pyx_n_s_tinyr, __pyx_d, ((PyObject *)__pyx_codeobj__51)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 3, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_setstate_cython, __pyx_t_3) < 0) __PYX_ERR(1, 3, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - - /* "(tree fragment)":1 - * def __reduce_cython__(self): # <<<<<<<<<<<<<< - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): - */ - __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_5tinyr_11_ValuesIter_3__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ValuesIter___reduce_cython, NULL, __pyx_n_s_tinyr, __pyx_d, ((PyObject *)__pyx_codeobj__52)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_reduce_cython, __pyx_t_3) < 0) __PYX_ERR(1, 1, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - - /* "(tree fragment)":3 - * def __reduce_cython__(self): - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - */ - __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_5tinyr_11_ValuesIter_5__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ValuesIter___setstate_cython, NULL, __pyx_n_s_tinyr, __pyx_d, ((PyObject *)__pyx_codeobj__53)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 3, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_setstate_cython, __pyx_t_3) < 0) __PYX_ERR(1, 3, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - - /* "(tree fragment)":1 - * def __reduce_cython__(self): # <<<<<<<<<<<<<< - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): - */ - __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_5tinyr_10_ItemsIter_3__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ItemsIter___reduce_cython, NULL, __pyx_n_s_tinyr, __pyx_d, ((PyObject *)__pyx_codeobj__54)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_reduce_cython, __pyx_t_3) < 0) __PYX_ERR(1, 1, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - - /* "(tree fragment)":3 - * def __reduce_cython__(self): - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - */ - __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_5tinyr_10_ItemsIter_5__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ItemsIter___setstate_cython, NULL, __pyx_n_s_tinyr, __pyx_d, ((PyObject *)__pyx_codeobj__55)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 3, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_setstate_cython, __pyx_t_3) < 0) __PYX_ERR(1, 3, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - - /* "tinyr.pyx":1022 - * self.rtree = rtree - * - * def iter_rectangles(self): # <<<<<<<<<<<<<< - * '''Iterate over key coordinates and combined frames. - * - */ - __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_5tinyr_9RTreeInfo_3iter_rectangles, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_RTreeInfo_iter_rectangles, NULL, __pyx_n_s_tinyr, __pyx_d, ((PyObject *)__pyx_codeobj__56)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1022, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_5tinyr_RTreeInfo, __pyx_n_s_iter_rectangles, __pyx_t_3) < 0) __PYX_ERR(0, 1022, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - PyType_Modified(__pyx_ptype_5tinyr_RTreeInfo); - - /* "tinyr.pyx":1058 - * return coords[3]-coords[1] - * - * def to_dot(self, filelike): # <<<<<<<<<<<<<< - * '''Writes simple dot-code into filelike that represents the tree structure.''' - * cdef: - */ - __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_5tinyr_9RTreeInfo_5to_dot, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_RTreeInfo_to_dot, NULL, __pyx_n_s_tinyr, __pyx_d, ((PyObject *)__pyx_codeobj__58)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1058, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_5tinyr_RTreeInfo, __pyx_n_s_to_dot, __pyx_t_3) < 0) __PYX_ERR(0, 1058, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - PyType_Modified(__pyx_ptype_5tinyr_RTreeInfo); - - /* "(tree fragment)":1 - * def __reduce_cython__(self): # <<<<<<<<<<<<<< - * cdef tuple state - * cdef object _dict - */ - __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_5tinyr_9RTreeInfo_7__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_RTreeInfo___reduce_cython, NULL, __pyx_n_s_tinyr, __pyx_d, ((PyObject *)__pyx_codeobj__59)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_5tinyr_RTreeInfo, __pyx_n_s_reduce_cython, __pyx_t_3) < 0) __PYX_ERR(1, 1, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - PyType_Modified(__pyx_ptype_5tinyr_RTreeInfo); - - /* "(tree fragment)":16 - * else: - * return __pyx_unpickle_RTreeInfo, (type(self), 0xda92ccd, state) - * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< - * __pyx_unpickle_RTreeInfo__set_state(self, __pyx_state) - */ - __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_5tinyr_9RTreeInfo_9__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_RTreeInfo___setstate_cython, NULL, __pyx_n_s_tinyr, __pyx_d, ((PyObject *)__pyx_codeobj__60)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 16, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_5tinyr_RTreeInfo, __pyx_n_s_setstate_cython, __pyx_t_3) < 0) __PYX_ERR(1, 16, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - PyType_Modified(__pyx_ptype_5tinyr_RTreeInfo); - - /* "(tree fragment)":1 - * def __pyx_unpickle__Record(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< - * cdef object __pyx_PickleError - * cdef object __pyx_result - */ - __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_5tinyr_1__pyx_unpickle__Record, 0, __pyx_n_s_pyx_unpickle__Record, NULL, __pyx_n_s_tinyr, __pyx_d, ((PyObject *)__pyx_codeobj__62)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle__Record, __pyx_t_3) < 0) __PYX_ERR(1, 1, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - - /* "(tree fragment)":11 - * __pyx_unpickle__Record__set_state(<_Record> __pyx_result, __pyx_state) - * return __pyx_result - * cdef __pyx_unpickle__Record__set_state(_Record __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<< - * __pyx_result.coords = __pyx_state[0] - * if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'): - */ - __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_5tinyr_3__pyx_unpickle__ChildRecord, 0, __pyx_n_s_pyx_unpickle__ChildRecord, NULL, __pyx_n_s_tinyr, __pyx_d, ((PyObject *)__pyx_codeobj__63)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle__ChildRecord, __pyx_t_3) < 0) __PYX_ERR(1, 1, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - - /* "(tree fragment)":1 - * def __pyx_unpickle_RTreeInfo(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< - * cdef object __pyx_PickleError - * cdef object __pyx_result - */ - __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_5tinyr_5__pyx_unpickle_RTreeInfo, 0, __pyx_n_s_pyx_unpickle_RTreeInfo, NULL, __pyx_n_s_tinyr, __pyx_d, ((PyObject *)__pyx_codeobj__64)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_RTreeInfo, __pyx_t_3) < 0) __PYX_ERR(1, 1, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - - /* "tinyr.pyx":1 - * # # <<<<<<<<<<<<<< - * # tinyr - a 2D-RTree implementation in Cython - * # Copyright (C) 2011 Matthias Simon - */ - __pyx_t_3 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_3) < 0) __PYX_ERR(0, 1, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - - /*--- Wrapped vars code ---*/ - - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); - if (__pyx_m) { - if (__pyx_d && stringtab_initialized) { - __Pyx_AddTraceback("init tinyr", __pyx_clineno, __pyx_lineno, __pyx_filename); - } - #if !CYTHON_USE_MODULE_STATE - Py_CLEAR(__pyx_m); - #else - Py_DECREF(__pyx_m); - if (pystate_addmodule_run) { - PyObject *tp, *value, *tb; - PyErr_Fetch(&tp, &value, &tb); - PyState_RemoveModule(&__pyx_moduledef); - PyErr_Restore(tp, value, tb); - } - #endif - } else if (!PyErr_Occurred()) { - PyErr_SetString(PyExc_ImportError, "init tinyr"); - } - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - #if CYTHON_PEP489_MULTI_PHASE_INIT - return (__pyx_m != NULL) ? 0 : -1; - #elif PY_MAJOR_VERSION >= 3 - return __pyx_m; - #else - return; - #endif -} -/* #### Code section: cleanup_globals ### */ -/* #### Code section: cleanup_module ### */ -/* #### Code section: main_method ### */ -/* #### Code section: utility_code_pragmas ### */ -#ifdef _MSC_VER -#pragma warning( push ) -/* Warning 4127: conditional expression is constant - * Cython uses constant conditional expressions to allow in inline functions to be optimized at - * compile-time, so this warning is not useful - */ -#pragma warning( disable : 4127 ) -#endif - - - -/* #### Code section: utility_code_def ### */ - -/* --- Runtime support code --- */ -/* Refnanny */ -#if CYTHON_REFNANNY -static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) { - PyObject *m = NULL, *p = NULL; - void *r = NULL; - m = PyImport_ImportModule(modname); - if (!m) goto end; - p = PyObject_GetAttrString(m, "RefNannyAPI"); - if (!p) goto end; - r = PyLong_AsVoidPtr(p); -end: - Py_XDECREF(p); - Py_XDECREF(m); - return (__Pyx_RefNannyAPIStruct *)r; -} -#endif - -/* PyErrExceptionMatches */ -#if CYTHON_FAST_THREAD_STATE -static int __Pyx_PyErr_ExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) { - Py_ssize_t i, n; - n = PyTuple_GET_SIZE(tuple); -#if PY_MAJOR_VERSION >= 3 - for (i=0; i= 0x030C00A6 - PyObject *current_exception = tstate->current_exception; - if (unlikely(!current_exception)) return 0; - exc_type = (PyObject*) Py_TYPE(current_exception); - if (exc_type == err) return 1; -#else - exc_type = tstate->curexc_type; - if (exc_type == err) return 1; - if (unlikely(!exc_type)) return 0; -#endif - #if CYTHON_AVOID_BORROWED_REFS - Py_INCREF(exc_type); - #endif - if (unlikely(PyTuple_Check(err))) { - result = __Pyx_PyErr_ExceptionMatchesTuple(exc_type, err); - } else { - result = __Pyx_PyErr_GivenExceptionMatches(exc_type, err); - } - #if CYTHON_AVOID_BORROWED_REFS - Py_DECREF(exc_type); - #endif - return result; -} -#endif - -/* PyErrFetchRestore */ -#if CYTHON_FAST_THREAD_STATE -static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { -#if PY_VERSION_HEX >= 0x030C00A6 - PyObject *tmp_value; - assert(type == NULL || (value != NULL && type == (PyObject*) Py_TYPE(value))); - if (value) { - #if CYTHON_COMPILING_IN_CPYTHON - if (unlikely(((PyBaseExceptionObject*) value)->traceback != tb)) - #endif - PyException_SetTraceback(value, tb); - } - tmp_value = tstate->current_exception; - tstate->current_exception = value; - Py_XDECREF(tmp_value); - Py_XDECREF(type); - Py_XDECREF(tb); -#else - PyObject *tmp_type, *tmp_value, *tmp_tb; - tmp_type = tstate->curexc_type; - tmp_value = tstate->curexc_value; - tmp_tb = tstate->curexc_traceback; - tstate->curexc_type = type; - tstate->curexc_value = value; - tstate->curexc_traceback = tb; - Py_XDECREF(tmp_type); - Py_XDECREF(tmp_value); - Py_XDECREF(tmp_tb); -#endif -} -static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { -#if PY_VERSION_HEX >= 0x030C00A6 - PyObject* exc_value; - exc_value = tstate->current_exception; - tstate->current_exception = 0; - *value = exc_value; - *type = NULL; - *tb = NULL; - if (exc_value) { - *type = (PyObject*) Py_TYPE(exc_value); - Py_INCREF(*type); - #if CYTHON_COMPILING_IN_CPYTHON - *tb = ((PyBaseExceptionObject*) exc_value)->traceback; - Py_XINCREF(*tb); - #else - *tb = PyException_GetTraceback(exc_value); - #endif - } -#else - *type = tstate->curexc_type; - *value = tstate->curexc_value; - *tb = tstate->curexc_traceback; - tstate->curexc_type = 0; - tstate->curexc_value = 0; - tstate->curexc_traceback = 0; -#endif -} -#endif - -/* PyObjectGetAttrStr */ -#if CYTHON_USE_TYPE_SLOTS -static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name) { - PyTypeObject* tp = Py_TYPE(obj); - if (likely(tp->tp_getattro)) - return tp->tp_getattro(obj, attr_name); -#if PY_MAJOR_VERSION < 3 - if (likely(tp->tp_getattr)) - return tp->tp_getattr(obj, PyString_AS_STRING(attr_name)); -#endif - return PyObject_GetAttr(obj, attr_name); -} -#endif - -/* PyObjectGetAttrStrNoError */ -#if __PYX_LIMITED_VERSION_HEX < 0x030d00A1 -static void __Pyx_PyObject_GetAttrStr_ClearAttributeError(void) { - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - if (likely(__Pyx_PyErr_ExceptionMatches(PyExc_AttributeError))) - __Pyx_PyErr_Clear(); -} -#endif -static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStrNoError(PyObject* obj, PyObject* attr_name) { - PyObject *result; -#if __PYX_LIMITED_VERSION_HEX >= 0x030d00A1 - (void) PyObject_GetOptionalAttr(obj, attr_name, &result); - return result; -#else -#if CYTHON_COMPILING_IN_CPYTHON && CYTHON_USE_TYPE_SLOTS && PY_VERSION_HEX >= 0x030700B1 - PyTypeObject* tp = Py_TYPE(obj); - if (likely(tp->tp_getattro == PyObject_GenericGetAttr)) { - return _PyObject_GenericGetAttrWithDict(obj, attr_name, NULL, 1); - } -#endif - result = __Pyx_PyObject_GetAttrStr(obj, attr_name); - if (unlikely(!result)) { - __Pyx_PyObject_GetAttrStr_ClearAttributeError(); - } - return result; -#endif -} - -/* GetBuiltinName */ -static PyObject *__Pyx_GetBuiltinName(PyObject *name) { - PyObject* result = __Pyx_PyObject_GetAttrStrNoError(__pyx_b, name); - if (unlikely(!result) && !PyErr_Occurred()) { - PyErr_Format(PyExc_NameError, -#if PY_MAJOR_VERSION >= 3 - "name '%U' is not defined", name); -#else - "name '%.200s' is not defined", PyString_AS_STRING(name)); -#endif - } - return result; -} - -/* GetTopmostException */ -#if CYTHON_USE_EXC_INFO_STACK && CYTHON_FAST_THREAD_STATE -static _PyErr_StackItem * -__Pyx_PyErr_GetTopmostException(PyThreadState *tstate) -{ - _PyErr_StackItem *exc_info = tstate->exc_info; - while ((exc_info->exc_value == NULL || exc_info->exc_value == Py_None) && - exc_info->previous_item != NULL) - { - exc_info = exc_info->previous_item; - } - return exc_info; -} -#endif - -/* SaveResetException */ -#if CYTHON_FAST_THREAD_STATE -static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { - #if CYTHON_USE_EXC_INFO_STACK && PY_VERSION_HEX >= 0x030B00a4 - _PyErr_StackItem *exc_info = __Pyx_PyErr_GetTopmostException(tstate); - PyObject *exc_value = exc_info->exc_value; - if (exc_value == NULL || exc_value == Py_None) { - *value = NULL; - *type = NULL; - *tb = NULL; - } else { - *value = exc_value; - Py_INCREF(*value); - *type = (PyObject*) Py_TYPE(exc_value); - Py_INCREF(*type); - *tb = PyException_GetTraceback(exc_value); - } - #elif CYTHON_USE_EXC_INFO_STACK - _PyErr_StackItem *exc_info = __Pyx_PyErr_GetTopmostException(tstate); - *type = exc_info->exc_type; - *value = exc_info->exc_value; - *tb = exc_info->exc_traceback; - Py_XINCREF(*type); - Py_XINCREF(*value); - Py_XINCREF(*tb); - #else - *type = tstate->exc_type; - *value = tstate->exc_value; - *tb = tstate->exc_traceback; - Py_XINCREF(*type); - Py_XINCREF(*value); - Py_XINCREF(*tb); - #endif -} -static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { - #if CYTHON_USE_EXC_INFO_STACK && PY_VERSION_HEX >= 0x030B00a4 - _PyErr_StackItem *exc_info = tstate->exc_info; - PyObject *tmp_value = exc_info->exc_value; - exc_info->exc_value = value; - Py_XDECREF(tmp_value); - Py_XDECREF(type); - Py_XDECREF(tb); - #else - PyObject *tmp_type, *tmp_value, *tmp_tb; - #if CYTHON_USE_EXC_INFO_STACK - _PyErr_StackItem *exc_info = tstate->exc_info; - tmp_type = exc_info->exc_type; - tmp_value = exc_info->exc_value; - tmp_tb = exc_info->exc_traceback; - exc_info->exc_type = type; - exc_info->exc_value = value; - exc_info->exc_traceback = tb; - #else - tmp_type = tstate->exc_type; - tmp_value = tstate->exc_value; - tmp_tb = tstate->exc_traceback; - tstate->exc_type = type; - tstate->exc_value = value; - tstate->exc_traceback = tb; - #endif - Py_XDECREF(tmp_type); - Py_XDECREF(tmp_value); - Py_XDECREF(tmp_tb); - #endif -} -#endif - -/* FastTypeChecks */ -#if CYTHON_COMPILING_IN_CPYTHON -static int __Pyx_InBases(PyTypeObject *a, PyTypeObject *b) { - while (a) { - a = __Pyx_PyType_GetSlot(a, tp_base, PyTypeObject*); - if (a == b) - return 1; - } - return b == &PyBaseObject_Type; -} -static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b) { - PyObject *mro; - if (a == b) return 1; - mro = a->tp_mro; - if (likely(mro)) { - Py_ssize_t i, n; - n = PyTuple_GET_SIZE(mro); - for (i = 0; i < n; i++) { - if (PyTuple_GET_ITEM(mro, i) == (PyObject *)b) - return 1; - } - return 0; - } - return __Pyx_InBases(a, b); -} -static CYTHON_INLINE int __Pyx_IsAnySubtype2(PyTypeObject *cls, PyTypeObject *a, PyTypeObject *b) { - PyObject *mro; - if (cls == a || cls == b) return 1; - mro = cls->tp_mro; - if (likely(mro)) { - Py_ssize_t i, n; - n = PyTuple_GET_SIZE(mro); - for (i = 0; i < n; i++) { - PyObject *base = PyTuple_GET_ITEM(mro, i); - if (base == (PyObject *)a || base == (PyObject *)b) - return 1; - } - return 0; - } - return __Pyx_InBases(cls, a) || __Pyx_InBases(cls, b); -} -#if PY_MAJOR_VERSION == 2 -static int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject* exc_type2) { - PyObject *exception, *value, *tb; - int res; - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __Pyx_ErrFetch(&exception, &value, &tb); - res = exc_type1 ? PyObject_IsSubclass(err, exc_type1) : 0; - if (unlikely(res == -1)) { - PyErr_WriteUnraisable(err); - res = 0; - } - if (!res) { - res = PyObject_IsSubclass(err, exc_type2); - if (unlikely(res == -1)) { - PyErr_WriteUnraisable(err); - res = 0; - } - } - __Pyx_ErrRestore(exception, value, tb); - return res; -} -#else -static CYTHON_INLINE int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject *exc_type2) { - if (exc_type1) { - return __Pyx_IsAnySubtype2((PyTypeObject*)err, (PyTypeObject*)exc_type1, (PyTypeObject*)exc_type2); - } else { - return __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type2); - } -} -#endif -static int __Pyx_PyErr_GivenExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) { - Py_ssize_t i, n; - assert(PyExceptionClass_Check(exc_type)); - n = PyTuple_GET_SIZE(tuple); -#if PY_MAJOR_VERSION >= 3 - for (i=0; i= 0)) ? i : i + PyList_GET_SIZE(o); - if ((!boundscheck) || (likely(__Pyx_is_valid_index(n, PyList_GET_SIZE(o))))) { - PyObject *r = PyList_GET_ITEM(o, n); - Py_INCREF(r); - return r; - } - } - else if (PyTuple_CheckExact(o)) { - Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyTuple_GET_SIZE(o); - if ((!boundscheck) || likely(__Pyx_is_valid_index(n, PyTuple_GET_SIZE(o)))) { - PyObject *r = PyTuple_GET_ITEM(o, n); - Py_INCREF(r); - return r; - } - } else { - PyMappingMethods *mm = Py_TYPE(o)->tp_as_mapping; - PySequenceMethods *sm = Py_TYPE(o)->tp_as_sequence; - if (mm && mm->mp_subscript) { - PyObject *r, *key = PyInt_FromSsize_t(i); - if (unlikely(!key)) return NULL; - r = mm->mp_subscript(o, key); - Py_DECREF(key); - return r; - } - if (likely(sm && sm->sq_item)) { - if (wraparound && unlikely(i < 0) && likely(sm->sq_length)) { - Py_ssize_t l = sm->sq_length(o); - if (likely(l >= 0)) { - i += l; - } else { - if (!PyErr_ExceptionMatches(PyExc_OverflowError)) - return NULL; - PyErr_Clear(); - } - } - return sm->sq_item(o, i); - } - } -#else - if (is_list || !PyMapping_Check(o)) { - return PySequence_GetItem(o, i); - } -#endif - return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); -} - -/* ExtTypeTest */ -static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) { - __Pyx_TypeName obj_type_name; - __Pyx_TypeName type_name; - if (unlikely(!type)) { - PyErr_SetString(PyExc_SystemError, "Missing type object"); - return 0; - } - if (likely(__Pyx_TypeCheck(obj, type))) - return 1; - obj_type_name = __Pyx_PyType_GetName(Py_TYPE(obj)); - type_name = __Pyx_PyType_GetName(type); - PyErr_Format(PyExc_TypeError, - "Cannot convert " __Pyx_FMT_TYPENAME " to " __Pyx_FMT_TYPENAME, - obj_type_name, type_name); - __Pyx_DECREF_TypeName(obj_type_name); - __Pyx_DECREF_TypeName(type_name); - return 0; -} - -/* RaiseException */ -#if PY_MAJOR_VERSION < 3 -static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) { - __Pyx_PyThreadState_declare - CYTHON_UNUSED_VAR(cause); - Py_XINCREF(type); - if (!value || value == Py_None) - value = NULL; - else - Py_INCREF(value); - if (!tb || tb == Py_None) - tb = NULL; - else { - Py_INCREF(tb); - if (!PyTraceBack_Check(tb)) { - PyErr_SetString(PyExc_TypeError, - "raise: arg 3 must be a traceback or None"); - goto raise_error; - } - } - if (PyType_Check(type)) { -#if CYTHON_COMPILING_IN_PYPY - if (!value) { - Py_INCREF(Py_None); - value = Py_None; - } -#endif - PyErr_NormalizeException(&type, &value, &tb); - } else { - if (value) { - PyErr_SetString(PyExc_TypeError, - "instance exception may not have a separate value"); - goto raise_error; - } - value = type; - type = (PyObject*) Py_TYPE(type); - Py_INCREF(type); - if (!PyType_IsSubtype((PyTypeObject *)type, (PyTypeObject *)PyExc_BaseException)) { - PyErr_SetString(PyExc_TypeError, - "raise: exception class must be a subclass of BaseException"); - goto raise_error; - } - } - __Pyx_PyThreadState_assign - __Pyx_ErrRestore(type, value, tb); - return; -raise_error: - Py_XDECREF(value); - Py_XDECREF(type); - Py_XDECREF(tb); - return; -} -#else -static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) { - PyObject* owned_instance = NULL; - if (tb == Py_None) { - tb = 0; - } else if (tb && !PyTraceBack_Check(tb)) { - PyErr_SetString(PyExc_TypeError, - "raise: arg 3 must be a traceback or None"); - goto bad; - } - if (value == Py_None) - value = 0; - if (PyExceptionInstance_Check(type)) { - if (value) { - PyErr_SetString(PyExc_TypeError, - "instance exception may not have a separate value"); - goto bad; - } - value = type; - type = (PyObject*) Py_TYPE(value); - } else if (PyExceptionClass_Check(type)) { - PyObject *instance_class = NULL; - if (value && PyExceptionInstance_Check(value)) { - instance_class = (PyObject*) Py_TYPE(value); - if (instance_class != type) { - int is_subclass = PyObject_IsSubclass(instance_class, type); - if (!is_subclass) { - instance_class = NULL; - } else if (unlikely(is_subclass == -1)) { - goto bad; - } else { - type = instance_class; - } - } - } - if (!instance_class) { - PyObject *args; - if (!value) - args = PyTuple_New(0); - else if (PyTuple_Check(value)) { - Py_INCREF(value); - args = value; - } else - args = PyTuple_Pack(1, value); - if (!args) - goto bad; - owned_instance = PyObject_Call(type, args, NULL); - Py_DECREF(args); - if (!owned_instance) - goto bad; - value = owned_instance; - if (!PyExceptionInstance_Check(value)) { - PyErr_Format(PyExc_TypeError, - "calling %R should have returned an instance of " - "BaseException, not %R", - type, Py_TYPE(value)); - goto bad; - } - } - } else { - PyErr_SetString(PyExc_TypeError, - "raise: exception class must be a subclass of BaseException"); - goto bad; - } - if (cause) { - PyObject *fixed_cause; - if (cause == Py_None) { - fixed_cause = NULL; - } else if (PyExceptionClass_Check(cause)) { - fixed_cause = PyObject_CallObject(cause, NULL); - if (fixed_cause == NULL) - goto bad; - } else if (PyExceptionInstance_Check(cause)) { - fixed_cause = cause; - Py_INCREF(fixed_cause); - } else { - PyErr_SetString(PyExc_TypeError, - "exception causes must derive from " - "BaseException"); - goto bad; - } - PyException_SetCause(value, fixed_cause); - } - PyErr_SetObject(type, value); - if (tb) { - #if PY_VERSION_HEX >= 0x030C00A6 - PyException_SetTraceback(value, tb); - #elif CYTHON_FAST_THREAD_STATE - PyThreadState *tstate = __Pyx_PyThreadState_Current; - PyObject* tmp_tb = tstate->curexc_traceback; - if (tb != tmp_tb) { - Py_INCREF(tb); - tstate->curexc_traceback = tb; - Py_XDECREF(tmp_tb); - } -#else - PyObject *tmp_type, *tmp_value, *tmp_tb; - PyErr_Fetch(&tmp_type, &tmp_value, &tmp_tb); - Py_INCREF(tb); - PyErr_Restore(tmp_type, tmp_value, tb); - Py_XDECREF(tmp_tb); -#endif - } -bad: - Py_XDECREF(owned_instance); - return; -} -#endif - -/* TupleAndListFromArray */ -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE void __Pyx_copy_object_array(PyObject *const *CYTHON_RESTRICT src, PyObject** CYTHON_RESTRICT dest, Py_ssize_t length) { - PyObject *v; - Py_ssize_t i; - for (i = 0; i < length; i++) { - v = dest[i] = src[i]; - Py_INCREF(v); - } -} -static CYTHON_INLINE PyObject * -__Pyx_PyTuple_FromArray(PyObject *const *src, Py_ssize_t n) -{ - PyObject *res; - if (n <= 0) { - Py_INCREF(__pyx_empty_tuple); - return __pyx_empty_tuple; - } - res = PyTuple_New(n); - if (unlikely(res == NULL)) return NULL; - __Pyx_copy_object_array(src, ((PyTupleObject*)res)->ob_item, n); - return res; -} -static CYTHON_INLINE PyObject * -__Pyx_PyList_FromArray(PyObject *const *src, Py_ssize_t n) -{ - PyObject *res; - if (n <= 0) { - return PyList_New(0); - } - res = PyList_New(n); - if (unlikely(res == NULL)) return NULL; - __Pyx_copy_object_array(src, ((PyListObject*)res)->ob_item, n); - return res; -} -#endif - -/* BytesEquals */ -static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals) { -#if CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API - return PyObject_RichCompareBool(s1, s2, equals); -#else - if (s1 == s2) { - return (equals == Py_EQ); - } else if (PyBytes_CheckExact(s1) & PyBytes_CheckExact(s2)) { - const char *ps1, *ps2; - Py_ssize_t length = PyBytes_GET_SIZE(s1); - if (length != PyBytes_GET_SIZE(s2)) - return (equals == Py_NE); - ps1 = PyBytes_AS_STRING(s1); - ps2 = PyBytes_AS_STRING(s2); - if (ps1[0] != ps2[0]) { - return (equals == Py_NE); - } else if (length == 1) { - return (equals == Py_EQ); - } else { - int result; -#if CYTHON_USE_UNICODE_INTERNALS && (PY_VERSION_HEX < 0x030B0000) - Py_hash_t hash1, hash2; - hash1 = ((PyBytesObject*)s1)->ob_shash; - hash2 = ((PyBytesObject*)s2)->ob_shash; - if (hash1 != hash2 && hash1 != -1 && hash2 != -1) { - return (equals == Py_NE); - } -#endif - result = memcmp(ps1, ps2, (size_t)length); - return (equals == Py_EQ) ? (result == 0) : (result != 0); - } - } else if ((s1 == Py_None) & PyBytes_CheckExact(s2)) { - return (equals == Py_NE); - } else if ((s2 == Py_None) & PyBytes_CheckExact(s1)) { - return (equals == Py_NE); - } else { - int result; - PyObject* py_result = PyObject_RichCompare(s1, s2, equals); - if (!py_result) - return -1; - result = __Pyx_PyObject_IsTrue(py_result); - Py_DECREF(py_result); - return result; - } -#endif -} - -/* UnicodeEquals */ -static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals) { -#if CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API - return PyObject_RichCompareBool(s1, s2, equals); -#else -#if PY_MAJOR_VERSION < 3 - PyObject* owned_ref = NULL; -#endif - int s1_is_unicode, s2_is_unicode; - if (s1 == s2) { - goto return_eq; - } - s1_is_unicode = PyUnicode_CheckExact(s1); - s2_is_unicode = PyUnicode_CheckExact(s2); -#if PY_MAJOR_VERSION < 3 - if ((s1_is_unicode & (!s2_is_unicode)) && PyString_CheckExact(s2)) { - owned_ref = PyUnicode_FromObject(s2); - if (unlikely(!owned_ref)) - return -1; - s2 = owned_ref; - s2_is_unicode = 1; - } else if ((s2_is_unicode & (!s1_is_unicode)) && PyString_CheckExact(s1)) { - owned_ref = PyUnicode_FromObject(s1); - if (unlikely(!owned_ref)) - return -1; - s1 = owned_ref; - s1_is_unicode = 1; - } else if (((!s2_is_unicode) & (!s1_is_unicode))) { - return __Pyx_PyBytes_Equals(s1, s2, equals); - } -#endif - if (s1_is_unicode & s2_is_unicode) { - Py_ssize_t length; - int kind; - void *data1, *data2; - if (unlikely(__Pyx_PyUnicode_READY(s1) < 0) || unlikely(__Pyx_PyUnicode_READY(s2) < 0)) - return -1; - length = __Pyx_PyUnicode_GET_LENGTH(s1); - if (length != __Pyx_PyUnicode_GET_LENGTH(s2)) { - goto return_ne; - } -#if CYTHON_USE_UNICODE_INTERNALS - { - Py_hash_t hash1, hash2; - #if CYTHON_PEP393_ENABLED - hash1 = ((PyASCIIObject*)s1)->hash; - hash2 = ((PyASCIIObject*)s2)->hash; - #else - hash1 = ((PyUnicodeObject*)s1)->hash; - hash2 = ((PyUnicodeObject*)s2)->hash; - #endif - if (hash1 != hash2 && hash1 != -1 && hash2 != -1) { - goto return_ne; - } - } -#endif - kind = __Pyx_PyUnicode_KIND(s1); - if (kind != __Pyx_PyUnicode_KIND(s2)) { - goto return_ne; - } - data1 = __Pyx_PyUnicode_DATA(s1); - data2 = __Pyx_PyUnicode_DATA(s2); - if (__Pyx_PyUnicode_READ(kind, data1, 0) != __Pyx_PyUnicode_READ(kind, data2, 0)) { - goto return_ne; - } else if (length == 1) { - goto return_eq; - } else { - int result = memcmp(data1, data2, (size_t)(length * kind)); - #if PY_MAJOR_VERSION < 3 - Py_XDECREF(owned_ref); - #endif - return (equals == Py_EQ) ? (result == 0) : (result != 0); - } - } else if ((s1 == Py_None) & s2_is_unicode) { - goto return_ne; - } else if ((s2 == Py_None) & s1_is_unicode) { - goto return_ne; - } else { - int result; - PyObject* py_result = PyObject_RichCompare(s1, s2, equals); - #if PY_MAJOR_VERSION < 3 - Py_XDECREF(owned_ref); - #endif - if (!py_result) - return -1; - result = __Pyx_PyObject_IsTrue(py_result); - Py_DECREF(py_result); - return result; - } -return_eq: - #if PY_MAJOR_VERSION < 3 - Py_XDECREF(owned_ref); - #endif - return (equals == Py_EQ); -return_ne: - #if PY_MAJOR_VERSION < 3 - Py_XDECREF(owned_ref); - #endif - return (equals == Py_NE); -#endif -} - -/* fastcall */ -#if CYTHON_METH_FASTCALL -static CYTHON_INLINE PyObject * __Pyx_GetKwValue_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues, PyObject *s) -{ - Py_ssize_t i, n = PyTuple_GET_SIZE(kwnames); - for (i = 0; i < n; i++) - { - if (s == PyTuple_GET_ITEM(kwnames, i)) return kwvalues[i]; - } - for (i = 0; i < n; i++) - { - int eq = __Pyx_PyUnicode_Equals(s, PyTuple_GET_ITEM(kwnames, i), Py_EQ); - if (unlikely(eq != 0)) { - if (unlikely(eq < 0)) return NULL; - return kwvalues[i]; - } - } - return NULL; -} -#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030d0000 -CYTHON_UNUSED static PyObject *__Pyx_KwargsAsDict_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues) { - Py_ssize_t i, nkwargs = PyTuple_GET_SIZE(kwnames); - PyObject *dict; - dict = PyDict_New(); - if (unlikely(!dict)) - return NULL; - for (i=0; i= 0x030d00A1 - int res = PyObject_GetOptionalAttr(o, n, &r); - return (res != 0) ? r : __Pyx_NewRef(d); -#else - #if CYTHON_USE_TYPE_SLOTS - if (likely(PyString_Check(n))) { - r = __Pyx_PyObject_GetAttrStrNoError(o, n); - if (unlikely(!r) && likely(!PyErr_Occurred())) { - r = __Pyx_NewRef(d); - } - return r; - } - #endif - r = PyObject_GetAttr(o, n); - return (likely(r)) ? r : __Pyx_GetAttr3Default(d); -#endif -} - -/* PyDictVersioning */ -#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS -static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version(PyObject *obj) { - PyObject *dict = Py_TYPE(obj)->tp_dict; - return likely(dict) ? __PYX_GET_DICT_VERSION(dict) : 0; -} -static CYTHON_INLINE PY_UINT64_T __Pyx_get_object_dict_version(PyObject *obj) { - PyObject **dictptr = NULL; - Py_ssize_t offset = Py_TYPE(obj)->tp_dictoffset; - if (offset) { -#if CYTHON_COMPILING_IN_CPYTHON - dictptr = (likely(offset > 0)) ? (PyObject **) ((char *)obj + offset) : _PyObject_GetDictPtr(obj); -#else - dictptr = _PyObject_GetDictPtr(obj); -#endif - } - return (dictptr && *dictptr) ? __PYX_GET_DICT_VERSION(*dictptr) : 0; -} -static CYTHON_INLINE int __Pyx_object_dict_version_matches(PyObject* obj, PY_UINT64_T tp_dict_version, PY_UINT64_T obj_dict_version) { - PyObject *dict = Py_TYPE(obj)->tp_dict; - if (unlikely(!dict) || unlikely(tp_dict_version != __PYX_GET_DICT_VERSION(dict))) - return 0; - return obj_dict_version == __Pyx_get_object_dict_version(obj); -} -#endif - -/* GetModuleGlobalName */ -#if CYTHON_USE_DICT_VERSIONS -static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value) -#else -static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name) -#endif -{ - PyObject *result; -#if !CYTHON_AVOID_BORROWED_REFS -#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1 && PY_VERSION_HEX < 0x030d0000 - result = _PyDict_GetItem_KnownHash(__pyx_d, name, ((PyASCIIObject *) name)->hash); - __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version) - if (likely(result)) { - return __Pyx_NewRef(result); - } else if (unlikely(PyErr_Occurred())) { - return NULL; - } -#elif CYTHON_COMPILING_IN_LIMITED_API - if (unlikely(!__pyx_m)) { - return NULL; - } - result = PyObject_GetAttr(__pyx_m, name); - if (likely(result)) { - return result; - } -#else - result = PyDict_GetItem(__pyx_d, name); - __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version) - if (likely(result)) { - return __Pyx_NewRef(result); - } -#endif -#else - result = PyObject_GetItem(__pyx_d, name); - __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version) - if (likely(result)) { - return __Pyx_NewRef(result); - } - PyErr_Clear(); -#endif - return __Pyx_GetBuiltinName(name); -} - -/* RaiseDoubleKeywords */ -static void __Pyx_RaiseDoubleKeywordsError( - const char* func_name, - PyObject* kw_name) -{ - PyErr_Format(PyExc_TypeError, - #if PY_MAJOR_VERSION >= 3 - "%s() got multiple values for keyword argument '%U'", func_name, kw_name); - #else - "%s() got multiple values for keyword argument '%s'", func_name, - PyString_AsString(kw_name)); - #endif -} - -/* ParseKeywords */ -static int __Pyx_ParseOptionalKeywords( - PyObject *kwds, - PyObject *const *kwvalues, - PyObject **argnames[], - PyObject *kwds2, - PyObject *values[], - Py_ssize_t num_pos_args, - const char* function_name) -{ - PyObject *key = 0, *value = 0; - Py_ssize_t pos = 0; - PyObject*** name; - PyObject*** first_kw_arg = argnames + num_pos_args; - int kwds_is_tuple = CYTHON_METH_FASTCALL && likely(PyTuple_Check(kwds)); - while (1) { - Py_XDECREF(key); key = NULL; - Py_XDECREF(value); value = NULL; - if (kwds_is_tuple) { - Py_ssize_t size; -#if CYTHON_ASSUME_SAFE_MACROS - size = PyTuple_GET_SIZE(kwds); -#else - size = PyTuple_Size(kwds); - if (size < 0) goto bad; -#endif - if (pos >= size) break; -#if CYTHON_AVOID_BORROWED_REFS - key = __Pyx_PySequence_ITEM(kwds, pos); - if (!key) goto bad; -#elif CYTHON_ASSUME_SAFE_MACROS - key = PyTuple_GET_ITEM(kwds, pos); -#else - key = PyTuple_GetItem(kwds, pos); - if (!key) goto bad; -#endif - value = kwvalues[pos]; - pos++; - } - else - { - if (!PyDict_Next(kwds, &pos, &key, &value)) break; -#if CYTHON_AVOID_BORROWED_REFS - Py_INCREF(key); -#endif - } - name = first_kw_arg; - while (*name && (**name != key)) name++; - if (*name) { - values[name-argnames] = value; -#if CYTHON_AVOID_BORROWED_REFS - Py_INCREF(value); - Py_DECREF(key); -#endif - key = NULL; - value = NULL; - continue; - } -#if !CYTHON_AVOID_BORROWED_REFS - Py_INCREF(key); -#endif - Py_INCREF(value); - name = first_kw_arg; - #if PY_MAJOR_VERSION < 3 - if (likely(PyString_Check(key))) { - while (*name) { - if ((CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**name) == PyString_GET_SIZE(key)) - && _PyString_Eq(**name, key)) { - values[name-argnames] = value; -#if CYTHON_AVOID_BORROWED_REFS - value = NULL; -#endif - break; - } - name++; - } - if (*name) continue; - else { - PyObject*** argname = argnames; - while (argname != first_kw_arg) { - if ((**argname == key) || ( - (CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**argname) == PyString_GET_SIZE(key)) - && _PyString_Eq(**argname, key))) { - goto arg_passed_twice; - } - argname++; - } - } - } else - #endif - if (likely(PyUnicode_Check(key))) { - while (*name) { - int cmp = ( - #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3 - (__Pyx_PyUnicode_GET_LENGTH(**name) != __Pyx_PyUnicode_GET_LENGTH(key)) ? 1 : - #endif - PyUnicode_Compare(**name, key) - ); - if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad; - if (cmp == 0) { - values[name-argnames] = value; -#if CYTHON_AVOID_BORROWED_REFS - value = NULL; -#endif - break; - } - name++; - } - if (*name) continue; - else { - PyObject*** argname = argnames; - while (argname != first_kw_arg) { - int cmp = (**argname == key) ? 0 : - #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3 - (__Pyx_PyUnicode_GET_LENGTH(**argname) != __Pyx_PyUnicode_GET_LENGTH(key)) ? 1 : - #endif - PyUnicode_Compare(**argname, key); - if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad; - if (cmp == 0) goto arg_passed_twice; - argname++; - } - } - } else - goto invalid_keyword_type; - if (kwds2) { - if (unlikely(PyDict_SetItem(kwds2, key, value))) goto bad; - } else { - goto invalid_keyword; - } - } - Py_XDECREF(key); - Py_XDECREF(value); - return 0; -arg_passed_twice: - __Pyx_RaiseDoubleKeywordsError(function_name, key); - goto bad; -invalid_keyword_type: - PyErr_Format(PyExc_TypeError, - "%.200s() keywords must be strings", function_name); - goto bad; -invalid_keyword: - #if PY_MAJOR_VERSION < 3 - PyErr_Format(PyExc_TypeError, - "%.200s() got an unexpected keyword argument '%.200s'", - function_name, PyString_AsString(key)); - #else - PyErr_Format(PyExc_TypeError, - "%s() got an unexpected keyword argument '%U'", - function_name, key); - #endif -bad: - Py_XDECREF(key); - Py_XDECREF(value); - return -1; -} - -/* RaiseUnexpectedTypeError */ -static int -__Pyx_RaiseUnexpectedTypeError(const char *expected, PyObject *obj) -{ - __Pyx_TypeName obj_type_name = __Pyx_PyType_GetName(Py_TYPE(obj)); - PyErr_Format(PyExc_TypeError, "Expected %s, got " __Pyx_FMT_TYPENAME, - expected, obj_type_name); - __Pyx_DECREF_TypeName(obj_type_name); - return 0; -} - -/* PyFunctionFastCall */ -#if CYTHON_FAST_PYCALL && !CYTHON_VECTORCALL -static PyObject* __Pyx_PyFunction_FastCallNoKw(PyCodeObject *co, PyObject **args, Py_ssize_t na, - PyObject *globals) { - PyFrameObject *f; - PyThreadState *tstate = __Pyx_PyThreadState_Current; - PyObject **fastlocals; - Py_ssize_t i; - PyObject *result; - assert(globals != NULL); - /* XXX Perhaps we should create a specialized - PyFrame_New() that doesn't take locals, but does - take builtins without sanity checking them. - */ - assert(tstate != NULL); - f = PyFrame_New(tstate, co, globals, NULL); - if (f == NULL) { - return NULL; - } - fastlocals = __Pyx_PyFrame_GetLocalsplus(f); - for (i = 0; i < na; i++) { - Py_INCREF(*args); - fastlocals[i] = *args++; - } - result = PyEval_EvalFrameEx(f,0); - ++tstate->recursion_depth; - Py_DECREF(f); - --tstate->recursion_depth; - return result; -} -static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, Py_ssize_t nargs, PyObject *kwargs) { - PyCodeObject *co = (PyCodeObject *)PyFunction_GET_CODE(func); - PyObject *globals = PyFunction_GET_GLOBALS(func); - PyObject *argdefs = PyFunction_GET_DEFAULTS(func); - PyObject *closure; -#if PY_MAJOR_VERSION >= 3 - PyObject *kwdefs; -#endif - PyObject *kwtuple, **k; - PyObject **d; - Py_ssize_t nd; - Py_ssize_t nk; - PyObject *result; - assert(kwargs == NULL || PyDict_Check(kwargs)); - nk = kwargs ? PyDict_Size(kwargs) : 0; - #if PY_MAJOR_VERSION < 3 - if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) { - return NULL; - } - #else - if (unlikely(Py_EnterRecursiveCall(" while calling a Python object"))) { - return NULL; - } - #endif - if ( -#if PY_MAJOR_VERSION >= 3 - co->co_kwonlyargcount == 0 && -#endif - likely(kwargs == NULL || nk == 0) && - co->co_flags == (CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE)) { - if (argdefs == NULL && co->co_argcount == nargs) { - result = __Pyx_PyFunction_FastCallNoKw(co, args, nargs, globals); - goto done; - } - else if (nargs == 0 && argdefs != NULL - && co->co_argcount == Py_SIZE(argdefs)) { - /* function called with no arguments, but all parameters have - a default value: use default values as arguments .*/ - args = &PyTuple_GET_ITEM(argdefs, 0); - result =__Pyx_PyFunction_FastCallNoKw(co, args, Py_SIZE(argdefs), globals); - goto done; - } - } - if (kwargs != NULL) { - Py_ssize_t pos, i; - kwtuple = PyTuple_New(2 * nk); - if (kwtuple == NULL) { - result = NULL; - goto done; - } - k = &PyTuple_GET_ITEM(kwtuple, 0); - pos = i = 0; - while (PyDict_Next(kwargs, &pos, &k[i], &k[i+1])) { - Py_INCREF(k[i]); - Py_INCREF(k[i+1]); - i += 2; - } - nk = i / 2; - } - else { - kwtuple = NULL; - k = NULL; - } - closure = PyFunction_GET_CLOSURE(func); -#if PY_MAJOR_VERSION >= 3 - kwdefs = PyFunction_GET_KW_DEFAULTS(func); -#endif - if (argdefs != NULL) { - d = &PyTuple_GET_ITEM(argdefs, 0); - nd = Py_SIZE(argdefs); - } - else { - d = NULL; - nd = 0; - } -#if PY_MAJOR_VERSION >= 3 - result = PyEval_EvalCodeEx((PyObject*)co, globals, (PyObject *)NULL, - args, (int)nargs, - k, (int)nk, - d, (int)nd, kwdefs, closure); -#else - result = PyEval_EvalCodeEx(co, globals, (PyObject *)NULL, - args, (int)nargs, - k, (int)nk, - d, (int)nd, closure); -#endif - Py_XDECREF(kwtuple); -done: - Py_LeaveRecursiveCall(); - return result; -} -#endif - -/* PyObjectCall */ -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) { - PyObject *result; - ternaryfunc call = Py_TYPE(func)->tp_call; - if (unlikely(!call)) - return PyObject_Call(func, arg, kw); - #if PY_MAJOR_VERSION < 3 - if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) - return NULL; - #else - if (unlikely(Py_EnterRecursiveCall(" while calling a Python object"))) - return NULL; - #endif - result = (*call)(func, arg, kw); - Py_LeaveRecursiveCall(); - if (unlikely(!result) && unlikely(!PyErr_Occurred())) { - PyErr_SetString( - PyExc_SystemError, - "NULL result without error in PyObject_Call"); - } - return result; -} -#endif - -/* PyObjectCallMethO */ -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg) { - PyObject *self, *result; - PyCFunction cfunc; - cfunc = __Pyx_CyOrPyCFunction_GET_FUNCTION(func); - self = __Pyx_CyOrPyCFunction_GET_SELF(func); - #if PY_MAJOR_VERSION < 3 - if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) - return NULL; - #else - if (unlikely(Py_EnterRecursiveCall(" while calling a Python object"))) - return NULL; - #endif - result = cfunc(self, arg); - Py_LeaveRecursiveCall(); - if (unlikely(!result) && unlikely(!PyErr_Occurred())) { - PyErr_SetString( - PyExc_SystemError, - "NULL result without error in PyObject_Call"); - } - return result; -} -#endif - -/* PyObjectFastCall */ -#if PY_VERSION_HEX < 0x03090000 || CYTHON_COMPILING_IN_LIMITED_API -static PyObject* __Pyx_PyObject_FastCall_fallback(PyObject *func, PyObject **args, size_t nargs, PyObject *kwargs) { - PyObject *argstuple; - PyObject *result = 0; - size_t i; - argstuple = PyTuple_New((Py_ssize_t)nargs); - if (unlikely(!argstuple)) return NULL; - for (i = 0; i < nargs; i++) { - Py_INCREF(args[i]); - if (__Pyx_PyTuple_SET_ITEM(argstuple, (Py_ssize_t)i, args[i]) < 0) goto bad; - } - result = __Pyx_PyObject_Call(func, argstuple, kwargs); - bad: - Py_DECREF(argstuple); - return result; -} -#endif -static CYTHON_INLINE PyObject* __Pyx_PyObject_FastCallDict(PyObject *func, PyObject **args, size_t _nargs, PyObject *kwargs) { - Py_ssize_t nargs = __Pyx_PyVectorcall_NARGS(_nargs); -#if CYTHON_COMPILING_IN_CPYTHON - if (nargs == 0 && kwargs == NULL) { - if (__Pyx_CyOrPyCFunction_Check(func) && likely( __Pyx_CyOrPyCFunction_GET_FLAGS(func) & METH_NOARGS)) - return __Pyx_PyObject_CallMethO(func, NULL); - } - else if (nargs == 1 && kwargs == NULL) { - if (__Pyx_CyOrPyCFunction_Check(func) && likely( __Pyx_CyOrPyCFunction_GET_FLAGS(func) & METH_O)) - return __Pyx_PyObject_CallMethO(func, args[0]); - } -#endif - #if PY_VERSION_HEX < 0x030800B1 - #if CYTHON_FAST_PYCCALL - if (PyCFunction_Check(func)) { - if (kwargs) { - return _PyCFunction_FastCallDict(func, args, nargs, kwargs); - } else { - return _PyCFunction_FastCallKeywords(func, args, nargs, NULL); - } - } - #if PY_VERSION_HEX >= 0x030700A1 - if (!kwargs && __Pyx_IS_TYPE(func, &PyMethodDescr_Type)) { - return _PyMethodDescr_FastCallKeywords(func, args, nargs, NULL); - } - #endif - #endif - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(func)) { - return __Pyx_PyFunction_FastCallDict(func, args, nargs, kwargs); - } - #endif - #endif - if (kwargs == NULL) { - #if CYTHON_VECTORCALL - #if PY_VERSION_HEX < 0x03090000 - vectorcallfunc f = _PyVectorcall_Function(func); - #else - vectorcallfunc f = PyVectorcall_Function(func); - #endif - if (f) { - return f(func, args, (size_t)nargs, NULL); - } - #elif defined(__Pyx_CyFunction_USED) && CYTHON_BACKPORT_VECTORCALL - if (__Pyx_CyFunction_CheckExact(func)) { - __pyx_vectorcallfunc f = __Pyx_CyFunction_func_vectorcall(func); - if (f) return f(func, args, (size_t)nargs, NULL); - } - #endif - } - if (nargs == 0) { - return __Pyx_PyObject_Call(func, __pyx_empty_tuple, kwargs); - } - #if PY_VERSION_HEX >= 0x03090000 && !CYTHON_COMPILING_IN_LIMITED_API - return PyObject_VectorcallDict(func, args, (size_t)nargs, kwargs); - #else - return __Pyx_PyObject_FastCall_fallback(func, args, (size_t)nargs, kwargs); - #endif -} - -/* PyObjectCallOneArg */ -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { - PyObject *args[2] = {NULL, arg}; - return __Pyx_PyObject_FastCall(func, args+1, 1 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET); -} - -/* ArgTypeTest */ -static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact) -{ - __Pyx_TypeName type_name; - __Pyx_TypeName obj_type_name; - if (unlikely(!type)) { - PyErr_SetString(PyExc_SystemError, "Missing type object"); - return 0; - } - else if (exact) { - #if PY_MAJOR_VERSION == 2 - if ((type == &PyBaseString_Type) && likely(__Pyx_PyBaseString_CheckExact(obj))) return 1; - #endif - } - else { - if (likely(__Pyx_TypeCheck(obj, type))) return 1; - } - type_name = __Pyx_PyType_GetName(type); - obj_type_name = __Pyx_PyType_GetName(Py_TYPE(obj)); - PyErr_Format(PyExc_TypeError, - "Argument '%.200s' has incorrect type (expected " __Pyx_FMT_TYPENAME - ", got " __Pyx_FMT_TYPENAME ")", name, type_name, obj_type_name); - __Pyx_DECREF_TypeName(type_name); - __Pyx_DECREF_TypeName(obj_type_name); - return 0; -} - -/* SetItemInt */ -static int __Pyx_SetItemInt_Generic(PyObject *o, PyObject *j, PyObject *v) { - int r; - if (unlikely(!j)) return -1; - r = PyObject_SetItem(o, j, v); - Py_DECREF(j); - return r; -} -static CYTHON_INLINE int __Pyx_SetItemInt_Fast(PyObject *o, Py_ssize_t i, PyObject *v, int is_list, - CYTHON_NCP_UNUSED int wraparound, CYTHON_NCP_UNUSED int boundscheck) { -#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS && CYTHON_USE_TYPE_SLOTS - if (is_list || PyList_CheckExact(o)) { - Py_ssize_t n = (!wraparound) ? i : ((likely(i >= 0)) ? i : i + PyList_GET_SIZE(o)); - if ((!boundscheck) || likely(__Pyx_is_valid_index(n, PyList_GET_SIZE(o)))) { - PyObject* old = PyList_GET_ITEM(o, n); - Py_INCREF(v); - PyList_SET_ITEM(o, n, v); - Py_DECREF(old); - return 1; - } - } else { - PyMappingMethods *mm = Py_TYPE(o)->tp_as_mapping; - PySequenceMethods *sm = Py_TYPE(o)->tp_as_sequence; - if (mm && mm->mp_ass_subscript) { - int r; - PyObject *key = PyInt_FromSsize_t(i); - if (unlikely(!key)) return -1; - r = mm->mp_ass_subscript(o, key, v); - Py_DECREF(key); - return r; - } - if (likely(sm && sm->sq_ass_item)) { - if (wraparound && unlikely(i < 0) && likely(sm->sq_length)) { - Py_ssize_t l = sm->sq_length(o); - if (likely(l >= 0)) { - i += l; - } else { - if (!PyErr_ExceptionMatches(PyExc_OverflowError)) - return -1; - PyErr_Clear(); - } - } - return sm->sq_ass_item(o, i, v); - } - } -#else - if (is_list || !PyMapping_Check(o)) - { - return PySequence_SetItem(o, i, v); - } -#endif - return __Pyx_SetItemInt_Generic(o, PyInt_FromSsize_t(i), v); -} - -/* RaiseUnboundLocalError */ -static CYTHON_INLINE void __Pyx_RaiseUnboundLocalError(const char *varname) { - PyErr_Format(PyExc_UnboundLocalError, "local variable '%s' referenced before assignment", varname); -} - -/* RaiseTooManyValuesToUnpack */ -static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected) { - PyErr_Format(PyExc_ValueError, - "too many values to unpack (expected %" CYTHON_FORMAT_SSIZE_T "d)", expected); -} - -/* RaiseNeedMoreValuesToUnpack */ -static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index) { - PyErr_Format(PyExc_ValueError, - "need more than %" CYTHON_FORMAT_SSIZE_T "d value%.1s to unpack", - index, (index == 1) ? "" : "s"); -} - -/* IterFinish */ -static CYTHON_INLINE int __Pyx_IterFinish(void) { - PyObject* exc_type; - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - exc_type = __Pyx_PyErr_CurrentExceptionType(); - if (unlikely(exc_type)) { - if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) - return -1; - __Pyx_PyErr_Clear(); - return 0; - } - return 0; -} - -/* UnpackItemEndCheck */ -static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected) { - if (unlikely(retval)) { - Py_DECREF(retval); - __Pyx_RaiseTooManyValuesError(expected); - return -1; - } - return __Pyx_IterFinish(); -} - -/* UnpackUnboundCMethod */ -static PyObject *__Pyx_SelflessCall(PyObject *method, PyObject *args, PyObject *kwargs) { - PyObject *result; - PyObject *selfless_args = PyTuple_GetSlice(args, 1, PyTuple_Size(args)); - if (unlikely(!selfless_args)) return NULL; - result = PyObject_Call(method, selfless_args, kwargs); - Py_DECREF(selfless_args); - return result; -} -static PyMethodDef __Pyx_UnboundCMethod_Def = { - "CythonUnboundCMethod", - __PYX_REINTERPRET_FUNCION(PyCFunction, __Pyx_SelflessCall), - METH_VARARGS | METH_KEYWORDS, - NULL -}; -static int __Pyx_TryUnpackUnboundCMethod(__Pyx_CachedCFunction* target) { - PyObject *method; - method = __Pyx_PyObject_GetAttrStr(target->type, *target->method_name); - if (unlikely(!method)) - return -1; - target->method = method; -#if CYTHON_COMPILING_IN_CPYTHON - #if PY_MAJOR_VERSION >= 3 - if (likely(__Pyx_TypeCheck(method, &PyMethodDescr_Type))) - #else - if (likely(!__Pyx_CyOrPyCFunction_Check(method))) - #endif - { - PyMethodDescrObject *descr = (PyMethodDescrObject*) method; - target->func = descr->d_method->ml_meth; - target->flag = descr->d_method->ml_flags & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_STACKLESS); - } else -#endif -#if CYTHON_COMPILING_IN_PYPY -#else - if (PyCFunction_Check(method)) -#endif - { - PyObject *self; - int self_found; -#if CYTHON_COMPILING_IN_LIMITED_API || CYTHON_COMPILING_IN_PYPY - self = PyObject_GetAttrString(method, "__self__"); - if (!self) { - PyErr_Clear(); - } -#else - self = PyCFunction_GET_SELF(method); -#endif - self_found = (self && self != Py_None); -#if CYTHON_COMPILING_IN_LIMITED_API || CYTHON_COMPILING_IN_PYPY - Py_XDECREF(self); -#endif - if (self_found) { - PyObject *unbound_method = PyCFunction_New(&__Pyx_UnboundCMethod_Def, method); - if (unlikely(!unbound_method)) return -1; - Py_DECREF(method); - target->method = unbound_method; - } - } - return 0; -} - -/* CallUnboundCMethod1 */ -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_CallUnboundCMethod1(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg) { - if (likely(cfunc->func)) { - int flag = cfunc->flag; - if (flag == METH_O) { - return (*(cfunc->func))(self, arg); - } else if ((PY_VERSION_HEX >= 0x030600B1) && flag == METH_FASTCALL) { - #if PY_VERSION_HEX >= 0x030700A0 - return (*(__Pyx_PyCFunctionFast)(void*)(PyCFunction)cfunc->func)(self, &arg, 1); - #else - return (*(__Pyx_PyCFunctionFastWithKeywords)(void*)(PyCFunction)cfunc->func)(self, &arg, 1, NULL); - #endif - } else if ((PY_VERSION_HEX >= 0x030700A0) && flag == (METH_FASTCALL | METH_KEYWORDS)) { - return (*(__Pyx_PyCFunctionFastWithKeywords)(void*)(PyCFunction)cfunc->func)(self, &arg, 1, NULL); - } - } - return __Pyx__CallUnboundCMethod1(cfunc, self, arg); -} -#endif -static PyObject* __Pyx__CallUnboundCMethod1(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg){ - PyObject *args, *result = NULL; - if (unlikely(!cfunc->func && !cfunc->method) && unlikely(__Pyx_TryUnpackUnboundCMethod(cfunc) < 0)) return NULL; -#if CYTHON_COMPILING_IN_CPYTHON - if (cfunc->func && (cfunc->flag & METH_VARARGS)) { - args = PyTuple_New(1); - if (unlikely(!args)) goto bad; - Py_INCREF(arg); - PyTuple_SET_ITEM(args, 0, arg); - if (cfunc->flag & METH_KEYWORDS) - result = (*(PyCFunctionWithKeywords)(void*)(PyCFunction)cfunc->func)(self, args, NULL); - else - result = (*cfunc->func)(self, args); - } else { - args = PyTuple_New(2); - if (unlikely(!args)) goto bad; - Py_INCREF(self); - PyTuple_SET_ITEM(args, 0, self); - Py_INCREF(arg); - PyTuple_SET_ITEM(args, 1, arg); - result = __Pyx_PyObject_Call(cfunc->method, args, NULL); - } -#else - args = PyTuple_Pack(2, self, arg); - if (unlikely(!args)) goto bad; - result = __Pyx_PyObject_Call(cfunc->method, args, NULL); -#endif -bad: - Py_XDECREF(args); - return result; -} - -/* PyFloatBinop */ -#if !CYTHON_COMPILING_IN_PYPY -static PyObject* __Pyx_PyFloat_TrueDivideObjC(PyObject *op1, PyObject *op2, double floatval, int inplace, int zerodivision_check) { - const double b = floatval; - double a, result; - CYTHON_UNUSED_VAR(inplace); - CYTHON_UNUSED_VAR(zerodivision_check); - if (likely(PyFloat_CheckExact(op1))) { -#if CYTHON_COMPILING_IN_LIMITED_API - a = __pyx_PyFloat_AsDouble(op1); -#else - a = PyFloat_AS_DOUBLE(op1); -#endif - - } else - #if PY_MAJOR_VERSION < 3 - if (likely(PyInt_CheckExact(op1))) { - a = (double) PyInt_AS_LONG(op1); - - } else - #endif - if (likely(PyLong_CheckExact(op1))) { - #if CYTHON_USE_PYLONG_INTERNALS - if (__Pyx_PyLong_IsZero(op1)) { - a = 0.0; - - } else if (__Pyx_PyLong_IsCompact(op1)) { - a = (double) __Pyx_PyLong_CompactValue(op1); - } else { - const digit* digits = __Pyx_PyLong_Digits(op1); - const Py_ssize_t size = __Pyx_PyLong_SignedDigitCount(op1); - switch (size) { - case -2: - case 2: - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT && ((8 * sizeof(unsigned long) < 53) || (1 * PyLong_SHIFT < 53))) { - a = (double) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); - if ((8 * sizeof(unsigned long) < 53) || (2 * PyLong_SHIFT < 53) || (a < (double) ((PY_LONG_LONG)1 << 53))) { - if (size == -2) - a = -a; - break; - } - } - CYTHON_FALLTHROUGH; - case -3: - case 3: - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT && ((8 * sizeof(unsigned long) < 53) || (2 * PyLong_SHIFT < 53))) { - a = (double) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); - if ((8 * sizeof(unsigned long) < 53) || (3 * PyLong_SHIFT < 53) || (a < (double) ((PY_LONG_LONG)1 << 53))) { - if (size == -3) - a = -a; - break; - } - } - CYTHON_FALLTHROUGH; - case -4: - case 4: - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT && ((8 * sizeof(unsigned long) < 53) || (3 * PyLong_SHIFT < 53))) { - a = (double) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); - if ((8 * sizeof(unsigned long) < 53) || (4 * PyLong_SHIFT < 53) || (a < (double) ((PY_LONG_LONG)1 << 53))) { - if (size == -4) - a = -a; - break; - } - } - CYTHON_FALLTHROUGH; - default: - #endif - a = PyLong_AsDouble(op1); - if (unlikely(a == -1.0 && PyErr_Occurred())) return NULL; - #if CYTHON_USE_PYLONG_INTERNALS - } - } - #endif - } else { - return (inplace ? PyNumber_InPlaceTrueDivide : PyNumber_TrueDivide)(op1, op2); - } - PyFPE_START_PROTECT("divide", return NULL) - result = a / b; - PyFPE_END_PROTECT(result) - return PyFloat_FromDouble(result); -} -#endif - -/* PyIntBinop */ -#if !CYTHON_COMPILING_IN_PYPY -static PyObject* __Pyx_PyInt_MultiplyCObj(PyObject *op1, PyObject *op2, long intval, int inplace, int zerodivision_check) { - CYTHON_MAYBE_UNUSED_VAR(intval); - CYTHON_MAYBE_UNUSED_VAR(inplace); - CYTHON_UNUSED_VAR(zerodivision_check); - #if PY_MAJOR_VERSION < 3 - if (likely(PyInt_CheckExact(op2))) { - const long a = intval; - long b = PyInt_AS_LONG(op2); - -#ifdef HAVE_LONG_LONG - if (sizeof(PY_LONG_LONG) > sizeof(long)) { - PY_LONG_LONG result = (PY_LONG_LONG)a * (PY_LONG_LONG)b; - return (result >= LONG_MIN && result <= LONG_MAX) ? - PyInt_FromLong((long)result) : PyLong_FromLongLong(result); - } -#endif -#if CYTHON_USE_TYPE_SLOTS - return PyInt_Type.tp_as_number->nb_multiply(op1, op2); -#else - return PyNumber_Multiply(op1, op2); -#endif - } - #endif - #if CYTHON_USE_PYLONG_INTERNALS - if (likely(PyLong_CheckExact(op2))) { - const long a = intval; - long b, x; -#ifdef HAVE_LONG_LONG - const PY_LONG_LONG lla = intval; - PY_LONG_LONG llb, llx; -#endif - if (unlikely(__Pyx_PyLong_IsZero(op2))) { - return __Pyx_NewRef(op2); - } - if (likely(__Pyx_PyLong_IsCompact(op2))) { - b = __Pyx_PyLong_CompactValue(op2); - } else { - const digit* digits = __Pyx_PyLong_Digits(op2); - const Py_ssize_t size = __Pyx_PyLong_SignedDigitCount(op2); - switch (size) { - case -2: - if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT+30) { - b = -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); - break; - #ifdef HAVE_LONG_LONG - } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT+30) { - llb = -(PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); - goto long_long; - #endif - } - CYTHON_FALLTHROUGH; - case 2: - if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT+30) { - b = (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); - break; - #ifdef HAVE_LONG_LONG - } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT+30) { - llb = (PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); - goto long_long; - #endif - } - CYTHON_FALLTHROUGH; - case -3: - if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT+30) { - b = -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); - break; - #ifdef HAVE_LONG_LONG - } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT+30) { - llb = -(PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); - goto long_long; - #endif - } - CYTHON_FALLTHROUGH; - case 3: - if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT+30) { - b = (long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); - break; - #ifdef HAVE_LONG_LONG - } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT+30) { - llb = (PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); - goto long_long; - #endif - } - CYTHON_FALLTHROUGH; - case -4: - if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT+30) { - b = -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); - break; - #ifdef HAVE_LONG_LONG - } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT+30) { - llb = -(PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); - goto long_long; - #endif - } - CYTHON_FALLTHROUGH; - case 4: - if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT+30) { - b = (long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); - break; - #ifdef HAVE_LONG_LONG - } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT+30) { - llb = (PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); - goto long_long; - #endif - } - CYTHON_FALLTHROUGH; - default: return PyLong_Type.tp_as_number->nb_multiply(op1, op2); - } - } - CYTHON_UNUSED_VAR(a); - CYTHON_UNUSED_VAR(b); - #ifdef HAVE_LONG_LONG - llb = b; - goto long_long; - #else - return PyLong_Type.tp_as_number->nb_multiply(op1, op2); - #endif - return PyLong_FromLong(x); -#ifdef HAVE_LONG_LONG - long_long: - llx = lla * llb; - return PyLong_FromLongLong(llx); -#endif - - - } - #endif - if (PyFloat_CheckExact(op2)) { - const long a = intval; -#if CYTHON_COMPILING_IN_LIMITED_API - double b = __pyx_PyFloat_AsDouble(op2); -#else - double b = PyFloat_AS_DOUBLE(op2); -#endif - double result; - - PyFPE_START_PROTECT("multiply", return NULL) - result = ((double)a) * (double)b; - PyFPE_END_PROTECT(result) - return PyFloat_FromDouble(result); - } - return (inplace ? PyNumber_InPlaceMultiply : PyNumber_Multiply)(op1, op2); -} -#endif - -/* RaiseNoneIterError */ -static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void) { - PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); -} - -/* PyObjectCallNoArg */ -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) { - PyObject *arg[2] = {NULL, NULL}; - return __Pyx_PyObject_FastCall(func, arg + 1, 0 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET); -} - -/* PyObjectGetMethod */ -static int __Pyx_PyObject_GetMethod(PyObject *obj, PyObject *name, PyObject **method) { - PyObject *attr; -#if CYTHON_UNPACK_METHODS && CYTHON_COMPILING_IN_CPYTHON && CYTHON_USE_PYTYPE_LOOKUP - __Pyx_TypeName type_name; - PyTypeObject *tp = Py_TYPE(obj); - PyObject *descr; - descrgetfunc f = NULL; - PyObject **dictptr, *dict; - int meth_found = 0; - assert (*method == NULL); - if (unlikely(tp->tp_getattro != PyObject_GenericGetAttr)) { - attr = __Pyx_PyObject_GetAttrStr(obj, name); - goto try_unpack; - } - if (unlikely(tp->tp_dict == NULL) && unlikely(PyType_Ready(tp) < 0)) { - return 0; - } - descr = _PyType_Lookup(tp, name); - if (likely(descr != NULL)) { - Py_INCREF(descr); -#if defined(Py_TPFLAGS_METHOD_DESCRIPTOR) && Py_TPFLAGS_METHOD_DESCRIPTOR - if (__Pyx_PyType_HasFeature(Py_TYPE(descr), Py_TPFLAGS_METHOD_DESCRIPTOR)) -#elif PY_MAJOR_VERSION >= 3 - #ifdef __Pyx_CyFunction_USED - if (likely(PyFunction_Check(descr) || __Pyx_IS_TYPE(descr, &PyMethodDescr_Type) || __Pyx_CyFunction_Check(descr))) - #else - if (likely(PyFunction_Check(descr) || __Pyx_IS_TYPE(descr, &PyMethodDescr_Type))) - #endif -#else - #ifdef __Pyx_CyFunction_USED - if (likely(PyFunction_Check(descr) || __Pyx_CyFunction_Check(descr))) - #else - if (likely(PyFunction_Check(descr))) - #endif -#endif - { - meth_found = 1; - } else { - f = Py_TYPE(descr)->tp_descr_get; - if (f != NULL && PyDescr_IsData(descr)) { - attr = f(descr, obj, (PyObject *)Py_TYPE(obj)); - Py_DECREF(descr); - goto try_unpack; - } - } - } - dictptr = _PyObject_GetDictPtr(obj); - if (dictptr != NULL && (dict = *dictptr) != NULL) { - Py_INCREF(dict); - attr = __Pyx_PyDict_GetItemStr(dict, name); - if (attr != NULL) { - Py_INCREF(attr); - Py_DECREF(dict); - Py_XDECREF(descr); - goto try_unpack; - } - Py_DECREF(dict); - } - if (meth_found) { - *method = descr; - return 1; - } - if (f != NULL) { - attr = f(descr, obj, (PyObject *)Py_TYPE(obj)); - Py_DECREF(descr); - goto try_unpack; - } - if (likely(descr != NULL)) { - *method = descr; - return 0; - } - type_name = __Pyx_PyType_GetName(tp); - PyErr_Format(PyExc_AttributeError, -#if PY_MAJOR_VERSION >= 3 - "'" __Pyx_FMT_TYPENAME "' object has no attribute '%U'", - type_name, name); -#else - "'" __Pyx_FMT_TYPENAME "' object has no attribute '%.400s'", - type_name, PyString_AS_STRING(name)); -#endif - __Pyx_DECREF_TypeName(type_name); - return 0; -#else - attr = __Pyx_PyObject_GetAttrStr(obj, name); - goto try_unpack; -#endif -try_unpack: -#if CYTHON_UNPACK_METHODS - if (likely(attr) && PyMethod_Check(attr) && likely(PyMethod_GET_SELF(attr) == obj)) { - PyObject *function = PyMethod_GET_FUNCTION(attr); - Py_INCREF(function); - Py_DECREF(attr); - *method = function; - return 1; - } -#endif - *method = attr; - return 0; -} - -/* PyObjectCallMethod0 */ -static PyObject* __Pyx_PyObject_CallMethod0(PyObject* obj, PyObject* method_name) { - PyObject *method = NULL, *result = NULL; - int is_method = __Pyx_PyObject_GetMethod(obj, method_name, &method); - if (likely(is_method)) { - result = __Pyx_PyObject_CallOneArg(method, obj); - Py_DECREF(method); - return result; - } - if (unlikely(!method)) goto bad; - result = __Pyx_PyObject_CallNoArg(method); - Py_DECREF(method); -bad: - return result; -} - -/* CallUnboundCMethod0 */ -static PyObject* __Pyx__CallUnboundCMethod0(__Pyx_CachedCFunction* cfunc, PyObject* self) { - PyObject *args, *result = NULL; - if (unlikely(!cfunc->method) && unlikely(__Pyx_TryUnpackUnboundCMethod(cfunc) < 0)) return NULL; -#if CYTHON_ASSUME_SAFE_MACROS - args = PyTuple_New(1); - if (unlikely(!args)) goto bad; - Py_INCREF(self); - PyTuple_SET_ITEM(args, 0, self); -#else - args = PyTuple_Pack(1, self); - if (unlikely(!args)) goto bad; -#endif - result = __Pyx_PyObject_Call(cfunc->method, args, NULL); - Py_DECREF(args); -bad: - return result; -} - -/* pop */ -static CYTHON_INLINE PyObject* __Pyx__PyObject_Pop(PyObject* L) { - if (__Pyx_IS_TYPE(L, &PySet_Type)) { - return PySet_Pop(L); - } - return __Pyx_PyObject_CallMethod0(L, __pyx_n_s_pop); -} -#if CYTHON_USE_PYLIST_INTERNALS && CYTHON_ASSUME_SAFE_MACROS -static CYTHON_INLINE PyObject* __Pyx_PyList_Pop(PyObject* L) { - if (likely(PyList_GET_SIZE(L) > (((PyListObject*)L)->allocated >> 1))) { - __Pyx_SET_SIZE(L, Py_SIZE(L) - 1); - return PyList_GET_ITEM(L, PyList_GET_SIZE(L)); - } - return __Pyx_CallUnboundCMethod0(&__pyx_umethod_PyList_Type_pop, L); -} -#endif - -/* PyObjectCall2Args */ -static CYTHON_INLINE PyObject* __Pyx_PyObject_Call2Args(PyObject* function, PyObject* arg1, PyObject* arg2) { - PyObject *args[3] = {NULL, arg1, arg2}; - return __Pyx_PyObject_FastCall(function, args+1, 2 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET); -} - -/* PyObjectCallMethod1 */ -#if !(CYTHON_VECTORCALL && __PYX_LIMITED_VERSION_HEX >= 0x030C00A2) -static PyObject* __Pyx__PyObject_CallMethod1(PyObject* method, PyObject* arg) { - PyObject *result = __Pyx_PyObject_CallOneArg(method, arg); - Py_DECREF(method); - return result; -} -#endif -static PyObject* __Pyx_PyObject_CallMethod1(PyObject* obj, PyObject* method_name, PyObject* arg) { -#if CYTHON_VECTORCALL && __PYX_LIMITED_VERSION_HEX >= 0x030C00A2 - PyObject *args[2] = {obj, arg}; - (void) __Pyx_PyObject_GetMethod; - (void) __Pyx_PyObject_CallOneArg; - (void) __Pyx_PyObject_Call2Args; - return PyObject_VectorcallMethod(method_name, args, 2 | PY_VECTORCALL_ARGUMENTS_OFFSET, NULL); -#else - PyObject *method = NULL, *result; - int is_method = __Pyx_PyObject_GetMethod(obj, method_name, &method); - if (likely(is_method)) { - result = __Pyx_PyObject_Call2Args(method, obj, arg); - Py_DECREF(method); - return result; - } - if (unlikely(!method)) return NULL; - return __Pyx__PyObject_CallMethod1(method, arg); -#endif -} - -/* pop_index */ -static PyObject* __Pyx__PyObject_PopNewIndex(PyObject* L, PyObject* py_ix) { - PyObject *r; - if (unlikely(!py_ix)) return NULL; - r = __Pyx__PyObject_PopIndex(L, py_ix); - Py_DECREF(py_ix); - return r; -} -static PyObject* __Pyx__PyObject_PopIndex(PyObject* L, PyObject* py_ix) { - return __Pyx_PyObject_CallMethod1(L, __pyx_n_s_pop, py_ix); -} -#if CYTHON_USE_PYLIST_INTERNALS && CYTHON_ASSUME_SAFE_MACROS -static PyObject* __Pyx__PyList_PopIndex(PyObject* L, PyObject* py_ix, Py_ssize_t ix) { - Py_ssize_t size = PyList_GET_SIZE(L); - if (likely(size > (((PyListObject*)L)->allocated >> 1))) { - Py_ssize_t cix = ix; - if (cix < 0) { - cix += size; - } - if (likely(__Pyx_is_valid_index(cix, size))) { - PyObject* v = PyList_GET_ITEM(L, cix); - __Pyx_SET_SIZE(L, Py_SIZE(L) - 1); - size -= 1; - memmove(&PyList_GET_ITEM(L, cix), &PyList_GET_ITEM(L, cix+1), (size_t)(size-cix)*sizeof(PyObject*)); - return v; - } - } - if (py_ix == Py_None) { - return __Pyx__PyObject_PopNewIndex(L, PyInt_FromSsize_t(ix)); - } else { - return __Pyx__PyObject_PopIndex(L, py_ix); - } -} -#endif - -/* GetException */ -#if CYTHON_FAST_THREAD_STATE -static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) -#else -static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) -#endif -{ - PyObject *local_type = NULL, *local_value, *local_tb = NULL; -#if CYTHON_FAST_THREAD_STATE - PyObject *tmp_type, *tmp_value, *tmp_tb; - #if PY_VERSION_HEX >= 0x030C00A6 - local_value = tstate->current_exception; - tstate->current_exception = 0; - if (likely(local_value)) { - local_type = (PyObject*) Py_TYPE(local_value); - Py_INCREF(local_type); - local_tb = PyException_GetTraceback(local_value); - } - #else - local_type = tstate->curexc_type; - local_value = tstate->curexc_value; - local_tb = tstate->curexc_traceback; - tstate->curexc_type = 0; - tstate->curexc_value = 0; - tstate->curexc_traceback = 0; - #endif -#else - PyErr_Fetch(&local_type, &local_value, &local_tb); -#endif - PyErr_NormalizeException(&local_type, &local_value, &local_tb); -#if CYTHON_FAST_THREAD_STATE && PY_VERSION_HEX >= 0x030C00A6 - if (unlikely(tstate->current_exception)) -#elif CYTHON_FAST_THREAD_STATE - if (unlikely(tstate->curexc_type)) -#else - if (unlikely(PyErr_Occurred())) -#endif - goto bad; - #if PY_MAJOR_VERSION >= 3 - if (local_tb) { - if (unlikely(PyException_SetTraceback(local_value, local_tb) < 0)) - goto bad; - } - #endif - Py_XINCREF(local_tb); - Py_XINCREF(local_type); - Py_XINCREF(local_value); - *type = local_type; - *value = local_value; - *tb = local_tb; -#if CYTHON_FAST_THREAD_STATE - #if CYTHON_USE_EXC_INFO_STACK - { - _PyErr_StackItem *exc_info = tstate->exc_info; - #if PY_VERSION_HEX >= 0x030B00a4 - tmp_value = exc_info->exc_value; - exc_info->exc_value = local_value; - tmp_type = NULL; - tmp_tb = NULL; - Py_XDECREF(local_type); - Py_XDECREF(local_tb); - #else - tmp_type = exc_info->exc_type; - tmp_value = exc_info->exc_value; - tmp_tb = exc_info->exc_traceback; - exc_info->exc_type = local_type; - exc_info->exc_value = local_value; - exc_info->exc_traceback = local_tb; - #endif - } - #else - tmp_type = tstate->exc_type; - tmp_value = tstate->exc_value; - tmp_tb = tstate->exc_traceback; - tstate->exc_type = local_type; - tstate->exc_value = local_value; - tstate->exc_traceback = local_tb; - #endif - Py_XDECREF(tmp_type); - Py_XDECREF(tmp_value); - Py_XDECREF(tmp_tb); -#else - PyErr_SetExcInfo(local_type, local_value, local_tb); -#endif - return 0; -bad: - *type = 0; - *value = 0; - *tb = 0; - Py_XDECREF(local_type); - Py_XDECREF(local_value); - Py_XDECREF(local_tb); - return -1; -} - -/* Import */ -static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) { - PyObject *module = 0; - PyObject *empty_dict = 0; - PyObject *empty_list = 0; - #if PY_MAJOR_VERSION < 3 - PyObject *py_import; - py_import = __Pyx_PyObject_GetAttrStr(__pyx_b, __pyx_n_s_import); - if (unlikely(!py_import)) - goto bad; - if (!from_list) { - empty_list = PyList_New(0); - if (unlikely(!empty_list)) - goto bad; - from_list = empty_list; - } - #endif - empty_dict = PyDict_New(); - if (unlikely(!empty_dict)) - goto bad; - { - #if PY_MAJOR_VERSION >= 3 - if (level == -1) { - if (strchr(__Pyx_MODULE_NAME, '.') != NULL) { - module = PyImport_ImportModuleLevelObject( - name, __pyx_d, empty_dict, from_list, 1); - if (unlikely(!module)) { - if (unlikely(!PyErr_ExceptionMatches(PyExc_ImportError))) - goto bad; - PyErr_Clear(); - } - } - level = 0; - } - #endif - if (!module) { - #if PY_MAJOR_VERSION < 3 - PyObject *py_level = PyInt_FromLong(level); - if (unlikely(!py_level)) - goto bad; - module = PyObject_CallFunctionObjArgs(py_import, - name, __pyx_d, empty_dict, from_list, py_level, (PyObject *)NULL); - Py_DECREF(py_level); - #else - module = PyImport_ImportModuleLevelObject( - name, __pyx_d, empty_dict, from_list, level); - #endif - } - } -bad: - Py_XDECREF(empty_dict); - Py_XDECREF(empty_list); - #if PY_MAJOR_VERSION < 3 - Py_XDECREF(py_import); - #endif - return module; -} - -/* ImportFrom */ -static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name) { - PyObject* value = __Pyx_PyObject_GetAttrStr(module, name); - if (unlikely(!value) && PyErr_ExceptionMatches(PyExc_AttributeError)) { - const char* module_name_str = 0; - PyObject* module_name = 0; - PyObject* module_dot = 0; - PyObject* full_name = 0; - PyErr_Clear(); - module_name_str = PyModule_GetName(module); - if (unlikely(!module_name_str)) { goto modbad; } - module_name = PyUnicode_FromString(module_name_str); - if (unlikely(!module_name)) { goto modbad; } - module_dot = PyUnicode_Concat(module_name, __pyx_kp_u__7); - if (unlikely(!module_dot)) { goto modbad; } - full_name = PyUnicode_Concat(module_dot, name); - if (unlikely(!full_name)) { goto modbad; } - #if PY_VERSION_HEX < 0x030700A1 || (CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM < 0x07030400) - { - PyObject *modules = PyImport_GetModuleDict(); - if (unlikely(!modules)) - goto modbad; - value = PyObject_GetItem(modules, full_name); - } - #else - value = PyImport_GetModule(full_name); - #endif - modbad: - Py_XDECREF(full_name); - Py_XDECREF(module_dot); - Py_XDECREF(module_name); - } - if (unlikely(!value)) { - PyErr_Format(PyExc_ImportError, - #if PY_MAJOR_VERSION < 3 - "cannot import name %.230s", PyString_AS_STRING(name)); - #else - "cannot import name %S", name); - #endif - } - return value; -} - -/* GetAttr */ -static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *o, PyObject *n) { -#if CYTHON_USE_TYPE_SLOTS -#if PY_MAJOR_VERSION >= 3 - if (likely(PyUnicode_Check(n))) -#else - if (likely(PyString_Check(n))) -#endif - return __Pyx_PyObject_GetAttrStr(o, n); -#endif - return PyObject_GetAttr(o, n); -} - -/* HasAttr */ -#if __PYX_LIMITED_VERSION_HEX < 0x030d00A1 -static CYTHON_INLINE int __Pyx_HasAttr(PyObject *o, PyObject *n) { - PyObject *r; - if (unlikely(!__Pyx_PyBaseString_Check(n))) { - PyErr_SetString(PyExc_TypeError, - "hasattr(): attribute name must be string"); - return -1; - } - r = __Pyx_GetAttr(o, n); - if (!r) { - PyErr_Clear(); - return 0; - } else { - Py_DECREF(r); - return 1; - } -} -#endif - -/* CallNextTpTraverse */ -static int __Pyx_call_next_tp_traverse(PyObject* obj, visitproc v, void *a, traverseproc current_tp_traverse) { - PyTypeObject* type = Py_TYPE(obj); - traverseproc tp_traverse = NULL; - while (type && __Pyx_PyType_GetSlot(type, tp_traverse, traverseproc) != current_tp_traverse) - type = __Pyx_PyType_GetSlot(type, tp_base, PyTypeObject*); - while (type && (tp_traverse = __Pyx_PyType_GetSlot(type, tp_traverse, traverseproc)) == current_tp_traverse) - type = __Pyx_PyType_GetSlot(type, tp_base, PyTypeObject*); - if (type && tp_traverse) - return tp_traverse(obj, v, a); - return 0; -} - -/* CallNextTpClear */ -static void __Pyx_call_next_tp_clear(PyObject* obj, inquiry current_tp_clear) { - PyTypeObject* type = Py_TYPE(obj); - inquiry tp_clear = NULL; - while (type && __Pyx_PyType_GetSlot(type, tp_clear, inquiry) != current_tp_clear) - type = __Pyx_PyType_GetSlot(type, tp_base, PyTypeObject*); - while (type && (tp_clear = __Pyx_PyType_GetSlot(type, tp_clear, inquiry)) == current_tp_clear) - type = __Pyx_PyType_GetSlot(type, tp_base, PyTypeObject*); - if (type && tp_clear) - tp_clear(obj); -} - -/* SetPackagePathFromImportLib */ -#if PY_MAJOR_VERSION >= 3 && !CYTHON_PEP489_MULTI_PHASE_INIT -static int __Pyx_SetPackagePathFromImportLib(PyObject *module_name) { - PyObject *importlib, *osmod, *ossep, *parts, *package_path; - PyObject *file_path = NULL; - int result; - PyObject *spec; - importlib = PyImport_ImportModule("importlib.util"); - if (unlikely(!importlib)) - goto bad; - spec = PyObject_CallMethod(importlib, "find_spec", "(O)", module_name); - Py_DECREF(importlib); - if (unlikely(!spec)) - goto bad; - file_path = PyObject_GetAttrString(spec, "origin"); - Py_DECREF(spec); - if (unlikely(!file_path)) - goto bad; - if (unlikely(PyObject_SetAttrString(__pyx_m, "__file__", file_path) < 0)) - goto bad; - osmod = PyImport_ImportModule("os"); - if (unlikely(!osmod)) - goto bad; - ossep = PyObject_GetAttrString(osmod, "sep"); - Py_DECREF(osmod); - if (unlikely(!ossep)) - goto bad; - parts = PyObject_CallMethod(file_path, "rsplit", "(Oi)", ossep, 1); - Py_DECREF(file_path); file_path = NULL; - Py_DECREF(ossep); - if (unlikely(!parts)) - goto bad; - package_path = Py_BuildValue("[O]", PyList_GET_ITEM(parts, 0)); - Py_DECREF(parts); - if (unlikely(!package_path)) - goto bad; - goto set_path; -bad: - PyErr_WriteUnraisable(module_name); - Py_XDECREF(file_path); - PyErr_Clear(); - package_path = PyList_New(0); - if (unlikely(!package_path)) - return -1; -set_path: - result = PyObject_SetAttrString(__pyx_m, "__path__", package_path); - Py_DECREF(package_path); - return result; -} -#endif - -/* FixUpExtensionType */ -#if CYTHON_USE_TYPE_SPECS -static int __Pyx_fix_up_extension_type_from_spec(PyType_Spec *spec, PyTypeObject *type) { -#if PY_VERSION_HEX > 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API - CYTHON_UNUSED_VAR(spec); - CYTHON_UNUSED_VAR(type); -#else - const PyType_Slot *slot = spec->slots; - while (slot && slot->slot && slot->slot != Py_tp_members) - slot++; - if (slot && slot->slot == Py_tp_members) { - int changed = 0; -#if !(PY_VERSION_HEX <= 0x030900b1 && CYTHON_COMPILING_IN_CPYTHON) - const -#endif - PyMemberDef *memb = (PyMemberDef*) slot->pfunc; - while (memb && memb->name) { - if (memb->name[0] == '_' && memb->name[1] == '_') { -#if PY_VERSION_HEX < 0x030900b1 - if (strcmp(memb->name, "__weaklistoffset__") == 0) { - assert(memb->type == T_PYSSIZET); - assert(memb->flags == READONLY); - type->tp_weaklistoffset = memb->offset; - changed = 1; - } - else if (strcmp(memb->name, "__dictoffset__") == 0) { - assert(memb->type == T_PYSSIZET); - assert(memb->flags == READONLY); - type->tp_dictoffset = memb->offset; - changed = 1; - } -#if CYTHON_METH_FASTCALL - else if (strcmp(memb->name, "__vectorcalloffset__") == 0) { - assert(memb->type == T_PYSSIZET); - assert(memb->flags == READONLY); -#if PY_VERSION_HEX >= 0x030800b4 - type->tp_vectorcall_offset = memb->offset; -#else - type->tp_print = (printfunc) memb->offset; -#endif - changed = 1; - } -#endif -#else - if ((0)); -#endif -#if PY_VERSION_HEX <= 0x030900b1 && CYTHON_COMPILING_IN_CPYTHON - else if (strcmp(memb->name, "__module__") == 0) { - PyObject *descr; - assert(memb->type == T_OBJECT); - assert(memb->flags == 0 || memb->flags == READONLY); - descr = PyDescr_NewMember(type, memb); - if (unlikely(!descr)) - return -1; - if (unlikely(PyDict_SetItem(type->tp_dict, PyDescr_NAME(descr), descr) < 0)) { - Py_DECREF(descr); - return -1; - } - Py_DECREF(descr); - changed = 1; - } -#endif - } - memb++; - } - if (changed) - PyType_Modified(type); - } -#endif - return 0; -} -#endif - -/* ValidateBasesTuple */ -#if CYTHON_COMPILING_IN_CPYTHON || CYTHON_COMPILING_IN_LIMITED_API || CYTHON_USE_TYPE_SPECS -static int __Pyx_validate_bases_tuple(const char *type_name, Py_ssize_t dictoffset, PyObject *bases) { - Py_ssize_t i, n; -#if CYTHON_ASSUME_SAFE_MACROS - n = PyTuple_GET_SIZE(bases); -#else - n = PyTuple_Size(bases); - if (n < 0) return -1; -#endif - for (i = 1; i < n; i++) - { -#if CYTHON_AVOID_BORROWED_REFS - PyObject *b0 = PySequence_GetItem(bases, i); - if (!b0) return -1; -#elif CYTHON_ASSUME_SAFE_MACROS - PyObject *b0 = PyTuple_GET_ITEM(bases, i); -#else - PyObject *b0 = PyTuple_GetItem(bases, i); - if (!b0) return -1; -#endif - PyTypeObject *b; -#if PY_MAJOR_VERSION < 3 - if (PyClass_Check(b0)) - { - PyErr_Format(PyExc_TypeError, "base class '%.200s' is an old-style class", - PyString_AS_STRING(((PyClassObject*)b0)->cl_name)); -#if CYTHON_AVOID_BORROWED_REFS - Py_DECREF(b0); -#endif - return -1; - } -#endif - b = (PyTypeObject*) b0; - if (!__Pyx_PyType_HasFeature(b, Py_TPFLAGS_HEAPTYPE)) - { - __Pyx_TypeName b_name = __Pyx_PyType_GetName(b); - PyErr_Format(PyExc_TypeError, - "base class '" __Pyx_FMT_TYPENAME "' is not a heap type", b_name); - __Pyx_DECREF_TypeName(b_name); -#if CYTHON_AVOID_BORROWED_REFS - Py_DECREF(b0); -#endif - return -1; - } - if (dictoffset == 0) - { - Py_ssize_t b_dictoffset = 0; -#if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY - b_dictoffset = b->tp_dictoffset; -#else - PyObject *py_b_dictoffset = PyObject_GetAttrString((PyObject*)b, "__dictoffset__"); - if (!py_b_dictoffset) goto dictoffset_return; - b_dictoffset = PyLong_AsSsize_t(py_b_dictoffset); - Py_DECREF(py_b_dictoffset); - if (b_dictoffset == -1 && PyErr_Occurred()) goto dictoffset_return; -#endif - if (b_dictoffset) { - { - __Pyx_TypeName b_name = __Pyx_PyType_GetName(b); - PyErr_Format(PyExc_TypeError, - "extension type '%.200s' has no __dict__ slot, " - "but base type '" __Pyx_FMT_TYPENAME "' has: " - "either add 'cdef dict __dict__' to the extension type " - "or add '__slots__ = [...]' to the base type", - type_name, b_name); - __Pyx_DECREF_TypeName(b_name); - } -#if !(CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY) - dictoffset_return: -#endif -#if CYTHON_AVOID_BORROWED_REFS - Py_DECREF(b0); -#endif - return -1; - } - } -#if CYTHON_AVOID_BORROWED_REFS - Py_DECREF(b0); -#endif - } - return 0; -} -#endif - -/* PyType_Ready */ -static int __Pyx_PyType_Ready(PyTypeObject *t) { -#if CYTHON_USE_TYPE_SPECS || !(CYTHON_COMPILING_IN_CPYTHON || CYTHON_COMPILING_IN_LIMITED_API) || defined(PYSTON_MAJOR_VERSION) - (void)__Pyx_PyObject_CallMethod0; -#if CYTHON_USE_TYPE_SPECS - (void)__Pyx_validate_bases_tuple; -#endif - return PyType_Ready(t); -#else - int r; - PyObject *bases = __Pyx_PyType_GetSlot(t, tp_bases, PyObject*); - if (bases && unlikely(__Pyx_validate_bases_tuple(t->tp_name, t->tp_dictoffset, bases) == -1)) - return -1; -#if PY_VERSION_HEX >= 0x03050000 && !defined(PYSTON_MAJOR_VERSION) - { - int gc_was_enabled; - #if PY_VERSION_HEX >= 0x030A00b1 - gc_was_enabled = PyGC_Disable(); - (void)__Pyx_PyObject_CallMethod0; - #else - PyObject *ret, *py_status; - PyObject *gc = NULL; - #if PY_VERSION_HEX >= 0x030700a1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM+0 >= 0x07030400) - gc = PyImport_GetModule(__pyx_kp_u_gc); - #endif - if (unlikely(!gc)) gc = PyImport_Import(__pyx_kp_u_gc); - if (unlikely(!gc)) return -1; - py_status = __Pyx_PyObject_CallMethod0(gc, __pyx_kp_u_isenabled); - if (unlikely(!py_status)) { - Py_DECREF(gc); - return -1; - } - gc_was_enabled = __Pyx_PyObject_IsTrue(py_status); - Py_DECREF(py_status); - if (gc_was_enabled > 0) { - ret = __Pyx_PyObject_CallMethod0(gc, __pyx_kp_u_disable); - if (unlikely(!ret)) { - Py_DECREF(gc); - return -1; - } - Py_DECREF(ret); - } else if (unlikely(gc_was_enabled == -1)) { - Py_DECREF(gc); - return -1; - } - #endif - t->tp_flags |= Py_TPFLAGS_HEAPTYPE; -#if PY_VERSION_HEX >= 0x030A0000 - t->tp_flags |= Py_TPFLAGS_IMMUTABLETYPE; -#endif -#else - (void)__Pyx_PyObject_CallMethod0; -#endif - r = PyType_Ready(t); -#if PY_VERSION_HEX >= 0x03050000 && !defined(PYSTON_MAJOR_VERSION) - t->tp_flags &= ~Py_TPFLAGS_HEAPTYPE; - #if PY_VERSION_HEX >= 0x030A00b1 - if (gc_was_enabled) - PyGC_Enable(); - #else - if (gc_was_enabled) { - PyObject *tp, *v, *tb; - PyErr_Fetch(&tp, &v, &tb); - ret = __Pyx_PyObject_CallMethod0(gc, __pyx_kp_u_enable); - if (likely(ret || r == -1)) { - Py_XDECREF(ret); - PyErr_Restore(tp, v, tb); - } else { - Py_XDECREF(tp); - Py_XDECREF(v); - Py_XDECREF(tb); - r = -1; - } - } - Py_DECREF(gc); - #endif - } -#endif - return r; -#endif -} - -/* PyObject_GenericGetAttrNoDict */ -#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 -static PyObject *__Pyx_RaiseGenericGetAttributeError(PyTypeObject *tp, PyObject *attr_name) { - __Pyx_TypeName type_name = __Pyx_PyType_GetName(tp); - PyErr_Format(PyExc_AttributeError, -#if PY_MAJOR_VERSION >= 3 - "'" __Pyx_FMT_TYPENAME "' object has no attribute '%U'", - type_name, attr_name); -#else - "'" __Pyx_FMT_TYPENAME "' object has no attribute '%.400s'", - type_name, PyString_AS_STRING(attr_name)); -#endif - __Pyx_DECREF_TypeName(type_name); - return NULL; -} -static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj, PyObject* attr_name) { - PyObject *descr; - PyTypeObject *tp = Py_TYPE(obj); - if (unlikely(!PyString_Check(attr_name))) { - return PyObject_GenericGetAttr(obj, attr_name); - } - assert(!tp->tp_dictoffset); - descr = _PyType_Lookup(tp, attr_name); - if (unlikely(!descr)) { - return __Pyx_RaiseGenericGetAttributeError(tp, attr_name); - } - Py_INCREF(descr); - #if PY_MAJOR_VERSION < 3 - if (likely(PyType_HasFeature(Py_TYPE(descr), Py_TPFLAGS_HAVE_CLASS))) - #endif - { - descrgetfunc f = Py_TYPE(descr)->tp_descr_get; - if (unlikely(f)) { - PyObject *res = f(descr, obj, (PyObject *)tp); - Py_DECREF(descr); - return res; - } - } - return descr; -} -#endif - -/* PyObject_GenericGetAttr */ -#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 -static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* attr_name) { - if (unlikely(Py_TYPE(obj)->tp_dictoffset)) { - return PyObject_GenericGetAttr(obj, attr_name); - } - return __Pyx_PyObject_GenericGetAttrNoDict(obj, attr_name); -} -#endif - -/* SetVTable */ -static int __Pyx_SetVtable(PyTypeObject *type, void *vtable) { - PyObject *ob = PyCapsule_New(vtable, 0, 0); - if (unlikely(!ob)) - goto bad; -#if CYTHON_COMPILING_IN_LIMITED_API - if (unlikely(PyObject_SetAttr((PyObject *) type, __pyx_n_s_pyx_vtable, ob) < 0)) -#else - if (unlikely(PyDict_SetItem(type->tp_dict, __pyx_n_s_pyx_vtable, ob) < 0)) -#endif - goto bad; - Py_DECREF(ob); - return 0; -bad: - Py_XDECREF(ob); - return -1; -} - -/* GetVTable */ -static void* __Pyx_GetVtable(PyTypeObject *type) { - void* ptr; -#if CYTHON_COMPILING_IN_LIMITED_API - PyObject *ob = PyObject_GetAttr((PyObject *)type, __pyx_n_s_pyx_vtable); -#else - PyObject *ob = PyObject_GetItem(type->tp_dict, __pyx_n_s_pyx_vtable); -#endif - if (!ob) - goto bad; - ptr = PyCapsule_GetPointer(ob, 0); - if (!ptr && !PyErr_Occurred()) - PyErr_SetString(PyExc_RuntimeError, "invalid vtable found for imported type"); - Py_DECREF(ob); - return ptr; -bad: - Py_XDECREF(ob); - return NULL; -} - -/* MergeVTables */ -#if !CYTHON_COMPILING_IN_LIMITED_API -static int __Pyx_MergeVtables(PyTypeObject *type) { - int i; - void** base_vtables; - __Pyx_TypeName tp_base_name; - __Pyx_TypeName base_name; - void* unknown = (void*)-1; - PyObject* bases = type->tp_bases; - int base_depth = 0; - { - PyTypeObject* base = type->tp_base; - while (base) { - base_depth += 1; - base = base->tp_base; - } - } - base_vtables = (void**) malloc(sizeof(void*) * (size_t)(base_depth + 1)); - base_vtables[0] = unknown; - for (i = 1; i < PyTuple_GET_SIZE(bases); i++) { - void* base_vtable = __Pyx_GetVtable(((PyTypeObject*)PyTuple_GET_ITEM(bases, i))); - if (base_vtable != NULL) { - int j; - PyTypeObject* base = type->tp_base; - for (j = 0; j < base_depth; j++) { - if (base_vtables[j] == unknown) { - base_vtables[j] = __Pyx_GetVtable(base); - base_vtables[j + 1] = unknown; - } - if (base_vtables[j] == base_vtable) { - break; - } else if (base_vtables[j] == NULL) { - goto bad; - } - base = base->tp_base; - } - } - } - PyErr_Clear(); - free(base_vtables); - return 0; -bad: - tp_base_name = __Pyx_PyType_GetName(type->tp_base); - base_name = __Pyx_PyType_GetName((PyTypeObject*)PyTuple_GET_ITEM(bases, i)); - PyErr_Format(PyExc_TypeError, - "multiple bases have vtable conflict: '" __Pyx_FMT_TYPENAME "' and '" __Pyx_FMT_TYPENAME "'", tp_base_name, base_name); - __Pyx_DECREF_TypeName(tp_base_name); - __Pyx_DECREF_TypeName(base_name); - free(base_vtables); - return -1; -} -#endif - -/* SetupReduce */ -#if !CYTHON_COMPILING_IN_LIMITED_API -static int __Pyx_setup_reduce_is_named(PyObject* meth, PyObject* name) { - int ret; - PyObject *name_attr; - name_attr = __Pyx_PyObject_GetAttrStrNoError(meth, __pyx_n_s_name); - if (likely(name_attr)) { - ret = PyObject_RichCompareBool(name_attr, name, Py_EQ); - } else { - ret = -1; - } - if (unlikely(ret < 0)) { - PyErr_Clear(); - ret = 0; - } - Py_XDECREF(name_attr); - return ret; -} -static int __Pyx_setup_reduce(PyObject* type_obj) { - int ret = 0; - PyObject *object_reduce = NULL; - PyObject *object_getstate = NULL; - PyObject *object_reduce_ex = NULL; - PyObject *reduce = NULL; - PyObject *reduce_ex = NULL; - PyObject *reduce_cython = NULL; - PyObject *setstate = NULL; - PyObject *setstate_cython = NULL; - PyObject *getstate = NULL; -#if CYTHON_USE_PYTYPE_LOOKUP - getstate = _PyType_Lookup((PyTypeObject*)type_obj, __pyx_n_s_getstate); -#else - getstate = __Pyx_PyObject_GetAttrStrNoError(type_obj, __pyx_n_s_getstate); - if (!getstate && PyErr_Occurred()) { - goto __PYX_BAD; - } -#endif - if (getstate) { -#if CYTHON_USE_PYTYPE_LOOKUP - object_getstate = _PyType_Lookup(&PyBaseObject_Type, __pyx_n_s_getstate); -#else - object_getstate = __Pyx_PyObject_GetAttrStrNoError((PyObject*)&PyBaseObject_Type, __pyx_n_s_getstate); - if (!object_getstate && PyErr_Occurred()) { - goto __PYX_BAD; - } -#endif - if (object_getstate != getstate) { - goto __PYX_GOOD; - } - } -#if CYTHON_USE_PYTYPE_LOOKUP - object_reduce_ex = _PyType_Lookup(&PyBaseObject_Type, __pyx_n_s_reduce_ex); if (!object_reduce_ex) goto __PYX_BAD; -#else - object_reduce_ex = __Pyx_PyObject_GetAttrStr((PyObject*)&PyBaseObject_Type, __pyx_n_s_reduce_ex); if (!object_reduce_ex) goto __PYX_BAD; -#endif - reduce_ex = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_n_s_reduce_ex); if (unlikely(!reduce_ex)) goto __PYX_BAD; - if (reduce_ex == object_reduce_ex) { -#if CYTHON_USE_PYTYPE_LOOKUP - object_reduce = _PyType_Lookup(&PyBaseObject_Type, __pyx_n_s_reduce); if (!object_reduce) goto __PYX_BAD; -#else - object_reduce = __Pyx_PyObject_GetAttrStr((PyObject*)&PyBaseObject_Type, __pyx_n_s_reduce); if (!object_reduce) goto __PYX_BAD; -#endif - reduce = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_n_s_reduce); if (unlikely(!reduce)) goto __PYX_BAD; - if (reduce == object_reduce || __Pyx_setup_reduce_is_named(reduce, __pyx_n_s_reduce_cython)) { - reduce_cython = __Pyx_PyObject_GetAttrStrNoError(type_obj, __pyx_n_s_reduce_cython); - if (likely(reduce_cython)) { - ret = PyDict_SetItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_reduce, reduce_cython); if (unlikely(ret < 0)) goto __PYX_BAD; - ret = PyDict_DelItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_reduce_cython); if (unlikely(ret < 0)) goto __PYX_BAD; - } else if (reduce == object_reduce || PyErr_Occurred()) { - goto __PYX_BAD; - } - setstate = __Pyx_PyObject_GetAttrStrNoError(type_obj, __pyx_n_s_setstate); - if (!setstate) PyErr_Clear(); - if (!setstate || __Pyx_setup_reduce_is_named(setstate, __pyx_n_s_setstate_cython)) { - setstate_cython = __Pyx_PyObject_GetAttrStrNoError(type_obj, __pyx_n_s_setstate_cython); - if (likely(setstate_cython)) { - ret = PyDict_SetItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_setstate, setstate_cython); if (unlikely(ret < 0)) goto __PYX_BAD; - ret = PyDict_DelItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_setstate_cython); if (unlikely(ret < 0)) goto __PYX_BAD; - } else if (!setstate || PyErr_Occurred()) { - goto __PYX_BAD; - } - } - PyType_Modified((PyTypeObject*)type_obj); - } - } - goto __PYX_GOOD; -__PYX_BAD: - if (!PyErr_Occurred()) { - __Pyx_TypeName type_obj_name = - __Pyx_PyType_GetName((PyTypeObject*)type_obj); - PyErr_Format(PyExc_RuntimeError, - "Unable to initialize pickling for " __Pyx_FMT_TYPENAME, type_obj_name); - __Pyx_DECREF_TypeName(type_obj_name); - } - ret = -1; -__PYX_GOOD: -#if !CYTHON_USE_PYTYPE_LOOKUP - Py_XDECREF(object_reduce); - Py_XDECREF(object_reduce_ex); - Py_XDECREF(object_getstate); - Py_XDECREF(getstate); -#endif - Py_XDECREF(reduce); - Py_XDECREF(reduce_ex); - Py_XDECREF(reduce_cython); - Py_XDECREF(setstate); - Py_XDECREF(setstate_cython); - return ret; -} -#endif - -/* ImportDottedModule */ -#if PY_MAJOR_VERSION >= 3 -static PyObject *__Pyx__ImportDottedModule_Error(PyObject *name, PyObject *parts_tuple, Py_ssize_t count) { - PyObject *partial_name = NULL, *slice = NULL, *sep = NULL; - if (unlikely(PyErr_Occurred())) { - PyErr_Clear(); - } - if (likely(PyTuple_GET_SIZE(parts_tuple) == count)) { - partial_name = name; - } else { - slice = PySequence_GetSlice(parts_tuple, 0, count); - if (unlikely(!slice)) - goto bad; - sep = PyUnicode_FromStringAndSize(".", 1); - if (unlikely(!sep)) - goto bad; - partial_name = PyUnicode_Join(sep, slice); - } - PyErr_Format( -#if PY_MAJOR_VERSION < 3 - PyExc_ImportError, - "No module named '%s'", PyString_AS_STRING(partial_name)); -#else -#if PY_VERSION_HEX >= 0x030600B1 - PyExc_ModuleNotFoundError, -#else - PyExc_ImportError, -#endif - "No module named '%U'", partial_name); -#endif -bad: - Py_XDECREF(sep); - Py_XDECREF(slice); - Py_XDECREF(partial_name); - return NULL; -} -#endif -#if PY_MAJOR_VERSION >= 3 -static PyObject *__Pyx__ImportDottedModule_Lookup(PyObject *name) { - PyObject *imported_module; -#if PY_VERSION_HEX < 0x030700A1 || (CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM < 0x07030400) - PyObject *modules = PyImport_GetModuleDict(); - if (unlikely(!modules)) - return NULL; - imported_module = __Pyx_PyDict_GetItemStr(modules, name); - Py_XINCREF(imported_module); -#else - imported_module = PyImport_GetModule(name); -#endif - return imported_module; -} -#endif -#if PY_MAJOR_VERSION >= 3 -static PyObject *__Pyx_ImportDottedModule_WalkParts(PyObject *module, PyObject *name, PyObject *parts_tuple) { - Py_ssize_t i, nparts; - nparts = PyTuple_GET_SIZE(parts_tuple); - for (i=1; i < nparts && module; i++) { - PyObject *part, *submodule; -#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - part = PyTuple_GET_ITEM(parts_tuple, i); -#else - part = PySequence_ITEM(parts_tuple, i); -#endif - submodule = __Pyx_PyObject_GetAttrStrNoError(module, part); -#if !(CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS) - Py_DECREF(part); -#endif - Py_DECREF(module); - module = submodule; - } - if (unlikely(!module)) { - return __Pyx__ImportDottedModule_Error(name, parts_tuple, i); - } - return module; -} -#endif -static PyObject *__Pyx__ImportDottedModule(PyObject *name, PyObject *parts_tuple) { -#if PY_MAJOR_VERSION < 3 - PyObject *module, *from_list, *star = __pyx_n_s__10; - CYTHON_UNUSED_VAR(parts_tuple); - from_list = PyList_New(1); - if (unlikely(!from_list)) - return NULL; - Py_INCREF(star); - PyList_SET_ITEM(from_list, 0, star); - module = __Pyx_Import(name, from_list, 0); - Py_DECREF(from_list); - return module; -#else - PyObject *imported_module; - PyObject *module = __Pyx_Import(name, NULL, 0); - if (!parts_tuple || unlikely(!module)) - return module; - imported_module = __Pyx__ImportDottedModule_Lookup(name); - if (likely(imported_module)) { - Py_DECREF(module); - return imported_module; - } - PyErr_Clear(); - return __Pyx_ImportDottedModule_WalkParts(module, name, parts_tuple); -#endif -} -static PyObject *__Pyx_ImportDottedModule(PyObject *name, PyObject *parts_tuple) { -#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030400B1 - PyObject *module = __Pyx__ImportDottedModule_Lookup(name); - if (likely(module)) { - PyObject *spec = __Pyx_PyObject_GetAttrStrNoError(module, __pyx_n_s_spec); - if (likely(spec)) { - PyObject *unsafe = __Pyx_PyObject_GetAttrStrNoError(spec, __pyx_n_s_initializing); - if (likely(!unsafe || !__Pyx_PyObject_IsTrue(unsafe))) { - Py_DECREF(spec); - spec = NULL; - } - Py_XDECREF(unsafe); - } - if (likely(!spec)) { - PyErr_Clear(); - return module; - } - Py_DECREF(spec); - Py_DECREF(module); - } else if (PyErr_Occurred()) { - PyErr_Clear(); - } -#endif - return __Pyx__ImportDottedModule(name, parts_tuple); -} - -/* Py3UpdateBases */ -static PyObject* -__Pyx_PEP560_update_bases(PyObject *bases) -{ - Py_ssize_t i, j, size_bases; - PyObject *base, *meth, *new_base, *result, *new_bases = NULL; - size_bases = PyTuple_GET_SIZE(bases); - for (i = 0; i < size_bases; i++) { - base = PyTuple_GET_ITEM(bases, i); - if (PyType_Check(base)) { - if (new_bases) { - if (PyList_Append(new_bases, base) < 0) { - goto error; - } - } - continue; - } - meth = __Pyx_PyObject_GetAttrStrNoError(base, __pyx_n_s_mro_entries); - if (!meth && PyErr_Occurred()) { - goto error; - } - if (!meth) { - if (new_bases) { - if (PyList_Append(new_bases, base) < 0) { - goto error; - } - } - continue; - } - new_base = __Pyx_PyObject_CallOneArg(meth, bases); - Py_DECREF(meth); - if (!new_base) { - goto error; - } - if (!PyTuple_Check(new_base)) { - PyErr_SetString(PyExc_TypeError, - "__mro_entries__ must return a tuple"); - Py_DECREF(new_base); - goto error; - } - if (!new_bases) { - if (!(new_bases = PyList_New(i))) { - goto error; - } - for (j = 0; j < i; j++) { - base = PyTuple_GET_ITEM(bases, j); - PyList_SET_ITEM(new_bases, j, base); - Py_INCREF(base); - } - } - j = PyList_GET_SIZE(new_bases); - if (PyList_SetSlice(new_bases, j, j, new_base) < 0) { - goto error; - } - Py_DECREF(new_base); - } - if (!new_bases) { - Py_INCREF(bases); - return bases; - } - result = PyList_AsTuple(new_bases); - Py_DECREF(new_bases); - return result; -error: - Py_XDECREF(new_bases); - return NULL; -} - -/* CalculateMetaclass */ -static PyObject *__Pyx_CalculateMetaclass(PyTypeObject *metaclass, PyObject *bases) { - Py_ssize_t i, nbases; -#if CYTHON_ASSUME_SAFE_MACROS - nbases = PyTuple_GET_SIZE(bases); -#else - nbases = PyTuple_Size(bases); - if (nbases < 0) return NULL; -#endif - for (i=0; i < nbases; i++) { - PyTypeObject *tmptype; -#if CYTHON_ASSUME_SAFE_MACROS - PyObject *tmp = PyTuple_GET_ITEM(bases, i); -#else - PyObject *tmp = PyTuple_GetItem(bases, i); - if (!tmp) return NULL; -#endif - tmptype = Py_TYPE(tmp); -#if PY_MAJOR_VERSION < 3 - if (tmptype == &PyClass_Type) - continue; -#endif - if (!metaclass) { - metaclass = tmptype; - continue; - } - if (PyType_IsSubtype(metaclass, tmptype)) - continue; - if (PyType_IsSubtype(tmptype, metaclass)) { - metaclass = tmptype; - continue; - } - PyErr_SetString(PyExc_TypeError, - "metaclass conflict: " - "the metaclass of a derived class " - "must be a (non-strict) subclass " - "of the metaclasses of all its bases"); - return NULL; - } - if (!metaclass) { -#if PY_MAJOR_VERSION < 3 - metaclass = &PyClass_Type; -#else - metaclass = &PyType_Type; -#endif - } - Py_INCREF((PyObject*) metaclass); - return (PyObject*) metaclass; -} - -/* PyObjectLookupSpecial */ -#if CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS -static CYTHON_INLINE PyObject* __Pyx__PyObject_LookupSpecial(PyObject* obj, PyObject* attr_name, int with_error) { - PyObject *res; - PyTypeObject *tp = Py_TYPE(obj); -#if PY_MAJOR_VERSION < 3 - if (unlikely(PyInstance_Check(obj))) - return with_error ? __Pyx_PyObject_GetAttrStr(obj, attr_name) : __Pyx_PyObject_GetAttrStrNoError(obj, attr_name); -#endif - res = _PyType_Lookup(tp, attr_name); - if (likely(res)) { - descrgetfunc f = Py_TYPE(res)->tp_descr_get; - if (!f) { - Py_INCREF(res); - } else { - res = f(res, obj, (PyObject *)tp); - } - } else if (with_error) { - PyErr_SetObject(PyExc_AttributeError, attr_name); - } - return res; -} -#endif - -/* Py3ClassCreate */ -static PyObject *__Pyx_Py3MetaclassPrepare(PyObject *metaclass, PyObject *bases, PyObject *name, - PyObject *qualname, PyObject *mkw, PyObject *modname, PyObject *doc) { - PyObject *ns; - if (metaclass) { - PyObject *prep = __Pyx_PyObject_GetAttrStrNoError(metaclass, __pyx_n_s_prepare); - if (prep) { - PyObject *pargs[3] = {NULL, name, bases}; - ns = __Pyx_PyObject_FastCallDict(prep, pargs+1, 2 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET, mkw); - Py_DECREF(prep); - } else { - if (unlikely(PyErr_Occurred())) - return NULL; - ns = PyDict_New(); - } - } else { - ns = PyDict_New(); - } - if (unlikely(!ns)) - return NULL; - if (unlikely(PyObject_SetItem(ns, __pyx_n_s_module, modname) < 0)) goto bad; -#if PY_VERSION_HEX >= 0x03030000 - if (unlikely(PyObject_SetItem(ns, __pyx_n_s_qualname, qualname) < 0)) goto bad; -#else - CYTHON_MAYBE_UNUSED_VAR(qualname); -#endif - if (unlikely(doc && PyObject_SetItem(ns, __pyx_n_s_doc, doc) < 0)) goto bad; - return ns; -bad: - Py_DECREF(ns); - return NULL; -} -#if PY_VERSION_HEX < 0x030600A4 && CYTHON_PEP487_INIT_SUBCLASS -static int __Pyx_SetNamesPEP487(PyObject *type_obj) { - PyTypeObject *type = (PyTypeObject*) type_obj; - PyObject *names_to_set, *key, *value, *set_name, *tmp; - Py_ssize_t i = 0; -#if CYTHON_USE_TYPE_SLOTS - names_to_set = PyDict_Copy(type->tp_dict); -#else - { - PyObject *d = PyObject_GetAttr(type_obj, __pyx_n_s_dict); - names_to_set = NULL; - if (likely(d)) { - PyObject *names_to_set = PyDict_New(); - int ret = likely(names_to_set) ? PyDict_Update(names_to_set, d) : -1; - Py_DECREF(d); - if (unlikely(ret < 0)) - Py_CLEAR(names_to_set); - } - } -#endif - if (unlikely(names_to_set == NULL)) - goto bad; - while (PyDict_Next(names_to_set, &i, &key, &value)) { - set_name = __Pyx_PyObject_LookupSpecialNoError(value, __pyx_n_s_set_name); - if (unlikely(set_name != NULL)) { - tmp = __Pyx_PyObject_Call2Args(set_name, type_obj, key); - Py_DECREF(set_name); - if (unlikely(tmp == NULL)) { - __Pyx_TypeName value_type_name = - __Pyx_PyType_GetName(Py_TYPE(value)); - __Pyx_TypeName type_name = __Pyx_PyType_GetName(type); - PyErr_Format(PyExc_RuntimeError, -#if PY_MAJOR_VERSION >= 3 - "Error calling __set_name__ on '" __Pyx_FMT_TYPENAME "' instance %R " "in '" __Pyx_FMT_TYPENAME "'", - value_type_name, key, type_name); -#else - "Error calling __set_name__ on '" __Pyx_FMT_TYPENAME "' instance %.100s in '" __Pyx_FMT_TYPENAME "'", - value_type_name, - PyString_Check(key) ? PyString_AS_STRING(key) : "?", - type_name); -#endif - goto bad; - } else { - Py_DECREF(tmp); - } - } - else if (unlikely(PyErr_Occurred())) { - goto bad; - } - } - Py_DECREF(names_to_set); - return 0; -bad: - Py_XDECREF(names_to_set); - return -1; -} -static PyObject *__Pyx_InitSubclassPEP487(PyObject *type_obj, PyObject *mkw) { -#if CYTHON_USE_TYPE_SLOTS && CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - PyTypeObject *type = (PyTypeObject*) type_obj; - PyObject *mro = type->tp_mro; - Py_ssize_t i, nbases; - if (unlikely(!mro)) goto done; - (void) &__Pyx_GetBuiltinName; - Py_INCREF(mro); - nbases = PyTuple_GET_SIZE(mro); - assert(PyTuple_GET_ITEM(mro, 0) == type_obj); - for (i = 1; i < nbases-1; i++) { - PyObject *base, *dict, *meth; - base = PyTuple_GET_ITEM(mro, i); - dict = ((PyTypeObject *)base)->tp_dict; - meth = __Pyx_PyDict_GetItemStrWithError(dict, __pyx_n_s_init_subclass); - if (unlikely(meth)) { - descrgetfunc f = Py_TYPE(meth)->tp_descr_get; - PyObject *res; - Py_INCREF(meth); - if (likely(f)) { - res = f(meth, NULL, type_obj); - Py_DECREF(meth); - if (unlikely(!res)) goto bad; - meth = res; - } - res = __Pyx_PyObject_FastCallDict(meth, NULL, 0, mkw); - Py_DECREF(meth); - if (unlikely(!res)) goto bad; - Py_DECREF(res); - goto done; - } else if (unlikely(PyErr_Occurred())) { - goto bad; - } - } -done: - Py_XDECREF(mro); - return type_obj; -bad: - Py_XDECREF(mro); - Py_DECREF(type_obj); - return NULL; -#else - PyObject *super_type, *super, *func, *res; -#if CYTHON_COMPILING_IN_PYPY && !defined(PySuper_Type) - super_type = __Pyx_GetBuiltinName(__pyx_n_s_super); -#else - super_type = (PyObject*) &PySuper_Type; - (void) &__Pyx_GetBuiltinName; -#endif - super = likely(super_type) ? __Pyx_PyObject_Call2Args(super_type, type_obj, type_obj) : NULL; -#if CYTHON_COMPILING_IN_PYPY && !defined(PySuper_Type) - Py_XDECREF(super_type); -#endif - if (unlikely(!super)) { - Py_CLEAR(type_obj); - goto done; - } - func = __Pyx_PyObject_GetAttrStrNoError(super, __pyx_n_s_init_subclass); - Py_DECREF(super); - if (likely(!func)) { - if (unlikely(PyErr_Occurred())) - Py_CLEAR(type_obj); - goto done; - } - res = __Pyx_PyObject_FastCallDict(func, NULL, 0, mkw); - Py_DECREF(func); - if (unlikely(!res)) - Py_CLEAR(type_obj); - Py_XDECREF(res); -done: - return type_obj; -#endif -} -#endif -static PyObject *__Pyx_Py3ClassCreate(PyObject *metaclass, PyObject *name, PyObject *bases, - PyObject *dict, PyObject *mkw, - int calculate_metaclass, int allow_py2_metaclass) { - PyObject *result; - PyObject *owned_metaclass = NULL; - PyObject *margs[4] = {NULL, name, bases, dict}; - if (allow_py2_metaclass) { - owned_metaclass = PyObject_GetItem(dict, __pyx_n_s_metaclass); - if (owned_metaclass) { - metaclass = owned_metaclass; - } else if (likely(PyErr_ExceptionMatches(PyExc_KeyError))) { - PyErr_Clear(); - } else { - return NULL; - } - } - if (calculate_metaclass && (!metaclass || PyType_Check(metaclass))) { - metaclass = __Pyx_CalculateMetaclass((PyTypeObject*) metaclass, bases); - Py_XDECREF(owned_metaclass); - if (unlikely(!metaclass)) - return NULL; - owned_metaclass = metaclass; - } - result = __Pyx_PyObject_FastCallDict(metaclass, margs+1, 3 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET, -#if PY_VERSION_HEX < 0x030600A4 - (metaclass == (PyObject*)&PyType_Type) ? NULL : mkw -#else - mkw -#endif - ); - Py_XDECREF(owned_metaclass); -#if PY_VERSION_HEX < 0x030600A4 && CYTHON_PEP487_INIT_SUBCLASS - if (likely(result) && likely(PyType_Check(result))) { - if (unlikely(__Pyx_SetNamesPEP487(result) < 0)) { - Py_CLEAR(result); - } else { - result = __Pyx_InitSubclassPEP487(result, mkw); - } - } -#else - (void) &__Pyx_GetBuiltinName; -#endif - return result; -} - -/* FetchSharedCythonModule */ -static PyObject *__Pyx_FetchSharedCythonABIModule(void) { - return __Pyx_PyImport_AddModuleRef((char*) __PYX_ABI_MODULE_NAME); -} - -/* FetchCommonType */ -static int __Pyx_VerifyCachedType(PyObject *cached_type, - const char *name, - Py_ssize_t basicsize, - Py_ssize_t expected_basicsize) { - if (!PyType_Check(cached_type)) { - PyErr_Format(PyExc_TypeError, - "Shared Cython type %.200s is not a type object", name); - return -1; - } - if (basicsize != expected_basicsize) { - PyErr_Format(PyExc_TypeError, - "Shared Cython type %.200s has the wrong size, try recompiling", - name); - return -1; - } - return 0; -} -#if !CYTHON_USE_TYPE_SPECS -static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type) { - PyObject* abi_module; - const char* object_name; - PyTypeObject *cached_type = NULL; - abi_module = __Pyx_FetchSharedCythonABIModule(); - if (!abi_module) return NULL; - object_name = strrchr(type->tp_name, '.'); - object_name = object_name ? object_name+1 : type->tp_name; - cached_type = (PyTypeObject*) PyObject_GetAttrString(abi_module, object_name); - if (cached_type) { - if (__Pyx_VerifyCachedType( - (PyObject *)cached_type, - object_name, - cached_type->tp_basicsize, - type->tp_basicsize) < 0) { - goto bad; - } - goto done; - } - if (!PyErr_ExceptionMatches(PyExc_AttributeError)) goto bad; - PyErr_Clear(); - if (PyType_Ready(type) < 0) goto bad; - if (PyObject_SetAttrString(abi_module, object_name, (PyObject *)type) < 0) - goto bad; - Py_INCREF(type); - cached_type = type; -done: - Py_DECREF(abi_module); - return cached_type; -bad: - Py_XDECREF(cached_type); - cached_type = NULL; - goto done; -} -#else -static PyTypeObject *__Pyx_FetchCommonTypeFromSpec(PyObject *module, PyType_Spec *spec, PyObject *bases) { - PyObject *abi_module, *cached_type = NULL; - const char* object_name = strrchr(spec->name, '.'); - object_name = object_name ? object_name+1 : spec->name; - abi_module = __Pyx_FetchSharedCythonABIModule(); - if (!abi_module) return NULL; - cached_type = PyObject_GetAttrString(abi_module, object_name); - if (cached_type) { - Py_ssize_t basicsize; -#if CYTHON_COMPILING_IN_LIMITED_API - PyObject *py_basicsize; - py_basicsize = PyObject_GetAttrString(cached_type, "__basicsize__"); - if (unlikely(!py_basicsize)) goto bad; - basicsize = PyLong_AsSsize_t(py_basicsize); - Py_DECREF(py_basicsize); - py_basicsize = 0; - if (unlikely(basicsize == (Py_ssize_t)-1) && PyErr_Occurred()) goto bad; -#else - basicsize = likely(PyType_Check(cached_type)) ? ((PyTypeObject*) cached_type)->tp_basicsize : -1; -#endif - if (__Pyx_VerifyCachedType( - cached_type, - object_name, - basicsize, - spec->basicsize) < 0) { - goto bad; - } - goto done; - } - if (!PyErr_ExceptionMatches(PyExc_AttributeError)) goto bad; - PyErr_Clear(); - CYTHON_UNUSED_VAR(module); - cached_type = __Pyx_PyType_FromModuleAndSpec(abi_module, spec, bases); - if (unlikely(!cached_type)) goto bad; - if (unlikely(__Pyx_fix_up_extension_type_from_spec(spec, (PyTypeObject *) cached_type) < 0)) goto bad; - if (PyObject_SetAttrString(abi_module, object_name, cached_type) < 0) goto bad; -done: - Py_DECREF(abi_module); - assert(cached_type == NULL || PyType_Check(cached_type)); - return (PyTypeObject *) cached_type; -bad: - Py_XDECREF(cached_type); - cached_type = NULL; - goto done; -} -#endif - -/* PyVectorcallFastCallDict */ -#if CYTHON_METH_FASTCALL -static PyObject *__Pyx_PyVectorcall_FastCallDict_kw(PyObject *func, __pyx_vectorcallfunc vc, PyObject *const *args, size_t nargs, PyObject *kw) -{ - PyObject *res = NULL; - PyObject *kwnames; - PyObject **newargs; - PyObject **kwvalues; - Py_ssize_t i, pos; - size_t j; - PyObject *key, *value; - unsigned long keys_are_strings; - Py_ssize_t nkw = PyDict_GET_SIZE(kw); - newargs = (PyObject **)PyMem_Malloc((nargs + (size_t)nkw) * sizeof(args[0])); - if (unlikely(newargs == NULL)) { - PyErr_NoMemory(); - return NULL; - } - for (j = 0; j < nargs; j++) newargs[j] = args[j]; - kwnames = PyTuple_New(nkw); - if (unlikely(kwnames == NULL)) { - PyMem_Free(newargs); - return NULL; - } - kwvalues = newargs + nargs; - pos = i = 0; - keys_are_strings = Py_TPFLAGS_UNICODE_SUBCLASS; - while (PyDict_Next(kw, &pos, &key, &value)) { - keys_are_strings &= Py_TYPE(key)->tp_flags; - Py_INCREF(key); - Py_INCREF(value); - PyTuple_SET_ITEM(kwnames, i, key); - kwvalues[i] = value; - i++; - } - if (unlikely(!keys_are_strings)) { - PyErr_SetString(PyExc_TypeError, "keywords must be strings"); - goto cleanup; - } - res = vc(func, newargs, nargs, kwnames); -cleanup: - Py_DECREF(kwnames); - for (i = 0; i < nkw; i++) - Py_DECREF(kwvalues[i]); - PyMem_Free(newargs); - return res; -} -static CYTHON_INLINE PyObject *__Pyx_PyVectorcall_FastCallDict(PyObject *func, __pyx_vectorcallfunc vc, PyObject *const *args, size_t nargs, PyObject *kw) -{ - if (likely(kw == NULL) || PyDict_GET_SIZE(kw) == 0) { - return vc(func, args, nargs, NULL); - } - return __Pyx_PyVectorcall_FastCallDict_kw(func, vc, args, nargs, kw); -} -#endif - -/* CythonFunctionShared */ -#if CYTHON_COMPILING_IN_LIMITED_API -static CYTHON_INLINE int __Pyx__IsSameCyOrCFunction(PyObject *func, void *cfunc) { - if (__Pyx_CyFunction_Check(func)) { - return PyCFunction_GetFunction(((__pyx_CyFunctionObject*)func)->func) == (PyCFunction) cfunc; - } else if (PyCFunction_Check(func)) { - return PyCFunction_GetFunction(func) == (PyCFunction) cfunc; - } - return 0; -} -#else -static CYTHON_INLINE int __Pyx__IsSameCyOrCFunction(PyObject *func, void *cfunc) { - return __Pyx_CyOrPyCFunction_Check(func) && __Pyx_CyOrPyCFunction_GET_FUNCTION(func) == (PyCFunction) cfunc; -} -#endif -static CYTHON_INLINE void __Pyx__CyFunction_SetClassObj(__pyx_CyFunctionObject* f, PyObject* classobj) { -#if PY_VERSION_HEX < 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API - __Pyx_Py_XDECREF_SET( - __Pyx_CyFunction_GetClassObj(f), - ((classobj) ? __Pyx_NewRef(classobj) : NULL)); -#else - __Pyx_Py_XDECREF_SET( - ((PyCMethodObject *) (f))->mm_class, - (PyTypeObject*)((classobj) ? __Pyx_NewRef(classobj) : NULL)); -#endif -} -static PyObject * -__Pyx_CyFunction_get_doc(__pyx_CyFunctionObject *op, void *closure) -{ - CYTHON_UNUSED_VAR(closure); - if (unlikely(op->func_doc == NULL)) { -#if CYTHON_COMPILING_IN_LIMITED_API - op->func_doc = PyObject_GetAttrString(op->func, "__doc__"); - if (unlikely(!op->func_doc)) return NULL; -#else - if (((PyCFunctionObject*)op)->m_ml->ml_doc) { -#if PY_MAJOR_VERSION >= 3 - op->func_doc = PyUnicode_FromString(((PyCFunctionObject*)op)->m_ml->ml_doc); -#else - op->func_doc = PyString_FromString(((PyCFunctionObject*)op)->m_ml->ml_doc); -#endif - if (unlikely(op->func_doc == NULL)) - return NULL; - } else { - Py_INCREF(Py_None); - return Py_None; - } -#endif - } - Py_INCREF(op->func_doc); - return op->func_doc; -} -static int -__Pyx_CyFunction_set_doc(__pyx_CyFunctionObject *op, PyObject *value, void *context) -{ - CYTHON_UNUSED_VAR(context); - if (value == NULL) { - value = Py_None; - } - Py_INCREF(value); - __Pyx_Py_XDECREF_SET(op->func_doc, value); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_name(__pyx_CyFunctionObject *op, void *context) -{ - CYTHON_UNUSED_VAR(context); - if (unlikely(op->func_name == NULL)) { -#if CYTHON_COMPILING_IN_LIMITED_API - op->func_name = PyObject_GetAttrString(op->func, "__name__"); -#elif PY_MAJOR_VERSION >= 3 - op->func_name = PyUnicode_InternFromString(((PyCFunctionObject*)op)->m_ml->ml_name); -#else - op->func_name = PyString_InternFromString(((PyCFunctionObject*)op)->m_ml->ml_name); -#endif - if (unlikely(op->func_name == NULL)) - return NULL; - } - Py_INCREF(op->func_name); - return op->func_name; -} -static int -__Pyx_CyFunction_set_name(__pyx_CyFunctionObject *op, PyObject *value, void *context) -{ - CYTHON_UNUSED_VAR(context); -#if PY_MAJOR_VERSION >= 3 - if (unlikely(value == NULL || !PyUnicode_Check(value))) -#else - if (unlikely(value == NULL || !PyString_Check(value))) -#endif - { - PyErr_SetString(PyExc_TypeError, - "__name__ must be set to a string object"); - return -1; - } - Py_INCREF(value); - __Pyx_Py_XDECREF_SET(op->func_name, value); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_qualname(__pyx_CyFunctionObject *op, void *context) -{ - CYTHON_UNUSED_VAR(context); - Py_INCREF(op->func_qualname); - return op->func_qualname; -} -static int -__Pyx_CyFunction_set_qualname(__pyx_CyFunctionObject *op, PyObject *value, void *context) -{ - CYTHON_UNUSED_VAR(context); -#if PY_MAJOR_VERSION >= 3 - if (unlikely(value == NULL || !PyUnicode_Check(value))) -#else - if (unlikely(value == NULL || !PyString_Check(value))) -#endif - { - PyErr_SetString(PyExc_TypeError, - "__qualname__ must be set to a string object"); - return -1; - } - Py_INCREF(value); - __Pyx_Py_XDECREF_SET(op->func_qualname, value); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_dict(__pyx_CyFunctionObject *op, void *context) -{ - CYTHON_UNUSED_VAR(context); - if (unlikely(op->func_dict == NULL)) { - op->func_dict = PyDict_New(); - if (unlikely(op->func_dict == NULL)) - return NULL; - } - Py_INCREF(op->func_dict); - return op->func_dict; -} -static int -__Pyx_CyFunction_set_dict(__pyx_CyFunctionObject *op, PyObject *value, void *context) -{ - CYTHON_UNUSED_VAR(context); - if (unlikely(value == NULL)) { - PyErr_SetString(PyExc_TypeError, - "function's dictionary may not be deleted"); - return -1; - } - if (unlikely(!PyDict_Check(value))) { - PyErr_SetString(PyExc_TypeError, - "setting function's dictionary to a non-dict"); - return -1; - } - Py_INCREF(value); - __Pyx_Py_XDECREF_SET(op->func_dict, value); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_globals(__pyx_CyFunctionObject *op, void *context) -{ - CYTHON_UNUSED_VAR(context); - Py_INCREF(op->func_globals); - return op->func_globals; -} -static PyObject * -__Pyx_CyFunction_get_closure(__pyx_CyFunctionObject *op, void *context) -{ - CYTHON_UNUSED_VAR(op); - CYTHON_UNUSED_VAR(context); - Py_INCREF(Py_None); - return Py_None; -} -static PyObject * -__Pyx_CyFunction_get_code(__pyx_CyFunctionObject *op, void *context) -{ - PyObject* result = (op->func_code) ? op->func_code : Py_None; - CYTHON_UNUSED_VAR(context); - Py_INCREF(result); - return result; -} -static int -__Pyx_CyFunction_init_defaults(__pyx_CyFunctionObject *op) { - int result = 0; - PyObject *res = op->defaults_getter((PyObject *) op); - if (unlikely(!res)) - return -1; - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - op->defaults_tuple = PyTuple_GET_ITEM(res, 0); - Py_INCREF(op->defaults_tuple); - op->defaults_kwdict = PyTuple_GET_ITEM(res, 1); - Py_INCREF(op->defaults_kwdict); - #else - op->defaults_tuple = __Pyx_PySequence_ITEM(res, 0); - if (unlikely(!op->defaults_tuple)) result = -1; - else { - op->defaults_kwdict = __Pyx_PySequence_ITEM(res, 1); - if (unlikely(!op->defaults_kwdict)) result = -1; - } - #endif - Py_DECREF(res); - return result; -} -static int -__Pyx_CyFunction_set_defaults(__pyx_CyFunctionObject *op, PyObject* value, void *context) { - CYTHON_UNUSED_VAR(context); - if (!value) { - value = Py_None; - } else if (unlikely(value != Py_None && !PyTuple_Check(value))) { - PyErr_SetString(PyExc_TypeError, - "__defaults__ must be set to a tuple object"); - return -1; - } - PyErr_WarnEx(PyExc_RuntimeWarning, "changes to cyfunction.__defaults__ will not " - "currently affect the values used in function calls", 1); - Py_INCREF(value); - __Pyx_Py_XDECREF_SET(op->defaults_tuple, value); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_defaults(__pyx_CyFunctionObject *op, void *context) { - PyObject* result = op->defaults_tuple; - CYTHON_UNUSED_VAR(context); - if (unlikely(!result)) { - if (op->defaults_getter) { - if (unlikely(__Pyx_CyFunction_init_defaults(op) < 0)) return NULL; - result = op->defaults_tuple; - } else { - result = Py_None; - } - } - Py_INCREF(result); - return result; -} -static int -__Pyx_CyFunction_set_kwdefaults(__pyx_CyFunctionObject *op, PyObject* value, void *context) { - CYTHON_UNUSED_VAR(context); - if (!value) { - value = Py_None; - } else if (unlikely(value != Py_None && !PyDict_Check(value))) { - PyErr_SetString(PyExc_TypeError, - "__kwdefaults__ must be set to a dict object"); - return -1; - } - PyErr_WarnEx(PyExc_RuntimeWarning, "changes to cyfunction.__kwdefaults__ will not " - "currently affect the values used in function calls", 1); - Py_INCREF(value); - __Pyx_Py_XDECREF_SET(op->defaults_kwdict, value); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_kwdefaults(__pyx_CyFunctionObject *op, void *context) { - PyObject* result = op->defaults_kwdict; - CYTHON_UNUSED_VAR(context); - if (unlikely(!result)) { - if (op->defaults_getter) { - if (unlikely(__Pyx_CyFunction_init_defaults(op) < 0)) return NULL; - result = op->defaults_kwdict; - } else { - result = Py_None; - } - } - Py_INCREF(result); - return result; -} -static int -__Pyx_CyFunction_set_annotations(__pyx_CyFunctionObject *op, PyObject* value, void *context) { - CYTHON_UNUSED_VAR(context); - if (!value || value == Py_None) { - value = NULL; - } else if (unlikely(!PyDict_Check(value))) { - PyErr_SetString(PyExc_TypeError, - "__annotations__ must be set to a dict object"); - return -1; - } - Py_XINCREF(value); - __Pyx_Py_XDECREF_SET(op->func_annotations, value); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_annotations(__pyx_CyFunctionObject *op, void *context) { - PyObject* result = op->func_annotations; - CYTHON_UNUSED_VAR(context); - if (unlikely(!result)) { - result = PyDict_New(); - if (unlikely(!result)) return NULL; - op->func_annotations = result; - } - Py_INCREF(result); - return result; -} -static PyObject * -__Pyx_CyFunction_get_is_coroutine(__pyx_CyFunctionObject *op, void *context) { - int is_coroutine; - CYTHON_UNUSED_VAR(context); - if (op->func_is_coroutine) { - return __Pyx_NewRef(op->func_is_coroutine); - } - is_coroutine = op->flags & __Pyx_CYFUNCTION_COROUTINE; -#if PY_VERSION_HEX >= 0x03050000 - if (is_coroutine) { - PyObject *module, *fromlist, *marker = __pyx_n_s_is_coroutine; - fromlist = PyList_New(1); - if (unlikely(!fromlist)) return NULL; - Py_INCREF(marker); -#if CYTHON_ASSUME_SAFE_MACROS - PyList_SET_ITEM(fromlist, 0, marker); -#else - if (unlikely(PyList_SetItem(fromlist, 0, marker) < 0)) { - Py_DECREF(marker); - Py_DECREF(fromlist); - return NULL; - } -#endif - module = PyImport_ImportModuleLevelObject(__pyx_n_s_asyncio_coroutines, NULL, NULL, fromlist, 0); - Py_DECREF(fromlist); - if (unlikely(!module)) goto ignore; - op->func_is_coroutine = __Pyx_PyObject_GetAttrStr(module, marker); - Py_DECREF(module); - if (likely(op->func_is_coroutine)) { - return __Pyx_NewRef(op->func_is_coroutine); - } -ignore: - PyErr_Clear(); - } -#endif - op->func_is_coroutine = __Pyx_PyBool_FromLong(is_coroutine); - return __Pyx_NewRef(op->func_is_coroutine); -} -#if CYTHON_COMPILING_IN_LIMITED_API -static PyObject * -__Pyx_CyFunction_get_module(__pyx_CyFunctionObject *op, void *context) { - CYTHON_UNUSED_VAR(context); - return PyObject_GetAttrString(op->func, "__module__"); -} -static int -__Pyx_CyFunction_set_module(__pyx_CyFunctionObject *op, PyObject* value, void *context) { - CYTHON_UNUSED_VAR(context); - return PyObject_SetAttrString(op->func, "__module__", value); -} -#endif -static PyGetSetDef __pyx_CyFunction_getsets[] = { - {(char *) "func_doc", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0}, - {(char *) "__doc__", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0}, - {(char *) "func_name", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0}, - {(char *) "__name__", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0}, - {(char *) "__qualname__", (getter)__Pyx_CyFunction_get_qualname, (setter)__Pyx_CyFunction_set_qualname, 0, 0}, - {(char *) "func_dict", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0}, - {(char *) "__dict__", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0}, - {(char *) "func_globals", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0}, - {(char *) "__globals__", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0}, - {(char *) "func_closure", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0}, - {(char *) "__closure__", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0}, - {(char *) "func_code", (getter)__Pyx_CyFunction_get_code, 0, 0, 0}, - {(char *) "__code__", (getter)__Pyx_CyFunction_get_code, 0, 0, 0}, - {(char *) "func_defaults", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0}, - {(char *) "__defaults__", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0}, - {(char *) "__kwdefaults__", (getter)__Pyx_CyFunction_get_kwdefaults, (setter)__Pyx_CyFunction_set_kwdefaults, 0, 0}, - {(char *) "__annotations__", (getter)__Pyx_CyFunction_get_annotations, (setter)__Pyx_CyFunction_set_annotations, 0, 0}, - {(char *) "_is_coroutine", (getter)__Pyx_CyFunction_get_is_coroutine, 0, 0, 0}, -#if CYTHON_COMPILING_IN_LIMITED_API - {"__module__", (getter)__Pyx_CyFunction_get_module, (setter)__Pyx_CyFunction_set_module, 0, 0}, -#endif - {0, 0, 0, 0, 0} -}; -static PyMemberDef __pyx_CyFunction_members[] = { -#if !CYTHON_COMPILING_IN_LIMITED_API - {(char *) "__module__", T_OBJECT, offsetof(PyCFunctionObject, m_module), 0, 0}, -#endif -#if CYTHON_USE_TYPE_SPECS - {(char *) "__dictoffset__", T_PYSSIZET, offsetof(__pyx_CyFunctionObject, func_dict), READONLY, 0}, -#if CYTHON_METH_FASTCALL -#if CYTHON_BACKPORT_VECTORCALL - {(char *) "__vectorcalloffset__", T_PYSSIZET, offsetof(__pyx_CyFunctionObject, func_vectorcall), READONLY, 0}, -#else -#if !CYTHON_COMPILING_IN_LIMITED_API - {(char *) "__vectorcalloffset__", T_PYSSIZET, offsetof(PyCFunctionObject, vectorcall), READONLY, 0}, -#endif -#endif -#endif -#if PY_VERSION_HEX < 0x030500A0 || CYTHON_COMPILING_IN_LIMITED_API - {(char *) "__weaklistoffset__", T_PYSSIZET, offsetof(__pyx_CyFunctionObject, func_weakreflist), READONLY, 0}, -#else - {(char *) "__weaklistoffset__", T_PYSSIZET, offsetof(PyCFunctionObject, m_weakreflist), READONLY, 0}, -#endif -#endif - {0, 0, 0, 0, 0} -}; -static PyObject * -__Pyx_CyFunction_reduce(__pyx_CyFunctionObject *m, PyObject *args) -{ - CYTHON_UNUSED_VAR(args); -#if PY_MAJOR_VERSION >= 3 - Py_INCREF(m->func_qualname); - return m->func_qualname; -#else - return PyString_FromString(((PyCFunctionObject*)m)->m_ml->ml_name); -#endif -} -static PyMethodDef __pyx_CyFunction_methods[] = { - {"__reduce__", (PyCFunction)__Pyx_CyFunction_reduce, METH_VARARGS, 0}, - {0, 0, 0, 0} -}; -#if PY_VERSION_HEX < 0x030500A0 || CYTHON_COMPILING_IN_LIMITED_API -#define __Pyx_CyFunction_weakreflist(cyfunc) ((cyfunc)->func_weakreflist) -#else -#define __Pyx_CyFunction_weakreflist(cyfunc) (((PyCFunctionObject*)cyfunc)->m_weakreflist) -#endif -static PyObject *__Pyx_CyFunction_Init(__pyx_CyFunctionObject *op, PyMethodDef *ml, int flags, PyObject* qualname, - PyObject *closure, PyObject *module, PyObject* globals, PyObject* code) { -#if !CYTHON_COMPILING_IN_LIMITED_API - PyCFunctionObject *cf = (PyCFunctionObject*) op; -#endif - if (unlikely(op == NULL)) - return NULL; -#if CYTHON_COMPILING_IN_LIMITED_API - op->func = PyCFunction_NewEx(ml, (PyObject*)op, module); - if (unlikely(!op->func)) return NULL; -#endif - op->flags = flags; - __Pyx_CyFunction_weakreflist(op) = NULL; -#if !CYTHON_COMPILING_IN_LIMITED_API - cf->m_ml = ml; - cf->m_self = (PyObject *) op; -#endif - Py_XINCREF(closure); - op->func_closure = closure; -#if !CYTHON_COMPILING_IN_LIMITED_API - Py_XINCREF(module); - cf->m_module = module; -#endif - op->func_dict = NULL; - op->func_name = NULL; - Py_INCREF(qualname); - op->func_qualname = qualname; - op->func_doc = NULL; -#if PY_VERSION_HEX < 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API - op->func_classobj = NULL; -#else - ((PyCMethodObject*)op)->mm_class = NULL; -#endif - op->func_globals = globals; - Py_INCREF(op->func_globals); - Py_XINCREF(code); - op->func_code = code; - op->defaults_pyobjects = 0; - op->defaults_size = 0; - op->defaults = NULL; - op->defaults_tuple = NULL; - op->defaults_kwdict = NULL; - op->defaults_getter = NULL; - op->func_annotations = NULL; - op->func_is_coroutine = NULL; -#if CYTHON_METH_FASTCALL - switch (ml->ml_flags & (METH_VARARGS | METH_FASTCALL | METH_NOARGS | METH_O | METH_KEYWORDS | METH_METHOD)) { - case METH_NOARGS: - __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_NOARGS; - break; - case METH_O: - __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_O; - break; - case METH_METHOD | METH_FASTCALL | METH_KEYWORDS: - __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS_METHOD; - break; - case METH_FASTCALL | METH_KEYWORDS: - __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS; - break; - case METH_VARARGS | METH_KEYWORDS: - __Pyx_CyFunction_func_vectorcall(op) = NULL; - break; - default: - PyErr_SetString(PyExc_SystemError, "Bad call flags for CyFunction"); - Py_DECREF(op); - return NULL; - } -#endif - return (PyObject *) op; -} -static int -__Pyx_CyFunction_clear(__pyx_CyFunctionObject *m) -{ - Py_CLEAR(m->func_closure); -#if CYTHON_COMPILING_IN_LIMITED_API - Py_CLEAR(m->func); -#else - Py_CLEAR(((PyCFunctionObject*)m)->m_module); -#endif - Py_CLEAR(m->func_dict); - Py_CLEAR(m->func_name); - Py_CLEAR(m->func_qualname); - Py_CLEAR(m->func_doc); - Py_CLEAR(m->func_globals); - Py_CLEAR(m->func_code); -#if !CYTHON_COMPILING_IN_LIMITED_API -#if PY_VERSION_HEX < 0x030900B1 - Py_CLEAR(__Pyx_CyFunction_GetClassObj(m)); -#else - { - PyObject *cls = (PyObject*) ((PyCMethodObject *) (m))->mm_class; - ((PyCMethodObject *) (m))->mm_class = NULL; - Py_XDECREF(cls); - } -#endif -#endif - Py_CLEAR(m->defaults_tuple); - Py_CLEAR(m->defaults_kwdict); - Py_CLEAR(m->func_annotations); - Py_CLEAR(m->func_is_coroutine); - if (m->defaults) { - PyObject **pydefaults = __Pyx_CyFunction_Defaults(PyObject *, m); - int i; - for (i = 0; i < m->defaults_pyobjects; i++) - Py_XDECREF(pydefaults[i]); - PyObject_Free(m->defaults); - m->defaults = NULL; - } - return 0; -} -static void __Pyx__CyFunction_dealloc(__pyx_CyFunctionObject *m) -{ - if (__Pyx_CyFunction_weakreflist(m) != NULL) - PyObject_ClearWeakRefs((PyObject *) m); - __Pyx_CyFunction_clear(m); - __Pyx_PyHeapTypeObject_GC_Del(m); -} -static void __Pyx_CyFunction_dealloc(__pyx_CyFunctionObject *m) -{ - PyObject_GC_UnTrack(m); - __Pyx__CyFunction_dealloc(m); -} -static int __Pyx_CyFunction_traverse(__pyx_CyFunctionObject *m, visitproc visit, void *arg) -{ - Py_VISIT(m->func_closure); -#if CYTHON_COMPILING_IN_LIMITED_API - Py_VISIT(m->func); -#else - Py_VISIT(((PyCFunctionObject*)m)->m_module); -#endif - Py_VISIT(m->func_dict); - Py_VISIT(m->func_name); - Py_VISIT(m->func_qualname); - Py_VISIT(m->func_doc); - Py_VISIT(m->func_globals); - Py_VISIT(m->func_code); -#if !CYTHON_COMPILING_IN_LIMITED_API - Py_VISIT(__Pyx_CyFunction_GetClassObj(m)); -#endif - Py_VISIT(m->defaults_tuple); - Py_VISIT(m->defaults_kwdict); - Py_VISIT(m->func_is_coroutine); - if (m->defaults) { - PyObject **pydefaults = __Pyx_CyFunction_Defaults(PyObject *, m); - int i; - for (i = 0; i < m->defaults_pyobjects; i++) - Py_VISIT(pydefaults[i]); - } - return 0; -} -static PyObject* -__Pyx_CyFunction_repr(__pyx_CyFunctionObject *op) -{ -#if PY_MAJOR_VERSION >= 3 - return PyUnicode_FromFormat("", - op->func_qualname, (void *)op); -#else - return PyString_FromFormat("", - PyString_AsString(op->func_qualname), (void *)op); -#endif -} -static PyObject * __Pyx_CyFunction_CallMethod(PyObject *func, PyObject *self, PyObject *arg, PyObject *kw) { -#if CYTHON_COMPILING_IN_LIMITED_API - PyObject *f = ((__pyx_CyFunctionObject*)func)->func; - PyObject *py_name = NULL; - PyCFunction meth; - int flags; - meth = PyCFunction_GetFunction(f); - if (unlikely(!meth)) return NULL; - flags = PyCFunction_GetFlags(f); - if (unlikely(flags < 0)) return NULL; -#else - PyCFunctionObject* f = (PyCFunctionObject*)func; - PyCFunction meth = f->m_ml->ml_meth; - int flags = f->m_ml->ml_flags; -#endif - Py_ssize_t size; - switch (flags & (METH_VARARGS | METH_KEYWORDS | METH_NOARGS | METH_O)) { - case METH_VARARGS: - if (likely(kw == NULL || PyDict_Size(kw) == 0)) - return (*meth)(self, arg); - break; - case METH_VARARGS | METH_KEYWORDS: - return (*(PyCFunctionWithKeywords)(void*)meth)(self, arg, kw); - case METH_NOARGS: - if (likely(kw == NULL || PyDict_Size(kw) == 0)) { -#if CYTHON_ASSUME_SAFE_MACROS - size = PyTuple_GET_SIZE(arg); -#else - size = PyTuple_Size(arg); - if (unlikely(size < 0)) return NULL; -#endif - if (likely(size == 0)) - return (*meth)(self, NULL); -#if CYTHON_COMPILING_IN_LIMITED_API - py_name = __Pyx_CyFunction_get_name((__pyx_CyFunctionObject*)func, NULL); - if (!py_name) return NULL; - PyErr_Format(PyExc_TypeError, - "%.200S() takes no arguments (%" CYTHON_FORMAT_SSIZE_T "d given)", - py_name, size); - Py_DECREF(py_name); -#else - PyErr_Format(PyExc_TypeError, - "%.200s() takes no arguments (%" CYTHON_FORMAT_SSIZE_T "d given)", - f->m_ml->ml_name, size); -#endif - return NULL; - } - break; - case METH_O: - if (likely(kw == NULL || PyDict_Size(kw) == 0)) { -#if CYTHON_ASSUME_SAFE_MACROS - size = PyTuple_GET_SIZE(arg); -#else - size = PyTuple_Size(arg); - if (unlikely(size < 0)) return NULL; -#endif - if (likely(size == 1)) { - PyObject *result, *arg0; - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - arg0 = PyTuple_GET_ITEM(arg, 0); - #else - arg0 = __Pyx_PySequence_ITEM(arg, 0); if (unlikely(!arg0)) return NULL; - #endif - result = (*meth)(self, arg0); - #if !(CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS) - Py_DECREF(arg0); - #endif - return result; - } -#if CYTHON_COMPILING_IN_LIMITED_API - py_name = __Pyx_CyFunction_get_name((__pyx_CyFunctionObject*)func, NULL); - if (!py_name) return NULL; - PyErr_Format(PyExc_TypeError, - "%.200S() takes exactly one argument (%" CYTHON_FORMAT_SSIZE_T "d given)", - py_name, size); - Py_DECREF(py_name); -#else - PyErr_Format(PyExc_TypeError, - "%.200s() takes exactly one argument (%" CYTHON_FORMAT_SSIZE_T "d given)", - f->m_ml->ml_name, size); -#endif - return NULL; - } - break; - default: - PyErr_SetString(PyExc_SystemError, "Bad call flags for CyFunction"); - return NULL; - } -#if CYTHON_COMPILING_IN_LIMITED_API - py_name = __Pyx_CyFunction_get_name((__pyx_CyFunctionObject*)func, NULL); - if (!py_name) return NULL; - PyErr_Format(PyExc_TypeError, "%.200S() takes no keyword arguments", - py_name); - Py_DECREF(py_name); -#else - PyErr_Format(PyExc_TypeError, "%.200s() takes no keyword arguments", - f->m_ml->ml_name); -#endif - return NULL; -} -static CYTHON_INLINE PyObject *__Pyx_CyFunction_Call(PyObject *func, PyObject *arg, PyObject *kw) { - PyObject *self, *result; -#if CYTHON_COMPILING_IN_LIMITED_API - self = PyCFunction_GetSelf(((__pyx_CyFunctionObject*)func)->func); - if (unlikely(!self) && PyErr_Occurred()) return NULL; -#else - self = ((PyCFunctionObject*)func)->m_self; -#endif - result = __Pyx_CyFunction_CallMethod(func, self, arg, kw); - return result; -} -static PyObject *__Pyx_CyFunction_CallAsMethod(PyObject *func, PyObject *args, PyObject *kw) { - PyObject *result; - __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *) func; -#if CYTHON_METH_FASTCALL - __pyx_vectorcallfunc vc = __Pyx_CyFunction_func_vectorcall(cyfunc); - if (vc) { -#if CYTHON_ASSUME_SAFE_MACROS - return __Pyx_PyVectorcall_FastCallDict(func, vc, &PyTuple_GET_ITEM(args, 0), (size_t)PyTuple_GET_SIZE(args), kw); -#else - (void) &__Pyx_PyVectorcall_FastCallDict; - return PyVectorcall_Call(func, args, kw); -#endif - } -#endif - if ((cyfunc->flags & __Pyx_CYFUNCTION_CCLASS) && !(cyfunc->flags & __Pyx_CYFUNCTION_STATICMETHOD)) { - Py_ssize_t argc; - PyObject *new_args; - PyObject *self; -#if CYTHON_ASSUME_SAFE_MACROS - argc = PyTuple_GET_SIZE(args); -#else - argc = PyTuple_Size(args); - if (unlikely(!argc) < 0) return NULL; -#endif - new_args = PyTuple_GetSlice(args, 1, argc); - if (unlikely(!new_args)) - return NULL; - self = PyTuple_GetItem(args, 0); - if (unlikely(!self)) { - Py_DECREF(new_args); -#if PY_MAJOR_VERSION > 2 - PyErr_Format(PyExc_TypeError, - "unbound method %.200S() needs an argument", - cyfunc->func_qualname); -#else - PyErr_SetString(PyExc_TypeError, - "unbound method needs an argument"); -#endif - return NULL; - } - result = __Pyx_CyFunction_CallMethod(func, self, new_args, kw); - Py_DECREF(new_args); - } else { - result = __Pyx_CyFunction_Call(func, args, kw); - } - return result; -} -#if CYTHON_METH_FASTCALL -static CYTHON_INLINE int __Pyx_CyFunction_Vectorcall_CheckArgs(__pyx_CyFunctionObject *cyfunc, Py_ssize_t nargs, PyObject *kwnames) -{ - int ret = 0; - if ((cyfunc->flags & __Pyx_CYFUNCTION_CCLASS) && !(cyfunc->flags & __Pyx_CYFUNCTION_STATICMETHOD)) { - if (unlikely(nargs < 1)) { - PyErr_Format(PyExc_TypeError, "%.200s() needs an argument", - ((PyCFunctionObject*)cyfunc)->m_ml->ml_name); - return -1; - } - ret = 1; - } - if (unlikely(kwnames) && unlikely(PyTuple_GET_SIZE(kwnames))) { - PyErr_Format(PyExc_TypeError, - "%.200s() takes no keyword arguments", ((PyCFunctionObject*)cyfunc)->m_ml->ml_name); - return -1; - } - return ret; -} -static PyObject * __Pyx_CyFunction_Vectorcall_NOARGS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames) -{ - __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func; - PyMethodDef* def = ((PyCFunctionObject*)cyfunc)->m_ml; -#if CYTHON_BACKPORT_VECTORCALL - Py_ssize_t nargs = (Py_ssize_t)nargsf; -#else - Py_ssize_t nargs = PyVectorcall_NARGS(nargsf); -#endif - PyObject *self; - switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, kwnames)) { - case 1: - self = args[0]; - args += 1; - nargs -= 1; - break; - case 0: - self = ((PyCFunctionObject*)cyfunc)->m_self; - break; - default: - return NULL; - } - if (unlikely(nargs != 0)) { - PyErr_Format(PyExc_TypeError, - "%.200s() takes no arguments (%" CYTHON_FORMAT_SSIZE_T "d given)", - def->ml_name, nargs); - return NULL; - } - return def->ml_meth(self, NULL); -} -static PyObject * __Pyx_CyFunction_Vectorcall_O(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames) -{ - __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func; - PyMethodDef* def = ((PyCFunctionObject*)cyfunc)->m_ml; -#if CYTHON_BACKPORT_VECTORCALL - Py_ssize_t nargs = (Py_ssize_t)nargsf; -#else - Py_ssize_t nargs = PyVectorcall_NARGS(nargsf); -#endif - PyObject *self; - switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, kwnames)) { - case 1: - self = args[0]; - args += 1; - nargs -= 1; - break; - case 0: - self = ((PyCFunctionObject*)cyfunc)->m_self; - break; - default: - return NULL; - } - if (unlikely(nargs != 1)) { - PyErr_Format(PyExc_TypeError, - "%.200s() takes exactly one argument (%" CYTHON_FORMAT_SSIZE_T "d given)", - def->ml_name, nargs); - return NULL; - } - return def->ml_meth(self, args[0]); -} -static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames) -{ - __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func; - PyMethodDef* def = ((PyCFunctionObject*)cyfunc)->m_ml; -#if CYTHON_BACKPORT_VECTORCALL - Py_ssize_t nargs = (Py_ssize_t)nargsf; -#else - Py_ssize_t nargs = PyVectorcall_NARGS(nargsf); -#endif - PyObject *self; - switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, NULL)) { - case 1: - self = args[0]; - args += 1; - nargs -= 1; - break; - case 0: - self = ((PyCFunctionObject*)cyfunc)->m_self; - break; - default: - return NULL; - } - return ((_PyCFunctionFastWithKeywords)(void(*)(void))def->ml_meth)(self, args, nargs, kwnames); -} -static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS_METHOD(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames) -{ - __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func; - PyMethodDef* def = ((PyCFunctionObject*)cyfunc)->m_ml; - PyTypeObject *cls = (PyTypeObject *) __Pyx_CyFunction_GetClassObj(cyfunc); -#if CYTHON_BACKPORT_VECTORCALL - Py_ssize_t nargs = (Py_ssize_t)nargsf; -#else - Py_ssize_t nargs = PyVectorcall_NARGS(nargsf); -#endif - PyObject *self; - switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, NULL)) { - case 1: - self = args[0]; - args += 1; - nargs -= 1; - break; - case 0: - self = ((PyCFunctionObject*)cyfunc)->m_self; - break; - default: - return NULL; - } - return ((__Pyx_PyCMethod)(void(*)(void))def->ml_meth)(self, cls, args, (size_t)nargs, kwnames); -} -#endif -#if CYTHON_USE_TYPE_SPECS -static PyType_Slot __pyx_CyFunctionType_slots[] = { - {Py_tp_dealloc, (void *)__Pyx_CyFunction_dealloc}, - {Py_tp_repr, (void *)__Pyx_CyFunction_repr}, - {Py_tp_call, (void *)__Pyx_CyFunction_CallAsMethod}, - {Py_tp_traverse, (void *)__Pyx_CyFunction_traverse}, - {Py_tp_clear, (void *)__Pyx_CyFunction_clear}, - {Py_tp_methods, (void *)__pyx_CyFunction_methods}, - {Py_tp_members, (void *)__pyx_CyFunction_members}, - {Py_tp_getset, (void *)__pyx_CyFunction_getsets}, - {Py_tp_descr_get, (void *)__Pyx_PyMethod_New}, - {0, 0}, -}; -static PyType_Spec __pyx_CyFunctionType_spec = { - __PYX_TYPE_MODULE_PREFIX "cython_function_or_method", - sizeof(__pyx_CyFunctionObject), - 0, -#ifdef Py_TPFLAGS_METHOD_DESCRIPTOR - Py_TPFLAGS_METHOD_DESCRIPTOR | -#endif -#if (defined(_Py_TPFLAGS_HAVE_VECTORCALL) && CYTHON_METH_FASTCALL) - _Py_TPFLAGS_HAVE_VECTORCALL | -#endif - Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_BASETYPE, - __pyx_CyFunctionType_slots -}; -#else -static PyTypeObject __pyx_CyFunctionType_type = { - PyVarObject_HEAD_INIT(0, 0) - __PYX_TYPE_MODULE_PREFIX "cython_function_or_method", - sizeof(__pyx_CyFunctionObject), - 0, - (destructor) __Pyx_CyFunction_dealloc, -#if !CYTHON_METH_FASTCALL - 0, -#elif CYTHON_BACKPORT_VECTORCALL - (printfunc)offsetof(__pyx_CyFunctionObject, func_vectorcall), -#else - offsetof(PyCFunctionObject, vectorcall), -#endif - 0, - 0, -#if PY_MAJOR_VERSION < 3 - 0, -#else - 0, -#endif - (reprfunc) __Pyx_CyFunction_repr, - 0, - 0, - 0, - 0, - __Pyx_CyFunction_CallAsMethod, - 0, - 0, - 0, - 0, -#ifdef Py_TPFLAGS_METHOD_DESCRIPTOR - Py_TPFLAGS_METHOD_DESCRIPTOR | -#endif -#if defined(_Py_TPFLAGS_HAVE_VECTORCALL) && CYTHON_METH_FASTCALL - _Py_TPFLAGS_HAVE_VECTORCALL | -#endif - Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_BASETYPE, - 0, - (traverseproc) __Pyx_CyFunction_traverse, - (inquiry) __Pyx_CyFunction_clear, - 0, -#if PY_VERSION_HEX < 0x030500A0 - offsetof(__pyx_CyFunctionObject, func_weakreflist), -#else - offsetof(PyCFunctionObject, m_weakreflist), -#endif - 0, - 0, - __pyx_CyFunction_methods, - __pyx_CyFunction_members, - __pyx_CyFunction_getsets, - 0, - 0, - __Pyx_PyMethod_New, - 0, - offsetof(__pyx_CyFunctionObject, func_dict), - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, -#if PY_VERSION_HEX >= 0x030400a1 - 0, -#endif -#if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) - 0, -#endif -#if __PYX_NEED_TP_PRINT_SLOT - 0, -#endif -#if PY_VERSION_HEX >= 0x030C0000 - 0, -#endif -#if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 - 0, -#endif -}; -#endif -static int __pyx_CyFunction_init(PyObject *module) { -#if CYTHON_USE_TYPE_SPECS - __pyx_CyFunctionType = __Pyx_FetchCommonTypeFromSpec(module, &__pyx_CyFunctionType_spec, NULL); -#else - CYTHON_UNUSED_VAR(module); - __pyx_CyFunctionType = __Pyx_FetchCommonType(&__pyx_CyFunctionType_type); -#endif - if (unlikely(__pyx_CyFunctionType == NULL)) { - return -1; - } - return 0; -} -static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *func, size_t size, int pyobjects) { - __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; - m->defaults = PyObject_Malloc(size); - if (unlikely(!m->defaults)) - return PyErr_NoMemory(); - memset(m->defaults, 0, size); - m->defaults_pyobjects = pyobjects; - m->defaults_size = size; - return m->defaults; -} -static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *func, PyObject *tuple) { - __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; - m->defaults_tuple = tuple; - Py_INCREF(tuple); -} -static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *func, PyObject *dict) { - __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; - m->defaults_kwdict = dict; - Py_INCREF(dict); -} -static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *func, PyObject *dict) { - __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; - m->func_annotations = dict; - Py_INCREF(dict); -} - -/* CythonFunction */ -static PyObject *__Pyx_CyFunction_New(PyMethodDef *ml, int flags, PyObject* qualname, - PyObject *closure, PyObject *module, PyObject* globals, PyObject* code) { - PyObject *op = __Pyx_CyFunction_Init( - PyObject_GC_New(__pyx_CyFunctionObject, __pyx_CyFunctionType), - ml, flags, qualname, closure, module, globals, code - ); - if (likely(op)) { - PyObject_GC_Track(op); - } - return op; -} - -/* CLineInTraceback */ -#ifndef CYTHON_CLINE_IN_TRACEBACK -static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line) { - PyObject *use_cline; - PyObject *ptype, *pvalue, *ptraceback; -#if CYTHON_COMPILING_IN_CPYTHON - PyObject **cython_runtime_dict; -#endif - CYTHON_MAYBE_UNUSED_VAR(tstate); - if (unlikely(!__pyx_cython_runtime)) { - return c_line; - } - __Pyx_ErrFetchInState(tstate, &ptype, &pvalue, &ptraceback); -#if CYTHON_COMPILING_IN_CPYTHON - cython_runtime_dict = _PyObject_GetDictPtr(__pyx_cython_runtime); - if (likely(cython_runtime_dict)) { - __PYX_PY_DICT_LOOKUP_IF_MODIFIED( - use_cline, *cython_runtime_dict, - __Pyx_PyDict_GetItemStr(*cython_runtime_dict, __pyx_n_s_cline_in_traceback)) - } else -#endif - { - PyObject *use_cline_obj = __Pyx_PyObject_GetAttrStrNoError(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback); - if (use_cline_obj) { - use_cline = PyObject_Not(use_cline_obj) ? Py_False : Py_True; - Py_DECREF(use_cline_obj); - } else { - PyErr_Clear(); - use_cline = NULL; - } - } - if (!use_cline) { - c_line = 0; - (void) PyObject_SetAttr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback, Py_False); - } - else if (use_cline == Py_False || (use_cline != Py_True && PyObject_Not(use_cline) != 0)) { - c_line = 0; - } - __Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback); - return c_line; -} -#endif - -/* CodeObjectCache */ -#if !CYTHON_COMPILING_IN_LIMITED_API -static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) { - int start = 0, mid = 0, end = count - 1; - if (end >= 0 && code_line > entries[end].code_line) { - return count; - } - while (start < end) { - mid = start + (end - start) / 2; - if (code_line < entries[mid].code_line) { - end = mid; - } else if (code_line > entries[mid].code_line) { - start = mid + 1; - } else { - return mid; - } - } - if (code_line <= entries[mid].code_line) { - return mid; - } else { - return mid + 1; - } -} -static PyCodeObject *__pyx_find_code_object(int code_line) { - PyCodeObject* code_object; - int pos; - if (unlikely(!code_line) || unlikely(!__pyx_code_cache.entries)) { - return NULL; - } - pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line); - if (unlikely(pos >= __pyx_code_cache.count) || unlikely(__pyx_code_cache.entries[pos].code_line != code_line)) { - return NULL; - } - code_object = __pyx_code_cache.entries[pos].code_object; - Py_INCREF(code_object); - return code_object; -} -static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) { - int pos, i; - __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries; - if (unlikely(!code_line)) { - return; - } - if (unlikely(!entries)) { - entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry)); - if (likely(entries)) { - __pyx_code_cache.entries = entries; - __pyx_code_cache.max_count = 64; - __pyx_code_cache.count = 1; - entries[0].code_line = code_line; - entries[0].code_object = code_object; - Py_INCREF(code_object); - } - return; - } - pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line); - if ((pos < __pyx_code_cache.count) && unlikely(__pyx_code_cache.entries[pos].code_line == code_line)) { - PyCodeObject* tmp = entries[pos].code_object; - entries[pos].code_object = code_object; - Py_DECREF(tmp); - return; - } - if (__pyx_code_cache.count == __pyx_code_cache.max_count) { - int new_max = __pyx_code_cache.max_count + 64; - entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc( - __pyx_code_cache.entries, ((size_t)new_max) * sizeof(__Pyx_CodeObjectCacheEntry)); - if (unlikely(!entries)) { - return; - } - __pyx_code_cache.entries = entries; - __pyx_code_cache.max_count = new_max; - } - for (i=__pyx_code_cache.count; i>pos; i--) { - entries[i] = entries[i-1]; - } - entries[pos].code_line = code_line; - entries[pos].code_object = code_object; - __pyx_code_cache.count++; - Py_INCREF(code_object); -} -#endif - -/* AddTraceback */ -#include "compile.h" -#include "frameobject.h" -#include "traceback.h" -#if PY_VERSION_HEX >= 0x030b00a6 && !CYTHON_COMPILING_IN_LIMITED_API - #ifndef Py_BUILD_CORE - #define Py_BUILD_CORE 1 - #endif - #include "internal/pycore_frame.h" -#endif -#if CYTHON_COMPILING_IN_LIMITED_API -static PyObject *__Pyx_PyCode_Replace_For_AddTraceback(PyObject *code, PyObject *scratch_dict, - PyObject *firstlineno, PyObject *name) { - PyObject *replace = NULL; - if (unlikely(PyDict_SetItemString(scratch_dict, "co_firstlineno", firstlineno))) return NULL; - if (unlikely(PyDict_SetItemString(scratch_dict, "co_name", name))) return NULL; - replace = PyObject_GetAttrString(code, "replace"); - if (likely(replace)) { - PyObject *result; - result = PyObject_Call(replace, __pyx_empty_tuple, scratch_dict); - Py_DECREF(replace); - return result; - } - PyErr_Clear(); - #if __PYX_LIMITED_VERSION_HEX < 0x030780000 - { - PyObject *compiled = NULL, *result = NULL; - if (unlikely(PyDict_SetItemString(scratch_dict, "code", code))) return NULL; - if (unlikely(PyDict_SetItemString(scratch_dict, "type", (PyObject*)(&PyType_Type)))) return NULL; - compiled = Py_CompileString( - "out = type(code)(\n" - " code.co_argcount, code.co_kwonlyargcount, code.co_nlocals, code.co_stacksize,\n" - " code.co_flags, code.co_code, code.co_consts, code.co_names,\n" - " code.co_varnames, code.co_filename, co_name, co_firstlineno,\n" - " code.co_lnotab)\n", "", Py_file_input); - if (!compiled) return NULL; - result = PyEval_EvalCode(compiled, scratch_dict, scratch_dict); - Py_DECREF(compiled); - if (!result) PyErr_Print(); - Py_DECREF(result); - result = PyDict_GetItemString(scratch_dict, "out"); - if (result) Py_INCREF(result); - return result; - } - #else - return NULL; - #endif -} -static void __Pyx_AddTraceback(const char *funcname, int c_line, - int py_line, const char *filename) { - PyObject *code_object = NULL, *py_py_line = NULL, *py_funcname = NULL, *dict = NULL; - PyObject *replace = NULL, *getframe = NULL, *frame = NULL; - PyObject *exc_type, *exc_value, *exc_traceback; - int success = 0; - if (c_line) { - (void) __pyx_cfilenm; - (void) __Pyx_CLineForTraceback(__Pyx_PyThreadState_Current, c_line); - } - PyErr_Fetch(&exc_type, &exc_value, &exc_traceback); - code_object = Py_CompileString("_getframe()", filename, Py_eval_input); - if (unlikely(!code_object)) goto bad; - py_py_line = PyLong_FromLong(py_line); - if (unlikely(!py_py_line)) goto bad; - py_funcname = PyUnicode_FromString(funcname); - if (unlikely(!py_funcname)) goto bad; - dict = PyDict_New(); - if (unlikely(!dict)) goto bad; - { - PyObject *old_code_object = code_object; - code_object = __Pyx_PyCode_Replace_For_AddTraceback(code_object, dict, py_py_line, py_funcname); - Py_DECREF(old_code_object); - } - if (unlikely(!code_object)) goto bad; - getframe = PySys_GetObject("_getframe"); - if (unlikely(!getframe)) goto bad; - if (unlikely(PyDict_SetItemString(dict, "_getframe", getframe))) goto bad; - frame = PyEval_EvalCode(code_object, dict, dict); - if (unlikely(!frame) || frame == Py_None) goto bad; - success = 1; - bad: - PyErr_Restore(exc_type, exc_value, exc_traceback); - Py_XDECREF(code_object); - Py_XDECREF(py_py_line); - Py_XDECREF(py_funcname); - Py_XDECREF(dict); - Py_XDECREF(replace); - if (success) { - PyTraceBack_Here( - (struct _frame*)frame); - } - Py_XDECREF(frame); -} -#else -static PyCodeObject* __Pyx_CreateCodeObjectForTraceback( - const char *funcname, int c_line, - int py_line, const char *filename) { - PyCodeObject *py_code = NULL; - PyObject *py_funcname = NULL; - #if PY_MAJOR_VERSION < 3 - PyObject *py_srcfile = NULL; - py_srcfile = PyString_FromString(filename); - if (!py_srcfile) goto bad; - #endif - if (c_line) { - #if PY_MAJOR_VERSION < 3 - py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); - if (!py_funcname) goto bad; - #else - py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); - if (!py_funcname) goto bad; - funcname = PyUnicode_AsUTF8(py_funcname); - if (!funcname) goto bad; - #endif - } - else { - #if PY_MAJOR_VERSION < 3 - py_funcname = PyString_FromString(funcname); - if (!py_funcname) goto bad; - #endif - } - #if PY_MAJOR_VERSION < 3 - py_code = __Pyx_PyCode_New( - 0, - 0, - 0, - 0, - 0, - 0, - __pyx_empty_bytes, /*PyObject *code,*/ - __pyx_empty_tuple, /*PyObject *consts,*/ - __pyx_empty_tuple, /*PyObject *names,*/ - __pyx_empty_tuple, /*PyObject *varnames,*/ - __pyx_empty_tuple, /*PyObject *freevars,*/ - __pyx_empty_tuple, /*PyObject *cellvars,*/ - py_srcfile, /*PyObject *filename,*/ - py_funcname, /*PyObject *name,*/ - py_line, - __pyx_empty_bytes /*PyObject *lnotab*/ - ); - Py_DECREF(py_srcfile); - #else - py_code = PyCode_NewEmpty(filename, funcname, py_line); - #endif - Py_XDECREF(py_funcname); - return py_code; -bad: - Py_XDECREF(py_funcname); - #if PY_MAJOR_VERSION < 3 - Py_XDECREF(py_srcfile); - #endif - return NULL; -} -static void __Pyx_AddTraceback(const char *funcname, int c_line, - int py_line, const char *filename) { - PyCodeObject *py_code = 0; - PyFrameObject *py_frame = 0; - PyThreadState *tstate = __Pyx_PyThreadState_Current; - PyObject *ptype, *pvalue, *ptraceback; - if (c_line) { - c_line = __Pyx_CLineForTraceback(tstate, c_line); - } - py_code = __pyx_find_code_object(c_line ? -c_line : py_line); - if (!py_code) { - __Pyx_ErrFetchInState(tstate, &ptype, &pvalue, &ptraceback); - py_code = __Pyx_CreateCodeObjectForTraceback( - funcname, c_line, py_line, filename); - if (!py_code) { - /* If the code object creation fails, then we should clear the - fetched exception references and propagate the new exception */ - Py_XDECREF(ptype); - Py_XDECREF(pvalue); - Py_XDECREF(ptraceback); - goto bad; - } - __Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback); - __pyx_insert_code_object(c_line ? -c_line : py_line, py_code); - } - py_frame = PyFrame_New( - tstate, /*PyThreadState *tstate,*/ - py_code, /*PyCodeObject *code,*/ - __pyx_d, /*PyObject *globals,*/ - 0 /*PyObject *locals*/ - ); - if (!py_frame) goto bad; - __Pyx_PyFrame_SetLineNumber(py_frame, py_line); - PyTraceBack_Here(py_frame); -bad: - Py_XDECREF(py_code); - Py_XDECREF(py_frame); -} -#endif - -/* CIntFromPyVerify */ -#define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\ - __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 0) -#define __PYX_VERIFY_RETURN_INT_EXC(target_type, func_type, func_value)\ - __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 1) -#define __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, exc)\ - {\ - func_type value = func_value;\ - if (sizeof(target_type) < sizeof(func_type)) {\ - if (unlikely(value != (func_type) (target_type) value)) {\ - func_type zero = 0;\ - if (exc && unlikely(value == (func_type)-1 && PyErr_Occurred()))\ - return (target_type) -1;\ - if (is_unsigned && unlikely(value < zero))\ - goto raise_neg_overflow;\ - else\ - goto raise_overflow;\ - }\ - }\ - return (target_type) value;\ - } - -/* CIntFromPy */ -static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) { -#ifdef __Pyx_HAS_GCC_DIAGNOSTIC -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wconversion" -#endif - const long neg_one = (long) -1, const_zero = (long) 0; -#ifdef __Pyx_HAS_GCC_DIAGNOSTIC -#pragma GCC diagnostic pop -#endif - const int is_unsigned = neg_one > const_zero; -#if PY_MAJOR_VERSION < 3 - if (likely(PyInt_Check(x))) { - if ((sizeof(long) < sizeof(long))) { - __PYX_VERIFY_RETURN_INT(long, long, PyInt_AS_LONG(x)) - } else { - long val = PyInt_AS_LONG(x); - if (is_unsigned && unlikely(val < 0)) { - goto raise_neg_overflow; - } - return (long) val; - } - } else -#endif - if (likely(PyLong_Check(x))) { - if (is_unsigned) { -#if CYTHON_USE_PYLONG_INTERNALS - if (unlikely(__Pyx_PyLong_IsNeg(x))) { - goto raise_neg_overflow; - } else if (__Pyx_PyLong_IsCompact(x)) { - __PYX_VERIFY_RETURN_INT(long, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x)) - } else { - const digit* digits = __Pyx_PyLong_Digits(x); - assert(__Pyx_PyLong_DigitCount(x) > 1); - switch (__Pyx_PyLong_DigitCount(x)) { - case 2: - if ((8 * sizeof(long) > 1 * PyLong_SHIFT)) { - if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if ((8 * sizeof(long) >= 2 * PyLong_SHIFT)) { - return (long) (((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); - } - } - break; - case 3: - if ((8 * sizeof(long) > 2 * PyLong_SHIFT)) { - if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if ((8 * sizeof(long) >= 3 * PyLong_SHIFT)) { - return (long) (((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); - } - } - break; - case 4: - if ((8 * sizeof(long) > 3 * PyLong_SHIFT)) { - if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if ((8 * sizeof(long) >= 4 * PyLong_SHIFT)) { - return (long) (((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); - } - } - break; - } - } -#endif -#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7 - if (unlikely(Py_SIZE(x) < 0)) { - goto raise_neg_overflow; - } -#else - { - int result = PyObject_RichCompareBool(x, Py_False, Py_LT); - if (unlikely(result < 0)) - return (long) -1; - if (unlikely(result == 1)) - goto raise_neg_overflow; - } -#endif - if ((sizeof(long) <= sizeof(unsigned long))) { - __PYX_VERIFY_RETURN_INT_EXC(long, unsigned long, PyLong_AsUnsignedLong(x)) -#ifdef HAVE_LONG_LONG - } else if ((sizeof(long) <= sizeof(unsigned PY_LONG_LONG))) { - __PYX_VERIFY_RETURN_INT_EXC(long, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) -#endif - } - } else { -#if CYTHON_USE_PYLONG_INTERNALS - if (__Pyx_PyLong_IsCompact(x)) { - __PYX_VERIFY_RETURN_INT(long, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x)) - } else { - const digit* digits = __Pyx_PyLong_Digits(x); - assert(__Pyx_PyLong_DigitCount(x) > 1); - switch (__Pyx_PyLong_SignedDigitCount(x)) { - case -2: - if ((8 * sizeof(long) - 1 > 1 * PyLong_SHIFT)) { - if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { - __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if ((8 * sizeof(long) - 1 > 2 * PyLong_SHIFT)) { - return (long) (((long)-1)*(((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case 2: - if ((8 * sizeof(long) > 1 * PyLong_SHIFT)) { - if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if ((8 * sizeof(long) - 1 > 2 * PyLong_SHIFT)) { - return (long) ((((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case -3: - if ((8 * sizeof(long) - 1 > 2 * PyLong_SHIFT)) { - if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { - __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if ((8 * sizeof(long) - 1 > 3 * PyLong_SHIFT)) { - return (long) (((long)-1)*(((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case 3: - if ((8 * sizeof(long) > 2 * PyLong_SHIFT)) { - if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if ((8 * sizeof(long) - 1 > 3 * PyLong_SHIFT)) { - return (long) ((((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case -4: - if ((8 * sizeof(long) - 1 > 3 * PyLong_SHIFT)) { - if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { - __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if ((8 * sizeof(long) - 1 > 4 * PyLong_SHIFT)) { - return (long) (((long)-1)*(((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case 4: - if ((8 * sizeof(long) > 3 * PyLong_SHIFT)) { - if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if ((8 * sizeof(long) - 1 > 4 * PyLong_SHIFT)) { - return (long) ((((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - } - } -#endif - if ((sizeof(long) <= sizeof(long))) { - __PYX_VERIFY_RETURN_INT_EXC(long, long, PyLong_AsLong(x)) -#ifdef HAVE_LONG_LONG - } else if ((sizeof(long) <= sizeof(PY_LONG_LONG))) { - __PYX_VERIFY_RETURN_INT_EXC(long, PY_LONG_LONG, PyLong_AsLongLong(x)) -#endif - } - } - { - long val; - PyObject *v = __Pyx_PyNumber_IntOrLong(x); -#if PY_MAJOR_VERSION < 3 - if (likely(v) && !PyLong_Check(v)) { - PyObject *tmp = v; - v = PyNumber_Long(tmp); - Py_DECREF(tmp); - } -#endif - if (likely(v)) { - int ret = -1; -#if PY_VERSION_HEX < 0x030d0000 && !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray) - int one = 1; int is_little = (int)*(unsigned char *)&one; - unsigned char *bytes = (unsigned char *)&val; - ret = _PyLong_AsByteArray((PyLongObject *)v, - bytes, sizeof(val), - is_little, !is_unsigned); -#else - PyObject *stepval = NULL, *mask = NULL, *shift = NULL; - int bits, remaining_bits, is_negative = 0; - long idigit; - int chunk_size = (sizeof(long) < 8) ? 30 : 62; - if (unlikely(!PyLong_CheckExact(v))) { - PyObject *tmp = v; - v = PyNumber_Long(v); - assert(PyLong_CheckExact(v)); - Py_DECREF(tmp); - if (unlikely(!v)) return (long) -1; - } -#if CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030B0000 - if (Py_SIZE(x) == 0) - return (long) 0; - is_negative = Py_SIZE(x) < 0; -#else - { - int result = PyObject_RichCompareBool(x, Py_False, Py_LT); - if (unlikely(result < 0)) - return (long) -1; - is_negative = result == 1; - } -#endif - if (is_unsigned && unlikely(is_negative)) { - goto raise_neg_overflow; - } else if (is_negative) { - stepval = PyNumber_Invert(v); - if (unlikely(!stepval)) - return (long) -1; - } else { - stepval = __Pyx_NewRef(v); - } - val = (long) 0; - mask = PyLong_FromLong((1L << chunk_size) - 1); if (unlikely(!mask)) goto done; - shift = PyLong_FromLong(chunk_size); if (unlikely(!shift)) goto done; - for (bits = 0; bits < (int) sizeof(long) * 8 - chunk_size; bits += chunk_size) { - PyObject *tmp, *digit; - digit = PyNumber_And(stepval, mask); - if (unlikely(!digit)) goto done; - idigit = PyLong_AsLong(digit); - Py_DECREF(digit); - if (unlikely(idigit < 0)) goto done; - tmp = PyNumber_Rshift(stepval, shift); - if (unlikely(!tmp)) goto done; - Py_DECREF(stepval); stepval = tmp; - val |= ((long) idigit) << bits; - #if CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030B0000 - if (Py_SIZE(stepval) == 0) - goto unpacking_done; - #endif - } - idigit = PyLong_AsLong(stepval); - if (unlikely(idigit < 0)) goto done; - remaining_bits = ((int) sizeof(long) * 8) - bits - (is_unsigned ? 0 : 1); - if (unlikely(idigit >= (1L << remaining_bits))) - goto raise_overflow; - val |= ((long) idigit) << bits; - #if CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030B0000 - unpacking_done: - #endif - if (!is_unsigned) { - if (unlikely(val & (((long) 1) << (sizeof(long) * 8 - 1)))) - goto raise_overflow; - if (is_negative) - val = ~val; - } - ret = 0; - done: - Py_XDECREF(shift); - Py_XDECREF(mask); - Py_XDECREF(stepval); -#endif - Py_DECREF(v); - if (likely(!ret)) - return val; - } - return (long) -1; - } - } else { - long val; - PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); - if (!tmp) return (long) -1; - val = __Pyx_PyInt_As_long(tmp); - Py_DECREF(tmp); - return val; - } -raise_overflow: - PyErr_SetString(PyExc_OverflowError, - "value too large to convert to long"); - return (long) -1; -raise_neg_overflow: - PyErr_SetString(PyExc_OverflowError, - "can't convert negative value to long"); - return (long) -1; -} - -/* CIntToPy */ -static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) { -#ifdef __Pyx_HAS_GCC_DIAGNOSTIC -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wconversion" -#endif - const long neg_one = (long) -1, const_zero = (long) 0; -#ifdef __Pyx_HAS_GCC_DIAGNOSTIC -#pragma GCC diagnostic pop -#endif - const int is_unsigned = neg_one > const_zero; - if (is_unsigned) { - if (sizeof(long) < sizeof(long)) { - return PyInt_FromLong((long) value); - } else if (sizeof(long) <= sizeof(unsigned long)) { - return PyLong_FromUnsignedLong((unsigned long) value); -#ifdef HAVE_LONG_LONG - } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) { - return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); -#endif - } - } else { - if (sizeof(long) <= sizeof(long)) { - return PyInt_FromLong((long) value); -#ifdef HAVE_LONG_LONG - } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) { - return PyLong_FromLongLong((PY_LONG_LONG) value); -#endif - } - } - { - int one = 1; int little = (int)*(unsigned char *)&one; - unsigned char *bytes = (unsigned char *)&value; -#if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030d0000 - return _PyLong_FromByteArray(bytes, sizeof(long), - little, !is_unsigned); -#else - PyObject *from_bytes, *result = NULL; - PyObject *py_bytes = NULL, *arg_tuple = NULL, *kwds = NULL, *order_str = NULL; - from_bytes = PyObject_GetAttrString((PyObject*)&PyLong_Type, "from_bytes"); - if (!from_bytes) return NULL; - py_bytes = PyBytes_FromStringAndSize((char*)bytes, sizeof(long)); - if (!py_bytes) goto limited_bad; - order_str = PyUnicode_FromString(little ? "little" : "big"); - if (!order_str) goto limited_bad; - arg_tuple = PyTuple_Pack(2, py_bytes, order_str); - if (!arg_tuple) goto limited_bad; - if (!is_unsigned) { - kwds = PyDict_New(); - if (!kwds) goto limited_bad; - if (PyDict_SetItemString(kwds, "signed", __Pyx_NewRef(Py_True))) goto limited_bad; - } - result = PyObject_Call(from_bytes, arg_tuple, kwds); - limited_bad: - Py_XDECREF(kwds); - Py_XDECREF(arg_tuple); - Py_XDECREF(order_str); - Py_XDECREF(py_bytes); - Py_XDECREF(from_bytes); - return result; -#endif - } -} - -/* CIntToPy */ -static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value) { -#ifdef __Pyx_HAS_GCC_DIAGNOSTIC -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wconversion" -#endif - const int neg_one = (int) -1, const_zero = (int) 0; -#ifdef __Pyx_HAS_GCC_DIAGNOSTIC -#pragma GCC diagnostic pop -#endif - const int is_unsigned = neg_one > const_zero; - if (is_unsigned) { - if (sizeof(int) < sizeof(long)) { - return PyInt_FromLong((long) value); - } else if (sizeof(int) <= sizeof(unsigned long)) { - return PyLong_FromUnsignedLong((unsigned long) value); -#ifdef HAVE_LONG_LONG - } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) { - return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); -#endif - } - } else { - if (sizeof(int) <= sizeof(long)) { - return PyInt_FromLong((long) value); -#ifdef HAVE_LONG_LONG - } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) { - return PyLong_FromLongLong((PY_LONG_LONG) value); -#endif - } - } - { - int one = 1; int little = (int)*(unsigned char *)&one; - unsigned char *bytes = (unsigned char *)&value; -#if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030d0000 - return _PyLong_FromByteArray(bytes, sizeof(int), - little, !is_unsigned); -#else - PyObject *from_bytes, *result = NULL; - PyObject *py_bytes = NULL, *arg_tuple = NULL, *kwds = NULL, *order_str = NULL; - from_bytes = PyObject_GetAttrString((PyObject*)&PyLong_Type, "from_bytes"); - if (!from_bytes) return NULL; - py_bytes = PyBytes_FromStringAndSize((char*)bytes, sizeof(int)); - if (!py_bytes) goto limited_bad; - order_str = PyUnicode_FromString(little ? "little" : "big"); - if (!order_str) goto limited_bad; - arg_tuple = PyTuple_Pack(2, py_bytes, order_str); - if (!arg_tuple) goto limited_bad; - if (!is_unsigned) { - kwds = PyDict_New(); - if (!kwds) goto limited_bad; - if (PyDict_SetItemString(kwds, "signed", __Pyx_NewRef(Py_True))) goto limited_bad; - } - result = PyObject_Call(from_bytes, arg_tuple, kwds); - limited_bad: - Py_XDECREF(kwds); - Py_XDECREF(arg_tuple); - Py_XDECREF(order_str); - Py_XDECREF(py_bytes); - Py_XDECREF(from_bytes); - return result; -#endif - } -} - -/* CIntFromPy */ -static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) { -#ifdef __Pyx_HAS_GCC_DIAGNOSTIC -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wconversion" -#endif - const int neg_one = (int) -1, const_zero = (int) 0; -#ifdef __Pyx_HAS_GCC_DIAGNOSTIC -#pragma GCC diagnostic pop -#endif - const int is_unsigned = neg_one > const_zero; -#if PY_MAJOR_VERSION < 3 - if (likely(PyInt_Check(x))) { - if ((sizeof(int) < sizeof(long))) { - __PYX_VERIFY_RETURN_INT(int, long, PyInt_AS_LONG(x)) - } else { - long val = PyInt_AS_LONG(x); - if (is_unsigned && unlikely(val < 0)) { - goto raise_neg_overflow; - } - return (int) val; - } - } else -#endif - if (likely(PyLong_Check(x))) { - if (is_unsigned) { -#if CYTHON_USE_PYLONG_INTERNALS - if (unlikely(__Pyx_PyLong_IsNeg(x))) { - goto raise_neg_overflow; - } else if (__Pyx_PyLong_IsCompact(x)) { - __PYX_VERIFY_RETURN_INT(int, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x)) - } else { - const digit* digits = __Pyx_PyLong_Digits(x); - assert(__Pyx_PyLong_DigitCount(x) > 1); - switch (__Pyx_PyLong_DigitCount(x)) { - case 2: - if ((8 * sizeof(int) > 1 * PyLong_SHIFT)) { - if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if ((8 * sizeof(int) >= 2 * PyLong_SHIFT)) { - return (int) (((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); - } - } - break; - case 3: - if ((8 * sizeof(int) > 2 * PyLong_SHIFT)) { - if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if ((8 * sizeof(int) >= 3 * PyLong_SHIFT)) { - return (int) (((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); - } - } - break; - case 4: - if ((8 * sizeof(int) > 3 * PyLong_SHIFT)) { - if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if ((8 * sizeof(int) >= 4 * PyLong_SHIFT)) { - return (int) (((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); - } - } - break; - } - } -#endif -#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7 - if (unlikely(Py_SIZE(x) < 0)) { - goto raise_neg_overflow; - } -#else - { - int result = PyObject_RichCompareBool(x, Py_False, Py_LT); - if (unlikely(result < 0)) - return (int) -1; - if (unlikely(result == 1)) - goto raise_neg_overflow; - } -#endif - if ((sizeof(int) <= sizeof(unsigned long))) { - __PYX_VERIFY_RETURN_INT_EXC(int, unsigned long, PyLong_AsUnsignedLong(x)) -#ifdef HAVE_LONG_LONG - } else if ((sizeof(int) <= sizeof(unsigned PY_LONG_LONG))) { - __PYX_VERIFY_RETURN_INT_EXC(int, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) -#endif - } - } else { -#if CYTHON_USE_PYLONG_INTERNALS - if (__Pyx_PyLong_IsCompact(x)) { - __PYX_VERIFY_RETURN_INT(int, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x)) - } else { - const digit* digits = __Pyx_PyLong_Digits(x); - assert(__Pyx_PyLong_DigitCount(x) > 1); - switch (__Pyx_PyLong_SignedDigitCount(x)) { - case -2: - if ((8 * sizeof(int) - 1 > 1 * PyLong_SHIFT)) { - if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { - __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if ((8 * sizeof(int) - 1 > 2 * PyLong_SHIFT)) { - return (int) (((int)-1)*(((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - case 2: - if ((8 * sizeof(int) > 1 * PyLong_SHIFT)) { - if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if ((8 * sizeof(int) - 1 > 2 * PyLong_SHIFT)) { - return (int) ((((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - case -3: - if ((8 * sizeof(int) - 1 > 2 * PyLong_SHIFT)) { - if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { - __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if ((8 * sizeof(int) - 1 > 3 * PyLong_SHIFT)) { - return (int) (((int)-1)*(((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - case 3: - if ((8 * sizeof(int) > 2 * PyLong_SHIFT)) { - if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if ((8 * sizeof(int) - 1 > 3 * PyLong_SHIFT)) { - return (int) ((((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - case -4: - if ((8 * sizeof(int) - 1 > 3 * PyLong_SHIFT)) { - if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { - __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if ((8 * sizeof(int) - 1 > 4 * PyLong_SHIFT)) { - return (int) (((int)-1)*(((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - case 4: - if ((8 * sizeof(int) > 3 * PyLong_SHIFT)) { - if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if ((8 * sizeof(int) - 1 > 4 * PyLong_SHIFT)) { - return (int) ((((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - } - } -#endif - if ((sizeof(int) <= sizeof(long))) { - __PYX_VERIFY_RETURN_INT_EXC(int, long, PyLong_AsLong(x)) -#ifdef HAVE_LONG_LONG - } else if ((sizeof(int) <= sizeof(PY_LONG_LONG))) { - __PYX_VERIFY_RETURN_INT_EXC(int, PY_LONG_LONG, PyLong_AsLongLong(x)) -#endif - } - } - { - int val; - PyObject *v = __Pyx_PyNumber_IntOrLong(x); -#if PY_MAJOR_VERSION < 3 - if (likely(v) && !PyLong_Check(v)) { - PyObject *tmp = v; - v = PyNumber_Long(tmp); - Py_DECREF(tmp); - } -#endif - if (likely(v)) { - int ret = -1; -#if PY_VERSION_HEX < 0x030d0000 && !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray) - int one = 1; int is_little = (int)*(unsigned char *)&one; - unsigned char *bytes = (unsigned char *)&val; - ret = _PyLong_AsByteArray((PyLongObject *)v, - bytes, sizeof(val), - is_little, !is_unsigned); -#else - PyObject *stepval = NULL, *mask = NULL, *shift = NULL; - int bits, remaining_bits, is_negative = 0; - long idigit; - int chunk_size = (sizeof(long) < 8) ? 30 : 62; - if (unlikely(!PyLong_CheckExact(v))) { - PyObject *tmp = v; - v = PyNumber_Long(v); - assert(PyLong_CheckExact(v)); - Py_DECREF(tmp); - if (unlikely(!v)) return (int) -1; - } -#if CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030B0000 - if (Py_SIZE(x) == 0) - return (int) 0; - is_negative = Py_SIZE(x) < 0; -#else - { - int result = PyObject_RichCompareBool(x, Py_False, Py_LT); - if (unlikely(result < 0)) - return (int) -1; - is_negative = result == 1; - } -#endif - if (is_unsigned && unlikely(is_negative)) { - goto raise_neg_overflow; - } else if (is_negative) { - stepval = PyNumber_Invert(v); - if (unlikely(!stepval)) - return (int) -1; - } else { - stepval = __Pyx_NewRef(v); - } - val = (int) 0; - mask = PyLong_FromLong((1L << chunk_size) - 1); if (unlikely(!mask)) goto done; - shift = PyLong_FromLong(chunk_size); if (unlikely(!shift)) goto done; - for (bits = 0; bits < (int) sizeof(int) * 8 - chunk_size; bits += chunk_size) { - PyObject *tmp, *digit; - digit = PyNumber_And(stepval, mask); - if (unlikely(!digit)) goto done; - idigit = PyLong_AsLong(digit); - Py_DECREF(digit); - if (unlikely(idigit < 0)) goto done; - tmp = PyNumber_Rshift(stepval, shift); - if (unlikely(!tmp)) goto done; - Py_DECREF(stepval); stepval = tmp; - val |= ((int) idigit) << bits; - #if CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030B0000 - if (Py_SIZE(stepval) == 0) - goto unpacking_done; - #endif - } - idigit = PyLong_AsLong(stepval); - if (unlikely(idigit < 0)) goto done; - remaining_bits = ((int) sizeof(int) * 8) - bits - (is_unsigned ? 0 : 1); - if (unlikely(idigit >= (1L << remaining_bits))) - goto raise_overflow; - val |= ((int) idigit) << bits; - #if CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030B0000 - unpacking_done: - #endif - if (!is_unsigned) { - if (unlikely(val & (((int) 1) << (sizeof(int) * 8 - 1)))) - goto raise_overflow; - if (is_negative) - val = ~val; - } - ret = 0; - done: - Py_XDECREF(shift); - Py_XDECREF(mask); - Py_XDECREF(stepval); -#endif - Py_DECREF(v); - if (likely(!ret)) - return val; - } - return (int) -1; - } - } else { - int val; - PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); - if (!tmp) return (int) -1; - val = __Pyx_PyInt_As_int(tmp); - Py_DECREF(tmp); - return val; - } -raise_overflow: - PyErr_SetString(PyExc_OverflowError, - "value too large to convert to int"); - return (int) -1; -raise_neg_overflow: - PyErr_SetString(PyExc_OverflowError, - "can't convert negative value to int"); - return (int) -1; -} - -/* CIntFromPy */ -static CYTHON_INLINE unsigned int __Pyx_PyInt_As_unsigned_int(PyObject *x) { -#ifdef __Pyx_HAS_GCC_DIAGNOSTIC -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wconversion" -#endif - const unsigned int neg_one = (unsigned int) -1, const_zero = (unsigned int) 0; -#ifdef __Pyx_HAS_GCC_DIAGNOSTIC -#pragma GCC diagnostic pop -#endif - const int is_unsigned = neg_one > const_zero; -#if PY_MAJOR_VERSION < 3 - if (likely(PyInt_Check(x))) { - if ((sizeof(unsigned int) < sizeof(long))) { - __PYX_VERIFY_RETURN_INT(unsigned int, long, PyInt_AS_LONG(x)) - } else { - long val = PyInt_AS_LONG(x); - if (is_unsigned && unlikely(val < 0)) { - goto raise_neg_overflow; - } - return (unsigned int) val; - } - } else -#endif - if (likely(PyLong_Check(x))) { - if (is_unsigned) { -#if CYTHON_USE_PYLONG_INTERNALS - if (unlikely(__Pyx_PyLong_IsNeg(x))) { - goto raise_neg_overflow; - } else if (__Pyx_PyLong_IsCompact(x)) { - __PYX_VERIFY_RETURN_INT(unsigned int, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x)) - } else { - const digit* digits = __Pyx_PyLong_Digits(x); - assert(__Pyx_PyLong_DigitCount(x) > 1); - switch (__Pyx_PyLong_DigitCount(x)) { - case 2: - if ((8 * sizeof(unsigned int) > 1 * PyLong_SHIFT)) { - if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { - __PYX_VERIFY_RETURN_INT(unsigned int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if ((8 * sizeof(unsigned int) >= 2 * PyLong_SHIFT)) { - return (unsigned int) (((((unsigned int)digits[1]) << PyLong_SHIFT) | (unsigned int)digits[0])); - } - } - break; - case 3: - if ((8 * sizeof(unsigned int) > 2 * PyLong_SHIFT)) { - if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { - __PYX_VERIFY_RETURN_INT(unsigned int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if ((8 * sizeof(unsigned int) >= 3 * PyLong_SHIFT)) { - return (unsigned int) (((((((unsigned int)digits[2]) << PyLong_SHIFT) | (unsigned int)digits[1]) << PyLong_SHIFT) | (unsigned int)digits[0])); - } - } - break; - case 4: - if ((8 * sizeof(unsigned int) > 3 * PyLong_SHIFT)) { - if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { - __PYX_VERIFY_RETURN_INT(unsigned int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if ((8 * sizeof(unsigned int) >= 4 * PyLong_SHIFT)) { - return (unsigned int) (((((((((unsigned int)digits[3]) << PyLong_SHIFT) | (unsigned int)digits[2]) << PyLong_SHIFT) | (unsigned int)digits[1]) << PyLong_SHIFT) | (unsigned int)digits[0])); - } - } - break; - } - } -#endif -#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7 - if (unlikely(Py_SIZE(x) < 0)) { - goto raise_neg_overflow; - } -#else - { - int result = PyObject_RichCompareBool(x, Py_False, Py_LT); - if (unlikely(result < 0)) - return (unsigned int) -1; - if (unlikely(result == 1)) - goto raise_neg_overflow; - } -#endif - if ((sizeof(unsigned int) <= sizeof(unsigned long))) { - __PYX_VERIFY_RETURN_INT_EXC(unsigned int, unsigned long, PyLong_AsUnsignedLong(x)) -#ifdef HAVE_LONG_LONG - } else if ((sizeof(unsigned int) <= sizeof(unsigned PY_LONG_LONG))) { - __PYX_VERIFY_RETURN_INT_EXC(unsigned int, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) -#endif - } - } else { -#if CYTHON_USE_PYLONG_INTERNALS - if (__Pyx_PyLong_IsCompact(x)) { - __PYX_VERIFY_RETURN_INT(unsigned int, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x)) - } else { - const digit* digits = __Pyx_PyLong_Digits(x); - assert(__Pyx_PyLong_DigitCount(x) > 1); - switch (__Pyx_PyLong_SignedDigitCount(x)) { - case -2: - if ((8 * sizeof(unsigned int) - 1 > 1 * PyLong_SHIFT)) { - if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { - __PYX_VERIFY_RETURN_INT(unsigned int, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if ((8 * sizeof(unsigned int) - 1 > 2 * PyLong_SHIFT)) { - return (unsigned int) (((unsigned int)-1)*(((((unsigned int)digits[1]) << PyLong_SHIFT) | (unsigned int)digits[0]))); - } - } - break; - case 2: - if ((8 * sizeof(unsigned int) > 1 * PyLong_SHIFT)) { - if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { - __PYX_VERIFY_RETURN_INT(unsigned int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if ((8 * sizeof(unsigned int) - 1 > 2 * PyLong_SHIFT)) { - return (unsigned int) ((((((unsigned int)digits[1]) << PyLong_SHIFT) | (unsigned int)digits[0]))); - } - } - break; - case -3: - if ((8 * sizeof(unsigned int) - 1 > 2 * PyLong_SHIFT)) { - if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { - __PYX_VERIFY_RETURN_INT(unsigned int, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if ((8 * sizeof(unsigned int) - 1 > 3 * PyLong_SHIFT)) { - return (unsigned int) (((unsigned int)-1)*(((((((unsigned int)digits[2]) << PyLong_SHIFT) | (unsigned int)digits[1]) << PyLong_SHIFT) | (unsigned int)digits[0]))); - } - } - break; - case 3: - if ((8 * sizeof(unsigned int) > 2 * PyLong_SHIFT)) { - if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { - __PYX_VERIFY_RETURN_INT(unsigned int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if ((8 * sizeof(unsigned int) - 1 > 3 * PyLong_SHIFT)) { - return (unsigned int) ((((((((unsigned int)digits[2]) << PyLong_SHIFT) | (unsigned int)digits[1]) << PyLong_SHIFT) | (unsigned int)digits[0]))); - } - } - break; - case -4: - if ((8 * sizeof(unsigned int) - 1 > 3 * PyLong_SHIFT)) { - if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { - __PYX_VERIFY_RETURN_INT(unsigned int, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if ((8 * sizeof(unsigned int) - 1 > 4 * PyLong_SHIFT)) { - return (unsigned int) (((unsigned int)-1)*(((((((((unsigned int)digits[3]) << PyLong_SHIFT) | (unsigned int)digits[2]) << PyLong_SHIFT) | (unsigned int)digits[1]) << PyLong_SHIFT) | (unsigned int)digits[0]))); - } - } - break; - case 4: - if ((8 * sizeof(unsigned int) > 3 * PyLong_SHIFT)) { - if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { - __PYX_VERIFY_RETURN_INT(unsigned int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if ((8 * sizeof(unsigned int) - 1 > 4 * PyLong_SHIFT)) { - return (unsigned int) ((((((((((unsigned int)digits[3]) << PyLong_SHIFT) | (unsigned int)digits[2]) << PyLong_SHIFT) | (unsigned int)digits[1]) << PyLong_SHIFT) | (unsigned int)digits[0]))); - } - } - break; - } - } -#endif - if ((sizeof(unsigned int) <= sizeof(long))) { - __PYX_VERIFY_RETURN_INT_EXC(unsigned int, long, PyLong_AsLong(x)) -#ifdef HAVE_LONG_LONG - } else if ((sizeof(unsigned int) <= sizeof(PY_LONG_LONG))) { - __PYX_VERIFY_RETURN_INT_EXC(unsigned int, PY_LONG_LONG, PyLong_AsLongLong(x)) -#endif - } - } - { - unsigned int val; - PyObject *v = __Pyx_PyNumber_IntOrLong(x); -#if PY_MAJOR_VERSION < 3 - if (likely(v) && !PyLong_Check(v)) { - PyObject *tmp = v; - v = PyNumber_Long(tmp); - Py_DECREF(tmp); - } -#endif - if (likely(v)) { - int ret = -1; -#if PY_VERSION_HEX < 0x030d0000 && !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray) - int one = 1; int is_little = (int)*(unsigned char *)&one; - unsigned char *bytes = (unsigned char *)&val; - ret = _PyLong_AsByteArray((PyLongObject *)v, - bytes, sizeof(val), - is_little, !is_unsigned); -#else - PyObject *stepval = NULL, *mask = NULL, *shift = NULL; - int bits, remaining_bits, is_negative = 0; - long idigit; - int chunk_size = (sizeof(long) < 8) ? 30 : 62; - if (unlikely(!PyLong_CheckExact(v))) { - PyObject *tmp = v; - v = PyNumber_Long(v); - assert(PyLong_CheckExact(v)); - Py_DECREF(tmp); - if (unlikely(!v)) return (unsigned int) -1; - } -#if CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030B0000 - if (Py_SIZE(x) == 0) - return (unsigned int) 0; - is_negative = Py_SIZE(x) < 0; -#else - { - int result = PyObject_RichCompareBool(x, Py_False, Py_LT); - if (unlikely(result < 0)) - return (unsigned int) -1; - is_negative = result == 1; - } -#endif - if (is_unsigned && unlikely(is_negative)) { - goto raise_neg_overflow; - } else if (is_negative) { - stepval = PyNumber_Invert(v); - if (unlikely(!stepval)) - return (unsigned int) -1; - } else { - stepval = __Pyx_NewRef(v); - } - val = (unsigned int) 0; - mask = PyLong_FromLong((1L << chunk_size) - 1); if (unlikely(!mask)) goto done; - shift = PyLong_FromLong(chunk_size); if (unlikely(!shift)) goto done; - for (bits = 0; bits < (int) sizeof(unsigned int) * 8 - chunk_size; bits += chunk_size) { - PyObject *tmp, *digit; - digit = PyNumber_And(stepval, mask); - if (unlikely(!digit)) goto done; - idigit = PyLong_AsLong(digit); - Py_DECREF(digit); - if (unlikely(idigit < 0)) goto done; - tmp = PyNumber_Rshift(stepval, shift); - if (unlikely(!tmp)) goto done; - Py_DECREF(stepval); stepval = tmp; - val |= ((unsigned int) idigit) << bits; - #if CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030B0000 - if (Py_SIZE(stepval) == 0) - goto unpacking_done; - #endif - } - idigit = PyLong_AsLong(stepval); - if (unlikely(idigit < 0)) goto done; - remaining_bits = ((int) sizeof(unsigned int) * 8) - bits - (is_unsigned ? 0 : 1); - if (unlikely(idigit >= (1L << remaining_bits))) - goto raise_overflow; - val |= ((unsigned int) idigit) << bits; - #if CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030B0000 - unpacking_done: - #endif - if (!is_unsigned) { - if (unlikely(val & (((unsigned int) 1) << (sizeof(unsigned int) * 8 - 1)))) - goto raise_overflow; - if (is_negative) - val = ~val; - } - ret = 0; - done: - Py_XDECREF(shift); - Py_XDECREF(mask); - Py_XDECREF(stepval); -#endif - Py_DECREF(v); - if (likely(!ret)) - return val; - } - return (unsigned int) -1; - } - } else { - unsigned int val; - PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); - if (!tmp) return (unsigned int) -1; - val = __Pyx_PyInt_As_unsigned_int(tmp); - Py_DECREF(tmp); - return val; - } -raise_overflow: - PyErr_SetString(PyExc_OverflowError, - "value too large to convert to unsigned int"); - return (unsigned int) -1; -raise_neg_overflow: - PyErr_SetString(PyExc_OverflowError, - "can't convert negative value to unsigned int"); - return (unsigned int) -1; -} - -/* CIntToPy */ -static CYTHON_INLINE PyObject* __Pyx_PyInt_From_unsigned_int(unsigned int value) { -#ifdef __Pyx_HAS_GCC_DIAGNOSTIC -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wconversion" -#endif - const unsigned int neg_one = (unsigned int) -1, const_zero = (unsigned int) 0; -#ifdef __Pyx_HAS_GCC_DIAGNOSTIC -#pragma GCC diagnostic pop -#endif - const int is_unsigned = neg_one > const_zero; - if (is_unsigned) { - if (sizeof(unsigned int) < sizeof(long)) { - return PyInt_FromLong((long) value); - } else if (sizeof(unsigned int) <= sizeof(unsigned long)) { - return PyLong_FromUnsignedLong((unsigned long) value); -#ifdef HAVE_LONG_LONG - } else if (sizeof(unsigned int) <= sizeof(unsigned PY_LONG_LONG)) { - return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); -#endif - } - } else { - if (sizeof(unsigned int) <= sizeof(long)) { - return PyInt_FromLong((long) value); -#ifdef HAVE_LONG_LONG - } else if (sizeof(unsigned int) <= sizeof(PY_LONG_LONG)) { - return PyLong_FromLongLong((PY_LONG_LONG) value); -#endif - } - } - { - int one = 1; int little = (int)*(unsigned char *)&one; - unsigned char *bytes = (unsigned char *)&value; -#if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030d0000 - return _PyLong_FromByteArray(bytes, sizeof(unsigned int), - little, !is_unsigned); -#else - PyObject *from_bytes, *result = NULL; - PyObject *py_bytes = NULL, *arg_tuple = NULL, *kwds = NULL, *order_str = NULL; - from_bytes = PyObject_GetAttrString((PyObject*)&PyLong_Type, "from_bytes"); - if (!from_bytes) return NULL; - py_bytes = PyBytes_FromStringAndSize((char*)bytes, sizeof(unsigned int)); - if (!py_bytes) goto limited_bad; - order_str = PyUnicode_FromString(little ? "little" : "big"); - if (!order_str) goto limited_bad; - arg_tuple = PyTuple_Pack(2, py_bytes, order_str); - if (!arg_tuple) goto limited_bad; - if (!is_unsigned) { - kwds = PyDict_New(); - if (!kwds) goto limited_bad; - if (PyDict_SetItemString(kwds, "signed", __Pyx_NewRef(Py_True))) goto limited_bad; - } - result = PyObject_Call(from_bytes, arg_tuple, kwds); - limited_bad: - Py_XDECREF(kwds); - Py_XDECREF(arg_tuple); - Py_XDECREF(order_str); - Py_XDECREF(py_bytes); - Py_XDECREF(from_bytes); - return result; -#endif - } -} - -/* CIntFromPy */ -static CYTHON_INLINE size_t __Pyx_PyInt_As_size_t(PyObject *x) { -#ifdef __Pyx_HAS_GCC_DIAGNOSTIC -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wconversion" -#endif - const size_t neg_one = (size_t) -1, const_zero = (size_t) 0; -#ifdef __Pyx_HAS_GCC_DIAGNOSTIC -#pragma GCC diagnostic pop -#endif - const int is_unsigned = neg_one > const_zero; -#if PY_MAJOR_VERSION < 3 - if (likely(PyInt_Check(x))) { - if ((sizeof(size_t) < sizeof(long))) { - __PYX_VERIFY_RETURN_INT(size_t, long, PyInt_AS_LONG(x)) - } else { - long val = PyInt_AS_LONG(x); - if (is_unsigned && unlikely(val < 0)) { - goto raise_neg_overflow; - } - return (size_t) val; - } - } else -#endif - if (likely(PyLong_Check(x))) { - if (is_unsigned) { -#if CYTHON_USE_PYLONG_INTERNALS - if (unlikely(__Pyx_PyLong_IsNeg(x))) { - goto raise_neg_overflow; - } else if (__Pyx_PyLong_IsCompact(x)) { - __PYX_VERIFY_RETURN_INT(size_t, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x)) - } else { - const digit* digits = __Pyx_PyLong_Digits(x); - assert(__Pyx_PyLong_DigitCount(x) > 1); - switch (__Pyx_PyLong_DigitCount(x)) { - case 2: - if ((8 * sizeof(size_t) > 1 * PyLong_SHIFT)) { - if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { - __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if ((8 * sizeof(size_t) >= 2 * PyLong_SHIFT)) { - return (size_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - } - break; - case 3: - if ((8 * sizeof(size_t) > 2 * PyLong_SHIFT)) { - if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { - __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if ((8 * sizeof(size_t) >= 3 * PyLong_SHIFT)) { - return (size_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - } - break; - case 4: - if ((8 * sizeof(size_t) > 3 * PyLong_SHIFT)) { - if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { - __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if ((8 * sizeof(size_t) >= 4 * PyLong_SHIFT)) { - return (size_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - } - break; - } - } -#endif -#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7 - if (unlikely(Py_SIZE(x) < 0)) { - goto raise_neg_overflow; - } -#else - { - int result = PyObject_RichCompareBool(x, Py_False, Py_LT); - if (unlikely(result < 0)) - return (size_t) -1; - if (unlikely(result == 1)) - goto raise_neg_overflow; - } -#endif - if ((sizeof(size_t) <= sizeof(unsigned long))) { - __PYX_VERIFY_RETURN_INT_EXC(size_t, unsigned long, PyLong_AsUnsignedLong(x)) -#ifdef HAVE_LONG_LONG - } else if ((sizeof(size_t) <= sizeof(unsigned PY_LONG_LONG))) { - __PYX_VERIFY_RETURN_INT_EXC(size_t, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) -#endif - } - } else { -#if CYTHON_USE_PYLONG_INTERNALS - if (__Pyx_PyLong_IsCompact(x)) { - __PYX_VERIFY_RETURN_INT(size_t, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x)) - } else { - const digit* digits = __Pyx_PyLong_Digits(x); - assert(__Pyx_PyLong_DigitCount(x) > 1); - switch (__Pyx_PyLong_SignedDigitCount(x)) { - case -2: - if ((8 * sizeof(size_t) - 1 > 1 * PyLong_SHIFT)) { - if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { - __PYX_VERIFY_RETURN_INT(size_t, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if ((8 * sizeof(size_t) - 1 > 2 * PyLong_SHIFT)) { - return (size_t) (((size_t)-1)*(((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]))); - } - } - break; - case 2: - if ((8 * sizeof(size_t) > 1 * PyLong_SHIFT)) { - if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { - __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if ((8 * sizeof(size_t) - 1 > 2 * PyLong_SHIFT)) { - return (size_t) ((((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]))); - } - } - break; - case -3: - if ((8 * sizeof(size_t) - 1 > 2 * PyLong_SHIFT)) { - if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { - __PYX_VERIFY_RETURN_INT(size_t, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if ((8 * sizeof(size_t) - 1 > 3 * PyLong_SHIFT)) { - return (size_t) (((size_t)-1)*(((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]))); - } - } - break; - case 3: - if ((8 * sizeof(size_t) > 2 * PyLong_SHIFT)) { - if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { - __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if ((8 * sizeof(size_t) - 1 > 3 * PyLong_SHIFT)) { - return (size_t) ((((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]))); - } - } - break; - case -4: - if ((8 * sizeof(size_t) - 1 > 3 * PyLong_SHIFT)) { - if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { - __PYX_VERIFY_RETURN_INT(size_t, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if ((8 * sizeof(size_t) - 1 > 4 * PyLong_SHIFT)) { - return (size_t) (((size_t)-1)*(((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]))); - } - } - break; - case 4: - if ((8 * sizeof(size_t) > 3 * PyLong_SHIFT)) { - if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { - __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if ((8 * sizeof(size_t) - 1 > 4 * PyLong_SHIFT)) { - return (size_t) ((((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]))); - } - } - break; - } - } -#endif - if ((sizeof(size_t) <= sizeof(long))) { - __PYX_VERIFY_RETURN_INT_EXC(size_t, long, PyLong_AsLong(x)) -#ifdef HAVE_LONG_LONG - } else if ((sizeof(size_t) <= sizeof(PY_LONG_LONG))) { - __PYX_VERIFY_RETURN_INT_EXC(size_t, PY_LONG_LONG, PyLong_AsLongLong(x)) -#endif - } - } - { - size_t val; - PyObject *v = __Pyx_PyNumber_IntOrLong(x); -#if PY_MAJOR_VERSION < 3 - if (likely(v) && !PyLong_Check(v)) { - PyObject *tmp = v; - v = PyNumber_Long(tmp); - Py_DECREF(tmp); - } -#endif - if (likely(v)) { - int ret = -1; -#if PY_VERSION_HEX < 0x030d0000 && !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray) - int one = 1; int is_little = (int)*(unsigned char *)&one; - unsigned char *bytes = (unsigned char *)&val; - ret = _PyLong_AsByteArray((PyLongObject *)v, - bytes, sizeof(val), - is_little, !is_unsigned); -#else - PyObject *stepval = NULL, *mask = NULL, *shift = NULL; - int bits, remaining_bits, is_negative = 0; - long idigit; - int chunk_size = (sizeof(long) < 8) ? 30 : 62; - if (unlikely(!PyLong_CheckExact(v))) { - PyObject *tmp = v; - v = PyNumber_Long(v); - assert(PyLong_CheckExact(v)); - Py_DECREF(tmp); - if (unlikely(!v)) return (size_t) -1; - } -#if CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030B0000 - if (Py_SIZE(x) == 0) - return (size_t) 0; - is_negative = Py_SIZE(x) < 0; -#else - { - int result = PyObject_RichCompareBool(x, Py_False, Py_LT); - if (unlikely(result < 0)) - return (size_t) -1; - is_negative = result == 1; - } -#endif - if (is_unsigned && unlikely(is_negative)) { - goto raise_neg_overflow; - } else if (is_negative) { - stepval = PyNumber_Invert(v); - if (unlikely(!stepval)) - return (size_t) -1; - } else { - stepval = __Pyx_NewRef(v); - } - val = (size_t) 0; - mask = PyLong_FromLong((1L << chunk_size) - 1); if (unlikely(!mask)) goto done; - shift = PyLong_FromLong(chunk_size); if (unlikely(!shift)) goto done; - for (bits = 0; bits < (int) sizeof(size_t) * 8 - chunk_size; bits += chunk_size) { - PyObject *tmp, *digit; - digit = PyNumber_And(stepval, mask); - if (unlikely(!digit)) goto done; - idigit = PyLong_AsLong(digit); - Py_DECREF(digit); - if (unlikely(idigit < 0)) goto done; - tmp = PyNumber_Rshift(stepval, shift); - if (unlikely(!tmp)) goto done; - Py_DECREF(stepval); stepval = tmp; - val |= ((size_t) idigit) << bits; - #if CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030B0000 - if (Py_SIZE(stepval) == 0) - goto unpacking_done; - #endif - } - idigit = PyLong_AsLong(stepval); - if (unlikely(idigit < 0)) goto done; - remaining_bits = ((int) sizeof(size_t) * 8) - bits - (is_unsigned ? 0 : 1); - if (unlikely(idigit >= (1L << remaining_bits))) - goto raise_overflow; - val |= ((size_t) idigit) << bits; - #if CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030B0000 - unpacking_done: - #endif - if (!is_unsigned) { - if (unlikely(val & (((size_t) 1) << (sizeof(size_t) * 8 - 1)))) - goto raise_overflow; - if (is_negative) - val = ~val; - } - ret = 0; - done: - Py_XDECREF(shift); - Py_XDECREF(mask); - Py_XDECREF(stepval); -#endif - Py_DECREF(v); - if (likely(!ret)) - return val; - } - return (size_t) -1; - } - } else { - size_t val; - PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); - if (!tmp) return (size_t) -1; - val = __Pyx_PyInt_As_size_t(tmp); - Py_DECREF(tmp); - return val; - } -raise_overflow: - PyErr_SetString(PyExc_OverflowError, - "value too large to convert to size_t"); - return (size_t) -1; -raise_neg_overflow: - PyErr_SetString(PyExc_OverflowError, - "can't convert negative value to size_t"); - return (size_t) -1; -} - -/* FormatTypeName */ -#if CYTHON_COMPILING_IN_LIMITED_API -static __Pyx_TypeName -__Pyx_PyType_GetName(PyTypeObject* tp) -{ - PyObject *name = __Pyx_PyObject_GetAttrStr((PyObject *)tp, - __pyx_n_s_name); - if (unlikely(name == NULL) || unlikely(!PyUnicode_Check(name))) { - PyErr_Clear(); - Py_XDECREF(name); - name = __Pyx_NewRef(__pyx_n_s__65); - } - return name; -} -#endif - -/* CheckBinaryVersion */ -static unsigned long __Pyx_get_runtime_version(void) { -#if __PYX_LIMITED_VERSION_HEX >= 0x030B00A4 - return Py_Version & ~0xFFUL; -#else - const char* rt_version = Py_GetVersion(); - unsigned long version = 0; - unsigned long factor = 0x01000000UL; - unsigned int digit = 0; - int i = 0; - while (factor) { - while ('0' <= rt_version[i] && rt_version[i] <= '9') { - digit = digit * 10 + (unsigned int) (rt_version[i] - '0'); - ++i; - } - version += factor * digit; - if (rt_version[i] != '.') - break; - digit = 0; - factor >>= 8; - ++i; - } - return version; -#endif -} -static int __Pyx_check_binary_version(unsigned long ct_version, unsigned long rt_version, int allow_newer) { - const unsigned long MAJOR_MINOR = 0xFFFF0000UL; - if ((rt_version & MAJOR_MINOR) == (ct_version & MAJOR_MINOR)) - return 0; - if (likely(allow_newer && (rt_version & MAJOR_MINOR) > (ct_version & MAJOR_MINOR))) - return 1; - { - char message[200]; - PyOS_snprintf(message, sizeof(message), - "compile time Python version %d.%d " - "of module '%.100s' " - "%s " - "runtime version %d.%d", - (int) (ct_version >> 24), (int) ((ct_version >> 16) & 0xFF), - __Pyx_MODULE_NAME, - (allow_newer) ? "was newer than" : "does not match", - (int) (rt_version >> 24), (int) ((rt_version >> 16) & 0xFF) - ); - return PyErr_WarnEx(NULL, message, 1); - } -} - -/* InitStrings */ -#if PY_MAJOR_VERSION >= 3 -static int __Pyx_InitString(__Pyx_StringTabEntry t, PyObject **str) { - if (t.is_unicode | t.is_str) { - if (t.intern) { - *str = PyUnicode_InternFromString(t.s); - } else if (t.encoding) { - *str = PyUnicode_Decode(t.s, t.n - 1, t.encoding, NULL); - } else { - *str = PyUnicode_FromStringAndSize(t.s, t.n - 1); - } - } else { - *str = PyBytes_FromStringAndSize(t.s, t.n - 1); - } - if (!*str) - return -1; - if (PyObject_Hash(*str) == -1) - return -1; - return 0; -} -#endif -static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) { - while (t->p) { - #if PY_MAJOR_VERSION >= 3 - __Pyx_InitString(*t, t->p); - #else - if (t->is_unicode) { - *t->p = PyUnicode_DecodeUTF8(t->s, t->n - 1, NULL); - } else if (t->intern) { - *t->p = PyString_InternFromString(t->s); - } else { - *t->p = PyString_FromStringAndSize(t->s, t->n - 1); - } - if (!*t->p) - return -1; - if (PyObject_Hash(*t->p) == -1) - return -1; - #endif - ++t; - } - return 0; -} - -#include -static CYTHON_INLINE Py_ssize_t __Pyx_ssize_strlen(const char *s) { - size_t len = strlen(s); - if (unlikely(len > (size_t) PY_SSIZE_T_MAX)) { - PyErr_SetString(PyExc_OverflowError, "byte string is too long"); - return -1; - } - return (Py_ssize_t) len; -} -static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char* c_str) { - Py_ssize_t len = __Pyx_ssize_strlen(c_str); - if (unlikely(len < 0)) return NULL; - return __Pyx_PyUnicode_FromStringAndSize(c_str, len); -} -static CYTHON_INLINE PyObject* __Pyx_PyByteArray_FromString(const char* c_str) { - Py_ssize_t len = __Pyx_ssize_strlen(c_str); - if (unlikely(len < 0)) return NULL; - return PyByteArray_FromStringAndSize(c_str, len); -} -static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject* o) { - Py_ssize_t ignore; - return __Pyx_PyObject_AsStringAndSize(o, &ignore); -} -#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT -#if !CYTHON_PEP393_ENABLED -static const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) { - char* defenc_c; - PyObject* defenc = _PyUnicode_AsDefaultEncodedString(o, NULL); - if (!defenc) return NULL; - defenc_c = PyBytes_AS_STRING(defenc); -#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII - { - char* end = defenc_c + PyBytes_GET_SIZE(defenc); - char* c; - for (c = defenc_c; c < end; c++) { - if ((unsigned char) (*c) >= 128) { - PyUnicode_AsASCIIString(o); - return NULL; - } - } - } -#endif - *length = PyBytes_GET_SIZE(defenc); - return defenc_c; -} -#else -static CYTHON_INLINE const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) { - if (unlikely(__Pyx_PyUnicode_READY(o) == -1)) return NULL; -#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII - if (likely(PyUnicode_IS_ASCII(o))) { - *length = PyUnicode_GET_LENGTH(o); - return PyUnicode_AsUTF8(o); - } else { - PyUnicode_AsASCIIString(o); - return NULL; - } -#else - return PyUnicode_AsUTF8AndSize(o, length); -#endif -} -#endif -#endif -static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject* o, Py_ssize_t *length) { -#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT - if ( -#if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII - __Pyx_sys_getdefaultencoding_not_ascii && -#endif - PyUnicode_Check(o)) { - return __Pyx_PyUnicode_AsStringAndSize(o, length); - } else -#endif -#if (!CYTHON_COMPILING_IN_PYPY && !CYTHON_COMPILING_IN_LIMITED_API) || (defined(PyByteArray_AS_STRING) && defined(PyByteArray_GET_SIZE)) - if (PyByteArray_Check(o)) { - *length = PyByteArray_GET_SIZE(o); - return PyByteArray_AS_STRING(o); - } else -#endif - { - char* result; - int r = PyBytes_AsStringAndSize(o, &result, length); - if (unlikely(r < 0)) { - return NULL; - } else { - return result; - } - } -} -static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) { - int is_true = x == Py_True; - if (is_true | (x == Py_False) | (x == Py_None)) return is_true; - else return PyObject_IsTrue(x); -} -static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref(PyObject* x) { - int retval; - if (unlikely(!x)) return -1; - retval = __Pyx_PyObject_IsTrue(x); - Py_DECREF(x); - return retval; -} -static PyObject* __Pyx_PyNumber_IntOrLongWrongResultType(PyObject* result, const char* type_name) { - __Pyx_TypeName result_type_name = __Pyx_PyType_GetName(Py_TYPE(result)); -#if PY_MAJOR_VERSION >= 3 - if (PyLong_Check(result)) { - if (PyErr_WarnFormat(PyExc_DeprecationWarning, 1, - "__int__ returned non-int (type " __Pyx_FMT_TYPENAME "). " - "The ability to return an instance of a strict subclass of int is deprecated, " - "and may be removed in a future version of Python.", - result_type_name)) { - __Pyx_DECREF_TypeName(result_type_name); - Py_DECREF(result); - return NULL; - } - __Pyx_DECREF_TypeName(result_type_name); - return result; - } -#endif - PyErr_Format(PyExc_TypeError, - "__%.4s__ returned non-%.4s (type " __Pyx_FMT_TYPENAME ")", - type_name, type_name, result_type_name); - __Pyx_DECREF_TypeName(result_type_name); - Py_DECREF(result); - return NULL; -} -static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x) { -#if CYTHON_USE_TYPE_SLOTS - PyNumberMethods *m; -#endif - const char *name = NULL; - PyObject *res = NULL; -#if PY_MAJOR_VERSION < 3 - if (likely(PyInt_Check(x) || PyLong_Check(x))) -#else - if (likely(PyLong_Check(x))) -#endif - return __Pyx_NewRef(x); -#if CYTHON_USE_TYPE_SLOTS - m = Py_TYPE(x)->tp_as_number; - #if PY_MAJOR_VERSION < 3 - if (m && m->nb_int) { - name = "int"; - res = m->nb_int(x); - } - else if (m && m->nb_long) { - name = "long"; - res = m->nb_long(x); - } - #else - if (likely(m && m->nb_int)) { - name = "int"; - res = m->nb_int(x); - } - #endif -#else - if (!PyBytes_CheckExact(x) && !PyUnicode_CheckExact(x)) { - res = PyNumber_Int(x); - } -#endif - if (likely(res)) { -#if PY_MAJOR_VERSION < 3 - if (unlikely(!PyInt_Check(res) && !PyLong_Check(res))) { -#else - if (unlikely(!PyLong_CheckExact(res))) { -#endif - return __Pyx_PyNumber_IntOrLongWrongResultType(res, name); - } - } - else if (!PyErr_Occurred()) { - PyErr_SetString(PyExc_TypeError, - "an integer is required"); - } - return res; -} -static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) { - Py_ssize_t ival; - PyObject *x; -#if PY_MAJOR_VERSION < 3 - if (likely(PyInt_CheckExact(b))) { - if (sizeof(Py_ssize_t) >= sizeof(long)) - return PyInt_AS_LONG(b); - else - return PyInt_AsSsize_t(b); - } -#endif - if (likely(PyLong_CheckExact(b))) { - #if CYTHON_USE_PYLONG_INTERNALS - if (likely(__Pyx_PyLong_IsCompact(b))) { - return __Pyx_PyLong_CompactValue(b); - } else { - const digit* digits = __Pyx_PyLong_Digits(b); - const Py_ssize_t size = __Pyx_PyLong_SignedDigitCount(b); - switch (size) { - case 2: - if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) { - return (Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - case -2: - if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) { - return -(Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - case 3: - if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) { - return (Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - case -3: - if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) { - return -(Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - case 4: - if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) { - return (Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - case -4: - if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) { - return -(Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - } - } - #endif - return PyLong_AsSsize_t(b); - } - x = PyNumber_Index(b); - if (!x) return -1; - ival = PyInt_AsSsize_t(x); - Py_DECREF(x); - return ival; -} -static CYTHON_INLINE Py_hash_t __Pyx_PyIndex_AsHash_t(PyObject* o) { - if (sizeof(Py_hash_t) == sizeof(Py_ssize_t)) { - return (Py_hash_t) __Pyx_PyIndex_AsSsize_t(o); -#if PY_MAJOR_VERSION < 3 - } else if (likely(PyInt_CheckExact(o))) { - return PyInt_AS_LONG(o); -#endif - } else { - Py_ssize_t ival; - PyObject *x; - x = PyNumber_Index(o); - if (!x) return -1; - ival = PyInt_AsLong(x); - Py_DECREF(x); - return ival; - } -} -static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b) { - return b ? __Pyx_NewRef(Py_True) : __Pyx_NewRef(Py_False); -} -static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) { - return PyInt_FromSize_t(ival); -} - - -/* #### Code section: utility_code_pragmas_end ### */ -#ifdef _MSC_VER -#pragma warning( pop ) -#endif - - - -/* #### Code section: end ### */ -#endif /* Py_PYTHON_H */ diff --git a/pyflowline/external/tinyr/tinyr/tinyr.pyx b/pyflowline/external/tinyr/tinyr/tinyr.pyx deleted file mode 100644 index eaf2eea2..00000000 --- a/pyflowline/external/tinyr/tinyr/tinyr.pyx +++ /dev/null @@ -1,1106 +0,0 @@ -# -# tinyr - a 2D-RTree implementation in Cython -# Copyright (C) 2011 Matthias Simon -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . -# - - -''' -Fast 2D R-Tree implementation in cython. - -The implementation is based on the original paper [Gut84]. - - - -[Gut84] R-trees: A Dynamic Index Structure for Spatial Searching, A. Guttman, - Proc ACM SIGMOD Int, 47-57, 1984 - -[Bec90] The R*-tree: An efficient and robust access method for points and - rectangles, N. Beckmann, H.-P. Kriegel, R. Schneider, and B. Seeger, - ACM SIGMOD, 322-331, 1990 -''' - -# cython: profile=False - -import itertools - - -from libc.float cimport DBL_MAX as Dfloat_max, DBL_MIN as Dfloat_min - -ctypedef double Dfloat -ctypedef unsigned Duint - - -############################################################################### -#--- forward declarations -############################################################################### - -cdef class _Record -cdef class _ChildRecord(_Record) -cdef class _InnerRecord(_Record) -cdef class _Node -cdef class RTree -cdef class _Iterator -cdef class _ChildRecordIter(_Iterator) -cdef class _KVIIter(_Iterator) -cdef class _KeysIter(_KVIIter) -cdef class _ValuesIter(_KVIIter) -cdef class _ItemsIter(_KVIIter) - -class RTreeInvalid(Exception): - pass - -############################################################################### - -cdef inline void init_Dfloat4(Dfloat *f): - # array initialization - compiler cries if we don't do that - f[0] = 0 - f[1] = 0 - f[2] = 0 - f[3] = 0 - -cdef inline void make_order(Dfloat *coords): - cdef Dfloat switch - if coords[0] > coords[2]: - switch = coords[0] - coords[0] = coords[2] - coords[2] = switch - if coords[1] > coords[3]: - switch = coords[1] - coords[1] = coords[3] - coords[3] = switch - -cdef void tuple_to_array_interleaved(object t, Dfloat *coords): - for i in range(4): - coords[i] = t[i] - make_order(coords) - -cdef void tuple_to_array_normal(object t, Dfloat *coords): - coords[0] = t[0] - coords[2] = t[1] - coords[1] = t[2] - coords[3] = t[3] - make_order(coords) - - -cdef tuple array_to_tuple_interleaved(Dfloat *coords): - return tuple([ coords[i] for i in range(4)]) - -cdef tuple array_to_tuple_normal(Dfloat *coords): - return tuple([ coords[0], coords[2], coords[1], coords[3] ]) - -cdef inline _InnerRecord parent_record(_Node node): - cdef: - _InnerRecord e - - for e in node.parent.records: - if e.child == node: - return e - -cdef inline void common_boundaries(list records, Dfloat *target): - cdef: - Dfloat *coords - _Record r - - target[0] = target[1] = Dfloat_max - target[2] = target[3] = -Dfloat_min - for r in records: - coords = r.coords - target[0] = min(target[0], coords[0]) - target[1] = min(target[1], coords[1]) - target[2] = max(target[2], coords[2]) - target[3] = max(target[3], coords[3]) - -cdef inline Dfloat area(Dfloat *coords): - return (coords[2] - coords[0]) * (coords[3] - coords[1]) - -cdef class _Record: - cdef: - Dfloat coords[4] - - cdef inline bint overlaps(self, Dfloat *rect): - return self.coords[0] < rect[2] and self.coords[2] > rect[0] and self.coords[1] < rect[3] and self.coords[3] > rect[1] - - cdef inline void copy_coords_to(self, Dfloat *coords): - for i in range(4): - coords[i] = self.coords[i] - - cdef _Record copy(self, _Node newparent): - raise NotImplemented - -cdef class _ChildRecord(_Record): - cdef: - object identifier - - def __init__(self, object identifier): - self.identifier = identifier - - cdef _Record copy(self, _Node newparent): - cdef: - _ChildRecord ret - - ret = _ChildRecord(self.identifier) - self.copy_coords_to(ret.coords) - return ret - -cdef class _InnerRecord(_Record): - cdef: - _Node child - - def __cinit__(self, _Node child): - self.child = child - - cdef _Record copy(self, _Node newparent): - cdef: - _InnerRecord ret - - ret = _InnerRecord(self.child.copy(newparent)) - self.copy_coords_to(ret.coords) - return ret - -cdef class _Node(object): - cdef: - _Node parent - list records - bint is_leaf - - def __cinit__(self, _Node parent): - self.parent = parent - self.records = list() - - cdef _Node copy(self, _Node parent): - cdef: - _Node ret - ret = _Node(parent) - ret.records = [ (<_Record>rec).copy(ret) for rec in self.records ] - ret.is_leaf = self.is_leaf - return ret - - cdef inline void common_boundaries(self, Dfloat *target): - common_boundaries(self.records, target) - - cdef inline _Record choose_subtree_least_enlargement(self, _Record ir): - cdef: - Dfloat least_enlargement, enlagrgement, current_area, target_area - Dfloat combined_rectangle[4] - _Record current_record, target - list records - - init_Dfloat4(combined_rectangle) - - target_area = least_enlargement = Dfloat_max - records = [ir, None] - - - for current_record in self.records: - current_area = area(current_record.coords) - - records[1] = current_record - - common_boundaries(records, combined_rectangle) - enlagrgement = area(combined_rectangle) - current_area - - if enlagrgement < least_enlargement: - target = current_record - target_area = area(current_record.coords) - least_enlargement = enlagrgement - elif enlagrgement == least_enlargement and current_area < target_area: - target = current_record - least_enlargement = target_area = current_area - - return target - - cdef void find_overlapping_leafs_recursive(self, list result, Dfloat *coords): - cdef: - _InnerRecord record - - if self.is_leaf: - result.append(self) - else: - for record in self.records: - if record.overlaps(coords): - record.child.find_overlapping_leafs_recursive(result, coords) - - cdef void addChild(self, _Node node): - cdef: - _InnerRecord ir - - node.parent = self - ir = _InnerRecord(node) - node.common_boundaries(ir.coords) - self.records.append(ir) - -cdef list find_overlapping_leafs_recursive(RTree rtree, Dfloat *coords): - cdef: - _Record rec - list result - - # don't know the whole surrounding rectangle of root, ask records for overlapping - for rec in rtree.root.records: - if rec.overlaps(coords): - break - else: - return [] - - result = list() - rtree.root.find_overlapping_leafs_recursive(result, coords) - return result - -# performs worse than the recursive one - so we skip it -#cdef list find_overlapping_leafs_linear(RTree rtree, Dfloat *coords): -# cdef: -# _Node node -# _InnerRecord ir -# list nodes_to_check, next_level_nodes -# unsigned level -# -# nodes_to_check = [rtree.root] -# next_level_nodes = [] -# level = 0 -# -# while level != rtree._leaf_level: -# while nodes_to_check: -# node = <_Node>nodes_to_check.pop() -# for ir in node.records: -# if (<_InnerRecord>ir).overlaps(coords): -# next_level_nodes.append((<_InnerRecord>ir).child) -# -# nodes_to_check = next_level_nodes -# next_level_nodes = [] -# level += 1 -# -# return nodes_to_check - -cdef int PickSeedsQuadratic(_Node node, list remaining, _Node newnode) except -1: - cdef: - Dfloat d, d_max, E1_E2[4] - Dfloat J, a_E1, a_E2 - _Record E1_ret, E2_ret - list combi - - init_Dfloat4(E1_E2) - - combi = [None, None] - d_max = -Dfloat_max - - for E1, E2 in itertools.combinations(remaining, 2): - - combi[0] = E1 - combi[1] = E2 - - common_boundaries(combi, E1_E2) - J = area(E1_E2) - a_E1 = area((<_Record>E1).coords) - a_E2 = area((<_Record>E2).coords) - d = J - a_E1 - a_E2 - - if d > d_max: - E1_ret = E1 - E2_ret = E2 - - remaining.remove(E1_ret) - remaining.remove(E2_ret) - - node.records = [E1_ret] - newnode.records = [E2_ret] - - return 0 - -#cdef int PickSeedsLinear(_Node node, list remaining, _Node newnode) except -1: -# # specification intended to have such a method, but -# # too complicated, since spec lets an unclear situation left: -# # the two seed nodes may be the same. the spec doen't say anything about how -# # to handle this situation... my guess 'take the next best one' would be too -# # rude. -# raise NotImplemented - -cdef class RTree(object): - '''RTree - structure for 2D-indexed items. - - @param interleaved: It True, all methods that accept coordinates expect it to be in format (x1, y1, x2, y2). - If False, coordinates are supposed to be (x1, x2, y1, y2) - Default: True - @param max_cap: Maximum of capacity of an index node. Default: 5 - @param min_cap: Minimum of entries an index node must hold. Default: 2 - ''' - cdef: - _Node root - Duint _leaf_level - Duint _node_cnt - int M_cap, m_cap - - list (*find_overlapping_leafs)(RTree rtree, Dfloat *coords) - int (*PickSeeds)(_Node node, list remaining, _Node newnode) except -1 - void (*tuple_to_array)(object t, Dfloat *coords) - tuple (*array_to_tuple)(Dfloat *coords) - - property min_cap: - def __get__(self): - return self.m_cap - - property max_cap: - def __get__(self): - return self.M_cap - - def __cinit__(self): - self.root = _Node(None) - self.root.is_leaf = True - self._leaf_level = 0 - self._node_cnt = 0 - - def __init__(self, interleaved=True, max_cap=5, min_cap=2): - if min_cap > max_cap/2.: - raise ValueError('for min/max capacities, it\'s required that min_cap <= max_cap/2.0') - - if interleaved: - self.tuple_to_array = tuple_to_array_interleaved - self.array_to_tuple = array_to_tuple_interleaved - else: - self.tuple_to_array = tuple_to_array_normal - self.array_to_tuple = array_to_tuple_normal - - # the iterative method performed worse - self.find_overlapping_leafs = find_overlapping_leafs_recursive - - self.PickSeeds = PickSeedsQuadratic - - self.M_cap = max_cap - self.m_cap = min_cap - - def __len__(self): - return self._node_cnt - - def __getitem__(self, item): - if isinstance(item, (list, tuple)): - if len(item) == 2: - return self.search_surrounding(item) - elif len(item) == 4: - return self.search(item) - raise AttributeError('indexing RTree only possible with rectangle or point (x, y)') - - def iterkeys(self): - return _KeysIter(self) - - def itervalues(self): - return _ValuesIter(self) - - def iteritems(self): - return _ItemsIter(self) - - def get_info(self): - return RTreeInfo(self) - - def insert(self, object key, object coords): - '''Insert an item. - - @param key: an object to insert, where all keys should be unique (regarding !=) - @param coords: 2D coordinates - ''' - - cdef: - _ChildRecord cr - _Node L - - if not isinstance(coords, (list, tuple)): - raise TypeError('coordinates as list or tuple expected, got %s' % coords.__class__) - if not len(coords) == 4: - raise TypeError('len(coords) must be 4, length is %d' % len(coords)) - - cr = _ChildRecord(key) - self.tuple_to_array(coords, cr.coords) - - L = self._ChooseLeaf(cr) - - self.insert_at_node(cr, L) - - self._node_cnt += 1 - - - def search(self, object coords): - '''Search overlapping items. - - @param coords: list or tuple of four values that make a rectangle - @return: a list of identifiers whose coordinates overlap with coords - ''' - cdef: - _Node node - _ChildRecord cr - Dfloat coords_a[4] - list leafnodes, result - - if not isinstance(coords, (list, tuple)): - raise TypeError('coordinates as list or tuple expected, got %s' % coords.__class__) - - if len(coords) != 4: - raise TypeError('len(coords) must be 4, len is %d' % len(coords)) - - self.tuple_to_array(coords, coords_a) - - leafnodes = self.find_overlapping_leafs(self, coords_a) - - result = [] - for node in leafnodes: - assert node.is_leaf - for cr in node.records: - if cr.overlaps(coords_a): - result.append(cr.identifier) - - return result - - def copy(self): - cdef: - RTree ret - - ret = RTree(max_cap=self.M_cap, min_cap=self.m_cap) - ret._leaf_level = self._leaf_level - ret._node_cnt = self._node_cnt - ret.root = self.root.copy(None) - return ret - - def search_surrounding(self, point): - '''Search items that surround a point. - - @param item: a point in form (x, y) - @return: a list of identifiers whose coordinates surround with point - ''' - cdef: - _Node node - _ChildRecord cr - Dfloat coords_a[4] - list leafnodes, result - - if not isinstance(point, (list, tuple)): - raise TypeError('coordinates as list or tuple expected, got %s' % point.__class__) - - if len(point) == 2: - point = 2 * point - else: - raise TypeError('len(point) must be 2, len is %d' % len(point)) - - self.tuple_to_array(point, coords_a) - - leafnodes = self.find_overlapping_leafs(self, coords_a) - - result = [] - for node in leafnodes: - assert node.is_leaf - for cr in node.records: - if cr.overlaps(coords_a): - result.append(cr.identifier) - - return result - - cdef inline int insert_at_node(self, _Record r, _Node L) except -1: - cdef: - _Node LL = None - - if self.is_full(L): - LL = self.SplitNode(L, r) - else: - L.records.append(r) - - L, LL = self._AdjustTree(L, LL) - - if LL != None: - self.root = _Node(None) - self.root.addChild(L) - self.root.addChild(LL) - self._leaf_level += 1 - - return 0 - - def remove(self, identifier, coords): - '''Delete an item - - @param identifier: the item that should be removed - @param coords: the coordinates of item - ''' - cdef: - _Node leaf - Dfloat coords_a[4] - - if not isinstance(coords, (list, tuple)): - raise TypeError('coordinates as list or tuple expected, got %s' % coords.__class__) - if not len(coords) == 4: - raise TypeError('len(coords) must be 4, len is %d' % len(coords)) - - self.tuple_to_array(coords, coords_a) - - leaf = self.FindLeaf_and_remove(identifier, coords_a) - - if leaf is None: - raise KeyError() - - self.after_remove(leaf) - - self._node_cnt -= 1 - - cdef inline void after_remove(self, _Node node): - self.CondenseTree(node) - if not self.root.is_leaf and len(self.root.records) == 1: - self.root = (<_InnerRecord>self.root.records.pop()).child - self._leaf_level -= 1 - - cdef inline _Node FindLeaf_and_remove(self, object identifier, Dfloat *coords): - # A bit different that in spec: we find overlapping leaf nodes with the - # method the user wants to find it (recursive or iterative). Spec only - # defines a recursive way. - # It also removes the item that should be removed. - cdef: - list leafs - _Node node - _ChildRecord rec - - leafs = self.find_overlapping_leafs(self, coords) - for node in leafs: - assert node.is_leaf - for rec in node.records: - if rec.identifier == identifier and rec.overlaps(coords): - node.records.remove(rec) # D2 - return node - - return None - - cdef inline int CondenseTree(self, _Node node) except -1: - cdef: - _Node P, N - _InnerRecord EN - _Record rec - _InnerRecord ir - _ChildRecord crec - list removed_childrecords, removed_innerrecords, reclist - - removed_innerrecords = list() - - N = node - while not N is self.root: - - P = N.parent - EN = parent_record(N) - - if len(N.records) < self.m_cap: - assert EN is not None, str(N.is_leaf) - - P.records.remove(EN) - if N.is_leaf: - assert removed_childrecords is None - removed_childrecords = N.records - else: - removed_innerrecords.extend(N.records) - - else: - common_boundaries(N.records, EN.coords) - - N = P - - - for ir in removed_innerrecords: - node = self.find_inner_node(ir) - ir.child.parent = node - self.insert_at_node(ir, node) - - if removed_childrecords is not None: - for crec in removed_childrecords: - node = self._ChooseLeaf(crec) - self.insert_at_node(crec, node) - - return 0 - - cdef _Node find_inner_node(self, _InnerRecord record): - cdef: - _Node node - _InnerRecord rec - Duint subtree_len, level_reverse - - subtree_len = self.subtree_len(record) - level_reverse = self._leaf_level - - node = self.root - - while level_reverse != subtree_len: - rec = node.choose_subtree_least_enlargement(record) - node = rec.child - level_reverse -= 1 - - return node - - - cdef Duint subtree_len(self, _InnerRecord rec): - cdef: - _Node node - Duint slen - - slen = 1 - - node = rec.child - while not node.is_leaf: - assert node.records - node = (<_InnerRecord>node.records[0]).child - slen += 1 - - return slen - - - cdef inline bint is_full(self, _Node node): - return len(node.records) == self.M_cap - - cdef inline _Node _ChooseLeaf(self, _Record ir): - cdef: - _Node N - _InnerRecord F - - N = self.root - while True: - if N.is_leaf: - break - r = N.choose_subtree_least_enlargement(ir) - N = (<_InnerRecord>r).child - return N - - cdef inline tuple _AdjustTree(self, _Node L, _Node LL): - cdef: - _Node N, NN, P - _Record EN, e - - N = L - NN = LL - - while N != self.root: - P = N.parent - - # search for the entry in parent of N that holds N - EN = parent_record(N) - - assert EN != None, 'no parent entry holds the child' - - N.common_boundaries(EN.coords) - - if NN != None: - ENN = _InnerRecord(NN) - NN.common_boundaries(ENN.coords) - if not self.is_full(P): - P.records.append(ENN) - NN = None - else: - NN = self.SplitNode(P, ENN) - - N = P - - return (N, NN) - - cdef _Node SplitNode(self, _Node node, _Record ir): - cdef: - list remaining - _Node newnode - unsigned remaining_count - _InnerRecord r - - remaining = node.records - remaining.append(ir) - node.records = list() - - newnode = _Node(node.parent) - - self.PickSeeds(node, remaining, newnode) - - remaining_count = len(remaining) - while remaining_count > 0: - if len(node.records) + remaining_count - 1 < self.m_cap: - node.records.extend(remaining) - break - if len(newnode.records) + remaining_count - 1 < self.m_cap: - newnode.records.extend(remaining) - break - - self.PickNext(node, remaining, newnode) - remaining_count -= 1 - - if node.is_leaf: - newnode.is_leaf = True - else: - # child records are inner records - re-set parent of them to newnode - for r in newnode.records: - r.child.parent = newnode - - return newnode - - cdef inline int PickNext(self, _Node node, list remaining, _Node newnode) except -1: - cdef: - Dfloat area_group_L, area_group_LL - Dfloat d1_next, d2_next # for QS3 decision - Dfloat d1, d2, d_diff, d_diff_max - Dfloat coords[4] - _Record E_next, E, r - - area_group_L = 0 - area_group_LL = 0 - d1_next = 0 - d2_next = 0 - init_Dfloat4(coords) - - if len(remaining) == 1: - E_next = remaining.pop() - else: - for r in node.records: - area_group_L += area(r.coords) - - for r in newnode.records: - area_group_LL += area(r.coords) - - d_diff_max = -Dfloat_min - - node.records.append(None) - newnode.records.append(None) - - for E in remaining: - - # temporary add E to self.records / newnode.records as parameter for common_boundires() - # -> don't init a new list of records - node.records[-1] = E - newnode.records[-1] = E - - common_boundaries(node.records, coords) - d1 = area(coords) - area_group_L - - common_boundaries(newnode.records, coords) - d2 = area(coords) - area_group_LL - - d_diff = d1 - d2 - d_diff = d_diff if d_diff >= 0 else -d_diff # abs diff - - if d_diff > d_diff_max: - d_diff_max = d_diff - E_next = E - - d1_next = d1 - d2_next = d2 - - node.records.pop() - newnode.records.pop() - - remaining.remove(E_next) - - # QS3 - if d1_next < d2_next: - node.records.append(E_next) - elif d1_next > d2_next: - newnode.records.append(E_next) - elif len(node.records) > len(newnode.records): - newnode.records.append(E_next) - else: - node.records.append(E_next) - - - def valid(self): - # numbers in comments refer to invariant properties of an RTree - taken from [Gut84] - cdef: - Dfloat tmp_coords[4] - _Node node, n - Duint depth, item_count - - nodedepht = None - item_count = 0 - leafnodes_and_depth = [] - - for depth, node in _NodeIter(self): - if node.is_leaf: - for rec in node.records: - assert isinstance(rec, _ChildRecord), depth - - # (1) - if not (node is self.root or len(node.records) <= self.M_cap and len(node.records) >= self.m_cap): - raise RTreeInvalid('non-leaf node has invalid number of entries: %d <= len(%s) <= %d == False' % (self.m_cap, str(node), self.m_cap)) - - # (2) - # Always True since I _IS_ the N-dimensional representation of the data object. - - # prepare (6) - if nodedepht is None: - nodedepht = depth - leafnodes_and_depth.append((depth, node)) - - item_count += len(node.records) - - # height is right - if self._leaf_level != depth: - raise RTreeInvalid('inconsistent node depth: %d != %d' % (self._leaf_level, depth)) - - else: - # (3) - if not node is self.root: - if not (len(node.records) <= self.M_cap and len(node.records) >= self.m_cap): - raise RTreeInvalid('non-leaf node has invalid number of entries: %d <= len(%s) <= %d == False' % (self.m_cap, str(node), self.m_cap)) - - # (4) - for rec in node.records: - if not isinstance(rec, _InnerRecord) or \ - not isinstance((<_InnerRecord>rec).child, _Node): - raise RTreeInvalid('misspositioned inner node') - - common_boundaries((<_InnerRecord>rec).child.records, tmp_coords) - - if area((<_Record>rec).coords) != area(tmp_coords): - raise RTreeInvalid('wrong combined area of records of a node') - - # double-links cover each other - for ir in node.records: - if not (<_InnerRecord>ir).child.parent is node: - raise RTreeInvalid('double-link doesn\'t cover itself') - - # (5) - if not self.root.is_leaf: - - if len(self.root.records) < 2: - raise RTreeInvalid('root must have at least 2 records, not %d.' % len(self.root.records)) - - # (6) - for d, leaf in leafnodes_and_depth: - if d != nodedepht: - raise RTreeInvalid('leaf level is not equal for all leafs') - - # count of items is right - if item_count != self._node_cnt: - raise RTreeInvalid('inconsistent item count %d != %d' % (item_count, self._node_cnt)) - - return True - -############################################################################### -#--- Iterators and RTree Info -############################################################################### - -cdef class _Iterator: - cdef RTree rtree - - def __cinit__(self, RTree rtree): - self.rtree = rtree - - def __iter__(self): - return self - -cdef class _NodeIter(_Iterator): - cdef: - list nodeset - - def __cinit__(self, RTree rtree): - if rtree.root: - self.nodeset = [(0, rtree.root)] - else: - self.nodeset = [] - - def __next__(self): - cdef: - _Node next - Duint level - - try: - level, next = <_Node>self.nodeset.pop(0) - except IndexError: - raise StopIteration - - if not next.is_leaf: - self.nodeset = [ (level+1, (<_InnerRecord>r).child) for r in next.records ] + self.nodeset - - return level, next - -cdef class _RectangleIter(_Iterator): - cdef: - _NodeIter ni - list leafrecords - int l_level - - def __cinit__(self, RTree rtree): - self.ni = _NodeIter(rtree) - - def __next__(self): - cdef: - _Node nextnode - Dfloat coords[4] - int level - - if self.leafrecords: - rec = self.leafrecords.pop() - return (self.l_level, self.rtree.array_to_tuple((<_ChildRecord>rec).coords) ) - - level, nextnode = self.ni.next() - - if nextnode.is_leaf: - self.leafrecords = list(nextnode.records) - self.l_level = level+1 - - common_boundaries(nextnode.records, coords) - return (level, self.rtree.array_to_tuple(coords)) - - -cdef class _ChildRecordIter(_Iterator): - cdef: - list nodeset, current_crs - object (*returner)(_ChildRecordIter this, _ChildRecord cr) - - def __cinit__(self, RTree rtree): - if rtree.root: - self.nodeset = [rtree.root] - else: - self.nodeset = [] - self.current_crs = [] - - def __next__(self): - cdef: - _Node node - _ChildRecord cr - - if not self.current_crs: - try: - node = self.nodeset.pop(0) - except IndexError: - raise StopIteration - - while not node.is_leaf: - self.nodeset = [ (<_InnerRecord>r).child for r in node.records ] + self.nodeset - try: - node = self.nodeset.pop(0) - except IndexError: - raise StopIteration - - self.current_crs.extend(node.records) - - try: - return self.current_crs.pop(0) - except IndexError: - # should not happen - raise StopIteration - - -cdef class _KVIIter(_Iterator): - cdef: - _ChildRecordIter cri - - def __cinit__(self, RTree rtree): - self.cri = _ChildRecordIter(rtree) - -cdef class _KeysIter(_KVIIter): - def __next__(self): - return self.rtree.array_to_tuple((<_ChildRecord>self.cri.next()).coords) - -cdef class _ValuesIter(_KVIIter): - def __next__(self): - return (<_ChildRecord>self.cri.next()).identifier - -cdef class _ItemsIter(_KVIIter): - def __next__(self): - cdef _ChildRecord cr - cr = self.cri.next() - return ( self.rtree.array_to_tuple(cr.coords), cr.identifier ) - - -cdef class RTreeInfo: - '''Provides some meta-info about an existing RTree - - @param rtree: an RTree object - ''' - cdef: - RTree rtree - - property levels: - def __get__(self): - return self.rtree._leaf_level + 1 # count leaf rectangles, too - - def __init__(self, RTree rtree): - self.rtree = rtree - - def iter_rectangles(self): - '''Iterate over key coordinates and combined frames. - - Combined frames are 2D-indexes under which rectangle entries are stored. - The iterator returns a tuple (level, coordinates) where level is the - level of the index node or entry in the tree structure. - ''' - return _RectangleIter(self.rtree) - - property common_boundary: - def __get__(self): - cdef: - Dfloat coords[4] - if not self.rtree.root: - return 0 - common_boundaries(self.rtree.root.records, coords) - return self.rtree.array_to_tuple(coords) - - property width: - def __get__(self): - cdef: - Dfloat coords[4] - if not self.rtree.root: - return 0 - common_boundaries(self.rtree.root.records, coords) - return coords[2]-coords[0] - - property height: - def __get__(self): - cdef: - Dfloat coords[4] - if not self.rtree.root: - return 0 - common_boundaries(self.rtree.root.records, coords) - return coords[3]-coords[1] - - def to_dot(self, filelike): - '''Writes simple dot-code into filelike that represents the tree structure.''' - cdef: - _Node node - _InnerRecord ir - _ChildRecord cr - int level - unsigned nid, rid, chid, lid - list node_record_leaf, node_record_child - - filelike.write('digraph RTree {\n node [shape=\"none\"]; \n') - - node_record_leaf = list() - node_record_child = list() - - for level, node in _NodeIter(self.rtree): - if node.is_leaf: - for cr in node.records: - node_record_leaf.append((id(node), id(cr), id(cr.identifier))) - - else: - for ir in node.records: - node_record_child.append((id(node), id(ir), id(ir.child))) - - filelike.write(' %d [label=<' % (id(node))) - for record in node.records: - filelike.write('' % (id(record), id(record))) - filelike.write('
%d
>];\n') - - filelike.write('\n node [shape=\"ellipse\"]; \n') - for nid, rid, lid in node_record_leaf: - filelike.write(' %d;\n' % lid) - - filelike.write('\n') - - for nid, rid, chid in node_record_child: - filelike.write(' %d->%d [tailport=\"%d:s\"]\n' % ( nid, chid, rid )) - - filelike.write('\n') - - for nid, rid, lid in node_record_leaf: - filelike.write(' %d->%d [tailport=\"%d:s\"]\n' % ( nid, lid, rid )) - - filelike.write('}') - - - - - diff --git a/pyflowline/mesh/dggrid/create_dggrid_mesh.py b/pyflowline/mesh/dggrid/create_dggrid_mesh.py index c4c8fed6..c422d242 100644 --- a/pyflowline/mesh/dggrid/create_dggrid_mesh.py +++ b/pyflowline/mesh/dggrid/create_dggrid_mesh.py @@ -18,17 +18,17 @@ #setup common resolution aISEA3H = [4320.490, 2539.690, - 1480.02, + 1480.02, 855.419, 494.959, 285.6520, - 165.058, - 95.2636, - 55.0226, - 31.7596, + 165.058, + 95.2636, + 55.0226, + 31.7596, 18.341, - 10.5871, - 6.11367, + 10.5871, + 6.11367, 3.52911] aISEA4H = [3764.92, @@ -36,11 +36,11 @@ 961.978, 481.7710, 241.0470, - 120.56, - 60.2893, - 30.147, - 15.0741, - 7.53719, + 120.56, + 60.2893, + 30.147, + 15.0741, + 7.53719, 3.76863] def generate_bash_script(sWorkspace_output): @@ -98,7 +98,7 @@ def find_number_range(number, aArray): for i in range(nPoint): if aArray[i] <= number <= aArray[i+1]: return i # Return the index of the range where the number falls - return -1 + return -1 def dggrid_find_index_by_resolution(sDggrid_type, dResolution): @@ -118,7 +118,7 @@ def dggrid_find_index_by_resolution(sDggrid_type, dResolution): def dggrid_find_resolution_by_index(sDggrid_type, iResolution_index): if sDggrid_type == 'ISEA3H': - + dResolution = aISEA3H[iResolution_index-1 ] * 1000 pass else: @@ -131,7 +131,7 @@ def dggrid_find_resolution_by_index(sDggrid_type, iResolution_index): def convert_dggrid_mesh_to_pyflowline_mesh(sFilename_dggrid_mesh, sFilename_mesh_pyflowline, iFlag_global_in = None): - + iReturn_code = 1 if os.path.isfile(sFilename_dggrid_mesh): print(sFilename_dggrid_mesh) @@ -140,12 +140,12 @@ def convert_dggrid_mesh_to_pyflowline_mesh(sFilename_dggrid_mesh, sFilename_mesh print('This mesh file does not exist: ', sFilename_dggrid_mesh ) iReturn_code = 0 return iReturn_code - + if iFlag_global_in is not None: iFlag_global = iFlag_global_in else: iFlag_global = 0 - + if os.path.isfile(sFilename_mesh_pyflowline): print('This mesh file already exists: ', sFilename_mesh_pyflowline ) os.remove(sFilename_mesh_pyflowline) @@ -153,14 +153,14 @@ def convert_dggrid_mesh_to_pyflowline_mesh(sFilename_dggrid_mesh, sFilename_mesh aDggrid=list() aDggrid_dict = dict() lCellIndex = 0 - pDriver_geojson = ogr.GetDriverByName('GeoJSON') + pDriver_geojson = ogr.GetDriverByName('GeoJSON') pDataset_mesh = pDriver_geojson.Open(sFilename_dggrid_mesh, gdal.GA_ReadOnly) pLayer_mesh = pDataset_mesh.GetLayer(0) pSpatial_reference_out = pLayer_mesh.GetSpatialRef() ldefn = pLayer_mesh.GetLayerDefn() - pSpatial_reference_gcs = osr.SpatialReference() - pSpatial_reference_gcs.ImportFromEPSG(4326) # WGS84 lat/lon + pSpatial_reference_gcs = osr.SpatialReference() + pSpatial_reference_gcs.ImportFromEPSG(4326) # WGS84 lat/lon pDataset = pDriver_geojson.CreateDataSource(sFilename_mesh_pyflowline) pLayer = pDataset.CreateLayer('cell', pSpatial_reference_gcs, ogr.wkbPolygon) # Add one attribute @@ -172,40 +172,40 @@ def convert_dggrid_mesh_to_pyflowline_mesh(sFilename_dggrid_mesh, sFilename_mesh pArea_field.SetPrecision(2) pLayer.CreateField(pArea_field) pLayerDefn = pLayer.GetLayerDefn() - pFeature = ogr.Feature(pLayerDefn) - + pFeature = ogr.Feature(pLayerDefn) + #we also need to spatial reference for pFeature_mesh in pLayer_mesh: - pGeometry_mesh = pFeature_mesh.GetGeometryRef() - aCoords_gcs = get_geometry_coordinates(pGeometry_mesh) + pGeometry_mesh = pFeature_mesh.GetGeometryRef() + aCoords_gcs = get_geometry_coordinates(pGeometry_mesh) dLongitude_center = np.mean(aCoords_gcs[:-1,0]) - dLatitude_center = np.mean(aCoords_gcs[:-1,1]) + dLatitude_center = np.mean(aCoords_gcs[:-1,1]) lCellID = int(pFeature_mesh.GetField("name") ) - pdggrid = convert_gcs_coordinates_to_cell(5, dLongitude_center, dLatitude_center, aCoords_gcs) + pdggrid = convert_gcs_coordinates_to_cell(5, dLongitude_center, dLatitude_center, aCoords_gcs) dArea = pdggrid.calculate_cell_area() pdggrid.calculate_edge_length() pdggrid.dLength_flowline = pdggrid.dLength #Default - pdggrid.lCellID = lCellID - aNeighbor = pFeature_mesh.GetField("neighbors") + pdggrid.lCellID = lCellID + aNeighbor = pFeature_mesh.GetField("neighbors") pdggrid.nNeighbor = len(aNeighbor) pdggrid.aNeighbor = list() for i in range(len(aNeighbor)): - pdggrid.aNeighbor.append( int(aNeighbor[i]) ) + pdggrid.aNeighbor.append( int(aNeighbor[i]) ) aDggrid.append(pdggrid) aDggrid_dict[lCellID] = lCellIndex lCellIndex = lCellIndex + 1 - nVertex = pdggrid.nVertex - ring = ogr.Geometry(ogr.wkbLinearRing) + nVertex = pdggrid.nVertex + ring = ogr.Geometry(ogr.wkbLinearRing) for j in range(nVertex): x1 = pdggrid.aVertex[j].dLongitude_degree y1 = pdggrid.aVertex[j].dLatitude_degree - ring.AddPoint(x1, y1) + ring.AddPoint(x1, y1) pass x1 = pdggrid.aVertex[0].dLongitude_degree y1 = pdggrid.aVertex[0].dLatitude_degree - ring.AddPoint(x1, y1) #double check + ring.AddPoint(x1, y1) #double check pPolygon = ogr.Geometry(ogr.wkbPolygon) pPolygon.AddGeometry(ring) pFeature.SetGeometry(pPolygon) @@ -213,18 +213,18 @@ def convert_dggrid_mesh_to_pyflowline_mesh(sFilename_dggrid_mesh, sFilename_mesh pFeature.SetField("longitude", dLongitude_center ) pFeature.SetField("latitude", dLatitude_center ) pFeature.SetField("area", dArea ) - + pLayer.CreateFeature(pFeature) - #rebuild neighbor list - aDggrid_middle = list() - for pCell in aDggrid: - aNeighbor = pCell.aNeighbor - aNeighbor_new = list() - for lNeighbor in aNeighbor: - if lNeighbor in aDggrid_dict: + #rebuild neighbor list + aDggrid_middle = list() + for pCell in aDggrid: + aNeighbor = pCell.aNeighbor + aNeighbor_new = list() + for lNeighbor in aNeighbor: + if lNeighbor in aDggrid_dict: aNeighbor_new.append(lNeighbor) - + pCell.aNeighbor = aNeighbor_new pCell.nNeighbor = len(aNeighbor_new) pCell.nNeighbor_land= len(aNeighbor_new) @@ -238,15 +238,15 @@ def convert_dggrid_mesh_to_pyflowline_mesh(sFilename_dggrid_mesh, sFilename_mesh pDggrid.aNeighbor_distance=list() for lCellID1 in aNeighbor: lIndex = aDggrid_dict[lCellID1] - pDggrid1 = aDggrid_middle[lIndex] + pDggrid1 = aDggrid_middle[lIndex] dDistance = pDggrid.pVertex_center.calculate_distance( pDggrid1.pVertex_center ) pDggrid.aNeighbor_distance.append(dDistance) - - pDataset = pLayer = pFeature = None + + pDataset = pLayer = pFeature = None #currently we do not fill the holes in dggrid, it is recommended to modify the input data directly. - + return aDggrid_middle def create_dggrid_mesh(iFlag_global, @@ -256,10 +256,11 @@ def create_dggrid_mesh(iFlag_global, iResolution_index_in = None, sDggrid_type_in= None, iFlag_antarctic_in=None, + iFlag_arctic_in=None, sFilename_boundary_in = None ): - #use dggrid table to determine the resolution index - sFilename_cell = sWorkspace_output + slash + 'cells' + #use dggrid table to determine the resolution index + sFilename_cell = sWorkspace_output + slash + 'cells' if iResolution_index_in is not None: iResolution_index = iResolution_index_in @@ -271,9 +272,9 @@ def create_dggrid_mesh(iFlag_global, else: sDggrid_type = 'ISEA3H' #default - dResolution= dggrid_find_resolution_by_index(sDggrid_type, iResolution_index) + dResolution= dggrid_find_resolution_by_index(sDggrid_type, iResolution_index) print('Resolution is: ', dResolution) - # + # sResolution = "{:0d}".format( iResolution_index ) if sFilename_boundary_in is not None: @@ -286,11 +287,11 @@ def create_dggrid_mesh(iFlag_global, iFlag_global = 1 else: - iFlag_crop = 0 + iFlag_crop = 0 - iFlag_mode = 1 + iFlag_mode = 1 - if iFlag_mode == 1: #call the binary directly + if iFlag_mode == 1: #call the binary directly #write configuration sFilename_config= sWorkspace_output + slash + 'dggrid.ini' ofs = open(sFilename_config, 'w') @@ -321,8 +322,8 @@ def create_dggrid_mesh(iFlag_global, sLine = 'max_cells_per_output_file 0' + '\n' ofs.write(sLine) sLine = 'neighbor_output_type GDAL_COLLECTION' + '\n' - ofs.write(sLine) - + ofs.write(sLine) + ofs.close() #writen normal run script generate_bash_script(sWorkspace_output) @@ -333,10 +334,10 @@ def create_dggrid_mesh(iFlag_global, p.wait() #convert the pyflowline mesh format - + aDggrid = convert_dggrid_mesh_to_pyflowline_mesh(sFilename_cell, sFilename_mesh, iFlag_global_in = iFlag_global) - + return aDggrid if __name__ == '__main__': diff --git a/pyflowline/mesh/mpas/create_mpas_mesh.py b/pyflowline/mesh/mpas/create_mpas_mesh.py index 8bb34d28..ed8ad6b4 100644 --- a/pyflowline/mesh/mpas/create_mpas_mesh.py +++ b/pyflowline/mesh/mpas/create_mpas_mesh.py @@ -4,20 +4,25 @@ import numpy as np from osgeo import ogr, osr, gdal from pyflowline.formats.convert_attributes import convert_gcs_attributes_to_cell -gdal.UseExceptions() -iFlag_cython = importlib.util.find_spec("cython") +from pyflowline.algorithms.potentiometric.calculate_potentiometric import calculate_potentiometric +gdal.UseExceptions() + +iFlag_cython = importlib.util.find_spec("cython") + + if iFlag_cython is not None: from pyflowline.algorithms.cython.kernel import convert_360_to_180 else: from pyearth.gis.geometry.convert_longitude_range import convert_360_to_180 -def create_mpas_mesh(iFlag_global_in, - iFlag_use_mesh_dem, - iFlag_save_mesh_in, - sFilename_mesh_netcdf_in, +def create_mpas_mesh(iFlag_global_in, + iFlag_use_mesh_dem, + iFlag_save_mesh_in, + sFilename_mesh_netcdf_in, sFilename_output_in, iFlag_antarctic_in=None, - pBoundary_in = None): + iFlag_arctic_in=None, + pBoundary_in = None): """ Create a MPAS mesh @@ -39,6 +44,11 @@ def create_mpas_mesh(iFlag_global_in, else: iFlag_antarctic=iFlag_antarctic_in + if iFlag_arctic_in is None: + iFlag_arctic=0 + else: + iFlag_arctic=iFlag_arctic_in + if pBoundary_in is None: pBoundary = None else: @@ -46,24 +56,26 @@ def create_mpas_mesh(iFlag_global_in, #https://gdal.org/api/python_gotchas.html pBoundary = ogr.CreateGeometryFromWkt(pBoundary_in) #pBoundary = pBoundary_in #only works for shapely geometry object - + if (os.path.exists(sFilename_mesh_netcdf_in)): pass else: print('Mesh file does not exist!') return - - if os.path.exists(sFilename_output_in): + + if os.path.exists(sFilename_output_in): os.remove(sFilename_output_in) - + iFlag_elevation_profile=0 + iFlag_bed_elevation=0 + iFlag_ice_thickness=0 pDatasets_in = nc.Dataset(sFilename_mesh_netcdf_in) netcdf_format = pDatasets_in.file_format - pDriver_geojson = ogr.GetDriverByName('GeoJSON') - pSpatial_reference_gcs = osr.SpatialReference() - pSpatial_reference_gcs.ImportFromEPSG(4326) # WGS84 lat/lon + pDriver_geojson = ogr.GetDriverByName('GeoJSON') + pSpatial_reference_gcs = osr.SpatialReference() + pSpatial_reference_gcs.ImportFromEPSG(4326) # WGS84 lat/lon #geojson if iFlag_save_mesh_in ==1: pDataset = pDriver_geojson.CreateDataSource(sFilename_output_in) @@ -81,121 +93,127 @@ def create_mpas_mesh(iFlag_global_in, pLayer.CreateField(ogr.FieldDefn('elevation_profile0', ogr.OFTReal)) #float type for high resolution else: pass - + pLayerDefn = pLayer.GetLayerDefn() - pFeature = ogr.Feature(pLayerDefn) + pFeature = ogr.Feature(pLayerDefn) #read new netcdf - for sKey, aValue in pDatasets_in.variables.items(): + for sKey, aValue in pDatasets_in.variables.items(): #we need to filter out unused grids based on mpas specs if sKey == 'latCell': latCell0 = aValue else: pass if sKey == 'lonCell': - lonCell0 = aValue + lonCell0 = aValue else: pass - + if sKey == 'edgesOnCell': - edgesOnCell0 = aValue + edgesOnCell0 = aValue else: pass - + if sKey == 'cellsOnCell': - cellsOnCell0 = aValue + cellsOnCell0 = aValue else: pass if sKey == 'cellsOnEdge': - cellsOnEdge0 = aValue + cellsOnEdge0 = aValue else: pass - + if sKey == 'verticesOnCell': verticesOnCell0 = aValue else: pass - + if sKey == 'verticesOnEdge': - verticesOnEdge0 = aValue + verticesOnEdge0 = aValue else: pass if sKey == 'indexToCellID': - indexToCellID0 = aValue + indexToCellID0 = aValue else: pass if sKey == 'indexToEdgeID': - indexToEdgeID0 = aValue + indexToEdgeID0 = aValue else: pass if sKey == 'indexToVertexID': - indexToVertexID0 = aValue + indexToVertexID0 = aValue else: pass if sKey == 'lonVertex': - lonVertex0 = aValue + lonVertex0 = aValue else: pass if sKey == 'latVertex': - latVertex0 = aValue + latVertex0 = aValue else: pass if sKey == 'areaCell': - areaCell0 = aValue + areaCell0 = aValue else: pass if sKey == 'bed_elevation': - bed_elevation0 = aValue + bed_elevation0 = aValue + iFlag_bed_elevation = 1 else: pass if sKey == 'ice_thickness': - ice_thickness0 = aValue + ice_thickness0 = aValue + iFlag_ice_thickness = 1 else: pass if sKey == 'areaCell': - areaCell0 = aValue + areaCell0 = aValue else: pass if sKey == 'dcEdge': - dcEdge0 = aValue + dcEdge0 = aValue else: pass if sKey == 'bed_elevation_profile': - bed_elevation_profile0 = aValue + iFlag_elevation_profile = 1 + bed_elevation_profile0 = aValue else: - pass + pass aLatitudeVertex = latVertex0[:] / math.pi * 180 - aLongitudeVertex = lonVertex0[:] / math.pi * 180 - #convert unit + aLongitudeVertex = lonVertex0[:] / math.pi * 180 + #convert unit aLatitudeCell = latCell0[:] / math.pi * 180 aLongitudeCell = lonCell0[:] / math.pi * 180 aCellsOnCell = cellsOnCell0[:] aCellOnEdge = cellsOnEdge0[:] aEdgesOnCell = edgesOnCell0[:] aVertexOnCell = verticesOnCell0[:] - aVertexOnEdge0 = verticesOnEdge0[:] + aVertexOnEdge0 = verticesOnEdge0[:] aIndexToCellID = indexToCellID0[:] #aIndexToEdgeID = indexToEdgeID0[:] #aIndexToVertexID = indexToVertexID0[:] - aBed_elevation = bed_elevation0[:] - aIce_thickness = ice_thickness0[:] + if iFlag_bed_elevation == 1: + aBed_elevation = bed_elevation0[:] + if iFlag_ice_thickness == 1: + aIce_thickness = ice_thickness0[:] aCellArea = areaCell0[:] aDcEdge = dcEdge0[:] - aBed_elevation_profile = bed_elevation_profile0[:] #elevation - ncell = len(aIndexToCellID) + if iFlag_elevation_profile == 1: + aBed_elevation_profile = bed_elevation_profile0[:] #elevation + ncell = len(aIndexToCellID) aMpas = list() aMpas_dict = dict() lCellIndex=0 @@ -203,9 +221,9 @@ def create_mpas_mesh(iFlag_global_in, #add a mpas cell into a list def add_cell_into_list(aList, i, lCellID, dArea, dElevation_mean, dElevation_profile0, aCoords ): dLon = convert_360_to_180 (aLongitudeCell[i]) - dLat = (aLatitudeCell[i]) - if dLon > 100: - print('Warning: longitude > 100') + dLat = (aLatitudeCell[i]) + if dLon > 180: + print('Warning: longitude > 180') #vertex aCellOnCellIndex = np.array(aCellsOnCell[i,:]) aEdgesOnCellIndex = np.array(aEdgesOnCell[i,:]) @@ -217,8 +235,8 @@ def add_cell_into_list(aList, i, lCellID, dArea, dElevation_mean, dElevation_pro dummy2 = np.where(aCellOnCellIndex > 0) aNeighborIndex= (aCellOnCellIndex[dummy2]).astype(int) aVertexIndexOnEdge = np.array(aVertexOnEdge0[aEdgeIndex-1,:]).astype((int)) - - pmpas = convert_gcs_attributes_to_cell(4, dLon, dLat, aCoords, aVertexIndex, aEdgeIndex, aVertexIndexOnEdge) + + pmpas = convert_gcs_attributes_to_cell(4, dLon, dLat, aCoords, aVertexIndex, aEdgeIndex, aVertexIndexOnEdge) pmpas.dArea = dArea pmpas.calculate_edge_length() pmpas.dLength_flowline = pmpas.dLength_edge #Default @@ -228,17 +246,17 @@ def add_cell_into_list(aList, i, lCellID, dArea, dElevation_mean, dElevation_pro #now setup the neighbor information pmpas.aNeighbor=aNeighborIndex pmpas.nNeighbor=len(aNeighborIndex) - if pmpas.nNeighbor != pmpas.nVertex: #this cell is next to the ocean boundary - pmpas.nNeighbor_land = pmpas.nNeighbor + if pmpas.nNeighbor != pmpas.nVertex: #this cell is next to the ocean boundary + pmpas.nNeighbor_land = pmpas.nNeighbor pmpas.nNeighbor_ocean = pmpas.nVertex - pmpas.nNeighbor pmpas.aNeighbor_land=aNeighborIndex pmpas.nNeighbor_land=len(aNeighborIndex) print(lCellID) print('Warning: nNeighbor != nVertex') else: #this cell is not at the the land-ocean mask coastal line - pmpas.nNeighbor_land = pmpas.nNeighbor + pmpas.nNeighbor_land = pmpas.nNeighbor pmpas.nNeighbor_ocean = 0 - pmpas.aNeighbor_land = aNeighborIndex + pmpas.aNeighbor_land = aNeighborIndex pmpas.nNeighbor_land=len(aNeighborIndex) aDistance=list() @@ -251,18 +269,18 @@ def add_cell_into_list(aList, i, lCellID, dArea, dElevation_mean, dElevation_pro pass #this contains all the original mpas neighbor distance - pmpas.aNeighbor_distance = aDistance + pmpas.aNeighbor_distance = aDistance aList.append(pmpas) return aList - if iFlag_antarctic == 1: + if iFlag_antarctic == 1: #use potentiometric iFlag_remove_ice = 0 #if it is antarctic, we dont need the boundary for i in range(ncell): #center dLon = convert_360_to_180 (aLongitudeCell[i]) dLat = (aLatitudeCell[i]) - + aVertexOnCellIndex = np.array(aVertexOnCell[i,:]) dummy0 = np.where(aVertexOnCellIndex > 0) aVertexIndex = aVertexOnCellIndex[dummy0] @@ -275,7 +293,7 @@ def add_cell_into_list(aList, i, lCellID, dArea, dElevation_mean, dElevation_pro aCoords = np.full((nVertex,2), -9999.0, dtype=float) for j in range(nVertex): x1 = convert_360_to_180(aLonVertex[j]) - y1 = aLatVertex[j] + y1 = aLatVertex[j] ring.AddPoint(x1, y1) aCoords[j,0] = x1 aCoords[j,1] = y1 @@ -283,38 +301,45 @@ def add_cell_into_list(aList, i, lCellID, dArea, dElevation_mean, dElevation_pro x1 = convert_360_to_180(aLonVertex[0]) y1 = aLatVertex[0] - ring.AddPoint(x1, y1) #double check + ring.AddPoint(x1, y1) #double check pPolygon = ogr.Geometry(ogr.wkbPolygon) pPolygon.AddGeometry(ring) if dLat < -60: iFlag = True - else: + else: iFlag = False pass if ( iFlag == True ): lCellID = int(aIndexToCellID[i]) - dElevation_mean = float(aBed_elevation[i]) - dElevation_profile0 = float(aBed_elevation_profile[i,0]) - dThickness_ice = float( aIce_thickness[i] ) + if iFlag_bed_elevation == 1: + dElevation_mean = float(aBed_elevation[i]) + else: + dElevation_mean = -9999 + if iFlag_elevation_profile == 1: + dElevation_profile0 = float(aBed_elevation_profile[i,0]) + else: + dElevation_profile0 = -9999 + if iFlag_ice_thickness == 1: + dThickness_ice = float( aIce_thickness[i] ) + else: + dThickness_ice = -9999 dArea = float(aCellArea[i]) #then check if it is ice free - if iFlag_remove_ice == 1: - if dThickness_ice > 0 : - continue - else: - pass - else: - pass + + if dThickness_ice > 0 : + #use potentiometric + dElevation_mean = calculate_potentiometric(dElevation_mean , dThickness_ice) + dElevation_profile0 = calculate_potentiometric(dElevation_profile0 , dThickness_ice) #call fuction to add the cell aMpas = add_cell_into_list(aMpas, i, lCellID, dArea, dElevation_mean, dElevation_profile0, aCoords ) aMpas_dict[lCellID] = lCellIndex lCellIndex = lCellIndex + 1 #save mesh cell - if iFlag_save_mesh_in ==1: + if iFlag_save_mesh_in ==1: pFeature.SetGeometry(pPolygon) pFeature.SetField("cellid", int(lCellID) ) pFeature.SetField("longitude", dLon ) @@ -325,134 +350,212 @@ def add_cell_into_list(aList, i, lCellID, dArea, dElevation_mean, dElevation_pro pFeature.SetField("elevation_profile0", dElevation_profile0 ) pLayer.CreateFeature(pFeature) - else: - iFlag_remove_ice = 1 - for i in range(ncell): - #vertex - aVertexOnCellIndex = np.array(aVertexOnCell[i,:]) - dummy0 = np.where(aVertexOnCellIndex > 0) - aVertexIndex = aVertexOnCellIndex[dummy0] - aLonVertex = aLongitudeVertex[aVertexIndex-1] - aLatVertex = aLatitudeVertex[aVertexIndex-1] - nVertex = len(aLonVertex) - #first check if it is within the boundary - - ring = ogr.Geometry(ogr.wkbLinearRing) - aCoords = np.full((nVertex,2), -9999.0, dtype=float) - for j in range(nVertex): - x1 = convert_360_to_180(aLonVertex[j]) - y1 = aLatVertex[j] - ring.AddPoint(x1, y1) - aCoords[j,0] = x1 - aCoords[j,1] = y1 - pass - - x1 = convert_360_to_180(aLonVertex[0]) - y1 = aLatVertex[0] - ring.AddPoint(x1, y1) #double check - pPolygon = ogr.Geometry(ogr.wkbPolygon) - pPolygon.AddGeometry(ring) - #check within first - iFlag = False - if pPolygon.Within(pBoundary): - iFlag = True - else: - dLon_min = np.min(aCoords[:,0]) - dLon_max = np.max(aCoords[:,0]) - if np.abs(dLon_min-dLon_max) > 100: #this polygon cross international date line - #print('Warning: longitude > 100') + if iFlag_arctic ==1: #for arctic only + iFlag_remove_ice = 0 + for i in range(ncell): + #center + dLon = convert_360_to_180 (aLongitudeCell[i]) + dLat = (aLatitudeCell[i]) + + aVertexOnCellIndex = np.array(aVertexOnCell[i,:]) + dummy0 = np.where(aVertexOnCellIndex > 0) + aVertexIndex = aVertexOnCellIndex[dummy0] + aLonVertex = aLongitudeVertex[aVertexIndex-1] + aLatVertex = aLatitudeVertex[aVertexIndex-1] + nVertex = len(aLonVertex) + #first check if it is within the boundary + iFlag = False + ring = ogr.Geometry(ogr.wkbLinearRing) + aCoords = np.full((nVertex,2), -9999.0, dtype=float) + for j in range(nVertex): + x1 = convert_360_to_180(aLonVertex[j]) + y1 = aLatVertex[j] + ring.AddPoint(x1, y1) + aCoords[j,0] = x1 + aCoords[j,1] = y1 pass + + x1 = convert_360_to_180(aLonVertex[0]) + y1 = aLatVertex[0] + ring.AddPoint(x1, y1) #double check + pPolygon = ogr.Geometry(ogr.wkbPolygon) + pPolygon.AddGeometry(ring) + + if dLat > 55.0: + iFlag = True else: - #then check intersection - if pPolygon.Intersects(pBoundary): - iFlag = True - else: - pass + iFlag = False + pass - if ( iFlag == True ): - lCellID = int(aIndexToCellID[i]) - dElevation_mean = float(aBed_elevation[i]) - dElevation_profile0 = float(aBed_elevation_profile[i,0]) - dThickness_ice = float( aIce_thickness[i] ) - dArea = float(aCellArea[i]) + if ( iFlag == True ): + lCellID = int(aIndexToCellID[i]) + if iFlag_bed_elevation == 1: + dElevation_mean = float(aBed_elevation[i]) + else: + dElevation_mean = -9999 + if iFlag_elevation_profile == 1: + dElevation_profile0 = float(aBed_elevation_profile[i,0]) + else: + dElevation_profile0 = -9999 + if iFlag_ice_thickness == 1: + dThickness_ice = float( aIce_thickness[i] ) + else: + dThickness_ice = -9999 + dArea = float(aCellArea[i]) - #then check if it is ice free - if iFlag_remove_ice == 1: + #then check if it is ice free if dThickness_ice > 0 : - continue + #use potentiometric + dElevation_mean = calculate_potentiometric(dElevation_mean , dThickness_ice) + dElevation_profile0 = calculate_potentiometric(dElevation_profile0 , dThickness_ice) + + + #call fuction to add the cell + aMpas = add_cell_into_list(aMpas, i, lCellID, dArea, dElevation_mean, dElevation_profile0, aCoords ) + aMpas_dict[lCellID] = lCellIndex + lCellIndex = lCellIndex + 1 + #save mesh cell + if iFlag_save_mesh_in ==1: + pFeature.SetGeometry(pPolygon) + pFeature.SetField("cellid", int(lCellID) ) + pFeature.SetField("longitude", dLon ) + pFeature.SetField("latitude", dLat ) + pFeature.SetField("area", dArea ) + if iFlag_use_mesh_dem == 1: + pFeature.SetField("elevation_mean", dElevation_mean ) + pFeature.SetField("elevation_profile0", dElevation_profile0 ) + + pLayer.CreateFeature(pFeature) + + pass + else: + iFlag_remove_ice = 1 + for i in range(ncell): + #vertex + aVertexOnCellIndex = np.array(aVertexOnCell[i,:]) + dummy0 = np.where(aVertexOnCellIndex > 0) + aVertexIndex = aVertexOnCellIndex[dummy0] + aLonVertex = aLongitudeVertex[aVertexIndex-1] + aLatVertex = aLatitudeVertex[aVertexIndex-1] + nVertex = len(aLonVertex) + #first check if it is within the boundary + + ring = ogr.Geometry(ogr.wkbLinearRing) + aCoords = np.full((nVertex,2), -9999.0, dtype=float) + for j in range(nVertex): + x1 = convert_360_to_180(aLonVertex[j]) + y1 = aLatVertex[j] + ring.AddPoint(x1, y1) + aCoords[j,0] = x1 + aCoords[j,1] = y1 + pass + + x1 = convert_360_to_180(aLonVertex[0]) + y1 = aLatVertex[0] + ring.AddPoint(x1, y1) #double check + pPolygon = ogr.Geometry(ogr.wkbPolygon) + pPolygon.AddGeometry(ring) + #check within first + iFlag = False + if pPolygon.Within(pBoundary): + iFlag = True + else: + dLon_min = np.min(aCoords[:,0]) + dLon_max = np.max(aCoords[:,0]) + if np.abs(dLon_min-dLon_max) > 100: #this polygon cross international date line + #print('Warning: longitude > 180') + pass + else: + #then check intersection + if pPolygon.Intersects(pBoundary): + iFlag = True + else: + pass + + if ( iFlag == True ): + lCellID = int(aIndexToCellID[i]) + dElevation_mean = float(aBed_elevation[i]) + dElevation_profile0 = float(aBed_elevation_profile[i,0]) + dThickness_ice = float( aIce_thickness[i] ) + dArea = float(aCellArea[i]) + + #then check if it is ice free + if iFlag_remove_ice == 1: + if dThickness_ice > 0 : + continue + else: + pass else: pass - else: - pass - #call fuction to add the cell - - - aMpas = add_cell_into_list(aMpas, i, lCellID, dArea, dElevation_mean, dElevation_profile0, aCoords ) - aMpas_dict[lCellID] = lCellIndex - lCellIndex = lCellIndex + 1 - #save mesh cell - if iFlag_save_mesh_in == 1: - dLon = convert_360_to_180 (aLongitudeCell[i]) - dLat = (aLatitudeCell[i]) - pFeature.SetGeometry(pPolygon) - pFeature.SetField("cellid", int(lCellID) ) - pFeature.SetField("longitude", dLon ) - pFeature.SetField("latitude", dLat ) - pFeature.SetField("area", dArea ) - if iFlag_use_mesh_dem == 1: - pFeature.SetField("elevation_mean", dElevation_mean ) - pFeature.SetField("elevation_profile0", dElevation_profile0 ) + #call fuction to add the cell - pLayer.CreateFeature(pFeature) + + aMpas = add_cell_into_list(aMpas, i, lCellID, dArea, dElevation_mean, dElevation_profile0, aCoords ) + aMpas_dict[lCellID] = lCellIndex + lCellIndex = lCellIndex + 1 + #save mesh cell + if iFlag_save_mesh_in == 1: + dLon = convert_360_to_180 (aLongitudeCell[i]) + dLat = (aLatitudeCell[i]) + pFeature.SetGeometry(pPolygon) + pFeature.SetField("cellid", int(lCellID) ) + pFeature.SetField("longitude", dLon ) + pFeature.SetField("latitude", dLat ) + pFeature.SetField("area", dArea ) + if iFlag_use_mesh_dem == 1: + pFeature.SetField("elevation_mean", dElevation_mean ) + pFeature.SetField("elevation_profile0", dElevation_profile0 ) + + pLayer.CreateFeature(pFeature) #for maps we need to clean some cell because they were not actually in the domain #besides, we need to add some smal holes back #to do this, we need two steps. - + if iFlag_global_in == 1: aMpas_out = aMpas else: - iFlag_fill_hole = 0 + iFlag_fill_hole = 0 aMpas_out = list() ncell = len(aMpas) - #generate the list of cell ID that are already certain - if iFlag_fill_hole == 1: + #generate the list of cell ID that are already certain + if iFlag_fill_hole == 1: #first update neighbor information because some cell should have vitual land neighbor (not present in the mesh) #this operation does not increase the number of cells, but it update the neighbor information - #specifically, it divided the land neighbor into two parts: land and virtual land - for pCell in aMpas: + #specifically, it divided the land neighbor into two parts: land and virtual land + for pCell in aMpas: aNeighbor_land = pCell.aNeighbor_land #including both holes and maps land cutoff by boundary aNeighbor_land_update = list() aNeighbor_land_virtual = list() - for lNeighbor in aNeighbor_land: #loop all land neighbors - if lNeighbor in aMpas_dict: + for lNeighbor in aNeighbor_land: #loop all land neighbors + if lNeighbor in aMpas_dict: aNeighbor_land_update.append(lNeighbor) else: #a hole or boundary mpas land cell aNeighbor_land_virtual.append(lNeighbor) pCell.aNeighbor_land = aNeighbor_land_update - pCell.nNeighbor_land= len(aNeighbor_land_update) - pCell.aNeighbor_land_virtual = aNeighbor_land_virtual + pCell.nNeighbor_land= len(aNeighbor_land_update) + pCell.aNeighbor_land_virtual = aNeighbor_land_virtual pCell.nNeighbor_land_virtual = len(aNeighbor_land_virtual) pass - + #distance remains unchanged since we just have missing cells. - #now add back small holes - #this operation will increase the number of cells - #it will also update the neighbor information for some cells, + #now add back small holes + #this operation will increase the number of cells + #it will also update the neighbor information for some cells, #not all cells will be updated (because some cells have 2+ virtual land neighbors) - for pCell in aMpas: - if pCell.nNeighbor_land_virtual == 1: #only one virtual land means it is likely next to a hole + for pCell in aMpas: + if pCell.nNeighbor_land_virtual == 1: #only one virtual land means it is likely next to a hole lNeighbor_hole = pCell.aNeighbor_land_virtual[0] j = lNeighbor_hole-1 dLon = convert_360_to_180 (aLongitudeCell[j]) - dLat = aLatitudeCell[j] + dLat = aLatitudeCell[j] #vertex aVertexOnCellIndex = np.array(aVertexOnCell[j,:]) dummy0 = np.where(aVertexOnCellIndex > 0) @@ -465,7 +568,7 @@ def add_cell_into_list(aList, i, lCellID, dArea, dElevation_mean, dElevation_pro aCoords = np.full((nVertex,2), -9999.0, dtype=float) for k in range(nVertex): x1 = convert_360_to_180(aLonVertex[k]) - y1 = aLatVertex[k] + y1 = aLatVertex[k] ring.AddPoint(x1, y1) aCoords[k,0] = x1 aCoords[k,1] = y1 @@ -473,7 +576,7 @@ def add_cell_into_list(aList, i, lCellID, dArea, dElevation_mean, dElevation_pro x1 = convert_360_to_180(aLonVertex[0]) y1 = aLatVertex[0] - ring.AddPoint(x1, y1) #double check + ring.AddPoint(x1, y1) #double check pPolygon = ogr.Geometry(ogr.wkbPolygon) pPolygon.AddGeometry(ring) @@ -482,7 +585,7 @@ def add_cell_into_list(aList, i, lCellID, dArea, dElevation_mean, dElevation_pro dElevation_profile0 = float(aBed_elevation_profile[j,0]) dArea = float(aCellArea[j]) - if lCellID not in aMpas_dict: + if lCellID not in aMpas_dict: aMpas = add_cell_into_list(aMpas, j, lCellID, dArea, dElevation_mean, dElevation_profile0, aCoords ) aMpas_dict[lCellID] = lCellIndex lCellIndex = lCellIndex + 1 @@ -492,7 +595,7 @@ def add_cell_into_list(aList, i, lCellID, dArea, dElevation_mean, dElevation_pro pCell.aNeighbor_land_virtual = None pCell.nNeighbor_land_virtual = 0 #save mesh cell - if iFlag_save_mesh_in ==1: + if iFlag_save_mesh_in ==1: pFeature.SetGeometry(pPolygon) pFeature.SetField("cellid", int(lCellID) ) pFeature.SetField("longitude", dLon ) @@ -517,52 +620,52 @@ def add_cell_into_list(aList, i, lCellID, dArea, dElevation_mean, dElevation_pro #now update again because some cell has more than one virutal land neighbor, but now none of them is virtual anymore #this fix will move virtual land neighbor back to land neighbor #the ocean neighbor will remain unchanged - - for pCell in aMpas: - aNeighbor_land_update = list() - aNeighbor_land = pCell.aNeighbor_land - aNeighbor_land_virtual_update = list() - aNeighbor_land_virtual = pCell.aNeighbor_land_virtual - for lNeighbor in aNeighbor_land: + + for pCell in aMpas: + aNeighbor_land_update = list() + aNeighbor_land = pCell.aNeighbor_land + aNeighbor_land_virtual_update = list() + aNeighbor_land_virtual = pCell.aNeighbor_land_virtual + for lNeighbor in aNeighbor_land: if lNeighbor in aMpas_dict: - aNeighbor_land_update.append(lNeighbor) + aNeighbor_land_update.append(lNeighbor) pass else: #this is a land cell in mpas, but it may be clipped by boundary pass - #for book keeping only - for lNeighbor in aNeighbor_land_virtual: + #for book keeping only + for lNeighbor in aNeighbor_land_virtual: if lNeighbor in aMpas_dict: - #this cell is actually not virtual anymore + #this cell is actually not virtual anymore aNeighbor_land_update.append(lNeighbor) else: aNeighbor_land_virtual_update.append(lNeighbor) pass pCell.aNeighbor_land = aNeighbor_land_update - pCell.nNeighbor_land= len(aNeighbor_land_update) + pCell.nNeighbor_land= len(aNeighbor_land_update) pCell.aNeighbor_land_virtual = aNeighbor_land_virtual_update #for book keeping only pCell.nNeighbor_land_virtual = len(aNeighbor_land_virtual_update) aMpas_out.append(pCell) else: #no hole filling applied #still need to get rid cell that are not in the domain - for pCell in aMpas: - aNeighbor = pCell.aNeighbor - aNeighbor_land_update = list() - for lNeighbor in aNeighbor: - if lNeighbor in aMpas_dict: + for pCell in aMpas: + aNeighbor = pCell.aNeighbor + aNeighbor_land_update = list() + for lNeighbor in aNeighbor: + if lNeighbor in aMpas_dict: aNeighbor_land_update.append(lNeighbor) #for latlon, there is no ocean concept pCell.aNeighbor = aNeighbor_land_update - pCell.nNeighbor= len(aNeighbor_land_update) - pCell.aNeighbor_land = aNeighbor_land_update - pCell.nNeighbor_land= len(aNeighbor_land_update) + pCell.nNeighbor= len(aNeighbor_land_update) + pCell.aNeighbor_land = aNeighbor_land_update + pCell.nNeighbor_land= len(aNeighbor_land_update) pCell.nNeighbor_ocean = pCell.nVertex - pCell.nNeighbor_land aMpas_out.append(pCell) - + pass return aMpas_out