From 69936d32b280fe381c404fd286cc691aa1281be6 Mon Sep 17 00:00:00 2001 From: JustinAJ Date: Sun, 15 Jun 2014 00:51:04 -0400 Subject: [PATCH] Fixed a bug in tokenCount(). --- Jupiter/Readable_String.h | 4 ++-- Jupiter/Readable_String_Imp.h | 18 +++++++++++++----- Release/Jupiter.lib | Bin 240288 -> 240288 bytes 3 files changed, 15 insertions(+), 7 deletions(-) diff --git a/Jupiter/Readable_String.h b/Jupiter/Readable_String.h index bf90aad..c307e16 100644 --- a/Jupiter/Readable_String.h +++ b/Jupiter/Readable_String.h @@ -179,10 +179,10 @@ namespace Jupiter unsigned int wordCount(const T *whitespace) const; /** - * @brief Counts the number of occurances for a specific token. + * @brief Counts the number of token-deliminated strings in the string. * * @param token Token to scan for. - * @return Number of occurances of the specified token in the string. + * @return Number of token-deliminated strings in the string. */ size_t tokenCount(const T &token) const; size_t tokenCount(const Readable_String &token) const; diff --git a/Jupiter/Readable_String_Imp.h b/Jupiter/Readable_String_Imp.h index 0425cde..607d693 100644 --- a/Jupiter/Readable_String_Imp.h +++ b/Jupiter/Readable_String_Imp.h @@ -793,7 +793,10 @@ template unsigned int Jupiter::Readable_String::wordCount(const T template size_t Jupiter::Readable_String::tokenCount(const T &token) const { - size_t total = 0; + if (this->size() == 0) + return 0; + + size_t total = 1; for (size_t i = 0; i != this->size(); i++) if (this->get(i) == token) total++; @@ -812,23 +815,28 @@ template size_t Jupiter::Readable_String::tokenCount(const std::b template size_t Jupiter::Readable_String::tokenCount(const T *token, size_t tokenLength) const { - if (tokenLength == 0 || tokenLength > this->size()) - return 0; if (tokenLength == 1) return this->tokenCount(*token); + if (tokenLength == 0 || tokenLength > this->size()) + return 0; if (tokenLength == this->size()) return this->equals(token, tokenLength) ? 1 : 0; - size_t total = 0; + size_t total = 1; for (size_t i = 0, j; i != this->size() - tokenLength + 1; i++) { + Jupiter_Readable_String_tokenCount_skip_increment: j = 0; while (this->get(i + j) == token[j]) { if (++j == tokenLength) { + i += j; total++; - break; + if (i >= this->size() - tokenLength + 1) + return total; + + goto Jupiter_Readable_String_tokenCount_skip_increment; } } } diff --git a/Release/Jupiter.lib b/Release/Jupiter.lib index 78907da19e41c570f6764c9b792b40f8f0bd4c48..968fb7d46d94e8bc584f00196d76d279653ee62f 100644 GIT binary patch delta 17851 zcma)Ed3;vI)#lzCgvb&iV1NKgkUbK1G_oWi2(p=kML|RY2#64pu(gPg1g#rJ5?;xO zED0)zC-bLPy1 zst=o2eb~ILL&Mb6{(}an#B4XNBz1qPv#5RG%Y(mf?;QAjd-oOd@$5#gje0WGZSF-i z+;ZUgRQCr*lNStkuWs9KV4p<)zuYUwIc@_Yn)q^q1`S-bFV&4#{~qjq9w1lW4{=)v zqb5V$&W6$1bgw6WR5ORU3&YfL>eNcNrTlPdn7c^-(4wU#u1s_9(%*_lxjuu`bbL#1 z?e%QR+KeM@qUe8>^n!Dp+B@29t&UH3TLE5F0*xPD%rrR=_bs9wMqE$ww+ga7@aiUdGw%atQ6&oak zqlxfJpD_12r(q~DAx@Po_L{2KGu*2U>(y=>b##P#m8>YB6-}@rQ)S<1bgdXgD$K~y zD)c3~raoPDhTGNfVl`t%YMTB;)6A#I8tHZq(p-8((+nV*<~~iIJx(L_*O38vzH54o za&Oja5vkpy5GjtRIC%`QiX|t9&V4d0!X+(^Xs6cR?xYK$5{6^{VjL8j>ZinAx`xk>vsS7 zut|`svox5}#v%H--)OFHk8^Jis*pBbyKykFZl~TK=k@^WPMQ$uQ9B+GOXQf}eY1O& zq({-sZds5k2Sxm&3WU~& zlEjUnl*B~G|K3Gyokma&ppzULr;4Jrr@zZF!4otV-KiB_JHZ{NWglOnz1@x2c2?yR zsEj0xc4LA}ZAX_(3>xF7nV26v$yh|vd?VLQ3S;qG{Vis)dy^JkFhN(BhbOyZ{BNRY z-DDl7o}^SywQe%G|7SDz>`u+J=oWW)fB{`IdRs+g&6JN9R1&6<9uP%hPRxH#1v z0j;$fw;7MY6QbU^+u$`6H~C?~G~;z833_sxW`1rOs%x%Msy8WhohqE>UZV~bxLveT z!VoBqo(>dqDvFTO=_X|XBq;*y-W#Y0Bn@#osz705&j`V_L@?MVND3Bm8>g`|;AhTV zSvize4yBbDL!54^>^DvmRWrlYQDb}wQ6C~2<`X5c{1(Bo&Q=Q*Tb*X8>Vv!ZX&tZ> zqDoi2XHmcowIp!`nI``fK(cS90f`-*90pKq&wXX>g-@A z);2LtaUO{Ox6KCsVv|SlcbadAiPQ&<$tZ%ns{O4KPMaX!g^ct4CQTO4p$XOz;kc?o zmyxw|47}yLwW*C!<#XJ&YUnU0Mh&^kV!}O-zpoA?Sz|%iSnZwb_R`p6_lt=!^H7s= z=NZ_|bF=H^N6cL&KcuBnfbF`w09$sE*w};QX0wfdi+4KIx6xmZ8eKXcWz7Q41OiTW zn$tOAId854FYX#9Hi!y!TsUQqdIaThz7|8rpj@343xiZ_yMMg{ap2P+5T-8ItEpNP348K2{kx& zu>on=_R__mgEq~UKpXaln8rAnL$=puP#GiJgQ*bq?vG30UE7XjOD&dS^p{KFVx+vt z;*_7?AZq=y*G6~|_MKT4*87b1V%~ChvCf&ZyJ_aJi4j0HFm*9C;$FE$VE%~5?Z-!gpMf{g?#-Bdq zlUbqUQ;Mj;r<7&nn%7Qc1bNA>l;2L5z22+PJ(jJ~QFwKgdxtS>wf;7KwQVey6jb*W zYFm-plTEdn{!6AA-c)3ER>ixm7{QJ2O2+@WVJSiNsF?T}Rb3ozO-qaxCGL8ondvcO z*Pu552t@*eu*jFtCA4?w73$qJW^Yw!;1lk%8+eq;efJ?eDAlR=n^MiKQk;Sp58e+i z0t%8LqkjeE0Q_UW0`S2(>j7|)jAs+5O;F*r~7mpmLc-!w?kkC-q*7h%ZF`eTIJj$<4uSd5Xc&815{-o9a!Z0ZzOEb*15+g0 zX4SXc?HuCSD-d(NJqd26$?GCxc`rFxo`Xn;rard5Z8U;=_O*TL{ z+T!vJk&4GxL@HiWfwhr}KckW=A{B>>Gs==7_AVt??@$>VX<5Oz;Lt%@F7egijgcbd zhr=5q12Fo@pO>*qWj*O8SFCeqhFucw=$_|ayN8aCj=FrfJ8ZV3iS`V!-KuCSo$D_P zu-;oNFUmRwShcMC&oWnRwPcFbP9-cv6xh!sbj>q*rAf z7u5Z{u6zA*N&)xl&Bbk4EBQIYjKNBtLVn`p+4gCih|nSLei|LJ?1$qIj}4qG*@JK=wZFWB<^g zVFOha@5HOhU8ogUwcvTILQ7KfJV3>}g}7qg3utz&W9xgggB%U@Q&lh6O&7Nxvan>g z*|`+;a{jjtd)(z3ZrJ9eu8t*rj}gc8Kc%Z?)zDU&z&loZ{!D6SwYyZWwg!ABc#}{1 zXqZYrh$?Qc+_o1hdD{_@d;s}?L{|N|n|k;~GNO1PM!5DCa%3O25C*z9nDg{Q?!ihv za(eK3bM{1Maq2|?79-01moTCf1&6$%d&%fuLqRyO`qz;T9J?P51k-Q!UxsPvZ@@It z+o#C%loOHOe&v8x>DU2?vbkfFqr@Ai(Aez9zlm*%I+r%8;=I0Rm`wuC ztMa$pTUDEv!h^fjWX`g;bU(cIEq9GpOctN+s*6L~+wQ#qjm3&H;ctR4J~he@oBjav zup13Mg55}n%UWp8Cyuzk)SR&ytb7NB9MQk<4x-OY#nU6mq@UQ+wYARm>a*nlm{ge3 zZk~S^bR&^n(qseGocC~!B2D~&y!sxpk)12d(`l9CP&OXkGeEsD9gxQ{RY0+fs9bgU zC|v`z_>|6z^Nt!&C=~vKM@``;p!g`{sbiEA6}r@_U8t;eW0iNz)$?7!63@p3t=#-K z1YJ}0;Y_e+Z;7Hjb-aQURi{67I;n!=(3H)Egw?pxCukQs)++k4nluR$HB|rlquWh~pP??C_z2aMh_=ph z`l@?BF#7n@Hl70r%8q@2W(eEvp^?sBhaGT$oUxZEo)kn^IKe>tZHUESE!#phDFHkoIi)N+w@Js>Kg8PulYc_Jf3mhcE4YHY)cT zH%i_131k89yFUrworZNmFn6TI#jkc%r*E|@FS^bHr(iXwqDW0Asfh%L!nt&!92ZM- z;`b&Y*Co(A3=z^)B2Ds1Q&h7WgY|k7g_$)d?=*+=V_#Q;<`3meSn?38GqF5A*BPm5 zYQZv6a2KDdr%J6wet?%aw!9Xl5z8fsS?_LKZK|q!)LX7g)ZeWV1;6xgqAKok1_mmW z3?D&?ZJN7#uMulO{B6vbF(yZvHhR;3^m>NhPeh^@Hqw%;y?5Sb)RFa zw|4Y?B&KLSjb5`mxYvXViW{*)*4B>ACG`tzE}VW+#kt}PP`$sRGuvYeD1**^0c$Lp zfkG3?zwQdPxdtS_?y-LXyU5rXUs@R}DCqGOvYk5)i349&rE(l{>YQX~VVOWY+o+T? z?p3nj9$IjNUa%1174&x@MrytCM^ zF&T+Hhsg-$aEH&KJYph~@xQ?%d7R>LU^BjB<+E=l*^;Kt<~p52HN7YVNA38bH7orF zxr@_4{I}uLfVte-{jE7AhOc=f*!%!uluG*6ZLj{eh-%4{^N1umCh_0%=P%O@&G3Mt-JUvAfUJ|>16jz+1s9N) z$f$D{j276Z*8U#?fuUfNi#UPjn!uJ`L|_R3baP0v0Rh@@Qf(pw?ZkO!kow{(D%^qh zIH>wZelS(vFSgu%i5qi%G*?y%LHztj1QFg6;$=UfK*|q{SS~vni)lxoH30k?VCIHuEMt)qSZ{t!`qU1 zIuXt|p1xUBaDTq*nI}$i62Y}ywCCw-I|am4dLRxLrzp=ns}Kf!6))!BL>kZHAY@!{ zhNy8K6ct<1O=mUqOgC*gL0xDFFW6_KO;>o<3o4$C3vPL6Fqd$0RyM*Z#uj+2 z5d;cfjMi5)_QIoezr=CVJD+VxyXbUQOBW)Bf;T)l*%0l`()dR;>2alJUL?s*fyV5) zD?RfD#+Ki^iIK11Nr~mVO<=Iq9p!Udb7!X7(=_Z`^Ulp_=9zbHIDAz$^UOU?J;}`> zS$u`E`)+g3Jc^?gevMub1I{>0N4KyUAiCRIz}a?mvtkiljHb`UdS*1ukdv755q1T| zwAVe(FwSIiG6jH#wge`vQO-(o&e?O_f{7}(KhAfV`*U8wh zj!IWx4uxtovyB(=$V;@XYZK0Ub5FCft!Lhz0iF%p0iJ?ozPb_%hLMU7k_BaV_g9D7 zS-_IC=I-kuG9i?8_i(En=VyK4+p>61KTDL}jvH!GFSR{N5M~Pp+XD&=Z=svs0U)!p z=VAwB56V(WM?gSqK^>1zKn=sOeqTa3S7{@Wt?V|ksa#bidC4mAA!^tIgCA@*b%}^} z?sBc=#w5?&n^*{VoWj?ln6{oH0|8ipKM&Ky%eRum4L(&rb@qC%Yw+nANW~RJ*LY?| zDnD>;36H77LlKX%Vwww`eu#F1W7k0(oO7ZxoD<%MyTFOq49|5j5mQKq6~0b&Vm^HaNf=9-^a_y{=F9Y99x=JyE4 zj=E5B&yPKVnc#n0+Y|PQAT;B#$)1@Q18N770X3_)*{)tq_IiZM-ilEljxm|6#1Gk1 zJ%5YOB@=gWGGy$U#E!7~3_Faf7s7}hDJ=yB8KD)Uj->!>@&g7{D|&}>#oXS-_W=rp znB6L{o$cAvR7^E=cTCJ zp{`6}uUq*~*v7ulJGa^Jl6NcbBNFAN#+2bkf_5veAUx%U(^ zx%d376Se-){-MNmQ7pJVDEys*N6jxY-S}X+p#bUvm6Bj|HX8w`$|P+}F2BVSV`L#Xf-#gdx>UPqBzIRtL9)*a$?{W<78bnnCIBk(;q z)HAQ3ZCsBZ7RI$H_1_Ic{#kF>-k?aUOIOh=!Gmc4i);q`cwFSfqlC}1pePR8vf^VljzHL=^vB6>7LU&I9J0yv1JVQ35f;T zlD=cH$QPCY$VpZH!L>ph@RjC2-=6^;XxWyP6sI?v~m5}%L~1!c}1s>3)S6iU20 z9!g-ok#jRPI%^nILs^~p@=a>s+_3lfy&D?wjaewuh@I${nvJl?52)2AvytwAf#7iz zDgLQSn&5SkSQiX3EvVh8#ZN$|hJIkn1i%vq^R^Q~hd^$c7#Ya;Nk1RRFUW^mT|1Cy za}y?GbH~Jd_hfH)FjP2&CEWstbEhN5^0n+4m2s<=aM|R;W&Ge<%}G`~!I$^KgI{LW zF^`Ta_Z0n+K%gIoXZlZpX9Ol2r)XeRPx0>8+M;!kz|EQJnYTHDQEMLj4LPOH1}8<0 zy$!%Z6lHnkZQ*35N-BB5t@(LEQf_{x%BnZ?;PbkqD-RO>&80D?quZ(CcI>h!T0+G| z>pP|@X+tm3>yN&zgVy&f@%wIS$2<1vn0G|+AMc14)Vb+i4^>d%v`|k>hfs8%UrtA2 zT4nYkucL>T&79_(>A}kB&ulCyKd8RBL`_nfsw0y;eLv+BGE77r?n8bAp{QfAMKr|E z$+@VeRQCMsZGWyeLdR5sf|*J3Oq@61PT_KRCN?UR7YP~r#--Lc_6d5HaWs(ze1WqE zqf4mx4+=b=Dyd?&@t&a6nwm!uP2VTzN^R9_0~;dpl|C`sv|d2^KLGmsj& z)QKe=8qNbia|=$^`pgRFpn8j;7(2zxMb}P-`ox>U-^5+KsYxVwUeiRy%=fxl7d&<} z_^*)m%=7$?b}_AJDl1gkNjEDv)q}%@wf|>j%o>+IHd}L55IrA91xj3B;dS#p>me_; z*2#AR3=&2hG;8ig;4u?fwg7VjO#EUOf&ugufNWX_fS|G_BpZ;B=fMnr_?ILEm*)9}%<pJA_lx z;Ub)paCFHjM!zTeTHD6;Dt3)`ZD`%*<|<(|AjDx2J@_=0$|TpTAMW#Fg4IcQp75F8(Uq2+^xZ@k@8|%Wz*>{RRqzDsqV8e%T>{5GmNH%R2%Ilhn?F3F-vq_3^`6u%0it(m zEx4f1$$J#JgUmhuC^8pX<&{D!Jk|KT)NXvSA541;6^0VhPxCJxLrIq7TEcp5!h`EP z{lwLOO1f@~{^7zpZ-_PlozA>6bUJt=d#Vf!pjuWrRAV|RZ=ERWQ{2X(q&9J?(`fXD z&_;-oh-j+YSY^dISF4HZkyAo7wNk70?0RpQR*n9x0N=p45Y%N)3O5GY?ZoZqv-Fp5 zyF#ca$3uG2k0I}du#IsF#?OBo+(dLU^Jjn`KMv8*Nn|CEtX#M8`rKA(_6F!plH$~b zr?uV(HrV2rt1M2W#j{A!q&WKP-1G{gD3C2(STYgKb{o^>(*QR?9jpin@qG}Zz#o6D zxl#d593BzJf95uq#8vI2KXYsKgb}CUmw8Wskyr`8eDH+r7yOX1@iISDhkrnMX5&fq_%3i9FS*MH_)uWg_ca3&jYZrbJz(ncXD-cxXzO`QK!kT_1w-l-w} z@l)RQVJ>kB>@%Lmip1?Y{hoW;8xSN$qQpF7%f$~X!#{w_=g)u(zK!1=`R%3fH!;TB zp>=M%!|SKj0E1OKEC#WBTi2SR_An*jj3rAK&sT@Hqx}$eo1W9`Mn8+C^27VaH`UL= z1yq->uGs0d5*Wtq^!fzd0B5e)X*&~~KHUjU(0J@~wpi%1uig*f61NLn?C2Kl@{;}^ DLoRsT delta 17851 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 HyrlmJe=jCk