From ff098c91f496bc90e3d9a56aad2c9c62ad92c94c Mon Sep 17 00:00:00 2001 From: Patrick Pelissier Date: Sun, 7 Oct 2018 09:05:09 +0200 Subject: [PATCH] Add _capacity for deque --- doc/Container.ods | Bin 41604 -> 41610 bytes m-deque.h | 34 ++++++++++++++++++++++++++++++++++ tests/test-mdeque.c | 3 ++- 3 files changed, 36 insertions(+), 1 deletion(-) diff --git a/doc/Container.ods b/doc/Container.ods index 5576240ca1a0e5a769254d8c1c4ba774c955699e..6b43ad76cd717a7e74932e6b48bdebe65055af50 100644 GIT binary patch delta 8813 zcmZ8{WmH|=uJ*>IxVyU-io08JE$&v_ec^6p14TFPTHJ~ir?@+%cyX5k_ifKP-#zzR zf0C@sm6^Hb7|An|gbhH)3_zo*D#F0xfIx^KP#&M`CsZ|aWOTI%K*hr-XC|mKq3+IwtCtHSB-?5v&OI-&}0c)?P&Zytxl0k|{oj zNvosqAf=T+;Zhzse62u;sy~E3diQAj`T7v4t!__^7nuTchy(uc*(3P0&pd!nRh6pXLXz8GN}r;nXsI--Fg87| z`8k>X-Fm7W_Y*5_@pUT0hdQhVn#!`H54Jb@{Ccte=9w|-n@gr{Pd8)Sy+=O@kO*j+ z`SpyIiwqf)>v<$O0-G|En@^vKh+TF}%D50C-f8lLnqiKLONFWHuq$?l0{+PNcp}ke zNkhZffkfAb0|U!1=cG|3ffd&cb~neXHTOeMh>4gNTO_`#1{}(FGp_M*?9EHkZ{s>P z(%!SBqd*lyV5J^36tJgQb0jHPFF#G)DWWLAiow>ChD=2fl-i5&W4WRW6%lr3PG+2a zBG-_V9z$5qNBK&_8(ob-4NMo3t$7BkWYCoD#7Pdry2eUus&{`;%?w7%?*{p=>I7I;7w)=x!2qK@qh)j}E&mD2=$dg)=V zP7sRJcI{;aXQVx!O=v?b(uA^!zY#-%K8`V&0#Ka0U-(E`!_`h=w&3;O5YisN1sV$1 zIV#N3J2QBSdg&TQ5y+AJ&VY&1M;6j3!B;phh#JC57x(jM23%!P-uqxam5$Xe4vD9s z>o&jM7TiM-PV+-sU|{Mg5FktaS(p(5mV&g4K* zIcKpdf$6|2g|=1ayC4Qz7q0$V?)Ab}PUZ>i2Q~Qhu*?lxpuhiA^Of3|dj2D-%eQ(_ zh`_=PWa70g5h$s7(!M+#;bopmT6Qc?OcUXiliYY}6Yx2(vl>XCL+AbRv%uvHp6_zy zwh!?gzvI{$D{fqqjR~(6+gtoZ^C}{7V6XYDr}11HW=a6>xdc5&fY>p9t>GYA+oG=w z$)?e-&eBNHoKgQh_?a$JFj|D6mTNbkLkB0}P$o$tJ#aE|wPT7UqAjzs`d}0UC`Z`Y zZw-E3KAyxP?=3m>JK0NA>yW1N6b5NRK#6)fL~p=Kci@ds1G8{-3!SjWj&eocl(TEoj<0U zhaY+x=*+hxP{-UPZ-ItE-;Q1%|GNT_{L?mTcu(ikOmnR4$c46jY_E-9Ld%arzS{n@ zh{mKpPSt)|oF#RJ73BD=7I*Cx-h&GVM>b&Wl%)l)n&ZkxP9;?uuN1f5MUee`T;i4V z3y;Ac@&pX#a{H!4dE*YcSNYky1LLZBw2F96S}qn{~urR)6TU^Vzzcv3%U zRIuM9aoB-3%MhS`5uWyKZ+b{sq0EooTUgjjJJfxX;P+GMz4?hA{KsjENrPQ{itRW= zb%DnC``ZE+4mr}t#aiRX1#H4Br}&fgc;aT_u#%@i!qM=g$C4p<+Ai5|aOM%)gP-Lq zzvi7Vk_aA_gl^{Wl1}%Um}|%=51Ckn1-D+~OIk!(V>!Xn}ImHhd4-dS)o z8LgXfqNJ?9XQ#4SLzhtczf-V_ydFT>=2Rpdkmo$JFpKtqVFi2PV{Ke4zC;sP;7iZb0v5)v!{BcoVo4O7;i{45K zISDl9EXF?ODs8@bX`f;1(ye7h9be^@>9>qC*`rEd5wDx;Ymtm4oU;b6e7YrEm4A{7 zW)9KKfL5s7L@sHdm3rlvwuE3H~B zj>{jsMX=M4x5*ACl6hsD{^(OZ@Xg9yW+8e2X2RllVP6=GPb?ydo1d=~vN9zI6!rg} z_NGBGu@`$ec!+A))9~vF@YyeO^R$Yme#G9fFRZSPZ3Y*5*3!!A%i=p!7oHw|A#pGa zXlzmeRCa9y7i3rE8(3vmqeWH(l2!TUhnqK|NgRaZ8$CK)8*>f|ssrYP(==POH43}9 zX$co+_6YQ3tqng+*j}Mj7aA$fJT|{;k5F!*m(P~joH`kf(aLhOA#X}7=98U;rae;9 zK{VG%)*NWLAD}l&ge+wj`pliU)VAep$%_#I5b_oCSz8*vNOuW~1LfdRBlkPsp_Kz= z@#(A@Bb*ZC%thvjGO_6me9HUZ3@|PQlinvh2ozfL5UJoU zpO(G7g}0}PiqN$TZP0raEO<2GC;Q5o;KY}4~{y^Bc5TB(z(tzWp;v2>>|kt z;9?Y+Haa9!vWI>`zireWL*MV0VqJC)6KGa6D_}dS*-w5fSahdrmYpPI885tdM&+tg z^75IIs(m;a5AcbZqhvq)ijP|Gg5@fAWmU1Wr8ZbUSco4XB)TLZAbjynZ;RhP=C=md zqsAs{ZND5EVFXgwWX(+aMdfG7$y`GzAex;9f=9JOeZl*wO8%bSwePh?k=IbsQ_;`d z*m5Q@LdllX?M%L-YsTz$V;Z~g^|St`nZ7nV2CU3@OWV?cp>RRulrH$g(&AFrH;a4f z(u6D)NokQ|hVb%TnF+$K#KFAzozRvx-QUmDx3S&S%KIEMl#}}B*%rUc@ygC!1G(D6 zzJ5&m!Nja84P)lu1beTDYb&7~Je?HIN^!kW?1WXN=n1dopC}jl6(n9!OqDD%>YejR z;px~cF?Z#R_N|!m;o+aWL}byBzWoq?OKy*~j}Z>V++C3QuzNXKuBe=3ZiNzEJdo|> zYW8|)YnqvR7iTE)PU~%KisA`F9blvPHr*z=e7|}n$BT`|@3_`@6%H$-?W3FNUQJXL zA_nHZV^3JPs+0h16h_L=_uf$C5=1*&|Gaplrk>qpVjE>l6T+tEp!4pl3QA2=C7~Rd zgE8$i?(*)gZdoYW@&;aynnwrk9KP<-k4h@4!Yia7`nt)rMW%&s|HJwKB|MiXgl|mK zHf#YlqKeAP52d;a>4?KBC?>}~^k8UCN-w zCowvW94c3FF)5TGLi~#d6bwonymU_r{{h!?35J4qaDB(1R^96bP5U>#4UTHaj*Cjk#R@o*1b!lY_6Z9DQ6=eGJ>(zM8Mv*$d9iEFGL>1$!PiDdBzKJfa zX?}{34m43@pG1)AOR&TTOa)9@!YMlX9%qt`x?I1sg(6TB|UU2I_dnm!&~S3!R9hr#uq8k`qHd8%HwC?=a{_9)jB`6HTTrp z&se1N5Yg)@`J^DU?!%{vkLF^~XdT|AWlhkDV~0j`A>-EV0t{h2g; zM*1e53t#$!NQ0qP9ipK+DiDOUg}0)Qpj5Qbmo$X8GLE1gZrS-i5s;U1evEG z@J!3T zERoM5Do2q&(Ej*zS9zRruCO1M;@{eJX3S_311%MBKlZ#nKcD&H-~Qt5#E`ERymcCf z{t=c z#q-sEr69%%?pw2Nz_9nmug&P8T`w(T9{Y$nfBB z)X4YJMBdHEJFiXAjZKC+!mr-jyWrWYmbqwb0+FLz66z>n=K=$Ibt@=G{~EPKqpd=+VB3I{^A!*c_G`gdrfu<*PS4+3l;gV{gAcv{a%G0`ZaI&dE zqo6d(?o6dC<*_>iIg;YC0H%Ns>88b>^H<3Eio?a3(rV>qxYdKIemI@n)8adYu;){r zP3^|bak42xE~EZ-Nfm+ZEhy6-lR5QDjM@vO=pc_6 zpw?;*2Ln|y%rN>{*jL?PBbYDxc$>!=&*7oT3SV}YZI_>qU*({h09=H=truq}cz~R~(Lp9UR?* zL#ezS8+xqxfRfH6RI<{pk0h>;QjV*siT1_9Kjo-9%NvpTpIRVjcAKI2XLkpcFz0d`;)gg z$F*9E_3Cxgf7N=|h%)1Dq71vWeRmq_$&*jLMTM1!mxiUHv5IVcuN={8rHxvsW zr~RnaN&0DwX}g_EFOhU1^bD&WuorO#SQ^Qbi@QiKa17}Ej#7q_6mEHkhe8~7iS;;k z@s6i2s>qLh=hI-v4m(W=1El7=%3_#);1)0P9=ZN_`Qi+Xwjh(|H-~DGL$T3oi*d*& zMOeUs;8o6a6>*9c94E$xF+A#O5@jL9N!5ly!@Nw1ttTOAM!X!q$}YzMV8do5`LsmG z7b;j(4#-L?f)=q*Bn$RTGV^IhstN)rK+E-mk^(WPbtLADAbiZz#^$^OO_i;=|CWfY?Amd1P+U4% z^1Il0+j(Cx;lRmENs<&2%3jkrA&5Rsuq?Wv19+}whMQ3A-LOr8y(MRIRkGyg(6g&$ z0@a2+CH&|zSAemJ@Rne1<1pwe_uar04QlDPeJ8~%HW+ySxTP}#AcItW38n=54JgRO zVsR4%g&E%YP6f*g*8S*r!Fgc+4zfmB$?HWT5=L~g^=2Mb5T8}TKqHika?hjWeE$nh zjfbF1VkW8LiFX{qEThYI`A22)t~Q7PQ}-DgopF@{4=g~DP}W;~)ERF}#0)iTlqD9+ z)3q%8y!fjtBp_D{U@1q?(2zEQUKuer9HvhU{!kf7%QaOx(3|uDzd!8FFDjmB8K=SM zj1#-Sz9bK84$ytjrz8f45VA_9>m`iKr+&>QCb;nkP*3hlzsJQH%HUl_kaHAcr>;ogZp2G6t5dVs>T=Fs@vy`w9-}^8J?BW`*n$ z0C;%$0B#7>Pxh6=CSqgeW~XiboZr^C_8?v(pc?(DEZ+KW2tz1ntam8>uIRKE>fSP4 z?wiEWdE0qhtSj;KE(o}dITTy4Fmt%C$(XDxdb&$^JQP}S%Hlmp@MXOt@bpkN&ge^9 zXyv?YZQo-69u8GWzN!l*E}mtBhGbkL3L#Py;Egg5!5dQ+_p;kG_PD&>YM!z?!C$D= zRC)uFO)>t{h4tjbK|weuCZS+dBExs>2=?xhwZ2(sW_oC|uEj$oV}aUJ>mknW9BZt6 z%O(tA`BV9s`nk#0t68wAVcdHKbryux^m>zPRrIvLH)JAZ3|(m98)^EGEWNTO{Y)=b zZL`)M2fI(VK5wHOV9@-iBV8S(pe3ygG15r9a+ahFZl4osPhUK>xa^)+*%$ASL*#Mw zRa&9)wblX)V0@TEo4pY!TuRu<1mpBc7$BDkUlkw%Rf1kH?x?MvviHufPiK=EnPoYv-u#0rULYWJR1r_*>wXIhED{nOQ!=dC3duqH6z2QA^5$qid z)smIBLv=aqW6!qPTsS`NP9zM3OWnMQeqOBv5*I%ko3K!-U%t1=GlSHh;qMa9BMnLz zi)*kOIMTGP={C2)(UxSg215mu`fxzqT2+j-jQV;f`5{VZ$RlAu*CK8?kageZ6_&AV zLqY4#Yd<0yhq3qR(EH2M#8Lj{BSb@z#`%mhfGf}bOY4QPNs@bPwe0dyt7|TIjT#mk z!01OZDGz2C5Q{r}XNtUU5yc>tLL{a18w%(+I@$K-i0YdU=G;!OrZ;nnIE+T_bF!w- zt`wK}IrSxgw#i!yH3kiTGd*w(M#W0r$|j1oAIqJ^XEzEJQvs3oK-E{Ag)$98(GD&B z+_^nWSAvC6zON(U1n+*@i5qJeQ2;gvh=VZ~CGQ;C#PCEE49nqJ8dn(=KcKwE@YT!5 zzwfVC+NV6nNu}wlnCvaKhsC8=zLR0&Qk6zm4XZ9l_^g{RvD!@e(TRNx=gxNdmqW~; z&FxpUns{OYzs7R~Hczz?GS)g0Cdb$MEM$z%gP^4w?7ul&!QM8i@kAQkSk zZEf)fw5ZM?mp-l|rw5A#+|8rcDIN7N!%+z2%Q{=!MpcZrqHyli6kV|T@1q~`gI=!( zZTYqx7OEXSzpHt8j6eRa19~#~QIM)XqiSo)L-aq8KFN&XFWbGy9A zI%g;AXQa%y#Z zy7+fxP6_m1&p+J^kb|YWDVw*0eSETt(@zSFfwLz@mKA3B?BOq;B#SFnG>X?HbyoCu zdfpWeV3-F-~6~reEGQP9$+`^tXraracE77HCD))4;II~4DtYk zi)z=}T0LkTWlz+lAYw!hEPaQu(iuFD4Og9(_T6U3yj^iuFW8R8bH&U=8L%toN}&C; zKBBC$+~%Eaw?d96hISe)Vda~OoeV+GjkuI#Sd@Q)qbVcx8$p`io2oE=gd_Z3JVfV= z*EXNk+UaI}^3jbL-982l*T}usjU)m9yMr@T&P3qLIZCu;ha`$xys6kB1^}gCWH(wkD17O-(|f@WT~x-eURmd2>@>IOM7d*Ax@&B41g=id z_YRFS=_ZEf`sK^4%n$q9hj!QcB(gzwK4o;O!m1wkP)0w~xY=xt%(N^saH@v1_&#xs zV2S?3SvBgH1$b7l8v4x!D6OV}@)Sd<0M;Cj)%u~T{W;0!pL|_FrSnABveA71=FjyF z;S2?YLxDhqFrfc?d*JS577XQ;e#c{jDh8fB#+a&AVOH={G6%rlP`>|OZu=^TZhG|L z+i`3N9atlEyfDmc6X>gxMok=XKbZgC?2x=C}5d4 zRuz2qEh~@~B>q^_tMySH&9&-F--7*x)$d^?GWZHsQ)1Q%*e>8KBfh}J}Cg+ttKGkurN0iM83?W$L4C)UN%7o29g zRCXHy-%Pl6yGi~Q%~bI(OWf;i`-XYjZ6O=zeRm-WR7}nQ#;N(9{(#RKEzy=0A_m)X zc?z!$d_LX!uLoMNNeU_8mSD2nSK#86ay)70w_Nw~rbvAL`Qwzy9%c9!MbM70Lo-$V zkofQw4MUnCB|LwTl`42-v6^ev&Ue-TU7fnbO~;BxKNB zfccP=VT9LqSgq_spH-gMR+iZNE~+VtWE&M0H3;*%?3q_%1;#i~<)YlQwT%behDEb2rL7 zPEk)(?khG?Z!0{(2?~aas#Gfa02+#Mo4AZDPB{Szko6pe@GLPBr1a4>?<@5$qvA1N zv;92s)wRTn2(F)%5EgiS`ShDj;KfpyC%Z~efQ%}A_Vd1gEn(#44GW6!y`A#R31o-2 z)QM6hPNM@5N)E!ixkqcr76L9~Fdh|*x?<6d?vpHE1DR#|Twpo4na?a?5p8ha@SS==p2fX7Lh4-wYNBPXS zuGG{wxw4gC@dZ+g`n(1TH+W+Wyj*jWWktZ{?uS0s`cShRG`j&4spGv()nm=ch*+_& zxVb9qc#Pk*PxioEDuAt6Oz5^7zSGfoO&l)C_XyW7)-_S>ha4m*pupQ0N%D zm{|7KyI4aiHzK^rW<()6^{PELiALCxd|jJO(1eQ{^OxJMK5ug;@HQ&P2F7$CL}ul{ zaZ$%itw{GPD?NP~^4#6%jhPx8p2Mr!X~F3_vxo@1F}cD&NZrBI(bme+ z&7IBF!s7%>^Z)*A k@OeHlv~@PPHy0aBQGow_s%3= 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 J$@pvXe*ozRkg@;( diff --git a/m-deque.h b/m-deque.h index 8c2f7494..016a34b0 100644 --- a/m-deque.h +++ b/m-deque.h @@ -413,6 +413,40 @@ DEQUEI_CONTRACT(d); \ return d->count; \ } \ + \ + static inline size_t \ + M_C(name, _capacity_back)(const deque_t v) \ + { \ + DEQUEI_CONTRACT(v); \ + size_t s = 0; \ + for(M_C(name, _node_t) *n = M_C(name, _node_list_back)(v->list); \ + n != NULL ; \ + n = (n == v->back->node) ? NULL : \ + M_C(name, _node_list_previous_obj)(v->list, n) ){ \ + s += (n == v->back->node ? v->back->index : n->size); \ + } \ + return s; \ + } \ + \ + static inline size_t \ + M_C(name, _capacity_front)(const deque_t v) \ + { \ + DEQUEI_CONTRACT(v); \ + size_t s = 0; \ + for(M_C(name, _node_t) *n = M_C(name, _node_list_front)(v->list); \ + n != NULL ; \ + n = (n == v->front->node) ? NULL : \ + M_C(name, _node_list_next_obj)(v->list, n) ){ \ + s += n->size - (n == v->front->node ? v->front->index : 0); \ + } \ + return s; \ + } \ + \ + static inline size_t \ + M_C(name, _capacity)(const deque_t v) \ + { \ + return M_C(name, _capacity_back)(v)+M_C(name, _capacity_front)(v); \ + } \ \ static inline bool \ M_C(name, _empty_p)(const deque_t d) \ diff --git a/tests/test-mdeque.c b/tests/test-mdeque.c index e248c182..bca914cf 100644 --- a/tests/test-mdeque.c +++ b/tests/test-mdeque.c @@ -40,7 +40,8 @@ static void test_ti1(int n) deque_t d; deque_init(d); - + assert(deque_capacity(d) == DEQUEUI_DEFAULT_SIZE); + for(int i =0; i < n ;i++) { deque_push_back(d, i); assert(*deque_back(d) == i);