From 96571c1827bf27ebd4c8c4685a4f937fb2c234bf Mon Sep 17 00:00:00 2001 From: GAMMACASE <31375974+GAMMACASE@users.noreply.github.com> Date: Thu, 3 Oct 2024 22:38:28 +0300 Subject: [PATCH] Move strtools to tier0 & update tier1 --- lib/linux64/tier1.a | Bin 124400 -> 91334 bytes lib/public/win64/tier1.lib | Bin 1022542 -> 847206 bytes linux_sdk/Makefile.tier1 | 1 - public/tier1/strtools.h | 590 +++++----- tier1/commandbuffer.cpp | 2 +- tier1/strtools.cpp | 2017 ----------------------------------- tier1/tier1.vcxproj | 1 - tier1/tier1.vcxproj.filters | 3 - 8 files changed, 291 insertions(+), 2323 deletions(-) delete mode 100644 tier1/strtools.cpp diff --git a/lib/linux64/tier1.a b/lib/linux64/tier1.a index 46b752f53823d86db76c94cc12d952b1d23c37d9..2a80285f064a5019f0f98405106a7c646818764e 100644 GIT binary patch literal 91334 zcmeFae|%KMxj(*}1hRpcvnZ|9(z21LpcZpN_>oFwPqLewl}(6%p!g$%uz}Q&#LWhx zB_wo-a_+jCwzk*y_TEcxf7#piUV3XOYHPEJ<_9V!L=m-D1O6h!9|77B(30=_nKQF{ z_OQYBe%jvq$9G<@IcLr@&ph+YGtWHp*E!-{w&76^8?O$>!Uc;s z%DO2Qi{)n)%VjtG|NgHngRk$mSpGNs0o3LH)E`f>SSIp+ywhS4{-Yd=<$uqYt<72J zsR{V}HRaX$Re}75O1Ix%>sQNbHdOok@&W^F)jf5-(q$DEB#~G80)`llU0S#$Q35wo zl*o$D6Y%Gg|19z>wpooz#to0+VreSlHTb{qZDo`H< zAeFl@;4f#S@ZhZq1gd>NuBW^fudgiIN;$C%OaPRibW2rL9G;xBGEnYk+*Q?VbW?mh z0tlU#Xu%3!y)S?g7&DObAQ`2;-scZ2uUWpu=dY};-RfQ+kCTJqxqRyzHkOoc_L&Lf zfIuu#mv^j0An&_tRV_;Dj^|LG&t$t2G2U8~!BhYqy}I0w%ATL&{&GA=dSX3xVXph0 z_}Dz1bk)Wh--aj!Q}*ZMfKFpPorU@L1bi#2?)629nAk8OoX1H{j-aseLd+yaJD;B% zRxTm2FIUA^lU^dyDR=3zEeVTDk%j)+&1f~1KEJzk5fsnwE8k#3)};$%rDkKb&s}MX zULe>gsIB#HC@ytZu8-%0R~`s340mO`SQm-(t9=#ob&M6u7UCgL>yO9G6__Qp{>|mp zWbUH=+$e^{n$%Ixs<67YJYbfD9!1KQsPbi<$AF(13uX~ZMAZwEV|XU*VO1_* z+}x}nO(Anb@o@-bZeXU&>5LX9N^4?+6GcgAQlha7U~q(`Dy%Nws2ikc^rC`IzKXku z*PEe$x@{pT3xvfKMGb*0q%lIy6EOwV<(un#8_MbeXd_!TZ;r#t;aGaxh^LTK3Tu}* z+X6YB&zx){izT(5n(C?=u3dsvndKETk>~RfHB8K^$ES;0$M`r_ev>)+1PoZBcnq1# zK$k9S{PB55n|^${T%JxC4&81SIF5UOg&9$MO7&u@|p9PpY5rkVI^l! z2`F`S{@OZ!70MLHSzJZ@^(#}(CRNGzRo41_?nc(7npw@s(OLCu-t5~z{BfQqkjDJD zf|2^`Z31Nf)@7N`nzoq#=;L&AX%>O|y7CG>(l^KEWMeR2;%gN3;`P;R3~XYBD6LwV zQ!>2Oim6{P88&(24913Llk=g zP0jahtg1;sJR!Qg*yX#M$QnwRn2m&(D<)Fr9NAs7ApsM@OvIPaBw~HG$=FyMGiC0@ z_4n!$fkgivR!uf5k6X?yEAut_DjG=R8)^doXBa8Vwz$^J^ZP32m6dI5Y%Htu`Ri*j z;jaqZQ??~Lkp_yM%dGA$eb^;utL62Z^!`w{SF&8(;NRSUg@gJ{IW%&mshzwyhE`Bs z@2iGF>*zVz26S)jR-d2Z5rE1QGhfLj56+V)8K{xC_rz$O(%A5qy%=^9o#5_2uiUeJjvW z`PfLio^{e2%htPU4M5~mA}7MuyRO6{`yb`b$JL25(<5_a2(&%)?bfUOMO`#Jt67*Y;#h@?=Qb6mLAhJV1tBiEN%`|RmU(u z0P`t5Ute6$ykZ#}^%*0-_(E+kiUl1^n%r4!km!eqSeLan26BG>jJD9uqLFm zprE#zEfHOSP86pkp{4{rSyS}MLOurH{(G3+yfEX5&?hW`&Xe8`eF9n5hB&6>I`eBD z!&{z2!JO!8pmkIHWU4D@QN*`lOSyku?R8V8tgi~JZ>U6&Cyt`y+4#O_VQwzNn4i5k zTZgZk((LvYCRwd`d89k5@53fL`_DtHw5i?lVi$WejYr>#lXmfO2Pyt9qsc?MCu;F)pB-484? zMdZ&xEU`4pX>sn_n%P-7PZXz34HeCZdj_+{XKkz9@L1UvTAm&%vMXATGPhmH>ua*< zoLM_pYW>PSh^1M19K~o+p1=zmi}EB%YV;Ll;FvOSMvEw!Baw5nB4;MKG7l(P|M-4a zT9>yXf(UD5piAp_ftoUKREuQIQbS9X@%_28=&@fJcoR6M2TH=}-JXHr8$;>cF70q| z(CP_Ik7&=zr(Br>@*!1z)|L6XDj)J_xse;SnccT_wkd0r)hk15?4up24e8W*{cOF_45%gj(wdT6;_>zKPgcs5mfs1Y*Lim1Y^!!Ln%$Xq)x_fYU$ zYV$>0+_x!rDrKEozji3tVT0U>-N%Vnuo*luD{^iUSR80q1_nnVydkw>)TQ-;Gc~;A zq&GAje&!1}-mBWIJHsN#c0#S_P_>h4WN4z7hCaoD$u2FzG>VZ(Vp_+7R&BqtgL#&MWQ=dSFQEL*d6 z4OfoV-oWQ}oFTz(m7kalj+A|5(|4R{!L?o+{#6Z8TgCK`ZLIy?BOTnx6(z%tH|z#eV!X>?Ui=^3kt5}^-B*>gZe+&DS*4CDK2hd zZ|hXFb}eGOiaUFe&7VPVH^)5ixllYvrhR#vSng%nloBWoW_ z)b^=e1rDp+K6EFP&7+Mfqg~0;&fh?w!Lv5$ftR2}o^YWR^&P5D4=uB6r{}&998Yb| z)avb&(lg%W3g0{SXmZ27LmE=Wlt_{GE)3se?%}krh|Wz7T~9q*m$7Fn2`%ZSo|pA( zS-o!UPm26Um;8=9^Cgt2SpJh&eus)xqFvh^%{ee#9d8ewm0a3c>7mtVA;Zav_OcQj zcSsLh4*u0}y*>14bj#At|G=Zx=M7y1PA!qMlOT65*_((OIby>|Obw?;JfYvD(LhcO zO)Uvek4QVe58UEVdgKWQ0&eXi`F(HruIVM=tY`3SQRj9j!QrJYDgVEV^NvfwE6~)H zVCO6)GMuCY-yB;WPU$QOyR3F^UY8V1MQm|+Rl2RRtvEEfIJ9<5i+F-vwqosRPv%FS zfw#2&;&HByDc;OpZ(771E*kV`Q-YHn9_oaH<4fII_tvL|Z;VNs=p}hV zpVrBFGRM?`qu#U*J>|uwlrIirT%}7W{Q9}^akn;x(W0&CUXUI76$(Y|5%o8jMktR{ zm#-aAo?xB+N>tww*6Ck@u0A#{IquT>(bb=%ZXdPh4J~=Wt^Hn+pLWS(?#$<0nSI6b z@4fOEb^Bf|>!dr}IEETTwi0sRUJxo^+NBRnnuA&a)2`ve=oH-A$1d$pUTsvZIIBe7 zOAfw0rY2wS)s7w``CIR@7hB&^g72ofTgRoHZ2*OqrH2aa+Wxs6uDr8NY1%TKRwGIT z`C!NemmkhujH1Dz;X#+t@Sp{u`2!s;?Tm8n1!{5_8!D#{=FaklQ_ivGcm`#srq}Pm zKqr)b&ZYHWWLO-U*{(o9@*#KTA(#BBM?T=n-0wv|o8Io#a?iDV1;+j1b~X4kMj5v& zchHFHj?UuHWlR%ux8fCV=u(t$AR=1j2U^6fon9WwdUaWN z=Bp61wIp=yM=tGcm;C&|`)+w?;B9y2iDG%kE5BW$rGK2t00DHM>sv{T+fp<9AJ_s?W3uPx1yigkE9Hs zhrkr1zvbwx@n>63&Z6na^6*S_2k)RyIDN=7@WHZBI;Jlp`kVxP$_s9}Tgk*6pwA<} z;LgP8zpq#WhuV_8U2fD$@=h8iSE^oa?Zhc*Z9CY_cAi7q zXAH9`7RLN1r90WwHI)7j#5?9sCspa{URPKd*CHpSTYFHblhU>QuFMWL zZAwhGPKe2tX`+=&6RiQ7Xq{vetyfj~B-#?6Xo>dHda&Wjlaig8a%s*LR9ThMYW;E5 zVBpGAlKpc89L|~;tKn6FbxOMRu(FQ^V~@|m1%>ZBC0+aUDVKEZvowo#V~TeAuv=0i zt)qc2V9vfp?v)RI$$~MQ^v@CLyB+dqr8IB9Q~E|%@0LbT;hrWDM6SnLY9- z!*ojD?Sj@5q9T1GqC}1)fzl0fFN+Nay3T@D%So#%?SLyh-4phDGNip7m|D54T}s%M zKW%t6r?ihMgvbp~13rvd7Z8yw?6OQ2N{ESbA8EL8;_M2iBVpa%L@U&%#eH$p;@9}J7?Weev^dtjA!*j4q&cjPLR;;S zd7reZ2XfvI->>zYJ`DMS{k#KBv$?I(PC(&W4|>r00}d}{iI{IzjC#`2M}{+L+KL`L z@4&V>YzBJ=k3Zc{D4FRa$OF{IyRfvt@R|^#35Anv%^SeCodI#fzG!aof?_ z-cY5_G_?~7ntfLW282)0qyrTRU8TYu!Ej>?*t0SF}_xot6r^po;$(TEo@{4$VCfJePtsfHiDwK+isW(UegtwCZ_0OC5uF>V!WIKQOsc+TJ6rdRkib5<)LEU8#l^fNP7kKX`Q3qgITl z4+R#Z)2CkM^g*?vSIwM$V0b=_YbzCLdv{*{wlC5H?px^os8!nebEIcuB%Th5(xxB4 z$T+kzeLRA(22a`4Wz5Vu`i!34#ph*r(L{tWclZY*4P~@jr|}sxjqw8eqt?Kuhcn|y zF=)d@rxeLPS=HWPqb1@aFpVe$X6fS*HWneA!W4l-(G5o!3^VIDVt9P2sjp9>KJUBGjly+p+GL-W!;Op#e2;$mS6kw#e{hB$~XQZOjG^-@>CGfnAIsZ!&uA zm{;cYG`(S@H`<|-n`S1LJ^=wXWn8tA_>fxPgyvJBMa8pPNB@WcBF4n8pl|Hqb)(n4 z8{B7(t=O8to?w*vk#z^q!JXZclM&$$q!?2eLuIxP*`h^dYu&*y6g8a}wVjHpXBAggvi7Not$jPJefuX_`*yvs!wVDDyg}v< zJ%D)y*MF^tWV7=vKv38^F;a|>plqVVdXq+nPU??lJq^plqO@q$9mDAy@Cce($9R!_ z_!{aEQ6AFXcA>p|-JfLf&>vzf(D;?sqiMY>_}&bWbA}oYWPycg-YnZGX__m`&a53Q z*9@TQ_9|}ayV=GUW$-qEUKC*LYSZ@X3){3_6C7*~zSE*Fcf%;9!I-C_r-NmREm#a; zp&KjQeVFq0u_>><(0$4!zs?rA4|ruP!(gF1mlnGFZi_P?PRm66fD=7mZT~1V1K88|7H+wL;(vDflbojr7fw=so1oFTH8b-Dm3+|A|6%^Rll0 zD2eLF$WK_Y>sjjZAV$E@-$WilC)oNY>L>2GlyoeGEdntWOJOQ@OH{wGJ{;FSvhkwY zIx4l&0#aOUOAq~uMj`r(m!bC&hCXAt#VupTGEGX!NJQ9@2+>f5{u7mK(4_w#6E#GO<`qvuK?~j?(bo!!BA8VlRO( z9}=&DcwLZ5x|HkYBc9WJ&`!_kezXiVoZI1@ozmgWOh4e&QaWf>iuDkER2f|_{!8C? ze$q?HXgo&K^di*wa+9q$|5-0fWAm3!e7|XWpGlpUp~<(kj&AorKrXz0liTIqHq0p9 z@@uHMWYk%qw0C-vJFHlh;1RsQz$&-&eRNh4Mf!Rty0h_!EA4RJfre+5xg!+YiM4Q0 z5l>8Cooway9F&Qz-2M>(-t&5~fQ$F3?A4#5btrT9W1S?mIfK_OmIoF?|H$rW&!U1; zY0U#IEb#^*sn)mUN_`f9*SZQ{Qu;ohsK^J0`?Nk}-V{WmIcwWi&)>2S-`GYbUSD9M0+JL3 z2k3v6!+v5}$FRaQ=uYc%&2~CnyC%C(KopZLF?VdA&E7*S*WW|XidJg#4~QDoHyZFT zUN`r-F_*e6)}CB>9ZgeX(q5V$PN8v4et4B}oe65dm^w3wNqs3K{sN{bFROf+2~tVx zD?mHiHJSRqoAJ6?)dsX4`F)RePK~^oJom7g_pB-vydvcv(_UrfNlC7;D_DVROvyXe zl&U?W(88Od)!4PeXnuDX^;6YX#kCPg7qjJ1$_{8M4R>grYy|6M`dko0*I`e1x(xnZ zVV68k%0iWS2Fd~pP;rP4^s$|w7y@dxw0H;r~scnxUyy- zfR`H>0jQy5HM9&97>o(9>YTNG1J;Gr&?PQH(C2|@hvUQ3`1cSr!5i<+`%~ZsS6*cM z32JBS`QK4%P74v_XMN68&BE^Fgqi>_ELN_FiUV6Bdncpwsbk1 zqpyQ5USgZcW)RtXDx$n@FJ*i>!fR*!&-nZlBX}_gG9H`Lg>2ERJHt250kcr19CmFEVLvt`YMEq6+hJCX=V1k&d9qn)4H`WN*nEu>1&p)m>8mVnA*t) zVcb^4`a`_(aD{KRg>NNusvs}o0HR(V${oQg5fU(89e=Yp?NssXTb(ZLH7sZL`m zLqKZUVK-!Qg*Ut+)e}5h9QZ7=H>Z@j&nm%>Qk(x3HK*Iu*M^^AoJGGSV(q1rnE=cM z2d(`>rw_|Lw;Gfk_VND||C~+r^kG%*VTFnI$L%n%SpBn;k-dyJO7vr1dM?9r%nbbX zTj^iRw$OM=w=a1;(u3babHPYQJAm#mat>ehjKYHEgzvUuY=cV0$ObE!(%0L8`%nvT zsg~u@mD)*HT8FfAHy}jipK)hHT=X+HQPP+>PM;!U?t@-O`hKrV>zBUXf&PN}+%5-rEsR$TyeX3yzcM~#T29Pj9P5<6-o^QA zT?bo->~8C1Y#-EfZn&>fTGQJ)+OT4XM*FU?f^U=PW!6RB5L+Qa8!-+!)X*#pdIr!# z;w@72r50=gd#|;uP8pA!L>~!?fz?`b)8Yk{I`9rYf16!52h5(5uI|!%-dh=Z>%o)KEm*Hu+a5@j)-Vu#FyOSX`3pv? zv>=RiXC*j-k7Ro0_PFp$VGD_dOAtWkPDu7AR9|7XzKU{qG`t2*@dWqVb{_Ofu0zt^ zlb$q)G7>zJOe>2?;q+f{Y-w-0?7~`GSKa|B{B4pRCobb_g!Uw<^*O4uDX24j-1KZA zjhkFrr&sUAg%I@NsyDP01GzUapnF*q-!pI&gE_pPdz~2Fxkj%*MtkRzpe^^(0+&nM zFFhQY+kv+(>3RF5@Q;n092|NXkKtU5AUp7S&^C@&!`ic|UboO`F_hFIDd_i?j$*i+ zOC9D5WM|RKyqk6|e|GL`lxLto8-f1AY(%2&~s$#O*`b7U1x`KXK5$AVaDxvZ*j%+f6yXx`(0T0 zmZFBwI?^e(Al(*#>st=!6c*> z>kIgPi0Lv@;^3IIc}Y~y+A)BGYBby>?cJ~H?1a;IK`*C4DO`9#y1%I^ihOYBhol){ zg%w*tvCR#f#=&~~R`I4dR&Gq1`jpuPc4QU!=A%i0^>Q!XC_Ee?jT0Gd`$q+}NrO+S zP8u6PxI7C!&SqUL8^%D>Fp|N{3G;;9)2LLmFHx%lk)uggT67ZS=kHfgyQ+2yGY09B z$=!uEQZ0QtmA8Mp(}Qmi4utP98p7Oc%rmv^FoXxRGi0>)H)pX~g#12&3JbdBalECv zeYjGO0M7Q`dqNAf7v%RNLN#{*Yp!0Xl3wBi0Ks2ny29eINjv_}~M$<5fw*UIjBoZxGU{jk~{Vy5UB!1TMvH9P+n6yTIc5|hJQ*+>+!q^?%Tax|7#^TS-6 zFfEWJ!)`^FH*Ko4bB{sOr3ZJglAJG5Qup)ppz?xxz-(L!z8fPOr+*Q`J6u25Z=XmN zX6i4n<)|urNAMog18`oDf~B53e5f~D#f+%~EsDOAK1jwXTx!LP6se@|Q{6u^Jek$} z`&bpf1irxd@&ZD*_24P#7MfY(^MfsTKXvOQi?Djv5K)JK3agDU3Xyc0jwu+5$e03@z!wvPgT>+selTrJnZ3h;Pa@RF zphHa?=?vfGWbJmTVMa@R5^KIp-=J%u+>`P3rOf^X5fL0cRHLte>H}~h8!JBM7l!rV zSou?8>%l9rAdJ-t7RSE;Grj_7)4$JJg>I=VUBkO4yIVf!)?QKAl9sJ$9zGNib2?8& zM{#R=SIT5d0AIt|m6jt`*OcWBwuZ{yhunb|n5-8X-;ZPnWMhq{w!gsU9zFLT89P2mKUthI6wB%#V;r`$m_>j-v-YHHy z=bc^e#D`!?24iu zyhu9^jT5h`Rqe34<7uML-wfS>QQ@V$zm(gN+wf(4eFx-~@vdDn)0JR5``mHc{TSK1 zXvx!KbA|6o#oQHUo|!;MqnJK<3(Y+18F){uKDg4}RA%4i#QMNa`Wjo=aqb*OYTJLb z2P;E5$)=wVU56MpKNax=Y)ZHKWUwHOJC8$(1+Q1pECoEmyU^@6syl(u4m9f%1h; ze7!iF!SW}3>-h75dqXSjc`MVY1DUVAjCBEPtWS2~JIm|6S<{;iYA*zjrUu`gC4C7f+N60|>RJy2!v?yVTbCyl|kXJMVr6L}}ugGEwr@*;2YWtbs4 zwl@}st}G5+uRQJm$=}gM`vA-1zlAng=6rAVkj}pGYH5Pel*Dwv|U_r|c(* z^6yMh80Pr;F4q$>5ys*rBko=00R%B>)DPjXZt2wrL?6Nfpzvu z>BHAJPYB{=@wtBZA^0PeQst|a()s~HLHNHbrRHgP9_G)#$8!~5(qt0{bBt-6lqUN^X-X;0Vq=SuHVW=$K|2K>WkCl8_pqRof~@ZW zVFcS5l>VY@>CuBp2=?j06a)|JK^uaDdeDyGF+J!&a6}J66)G{!T7MXF`!>PU?j2NS zbOht<4@FhmH3o2}j?S(vTb%k+`%?YBd#S~0b6S#|zcbzS_$dB}8DFGZI%(1+_T=Pg z8IvbZpO%txF@2s#u7zE32RF?Z@*J1&|11x3px4|CeBl%X^11&l?&QB@860;pZ)xGY z0}3aW=P>?M!(Spu_awTKlP+OFj3e0)p1oHGn6QZE4e(D<0Vl&xhbIS#lZKIYk!F!r zkw%d==|cEBARsGLf9+=9dcSY0qk^_Ea$qw_+Uvj}FPfJj8q@!eQ6&JHe`Xc&-7~!o#x+u!nirnD$W) zOE=)re?jC#MNuAo3=$7}D*=p}06D53ax>uRD<^XQNtd-5_Fz)d!x^?tOC28P@VGI$ z=V#dSGiE3mj$q1z$qywZ4P?w+wF&v#eo!?@*T!s$H9Wv9zT$(VzZ2ZbbRtn_S@ zL3VjOgq7zlPU{rtT9WQ&EZ+u}S^e<_&_p;%?+D=|qu`_mn06bY(arejKYDC=b3DS`c|Axm+rF3uv z>odWK-?uo7_#pjS4SostV-B|w9FEFk=f>nJlDnzRC4bHuttCpogyS0RR4Io!5KoTq zHgK4*rvz){uqz1(j$jXPn9;`V<}iL^c#kE3^(27(p2KcqIp}$eaM=4)J~%2fX7bFr z>8iIGZrkolYGNfu`$81)n9Xs&Nw{!X@GcH}l>kVuWXy1(&7!R)^^=*T=1FO*Io@i* zgCkfAht)8M-oHG|VZSCG?_~6X$qyza-)bfGv~?ap1_Zc=KRSTc!_$0?=rD`GP?ACn zNAKs}<2aWP4%oU0rE(ycf_XE!f1!&Z?IS!b@i~X%bPx_4$!!UTJx6>dfgm~zQd~cU zmg_d|RpgP2=uI4VGTA4yUVSgBSJZ*57D`6>?&j&3Ey6SD@M9cy8eu92vi&1f5arXy zt{NXgNWS}e_J zX6(4q#=w^MIoz0@qQAl6R2N29z~E+Vi{-N%ZpNR+;9NikLT6cLk`^5oil`Sj9ftt$ zdo!nF&N+|6+0BsVNe(yja~FqGy&2svIGnW+Lqs`)r$*&0qJGTb4guizH5@+21iymQ z7k!h6wz9!uYIM9W;8QuA+M?0@GpFw~0ue4|aNBuw{uQFPTEvJ{?+YktErX{<=MO@z zQ#ihm8zT$+>pA{9N(?9P-{kzLIyidOI6uxPL=QZ}@k>qc299rrU&r8S7KaJ{6^_5o z1gFPj3+)pU?_NZENix8*dGupwTGWo_%+>+aR>?gG{Uo?>d9 zFr^W23MU)r(6eyKhI$b&vLzQA+PknDKLXAPBxa@SHTzIkLZt4iF^U7Kybmg!2cMAnc(zi4mnZ3 zYdBoUjm=RJ|2-fuemK6E*X1LQ!J!xA*c=jf2P%l*PU-;QL<{^O!UQkna8aKvoc=lv zcTgg@OnAZ<<2NxsJOfis@OF-$&9L!ag5!^HxWNB1mqRx10@z#;xF>nObzGs?+z@ao zrr-_1sQV`9QoieWg*YHua$7jOB}0GSr{63;l6sNz8~-=#(_kC4~L8PSi#$4 zJBK4Vb6(D8p9x+8#UeU`Cisn9o+BK78>jO-F3-}>>i{vIx`xA@4ju01_)l{>Z5%G< zPxClDn;H}xn?vE=Hi6t|KEUL8IYYOIxzt@8UdQ2LK2^c#401S|Qz7Yp^YZS_(&?~y z6M_oIcV3~xxw>1P{^({GlmIi0#M=zyPd_{Y3lj(IwO&1n!^0R>KE zPkzVsznvQ}&X%Q!(;wmRPEP+M?!(y8(U! z;sm^j1O!L4uY(ux0?3&h(J6u#@Gabc5I$9zfd3osD9!Ni@P38hq!I%EDGn$8QS>NW z<^2u8(PX3W3?^IEhfeFQ0}7IFb*kw178G0Pmat{yc|Mz9d>f=d)Z<2u>^r_*Dit6-B_e za=4kFwHXFKQ`cBY{2i~hK1-5 zilEbHfKw3#{IXBu0nSYS%M-wV%i%8<`8i_1 zH_~~U8(1^`0EZKOBYqhlS5bX=;RXL4e7r*NLIeE83E-8yzo&d<1OD3+z^nL#!i+z~ zfy8iTc)5e1x?Nh2yWsO14ub0VMmzJGgMrVZla{H&Ne)yMg3eM7r}9=B;LRLP{21vk zxEugDGoRm@0G=^BG5*i862tSa(BZ^S6};fHn#0ZcF1a!>ov%#*_g$sqlN?Bu1pVV2 zZl=F#PGb5&4ktRKVuH@M3~*900e{&5zs3NcG#3wWM2A#N;JZ28%um+@@H+?*&W!)! z1n{ZE1RUi{LEg<-zGHw>mo4~tmcz~T=UodVI5RwlkGH5EYv2W){0ZQzCV>Bz!_D-M zb2#x&O-<0BF%J)L1gEAZ;FGQ+==ppuX0H-(y zf37pZOZoFo6TF2#KVpLK=FdMf!Tb1gy9qwXpIuN+8PS6+YYFQ?@SXWzYf{S%EuL&;J)z+Ed zVqI;Q2`<*vUNphQ`q>O#K8hwU*3WWHaIt>2$^;kdXWuo!#roMX6I`sHrEujF`HJ&0~5TR(_veQ8~7CK zXV01N2RZ(r2`<*p{$PTO^)uUKCWfdSoDTgt*933laMc7C>t}T)xczdS&Q23ttdl)r zf{S&s=S*<1PA1x!s4uZjW~0eGoPdjUvTIFnu}6HbGPotiCw(!tVk$77#&?DU1t5&m;eo7RshHl7rF-ig$S4){$3 zo9L)h`IAn3z2G^m7dTs0PJBpk^q_S)!I9?iXSPmog6(;y=bm>qF5}8@_O4#hbWqql zIumW8W95z2&yPKg9$9RDme1n?C#18Z2;<8Te>!lq@ZzjIfy|y`Y+B}3;0#tAPzROt z%6X>q?mf`h_yg?ct*@^K1Oj8nOp7D#-LdoTQ8tm6{O2C7D>NhVLB7$l$bZ2Z;Gb~r zxHl)8l>+CivGZp2V;lXvrLqdF50v`@4Rw}z8~wGol@)oH=PTZ_vigSgWu7vAs8U58 zVjwwri?1T5tkz$J^D8a$Hk1d-p#W>;1vs<}vMQ|g<66_OxymiiN6PvrfGj~&To*c% zx~80+OdXX)+_~cOYH9<%c||2Re*sKa+;u_o0_`y!Y_FdHAJrcgD|iy8FrRmTw$7`5 z2D$0{d7U*BIMMOs7d*Tix=%;+@pFTtWo3s6CjbLG5vuvvVV$V?ymC(TJTPIKDbTUU z=A8IB>C_C^Iq8UJ=iv#-ed0Ol6Q8#nC2@h%o4MJKofpnBkBW>(qY{*wjnzJPr71dA zM}_{{&H8DB?oyF)d_fW)L>hdQY_MYej^%yHGM>=U+XGIkC&p(XKYj>)&81W8$tC%`ZN^tP?PHy$okw zb@i6bW#t<-;Kz!MmioK>0d^!}v_P^hcKu9oQ&g^A*s1_O^4t`yH+YnXovrS!>PMN7uy?aIM=t08>CYqnXS{6ey*f(M3S+>X?hX%tQ!Yr;wxGX?N zjly&p5(w)Pe+K-8)0}_o{9lZpx48jla&vaPat^cYRW)01;O7P~n6prv$&50XIuLn* z0Y*n*>Sw+hWF@n@5vR4|z)#~~07k=y^SswLY%D=VkTIm_Xk{dfjcG)VsCGJo-u>mO z_@m(2f$`vuMe1>}qzgn+E^2q>`uNm|t0IoO^CfSYS0C_0khtHoneK+dT=)R{7-z5{ z0i~V}7hhhp9KRV=R@ZLT&%%z1Wdf9W{#xpYk*POl!ObNrOWg&YLXX>3=3QP?xXGV(Cg8y^gm7H&yYoo+N2MtELDePFTiL0)K?=PfAp{A!T$MNN|DDa1v zh!TuX!=rE~4{hS>zaqje0{p%k>1ip(X@c)tp#w^%=y!T2L~~v~-Hd)u`#hMRrlZ7N z=M?IXVqKQf(|Rml_KDulfqBM15jVI!oNw_xq=+)}e+G#eO;dW?9eRp&JR#*zODbmm z-+=rn|BE@ExGnyo9@-=T{4Uaq`+F0l-_6t4nbHgX#U1-5B+TD_y`IoG7bl2We!qkK znfy%oIC=VP6I|pgz)v7O(R2y`zi;C5Yva!(KT-uzZvOh%@+#y`FtZNV@%-n`<^=f7 zod11Xex~ZPi1gySHbKRlej@$L<@zW1CH}MF&GMt2=t+LbCI;F#|1F3!I&=Q?j-TFX zn9FZpqNfu13mWEUqL)biV_g11&cr|Aiu3~hQ}9jvQ`wAe2G3u-KM`?+OHSPDkhuu! zG5U28Pj7@#*o^xtFa%hgNqm;YJpBk?R}ypt|KgecQ%O{Q`<*(5gRjp~`RN^zNH5Co z0wCEtUW=#}_^8X~_EXqJN>9$r|1{{InRmi-a{X!K28_~O3vbS!RvXG|HsCzsN*|q0 zte-RNU``L~S8*1xyg**4L;n1;h#UF4M#dLiEKbW+C<*q;ELHb8@JwFqzTZZ7IJVvH z{dNcT$DsfIk1-f+%<*G{yy0IG9<~TzU~Cb9CnO2#(BKSugj2hN4hIWSa84|k9Sbgw z1)Z^=DuUrBHzCNfm*%hqZE0Gt6rk>43diXRZlF+ia2?&?`5s`M{O@wPoh8S{Vc1DV zF9<&rrLv96-+jMWaYmtc{O++V_6PsctzS|@Pdy#LvJGkp|9d*Z(-$jVU6UjC_#E~QbxloYsx`U7K=O{@5=nmF77^Y>%lRFWL zl5E6797zI@3k3yAUgA+d&hZ0i&)8vTStM@FoJ5NIwsd0 zB<&yDf_Gzt|MARZg1_~K09wHFbmsX+p*hm zM7gFU3!B+^k~5UNLdPDfDlP9GXNhmvA(Z14EUIY-{) zX6)OuWd>n1d?1giJGx0GL*T)pR@{F(CB|;pIur-*vIxExQEdMj?2bg)c(l_y&W?kB zDSQ#Gq5Dazv1O3bM`&!hYSav05K?s-a&- zt7mq6^+11c4(@sN14dZdUs|zC_iJq5D57B4DJNFP{M;K<4wa*u)rJKQl|kbEoi6To zA#SKN^7BN-9o~wgo{FuI_g34D;U!s2+$UL%Zf#>s+$V*&n<4IZ9Su(#ceC2@H08&) zLo#eP)_PES@EgdV_I!8YEMnT(>NRZhh3(6)QMA{UmeK27wm$}{#9ogrA596|j_sDm zyIbD0wtQp__F3{?Zo1K1aatMewB}2DXD)1b&85BMYg93n ze81txEgxOi@NdY+mG?r^FO`;U3$52F(!-rD>l?#Az`mn*Xh^ZRQwB47C?>wPn^o;? zCPUhy2^(NFs#+7aojk1#K+%~@6z!QkR(I?B(u0>LL9QWpd-5Yx@7f(N4rjKFx_gqP zR{Bz1t?0x_x7PnI32$4hv*q;lift@V$@yqUzzZ@9^=R(yoLPH_}y?$UbU z-x=}F9YJu9sy(fSf4dGS&|8;w^zk%QpXc=JtnesqPs?xV@O4YKyC(%P`CTd5mcZg2 zzok<*;Fe1F)5c3`h>?IXmUbS)GfO>0N4Cat44P}jvGouJ+X;=blTq_-qR`MW^jRViYT8HL%XE4437QD7 zR95$kL+4nD-R+^4TO1f)0rDOod#Jr)ix?kHEQoGu6%!OX^Q|~zNXRKLiIEfLi`!di z@BL(5qI-ejERJi{(EYjv8FU0@8O6!$$C$&Kt%jVi?t_ko_?`a{kL@LAcQKOI&_krQ zI<2rbV_bV^6`nO_|D*Y_y_CJ-UvEMbY>4P*gHL7yUo7}E% z?W?g-juLFPS+-9j`+~IcK^Pakn4zE(=s3AJaEBTSsVv;vc#|5cv#EI}np8Dhii3yG zZe4_4Y7z{4HlEIHnTz9&C#lx`p1ha0Uom`lWt$pS5piZKPAI@(>XD;}?5F3|YKVw8 zyy3wnl-|6tfZG$=IztVInB>BxGw94@$%TG2M-6|&f$Tk@8V_db<9<(7^-%GsM>2q)z-&VtuI!!&02K4#j8)+S&#PT39UgDs#JF#$@QG7 zO^a39O;l-szNBhNrb-)HgtWXp>1q*pROroz@p`l6jiD((_J)`+Vj^OaM7P!EiF}Oy z@~o!*P_#o?w- zn|Z0L>frkdhQj zt{#tORkam3<75R|_VPJuxDf4rInv>HPCv-No*=y%!dWLbqJu=Ff=Dt7UGy|wG>2D_ zewG8%dsaUyS-Dw}+Z$4mq#@}xI-`+})7n{uYLE}c#Ercf8Js2zB)DC#Q{ej5wx(^^ zxR6SVfXv5`2IJM0-HlZjJMAK}?H+!19xud5+V1$DN2G8k*T z)f*~A#vM(i*lUsQ>*%CQ^d-eZ*F!mDC29l14c8#;6X3$~6kQq|!+{urn%5N=j6Jqt zAT&xcXgx(;C}hxj9D(6{HM9^71vv~4y#jzYWFJnY@j`Lv;$l*`{+HtPUcn z;wAKSr_xigw$bLL-9uSM)1&=? zihbhsp8bzrEl(6-wkX17g3oE92sB>A=x`Vt?oS50;98}oR3H$)h=MkisM>zWYq3Ww zabibzHjcPn#q85%w|gb;m}k5&8?tPD45}zPmtk~nlZe%jEqEraIU6F=3o?9ZT*Rf( z2n}N+P-n(sI2j?@a5ea}P0X6~f=R7ELM}slZ~x>z}I={iI}7H5+`54nMXQ^dW`G{T22eWQqf_q~g?)$nj5h>3oXl-h*2xVwKoO z2YdGz_DM^+Iex#RPHd4w^jatloReMkJRauZ;|AEHJp37cS8=B`2Xfy+Yl__u&NWA zRw4JKQSqSvlOVp4CmNJa>?8GHQZ?H}ib~@|lpVtxaw9SN`aXcDOD2lR4@?T{d(s^; zZLGuuLS+Wfe^L8B1LjU*I_TQws#q@!>bGW8Z zC{A`sFA3p6H&aBq9EGBRa$1$?HQLgsov;L?~NyCZG3a+G1JG=~qQ@V(F6EU&pa$3Keqv zY7Sn+@85>VsJ!3j&pG@)FInHqfInKOU6FfXvaW;rQ|!70_=#kk4wTCc{4@Ii7}l5hJe@=i;dP@8Zf-iFXW})-Z2tL9AqW`8> zk_6A@reltt%<>WRg5c{oob}^~`zd@P{^_5qMDSUVGtt@22Yjqw2Mw|J${>fcejM-> z6UhGs&QBjTC^(^?&I$0ThfKszE%?l2TEWOf1w{LeCc-~70sKd(mrR3o2U+GOL0*{_ z>UDG{;0Gc1%%s?t2%=tIK_F4ScY;32O*mnH3I*KMe&-tUn}M+S=krkmoZ5nb|0jo2 z4j>tY4;tXayTE^!!wE(+O%uSyKb2F!2dK6fTNoc z?wSBzX@FB7Eb=9LLXOy_rXk=zGvHrqfQx?)DcZARNJscCU*;^>#sV0{?jqCz#QW zHFNtzd=?n+AL4N0hvpfA&LakVmjV8$0iWh10{<}%r+kg=5s%DKbRiGZ&B4QzFZp$J zffN0wfQxaNsz)i;JN;j03@a^1Qs3y1= zA2pibVx01T2`~9Tl!q0*yS2)wj|2*M8OfF!*;^C)B9^^|HHBUSL|i^vHQ}G~Cs`&1C`4O1Z4j?RLxA zL_ObES?l+?8yoRkz{)^gz~|pwRZ|}Du^%oMiyV!=y+(oZ0++9{yrDXf@AsA8g+B`P zzckH!E&`u*CxEZU$ zN_F)FOlIR3$P)Yz%gdtwTag%7UhMMS-Qa8R8SoQhy66|!*k7#dXWPHIhUl4Ytf(mS zHCFiQ0{SmPf5*HN=z#cJ*sL2aIkDix@4!*5HUAI1x(vVUR8?%QE2}K84_N4bU;2}k zlrOIF{0$o5d?-wrOE{T?4@v7Rpd^J_~vfrgj z<=l!*<$km;97yCt72($w`UxpokeH2eFRs5=Hyz>^--@`8lj+x9@gF}ZRQqZy^fyy& zwI#vtwsJO!M<>VrEakt8n(IZL@2R1GnRsiUKfLtcM$L$elnonJq1iBugsp#mz7Ibe zCusld|3WjpoE#VSAh-u2zKL4chNx*tj6L65wHg18`ZqSv&*6HxR+5YpqRR_m?$+RS z63b&%6@Fbyh&MkwuJlSksjKtX*7>VoVJA+NlcT5d;79chgeruGJjyB>%gff2Aj

rS-miijxRf8WXji#fFonVFJ)%fX8*n3Oa%{5!`5~^&4uO1@c z38H^U&NEv9OQqlEvup;9+6qf)b$Oty5Wk*PvktAWp@#j&XRZ=CyR;li3L&q~cCRpM zP-#U~DgXEHyhMp?2g+R8SCS&2!F!$O%AEvY;l< z!;f@qe-HN8ziSO1D(97zZES2TtAi1$t-)`jfqTlfWS>VG|IYniGOyxqJ^ERX3rME< z`v0qI!C;dQ0pmywT%|vLpU;0qBp+sqN6Q09OfbHT5QRH==w&{?6%k@QDxU90dYVf) z1%TgGzQpFBNVqHEY1}Htz%)lBR}KK>Zyc)=+`*U3&H0IEao-2VDLorQQ$p^td3u_w z8y#mS3c4Qvdyjf}kttiRUjN9iwGRziGCP zA?A~mKg}!5^7}8If08ME`vme6e2e@iD*p^#evu#LPbwwSi@O7`MCI?}`5#BT(V5FX zQT`5|zfeEQpHxcZEACB`6X)MfFDl`Tb831v=ii9*jFw4$d$|0wDG?myPel^)5c)e2 z|JNpvAFcNYzQuhFgqKi$oPY6t2}zkV^FLAkxe4S)>ntK)aYykJ=HJ3I+NWn5y_)kU z-We^E{06!F*71}iKWgKDuKb({_`e3}1>fTSO*D!`@^kV=E#4<_HqNX6Hl$C)zcWiu z(asYR|FrI8=AS+nqx@;D)99|CMKidU^jq{wxa7orqWbeD&>tt#iE@kkmk}VI%>Rr= zH)R(L1BaZs{wB(QRf7BrkY3~~?%zwkaQ*_1Wo}3>o+rxx_5}I64C$kE(Z5}&{82of zq4{~D{5K@fKUyCW>BapyUjGxx-z5I1{)qB-1A);pwI9nBItFKh*&nihf}Vh1hs2~y z*@7UyvqK*d=G|~KR_L9$@8#*E2t06=agodrDbfkhf53nMCYC=1*dq2|AB27wo#0=< zeuDH=ey0HN`wU+GeOxZo{>Y?=^rHNCB7LHNZu_XSf)m+OdU9s|ccJ~8MNfEjJcGla zPma>j*BIvfH~MOPn9^@5uiu0}ZXJ$K`sa30cJ5*abASFnw>`9g&7G6oomi8%T2|uk zgJblpMRuGB{K&c>IF_>Qi?NS-t1kKGQ2%XJy>wNBohjO($OkjzLsf?eAoqt$KMszi zYJFQ@4xY6(qz%u;x1wjQftkUxNr8;u+2n@LNqY;DB7=50f`BzLXrn-~+*8#<1hk&W zv5SlklH7Bf;g7S*Hu+@mT*|h*=r^NPsf?e4IzQbhS|lVikJ(Qb;e^vtx0w8yilo!x9&`MPXE6{6n#UETL+WyG# z8S?(B{j5OGhE*ouo~?(1XQ)6|Xb}VgpAVi%3P`~-$qf$tL{`X3)JY*$BnnNI4_6%~ z8mjiLUcrZ{Y=`5@X8s2NzcC5)=x59P_kid>Ow!KYzzsL!Pi^g^eg6)pjvFM@radD) zbtdxmB#?1^4M$micXYCJ_$>+YllBrle5BmXfNfd_{`;|_PM{_d zpw>R5J04A8(a!LHzarx^q`l8bd;23p_W4WhllJz`Pk(BD%7dYl`{WMj+0>M8AqPuH z;`rJNQS``%NZN};=ci~}8JZO;N>RgX=&8LS?L95+9f%Cuk;WzM?VP{l7q0m!k4t+$ z&Yz#V1CaLl(|@6LMUKsgd|;oS@-?Tl_t5<5JLWI>S}5glMQ#Tp`BPJN+!p-@3-md0 zWTR+@qZufm0ea6$dw-7{eo;6-osma2TEZ+sMYj1fzotP_e~|W$5d+8V(%yqe`|bSs zDLaUXTrlwqxtj^&abf}T{#)b^w$YByXCPFR4jzcbF~MB=FTgKw!6J%v9*dQ2XeKg# z7SQF7`eThVc+MJ1*%7!{+PlW82D_8wj$qfh(Dbi096{OA`a1Drw)p3i{o{szJ@JFc zwk(^X;UAE5+JM@P&+_%AseiI9e#2EmUVN_~rnesWYXkp;xFat4ltMOVF_Tx7E!I5M zV7s|_D&dlkft`w<8@IklEp*ComP`zT(F|&$uz_k)&7gqe;xI6#wvCVZDq_te*Lq16IqwS#4cbYroZY#A(cSi z!ChrLYPI~Ab;_$&>)X~Tr>)ix1L3o-c(OC5mJiRCX zNBA-LkKt+F&;?KJstUdmp1xtB@i@JweG~pJ_=E5t!LNqThhGUFf!_{a4IhN3{@4ls z1bjREP4Lv!{|h{I*?)kisn0q1W$>Ser~dgCczP$g2Ywvh4NvY1@B#P`JoV2CJiUv4 z7(Nqz9{jWLG@N+|{&{#>6LIeZiR-S7qQgYYHrq!=&5&xU^uemVTF;OD}>4gXE}Z^PHZzXJa$con`8 z{`>H)@N?krg?|9P5B^>F0r(#H-SB(iH^JAy{}=rG@buk+51!U5XkIb{{);*mzl3jq-wEFdzYYE? z@PCAFfqxJF4fu5URqzYpUxoiV{9Ew<41Xv5m*Ho@PlNv)d1!+!~W4SYHL5%`0hEYHq&gKMx`C#o z$t}){I!Q0MBykA67&*koJYxb$xg`y5!oxx}rSQcuP|*GVnOWzoGum5{jgx!ZkNM7= zJ^P3jYZF%kb;qm%vxSKLnqIUj_ed_#y5jzx7~yq6~Dm z@eelTu(AIVjqnR_%6g;gum^)t7j)DO-4yuM48SesUuF6mgD+%nH&*P}g8ab)h$7FM zNdtG0Js51K3u}z^LdP~rM_CV=kR3yutlUoC#IYUHvE9139TF!a?%$^4z9way$i@IC zWu=V84m*Pp(23}1G~WyKBMIA{_r1VgWzKKf$a2!a4Z;gO_RNO0e*&9nn-49rALWNA z6U@gR_za-f6oYMy{e>b@zC8Fa$F_AMHu&U|W2MPpc}+G?jg%SqEjWv$?xfNr-!%B? zDO#t_tUq^r*k*i}Gvvv&rO46zU7`!XN856mwu?B98>~OyvF{n1Sr;Mg`5_2KTp~e;A=zhcH}oHn>B2mX@3a*HSi$*|LWu{HhOja5A@%K z52B}yC(GOJ=%v3^IX=5R{A1ul`oj*FzIdj?#rA0>&gpnvAidZ!nZ5{&*8<|N<{$uP z`XP=-;EDITrX_ta-^p{x;p`)Hw5<;+7vMnryO8^wY|&!+p8p?!2l3%Gk&f9imDrli zW(IJ?^WgqWaoH`WzMTPU4A^3Qwcjn7$y5R3uxTgP8g%>J%expF= z^SMIdoF@qXA3B@|_F}`fwnm&2J%>+LRuYd!y?!ZrPa3fFpmRN zVVoNK6qKfv*;^e` z=MW;6o&njYGJDASnHyi->5yyqwTR$YS|$YUc#szjII&IUSWZ!7?3lnvxE~^O=I@D_ zRp11Y@zfCGk9lc#4^DVp_uVEpNtd}g^XK(J(#!E$mp@lK({8oPKRuJNvApJK*M{_l zmzO@q4B?9H!Cd>u(l7ryqzfv4lT?TZ>iGEi_qz1cUA!Ec+{Bu^wUcu>hUu?0K!4|e zk%%Kl+KiKz{|;}v%U{YXGWh3rAbpVjYMlP0o$!=(A?XFb2^jMiJtJsbyUU-~e(j{( za(o7n64rEgxbzxh*r)v-0Q{Ozj10Har9bE;5c!4pPQ>Anac8nDw6`V`34n zuGBN&%$SpW_QN4ro@w7VMkMG!+u}bST<|4>XcoHgAxLh^~@fkK9Y29?hoHv+%i!(0f&iOo^ zj+kzx1(+fa`R1l%ZbhQLg?q7J%D=I$VpH9^Yg){g82lO{C^Gd)L{MbvyNIAj|67RE z=LT-qv$csWN(e}ceZO!o;^f19h}|j7tXi~=g4V6yx~6#=Z$5_HZ45D7KhYZidy6oP zMf&nh_zr1(RpXL1^^G<>bmDFHNAaiKqqb)@wfOG;)}WsT&8@%V8pm$LYv-MscMimK znf%@bU_9#Ff9;rDgf4W54`- z)<9AHI{cnX$2jf$^RFP1JpJ^4?-EHlg@=FMhln8kHMoql{y08KdO6+#I+FTx>)pWU zq`dZQ=y?)}4KGiB6I=$;PN+ZDh42%+7Z~#wJtJt`z3w>D-1=G2F}?5p$p_rIPdgm| zenaNg&p7%nkB`VN@I^?>qLvBZj>WG0+ub?KA2hdq8+g#%dY4Nt@-jW0oZB7yWaq))HeGhlw@ZNOS9wnKPza%F)}$J);CHGt!lzEkx`>`e}2x z-hLB@zmuH%79gq2)65JU=ftFK2?i+8Z2@{BbJHZ~^;}B$-wmAk`i^x#dWjQywsFC9 znz=YRGu30$bti3rO@v|-&yIZk0Y7;&Lti@i4*vu5`9e#>IJSyWCx$Zk5 z8|24^+;`Q?Eo>7EoG4&-G9(`=L`}`Ynyq-6R#R`jwZra+mMSew21U^HB0YJ)!!*53 zn^D!f`g;Yb{qdX(pK%rUj>lcmAW2)ZV`3fA_2Fl#I9Ar!=b^zz? ztb2b<_^iYHGOTpzgx;N|(#!c81Sr4cBe4rL}-278SN7VR(#t< zpxaA57$$g3b9r|Kp46O`+&9>F;o>4JXxl!2d{(leAo^E**iyvt?pcnt$C&|47g^CZ zbq7`?&x%L?YAmdpqqpsI`Nj^4A#X`vylbpO1?z>eF2(7d#sZyBX~QIr=?jve@LTFC0;YuK0NsLcYV-{Yu+vgmF5lSjawCX`pDY(%+EH0R{x|9Z4w zEY(sbYI!|+Cb&E0L_2?q@=!t1o32O5DhX*oVpIj{+(`eehmML>D^Vi74cZb z*^#zcfvvl>#dQ6T2e;~hDy!RB5CrR*Kj+%=DQ<}ItK+NG_XDPW0@~vYDhCVr+i}CR zN0@EfA;GjuTPdbv@_b?Lz(=ckmZE}0{LBF&J7j=pXJJpGz48%=ZLfUcAFR-Ru1odb zsJ)KdKTt(~u>Qe^0;jBh%n$A#pRiTRMiEk_e~qZXZelv$ICj41O}Bt3FoS64K}3xz zlT%PsD@|uJ7NHLm`47>v!}@bIJ8xtVGd~=|NdToXG1&L>*2`b3#LGSu<<318a@S`F4tUt z|DTO7U8(Wq34}u0=?fg6-2OozIf>b&8tuZz7ekcy|J9Iar3n}L4>2Te=na_P)X8K< z&0_@e#zQmj=dBR&jPXz>SZF^fQv+q*!1*#zF6mhcF2OUS+z|##%x6zxynJtdWTyZz zbTwPWynlFae)Qh_C}H-*%%taG?kPJJKUSV3CtnJ9usFke zsA--r7UuDBGM3CZcpx{=K23gU;B-Ds&LvQle92^ga*r}g+@s7+h|Ya#@%;K-<~RIM zcTekeTg{Pe!BshPB@LGD3n?oF|tN5J^{NdFfw z$X51n&*)|pF;}LH5 z+fxpni6V@7<=AFAfhki@`9!nTFW$GWsEyagmt96N;-4ODEvkfH3BL(`ySdlL3+UAy z#|vOOfY6lG{@{EeZN`5-52EnVJ=5%K(dbRTp~#-uz=!PPJHY1Eb6MBa$Y4dG$pPzq zHAd`{H9qG%!IarHB~3R@FlCNS`Hi6|qn!l9CGPJ)G{jySS-|zn@V7Jvi)Z~JrFSu{ z7`Q4BW{Iubo!nJ7l*UTfd36|#Yik+y0oMFrf||Nr<>@8b`4CID*qCt~9NcFrB)TUz zJGr<31{g*wo!_Tc^lQuL9;`wY?^@_;ilznqv?r7@!{h_gqUxf;YHTr$)>>^W9*hOZ zIFMz*62yGXh@&y5!ZB|UxM>2>Jy^*KW(7rs(LJq2SPJa=BJACq8}G`GcddxTyS8S> zyKczwY(^%a+*mzJM80VW)Z`Vl_2RH%+H$mhEU=8GZrVOMa22^*%C=wntY?O@Hp#Ip z+z|B*%rOit`@=rN3Be2pvQ45K8CW`gY6>n!0qJ3+CegjsnVtNeRv|N(L9VE{voG4o zZ({6=pZfsY_HAlEk(?Rn|2JR@umk!neC4;GHDTBjzD{P^+59($}ZdiTD{eMctudSAyLQMY&imG5LxufA@+4?i5c;?yBzDq6+L$UU0#FnC1X>dG+6jaH9J< z8g7`RB}Wt8>k1f~NX{>cb~YityRZn+CC3bb5TxHVJ>K^Mt0FP3 zzq~82v}({A6dA?b{5Ezo-yIqFa7iC@-`UB%&7DG$FI$!KI;U&A3lf9vrNSe)I8Y$72ZfR5E4s^Pfat!m^JYeGhaT2hl%R zqW#g&pNEM4Z{W1IRtyTe^HY=1x6Fp{Tww6Y%H#o4Lf2xic+hl*<+U}{-IJjp+^QeD z4{Z<4?5!%S9BOFe$%oKB<2~C3&FPZvq9R#L6h*I2zF3+3Nh0}%<|}nT0~@kUJI*(- z`svw8j45yJinP{sFD|_4;nu6WYl|woXZ-%>ktdB!V*dEH#k&gH7A3k{CZcoSaB+O_ zz(5|~{|r8XH4h_OhZr`#n0dWFkQ+H&W+(%X_*L|gOky{k;f2`P*qbY|mD#>;$}|Z4 zIN7O@xwYOj7Hhy*89B%?y6x)jESL%Q(+0j07gxSCD>=riW;+n0E3~p=CQQC~9|uQ_ z+^s7(qt3+#`Utqh@@g~lv%z@z4ApnIg3?g#9P|j$cA|I z2Fx}pBduq{0I*L<6Fr#Bwc<0wf!gr$m)PN1W+(ZG>>j2jww0M^dEnki8MV9Fj*;Qn)-4lpn5&1TWEM@# zDL+k0Zgh1$$iC(Bc$mUnV){>ceyluyN_l>9Jij!Nzq;eJo5%Kyxh40DZ0FnaH^uXt z%Ja9E=eI}V`CXCn{9gFm;de$7`McnE!`}Wo2%SIp*yB(9 z?123~-hMj(n|!vVRJ*qQH>W)!Nlag_VH4+VOgh^>5`Jj@Pq+ypZDrB#*g|*UY#FULDzuroVGs zoA2V*BJAoC`NZ?5pnx4?ZnleHF5{`wD{7Q|xYecOH=QnB#=4o0sTM%`Z#nvXA@uin z^iMnbr$gxXD|)J%nB=fe3o^1IG3$F+w}cSuQ%3mF{kbn->x|m-ss!evY9^f3Gwi ziX#7W9d6nO!vEpuYaK3p{>9;S4tGs7>nVrVJDhbOE@p zI9h%95h^YS|8WTYr(C|P9TPK0K=|h&e7J^Z5dXgcJ>`GZ@%cMui(NuTjzD&mWzv75D?-LGt`>=q(6;!0{7oa?*9>I^!TxW5NIlRer6mu;FKFjeb;4KfFxn|;+ z@9=gG7;xsgh~vjyyDD>oi0~ip@Lu=fx9~55z9>)eS%yuD|C>&pogcKg@ZXG6(y!*A z4QH;eIKBx!LHb;TIMVlhl+<>uZ61FULVvT%w>L&AcP+$`pK2JrO){{(?jd-)sTZdN zoSU&2$8WoG6%<)|bG<`wtHawTTijf`5d2_BJ9!RqLFGCc(*AF7?Pv8A%fHwjvOWj> z2k}|%=zAUgT1U@ip@Qg3L*)EQh@5AI$hjp9hkkbAeg?~ul_bdDyg+K0aKi^*|dM!WuHJva2l@8|t zRhp7#v!Xv&;ky-Hr10kzuFLhR!gaYWat(s=oTvE29nNGN5=B28|LI7t%k@=->w0-g z@zLdaUeTWmUc!F{8N=~V1TT1*!a4K_zQo~_Q}bV~=r#YH3NKQ8{z>6lZ@*Qz)>}3+ zgJZNVFUNU0UvG02z3vyA6|VE$p>Un={R-Fh^@|Yv6^BzET$)mPdt1@#dR)xPhV#qS z;c#Eiw<&t9=ie&42>hhJURAiR$G1cH7f@(8%A@($DqQnlt#HkMv%`J)+ZDa$-=}cR z|Mv>l^_Al$gp^a)*Cd7OcCy0ZemhyM=yf~kP`Kvv8-;6mUQxJ~=X5uZ@$)^);gnzJ zyGY@hf33nb{~m>(2VPR|-wwg|hTzXSoN}@#!slg0uiNcBHxHxyT0bog_v^h=(d&AD zO5wWR4=Y@^tD_f0e_1`I{8I=Kp<#YyN!-*Zdz3;eS}s zYyL5JL+8u?X@%={vQFW;oqS&5y1w=}+;5+Kie9(R-zr@5Dd*yVaFkQavsB?)o_dG- z`L-x}o$r?wuJiq!!gan8Hx;HlI^T&7_wzkZ(d&FKSGeZCLE)PJ|5Ui{k3S5-p9sNU z3c<&@`x(m5t||TWgAQkTbw9mE;aYFsRD5`85YEDJe6rnrsV`5y!nHgXINZ;7hN9Q`ZdAA~Z;Qe;|No_M-JbV{;J*&R-*PzR)Yq5s z?na2^)$R5Qg=_uX>TthZeM`~ndVgKvy58kQ6!X>X>Q4#*!1?@R4kx|lzfR$rf0M#B z|344m->c{~|ECnL`5#ue=6^JVzu9CBvitIvxd)KMHUDi2*X^W3;kuoCL*crX@^6Tr%97V7DX{W-cBaK`~ zdKDi|*#!R^MbDt%cPe^)z4)=B*Ztxhh3j^E1}hJabLnZv0ET`yNEdR;H|ieBsO zdPT4E-K%h&@1qLW<$5NB|A3;`{HJ}GrM2bN{O2iL^RINcU+-5add>fD6|VVzPvM&X zy&?P`RrH$w8GINQApiRu?$^siMX&4S0!6RuWxk@<`QD&#U9N70>vG*5!vA}UUh{uN z;hO(j3fKI{aS(y?>*d1^&qbW(f3?Cj|7#Sk`EL*5->v91|3?+B`Ttz;(f#FDieA@C zzoOUm@}G)c=X>!-j2cY;)%h+~xGvX9hx>ZFM$v2jcPU)+|3`&u{s%+&Kdb09|BvvZ z1(yr2`Cq7T&A-&)zWj?7z2@JoaLxZqijS_BuPOSBdQtdH$ST)`^J6%HqddF?7rY^c z6F8QORVVoF7*61bb4V8ai5O1ch;!%?{N)%<;C%XVe5mbkO<$yN&A(jXn*M5qYx;JD zYx+AJ&hqkBUgZ3aqSt!cqv(07E%bdM^#2?}|9lAjJ0bMrCLuF8>P^ctU*Q~DM4ncK z&r$fT4$lUr%lo9F*Y$fo8y_6=)%;f~T=W0D!ZrQ(6|U)@Qn;p{S!A*u(oXJDxb8>y zh2Z}dg1-}jFPxmtmt92kxlG}@{nRO3&-ZpJoK-4(?o#+C6uw{Kx2)=%b&G%zC z@D^6e+vsq%XFehlyu;zt&&3M=Y6zdZ6@8ha->dMr!XHt1xx$}Sc!k23AxuYk^tjYy zP>bt!^*M!W`mZZo)4R*jkbe4UMV~-e^mCoU7byH;h3obo#{cpV`fUo=`F>g93lSE1 z!uWqi(Q7{K3SXr7{6yhe{+PqrPUyw4uh9wa9*Y^9IE}}60=LN?3_a^o+)ft|KC9jN z(;oh+JO57)7kd`&9ZV;DMA#Y+7dw=84;OorA9(oAF_!Q19v&NO@d-{TlCRjCRC>7B zn_TbVVsG;I9xnDKhdo^EO{5%*rWbpYM2?k9aIrUO^>DE_+2!G4S2D#_lJMz`S-!Nd zpc6bc$)4Zr;bJH9jE9SzNRiX4@DcltG7lF!j_nF}kCsiwyA&>MkP*))+&v<-f^ugb zv+rZMS%Q0Z4R-x(-N3CMuf@vw8F8~}*R5%EQ7cw)8T{f^o9i~OYuW+Il9J0BTk4wY z*EG~$TenQJTsCLLk~P>&bUUc#)&`R-PSLciYQp09T(v)QAJXZI>RK0WXp+9qrP5VCKnS>=CPHFv%o zzF@QMwgJPHD@`(tf@W1z?rf2wT_k~Uh(P`NVbP<6=0*2iU7%01rPyk>`yB8z(# zY-ww-$A%H|o<(WPQHjkv%nq-^DW+ry@sQn{q#;?sW}qD{sM(5bT|K;}jT@d0jVLKa z3en~ITC*$efUl_}*e-%wPsN+p*0*B2iXAm|b=Oe7`eh^y)%p-VrG^bl z5E5mW`bC~o>#|!~yQ-v^C(Cy<)vXdHzGfj#Yjs`Y#@0{>V{(|B&Mma2jvW?G_yyhJA~<$ z*j?9age9e@!_l?1p^4`rtu#->>TQWLoBA9OaxhphB>(BN*aAHPT%89t`L#o~DH~Re zYll-Hcs18GteM6wSEhN2nS%z*##z<6V8Pa9%U6wtw0`uY8yxAd!k607er960LTI94 zdVwRGJ{n#ivKOOib0ttJfjJVGErD4QD4CfG%}9l&r$XE~&g|sO%UsDcoSF+BzB{w? zf_M2J$9&LDr7}2`U13iP$7R4-ZaSF)#{eMarj;qY%!OWa_eT<;=Q;*MVotTnguoq- z&$WT$yjg_fy+7w%A`YL4(A|af8S^9yXN{X-1I}E-q$dwItxFxB!+gugPv**%U0_eX zt1t$A`TrT|4Nouqt1E26)%IZW=hSYr@)rike-6_7^4|}|2g(1clmA(lzZ`t|??w6` z`D@&bo$s-r>t%h{`AC_u=hRZ9+dkNpEAb zvfet)wjVyr(oWKUR)Yw$tO^F{c1O){HRdYX_+QMxXJ1Nkn7jfe<8f2m+|LLBo5k>NyblM%k*@<{8f<8 V8#)YKscV0IPJX6)AH1Lc{{@W>>3wY$I1|MNRAx%Yn0bDr~@=RD^*FZbmX&Z`Xv*L{BC&92N)Y`Em-#=kCC`JCc% zPO@sE#bWur#d2-g|NH&1b@10GEtda{-^(vqEdSl#sc%^On$f5hM~YxbLm++9yh1VoFD4Q6I$K6c1i8} zkQeokS&EuSZ8$>WGW9IpP;b&+X=T&;=GrjRtQzswSJwp06h=j~c$dw&jj1Ffn^Hlu zq$#|5QQvb#KEy{9BP*kFqdZmBOd?Z>7)ee2+Q!hDF)DNv#i(kn z5ZSa;Hq@?f4y_3^N5bCf4eQrul&S){Q(Ia>;mFcPsY7pudP|CpWnR+cYiy`*G}&_r zYa?po8nvOJDOei`$<~y?Y4);EODK|AJ5m`f5G|vLaPjYtgtEshY-p-Av8q(ac&o`m zjYVYeXe`49;4QKyCD@!)G_7(tmW||clw#(27I0BPPMMoyxwv)NqH5MPh0$y>qZGzd zYLPd|G|!Sn#um#;Vu;MvoQ=`co{2qc&$2li2zYUXzxxaB@Y2zxGMc-!I+Nh3Xx@@c zCFZdy-`18{XdavPZdqBU+QVODOPq3X_h-hIWk?MlwAkQ;(uGTriS}y}f41bp3I|72 z$J=e1!5lJ!n)(MqV~J@ZK&v%LI#=dla7T*`{wSSSxsg&job04yxAHW*3dyczVYq2M zdhEIo{Dtg4O?APEO&;n)X;9kCDlaLK`noKu>|~?38U0JDTqt_z-sMg3vZgkcE-!23 z8TKOLP?uQ~Rj#WIXN_Pzc0(3cE2&$_)Q@mi!o8&AB{&O~*~o>z8bt?xl?9`;Ur=Vl zX+R4Lo5J|p*t)*ntCX(BXeb3()&>y6tbh%paP4i2glpx6zdjOaVBNgMvvO8AR5vRS zSliYXXby#2nlNCikK7;FP>j50v#}l=>I0++rK}Pog!LHtahp<#t82q8AvL`A_G0fc zrMPlMq=Cm^>{Ts>AEOeL`WmT|5}e3eb1y%Na1Pwx%G!F2Xc}toUtW(94O9Clx^hqG zzSdA{Xi2Co#dX=3*=M6>Rbu8_QVca4c=Dku@AE#4)*otI8(GK7R$X6H63C{#l44&= zb+{=QYH5N07V2mjgTLZ!T=S8MOPI#cf!{`IS(9R&RedETygq#E*N4{Bqr;aKlbyPB zL1=A#V-``yAotg=uaCe&TGxjfY4QM9L{2q(RhAZK*oGQWo14Q;&0!L2Yy+69u357j zbwfk3D&6l|qN*xDHRzebP%`hq~Pp|){tAXwYb5Wuv4eSISu<%e`1O0ibk zvW|~^d3T^FRjuLmtyn&2Syw_MavJ+7L2R6i;0Sr5iJr zMV1(tHZ^X5`>ChCjWaGSOUEv(ZHdTiD@RezCc-j^iVWF#IX|C6xI$$>1izTWFXmDV z+6j5Y3OZkanbf_AgINC^EiO?iDn0crwW}LK%TNU&HhXPJxvi{`(idfmOgXTukt}6) zG1mrGdzuU)pnOX4?SX~$7)$VKLBB6RRQj^|wd*2OR~cwcLw%6dpb2hW-9p4Q#R2@M zwHv{xr4jzWF;YiE3O){@JX<2+#`@s;W}ZT3%250ng+`h-2FaxAt2ato0Ffp}yD=q6 z;P$}!(0cMW)f-S>oD?9)(wQ;2IEeLf%8Qm+6ot9R8n*UCIWY`L8#fC1k%e~ z+XEXii&d?Z1_B#u0}bde0+HIajEd)hl@Khmu`EhR*KIWoFsV>WHP04Ub2t>Kue%?T z*Kw_-F$@l=dr*L&3_(;7poYbn0!ARp_A zz6#@;dM~Z`5x>>&3*q}CP3uB!)r;3j%_0Ioq>0C}ide@qga`=Mm?0U9D1#JOVQ7nl z8e7nAtFaoubxILw@zDN))ex}$@)DLx2`M$IsM(J;@2Q7gS!T1DVq2T5Ya{Du>8v`q z9(<`ph+*_(el-Z|5WaV1%MY zb|S9)_JAi;SKHcv|67_J!Nmthzm zsYlb|W#_G2#Pd$x(-cW%N!l+#Lua~K9M8L6|6zf$QCv+h-FJbypC7{EiE2Z zVbrhGkO{Mr%i1eN!7ylDP#e5g6nJ@4O>-z%U)w+vQqlRrGHN4Db=*$)1-U?oS;6$; z57immE3g)r3w|jhF+kLOctQ}MxkXrmT2I!`sTzeVGa^R!Dyf>GWAHMNHEcvPqNPZX zz^OI{L9!8c&q%mOWlm=UHB%xJ7|5iP6;MkkA||~AKv1Kzl8_KUFai-8rYIawl%W9* zwKj7PN<1JUW4nMofN{NEuK_e_}d3`9X`0H1PYs2;M z#MKL_B*E%>PF04^I+%@c1Lon)7**C_nUK5E+vpTbBcV1L?J3F%nj6CmU|ks#YH?A+ z9KwfD-qwnt8T!Yj#t)%nW9bFVW3w^J<;iDPHZ`!7^vj5uUW>aN5ik7ZbDMj6RV_-( zy05X-QqEbGcrMROkd=K185?tqof)kmUZz-N+$D4eqefIA++9;6=HfI3h6l&ZEmS@= za5l;eQ@@5J@EWEhYB*ebe>xp+xss{LE*5ipO&JCj$+FrH=rYV=Y`QE)F(z@!B*vsj z8^qWoDRUT;#9$0#(ilzQ!-$w6j7dahFlHnf!I+U`0>Xpvx#V1QQglz$SLgL^Shk!m z1Q`~}Qt=o;T{b>4MtpT^gsou)EiHj&vMV~m%y{-IBJ~YvYqD5wHb2~9c(xu-olopql@rOlLO>Fo2 z7v@;4cw~eJtL5{S^p!*{mX2`x+|5qimMNgrV&mva+uj+;Ne*@I()7>Kb+=>MHac3g zC+TkzLF=8s0DY0Ycaf7$>v|WtELN>|(G+7i?d6MEt-;X4PlMf`bMYWvTj$6C$=)*6IWo_!!iZss(tIe4n(U@C+V-g z_vv;{toIFese^B*C}Ghwe{4ckaBtZ(Jux_G>YLb7o)kJS2<|B19b7 ztM|q4vonDPyAtQeLBG$CRQ_PU-bdPfqi7nF<=w@xc>_!1wgLSllVxfriBfpjqr9pq z7Ya}Nl~*B2CnOoTiBNZ%dVhY$)=L&Q6tUA| zw}z_;EfA>1#n7CvpU_W8)Z!%C+_08-cdEKGVz)&XIcM0$6Uh z0&!*_IY6dlAh|$X95L9pss5{3{of$#Uy}y#eQ3*Q06*q+%1oFk;(w_AHD&;sv;fFQ zCZLfG+%w7snvFK_{GZGQU;vs93q7p`6I$X#xi4{Is+K!p`vJ$czk!<6r}FT3>%|WI z4S!tIPpMDQ6MI@>cz(y;j-6T_Y-eY+9T8r=52(V>3Ao0^4eVk(EaVpYy zc2?W;Q;FeEFeq0aV7A4W!KL>=^k5*YL)Yr*bHgoDjE(mcJSK2lXjCuGJ^W(Ibfk7VU_Z zLhHky$Dg0u06&$>Qt+rMidum`X#C|<*62lXcom@tJ|Hf0@j6|4ixQJgFQ$UAEkg}Wo8{aiJL*y^zG3I-X$d~#DbADPp zpUKN}Qch`GFLaaP$yG?RaCFKe$&z)q672j)OGbO zj!o@DPo|&e&bLcHteh$w&=mOJ*9tHBmDhZF8S4h_N{u&GkONa!sLN}rp@P`bd{uwN zr(aqSpIlzCZ%e+~v(RN#I){G)GxX{IsYa7_$Ad4Rf;{@s=+Rt_8tE@^nd-mveZJ&# zGrOV}C$vvi^(9Wm0Lh%2+lC(oq3YNZDM~`}YCG@YP)b$5-Klr^g9Cb^w zkH(6*cdHS)4HjyPRj*AXWLwZezb9>#sy%QFXx_qR7hK;^hffk>9!LjY{LF$j$ zdeo;}IC}>E#NvxLPV&u6fVo?B_|It-FFU@B$4@QiUQ^@C=T1wU7^hh;YVqX*P9LJ8 z-$oR!F4&C?#*G|qD$-&PoYxb+=yPzA@A?a0(FTus^u1c%C2jB>HQqj?>EZKQY@)v~ zq2�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 )GH@7mZprwAfj7O8Ne@PD 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 z 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 B(=Y%4 diff --git a/lib/public/win64/tier1.lib b/lib/public/win64/tier1.lib index 62b46d569dacc569225b2744474f727d8ecd2c10..48c1988a10f768aaea409909a1d8cbd075fcc66e 100644 GIT binary patch delta 147975 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

b{{u4 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

n-qV_L8b@>%m+_9K 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
^ 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 y|Ly+62M&KPeOyvf&*nXnThaDrkGAsH;qS diff --git a/linux_sdk/Makefile.tier1 b/linux_sdk/Makefile.tier1 index b8960c24..e29a3ecb 100644 --- a/linux_sdk/Makefile.tier1 +++ b/linux_sdk/Makefile.tier1 @@ -33,7 +33,6 @@ LIB_OBJS= \ $(LIB_OBJ_DIR)/commandbuffer.o \ $(LIB_OBJ_DIR)/generichash.o \ $(LIB_OBJ_DIR)/rangecheckedvar.o \ - $(LIB_OBJ_DIR)/strtools.o \ $(LIB_OBJ_DIR)/tier1.o \ $(LIB_OBJ_DIR)/utlbufferutil.o \ diff --git a/public/tier1/strtools.h b/public/tier1/strtools.h index 7a34b6c4..8eefa52d 100644 --- a/public/tier1/strtools.h +++ b/public/tier1/strtools.h @@ -30,6 +30,10 @@ class Vector4D; class Quaternion; class Color; class QAngle; +class CUtlString; + +template< class T, class I> class CUtlMemory; +template< class T, class A> class CUtlVector; abstract_class IParsingErrorListener { @@ -47,24 +51,13 @@ abstract_class IParsingErrorListener #define PARSING_FLAG_USE_BASE_AUTO (1 << 7) // Use auto detection of a number base when parsing (uses https://en.cppreference.com/w/cpp/string/basic_string/stol under the hood, so same base rules applies) #define PARSING_FLAG_USE_BASE_16 (1 << 8) // Use base of 16 when parsing -// 3d memcpy. Copy (up-to) 3 dimensional data with arbitrary source and destination -// strides. Optimizes to just a single memcpy when possible. For 2d data, set numslices to 1. -void CopyMemory3D( void *pDestAdr, void const *pSrcAdr, - int nNumCols, int nNumRows, int nNumSlices, // dimensions of copy - int nSrcBytesPerRow, int nSrcBytesPerSlice, // strides for source. - int nDestBytesPerRow, int nDestBytesPerSlice // strides for dest - ); - - -template< class T, class I > class CUtlMemory; -template< class T, class A > class CUtlVector; - // Unicode string conversion policies - what to do if an illegal sequence is encountered enum EStringConvertErrorPolicy { _STRINGCONVERTFLAG_SKIP = 1, _STRINGCONVERTFLAG_FAIL = 2, _STRINGCONVERTFLAG_ASSERT = 4, + _STRINGCONVERTFLAG_UNK001 = 8, STRINGCONVERT_REPLACE = 0, STRINGCONVERT_SKIP = _STRINGCONVERTFLAG_SKIP, @@ -78,68 +71,166 @@ enum EStringConvertErrorPolicy //----------------------------------------------------------------------------- // Portable versions of standard string functions //----------------------------------------------------------------------------- -void _V_memset ( void *dest, int fill, int count ); -void _V_memcpy ( void *dest, const void *src, int count ); -void _V_memmove ( void *dest, const void *src, int count ); -int _V_memcmp ( const void *m1, const void *m2, int count ); -int _V_strlen ( const char *str ); -void _V_strcpy ( char *dest, const char *src ); -char* _V_strrchr ( const char *s, char c ); -int _V_strcmp ( const char *s1, const char *s2 ); -int _V_wcscmp ( const wchar_t *s1, const wchar_t *s2 ); -int _V_stricmp ( const char *s1, const char *s2 ); -char* _V_strstr ( const char *s1, const char *search ); -char* _V_strupr ( char *start ); -char* _V_strlower ( char *start ); -int _V_wcslen ( const wchar_t *pwch ); +PLATFORM_INTERFACE void V_tier0_memset( void *dest, int fill, size_t count ); +PLATFORM_INTERFACE void V_tier0_memcpy( void *dest, const void *src, size_t count ); +PLATFORM_INTERFACE void V_tier0_memmove( void *dest, const void *src, size_t count ); +PLATFORM_INTERFACE int V_tier0_memcmp( const void *m1, const void *m2, size_t count ); -#ifdef POSIX -inline char *strupr( char *start ) +PLATFORM_INTERFACE int V_tier0_strlen( const char *str ); +PLATFORM_INTERFACE int V_tier0_strlen16( const char16_t *str ); +PLATFORM_INTERFACE int V_tier0_strlen32( const char32_t *str ); +PLATFORM_INTERFACE int V_tier0_wcslen( const wchar_t *str ); + +PLATFORM_INTERFACE void V_tier0_strcpy( char *dest, const char *src ); +PLATFORM_INTERFACE void _V_strncpy( char *pDest, const char *pSrc, int maxLen ); +PLATFORM_INTERFACE void V_tier0_strcpy32( char32_t *dest, const char32_t *src ); +PLATFORM_INTERFACE void _V_strncpy32_bytes( char32_t *pDest, const char32_t *pSrc, int bytes ); +PLATFORM_INTERFACE void V_tier0_wcscpy( wchar_t *dest, const wchar_t *src ); +PLATFORM_INTERFACE void _V_wcsncpy_bytes( wchar_t *pDest, const wchar_t *pSrc, int bytes ); + +PLATFORM_INTERFACE char * V_tier0_strrchr( const char *s, char c ); +PLATFORM_INTERFACE char * V_strnchr( const char *s, char c, int n ); +PLATFORM_INTERFACE char32_t * V_strchr32( const char32_t *s, char32_t c ); +PLATFORM_INTERFACE wchar_t * V_tier0_wcschr( const wchar_t *s, wchar_t c ); + +PLATFORM_INTERFACE int V_tier0_strcmp( const char *s1, const char *s2 ); +PLATFORM_INTERFACE int _V_strncmp( const char *s1, const char *s2, int n ); +PLATFORM_INTERFACE int V_strcmp32( const char32_t *s1, const char32_t *s2 ); +PLATFORM_INTERFACE int V_tier0_wcscmp( const wchar_t *s1, const wchar_t *s2 ); + +PLATFORM_INTERFACE int V_stricmp_fast( const char *s1, const char *s2 ); +PLATFORM_INTERFACE int V_stricmp_fast_NegativeForUnequal( const char *s1, const char *s2 ); +PLATFORM_INTERFACE int _V_strnicmp_fast( const char *s1, const char *s2, int n ); +PLATFORM_INTERFACE int V_wcsicmp( const wchar_t *s1, const wchar_t *s2 ); +PLATFORM_INTERFACE int V_wcsnicmp_cch( const wchar_t *s1, const wchar_t *s2, int symbols ); + +PLATFORM_INTERFACE char * V_tier0_strstr( const char *s1, const char *search ); +PLATFORM_INTERFACE char32_t * V_strstr32( const char32_t *s1, const char32_t *search ); + +PLATFORM_INTERFACE char * V_strupper_fast( char *start ); +PLATFORM_INTERFACE char32_t * V_towupper32( char32_t *start ); +PLATFORM_INTERFACE wchar_t * V_towupper( wchar_t *start ); + +PLATFORM_INTERFACE char * V_strlower_fast( char *start ); +PLATFORM_INTERFACE char32_t * V_towlower32( char32_t *start ); +PLATFORM_INTERFACE wchar_t * V_towlower( wchar_t *start ); + +PLATFORM_INTERFACE int V_atoi( const char *str ); +PLATFORM_INTERFACE int64 V_atoi64( const char *str ); +PLATFORM_INTERFACE uint64 V_atoui64( const char *str ); +PLATFORM_INTERFACE float V_atof( const char *str ); +PLATFORM_INTERFACE float V_atofloat32( const char *str ); +PLATFORM_INTERFACE double V_atofloat64( const char *str ); + +PLATFORM_INTERFACE double V_strtod( const char *str, char **endptr = NULL ); +PLATFORM_INTERFACE double V_wcstod( const wchar_t *str, wchar_t **endptr = NULL ); +PLATFORM_INTERFACE int64 V_strtoi64( const char *str, char **endptr = NULL ); +PLATFORM_INTERFACE int64 V_wcstoi64( const wchar_t *str, wchar_t **endptr = NULL ); +PLATFORM_INTERFACE uint64 V_strtoui64( const char *str, char **endptr = NULL ); +PLATFORM_INTERFACE uint64 V_wcstoui64( const wchar_t *str, wchar_t **endptr = NULL ); + +PLATFORM_INTERFACE char * V_strtok( const char *str, const char *delim ); + +PLATFORM_OVERLOAD const char * V_stristr_fast( const char *str, const char *search ); +PLATFORM_INTERFACE const char * _V_strnistr_fast( const char *str, const char *search, int n ); +PLATFORM_OVERLOAD const wchar_t *V_wcsistr( const wchar_t *str, const wchar_t *search ); + +PLATFORM_OVERLOAD int V_strnlen( const char *str, int n ); +PLATFORM_OVERLOAD int V_strnlen( const char32_t *str, int n ); +PLATFORM_OVERLOAD int V_strnlen( const wchar_t *str, int n ); + +PLATFORM_INTERFACE int _V_strcspn( const char *s1, const char *s2 ); + +#define COPY_ALL_CHARACTERS -1 +PLATFORM_INTERFACE char * _V_strncat( char *s1, const char *s2, size_t size, int max_chars_to_copy = COPY_ALL_CHARACTERS ); +inline void V_strcat( char *dest, const char *src, int cchDest ) { - char *str = start; - while( str && *str ) - { - *str = (char)toupper(*str); - str++; - } - return start; + _V_strncat( dest, src, cchDest, COPY_ALL_CHARACTERS ); } -inline char *strlwr( char *start ) +PLATFORM_INTERFACE int V_snprintf( char *pDest, int destLen, const char *pFormat, ... ) FMTFUNCTION( 3, 4 ); +PLATFORM_INTERFACE int V_snprintfcat( char *pDest, int destLen, const char *pFormat, ... ) FMTFUNCTION( 3, 4 ); +PLATFORM_INTERFACE int V_snwprintf_bytes( wchar_t *pDest, int bytes, const wchar_t *pFormat, ... ); +PLATFORM_INTERFACE int V_snwprintf_cch( wchar_t *pDest, int symbols, const wchar_t *pFormat, ... ); + +PLATFORM_INTERFACE int V_vsnprintf( char *pDest, int maxLenInCharacters, const char *pFormat, va_list params ); +PLATFORM_INTERFACE int V_vsnprintfcat( char *pDest, int maxLenInCharacters, const char *pFormat, va_list params ); +template int V_vsprintf_safe( char( &pDest )[maxLenInCharacters], const char *pFormat, va_list params ) { return V_vsnprintf( pDest, maxLenInCharacters, pFormat, params ); } + +PLATFORM_INTERFACE int V_vsnwprintf_cch( wchar_t *pDest, int maxLenInCharacters, const wchar_t *pFormat, va_list params ); +template int V_vswprintf_safe( char( &pDest )[maxLenInCharacters], const char *pFormat, va_list params ) { return V_vsnwprintf_cch( pDest, maxLenInCharacters, pFormat, params ); } + +PLATFORM_INTERFACE bool V_iswspace( wchar_t c ); +inline bool V_isspace( int c ) { - char *str = start; - while( str && *str ) - { - *str = (char)tolower(*str); - str++; - } - return start; + // The standard white-space characters are the following: space, tab, carriage-return, newline, vertical tab, and form-feed. In the C locale, V_isspace() returns true only for the standard white-space characters. + //return c == ' ' || c == 9 /*horizontal tab*/ || c == '\r' || c == '\n' || c == 11 /*vertical tab*/ || c == '\f'; + // codes of whitespace symbols: 9 HT, 10 \n, 11 VT, 12 form feed, 13 \r, 32 space + + // easy to understand version, validated: + // return ((1 << (c-1)) & 0x80001F00) != 0 && ((c-1)&0xE0) == 0; + + // 5% faster on Core i7, 35% faster on Xbox360, no branches, validated: +#ifdef _X360 + return ((1 << (c - 1)) & 0x80001F00 & ~(-int( (c - 1) & 0xE0 ))) != 0; +#else +// this is 11% faster on Core i7 than the previous, VC2005 compiler generates a seemingly unbalanced search tree that's faster + switch(c) + { + case ' ': + case 9: + case '\r': + case '\n': + case 11: + case '\f': + return true; + default: + return false; + } +#endif } -#endif // POSIX +// Short form remaps +#define V_memset(dest, fill, count) V_tier0_memset ((dest), (fill), (count)) +#define V_memcpy(dest, src, count) V_tier0_memcpy ((dest), (src), (count)) +#define V_memmove(dest, src, count) V_tier0_memmove ((dest), (src), (count)) +#define V_memcmp(m1, m2, count) V_tier0_memcmp ((m1), (m2), (count)) -// there are some users of these via tier1 templates in used in tier0. but tier0 can't depend on vstdlib which means in tier0 we always need the inlined ones -#if ( !defined( TIER0_DLL_EXPORT ) ) +#define V_strlen(str) V_tier0_strlen ((str)) +#define V_strlen16(str) V_tier0_strlen16 ((str)) +#define V_strlen32(str) V_tier0_strlen32 ((str)) +#define V_wcslen(str) V_tier0_wcslen ((str)) -#define V_memset(dest, fill, count) _V_memset ((dest), (fill), (count)) -#define V_memcpy(dest, src, count) _V_memcpy ((dest), (src), (count)) -#define V_memmove(dest, src, count) _V_memmove ((dest), (src), (count)) -#define V_memcmp(m1, m2, count) _V_memcmp ((m1), (m2), (count)) -#define V_strlen(str) _V_strlen ((str)) -#define V_strcpy(dest, src) _V_strcpy ((dest), (src)) -#define V_strrchr(s, c) _V_strrchr ((s), (c)) -#define V_strcmp(s1, s2) _V_strcmp ((s1), (s2)) -#define V_wcscmp(s1, s2) _V_wcscmp ((s1), (s2)) -#define V_stricmp(s1, s2 ) _V_stricmp ((s1), (s2) ) -#define V_strstr(s1, search ) _V_strstr ((s1), (search) ) -#define V_strupr(start) _V_strupr ((start)) -#define V_strlower(start) _V_strlower ((start)) -#define V_wcslen(pwch) _V_wcslen ((pwch)) +#define V_strcpy(dest, src) V_tier0_strcpy ((dest), (src)) +#define V_strncpy(dest, src, count) _V_strncpy ((dest), (src), (count)) +#define V_strcpy32(dest, src) V_tier0_strcpy32 ((dest), (src)) +#define V_strncpy32(dest, src, bytes) _V_strncpy32_bytes ((dest), (src), (bytes)) +#define V_wcscpy(dest, src) V_tier0_wcscpy ((dest), (src)) +#define V_wcsncpy(dest, src, bytes) _V_wcsncpy_bytes ((dest), (src), (bytes)) -// AM TODO: handle this for the rest (above and more) now exported by tier0 -PLATFORM_INTERFACE int V_stricmp_fast(const char* s1, const char* s2); +#define V_strrchr(s, c) V_tier0_strrchr ((s), (c)) +#define V_wcschr(s, c) V_tier0_wcschr ((s), (c)) -PLATFORM_INTERFACE int _V_strnicmp_fast(const char* s1, const char* s2, int n); +#define V_strcmp(s1, s2) V_tier0_strcmp ((s1), (s2)) +#define V_strncmp(s1, s2, count) _V_strncmp ((s1), (s2), (count)) +#define V_wcscmp(s1, s2) V_tier0_wcscmp ((s1), (s2)) + +#define V_stricmp(s1, s2) V_stricmp_fast ((s1), (s2) ) +#define V_stricmp_n(s1, s2) V_stricmp_fast_NegativeForUnequal((s1), (s2) ) +#define V_strnicmp(s1, s2, count) _V_strnicmp_fast ((s1), (s2), (count)) +#define V_wcsnicmp(s1, s2, symbols) V_wcsnicmp_cch ((s1), (s2), (symbols)) + +#define V_strstr(s1, search) V_tier0_strstr ((s1), (search)) + +#define V_strupper(start) V_strupper_fast ((start)) +#define V_strlower(start) V_strlower_fast ((start)) + +#define V_stristr(s1, search) V_stristr_fast ((s1), (start)) +#define V_strnistr(s1, search, count) _V_strnistr_fast ((s1), (start), (count)) + +#define V_strcspn(s1, s2) _V_strcspn ((s1), (s2)) + +#define V_strncat(s1, s2, count) _V_strncat ((s1), (s2), (count)) // Compares two strings with the support of wildcarding only for the first arg (includes '*' for multiple and '?' for single char usages) PLATFORM_INTERFACE int V_CompareNameWithWildcards(const char *wildcarded_string, const char *compare_to, bool case_sensitive = false); @@ -217,95 +308,20 @@ PLATFORM_INTERFACE float64 V_StringToFloat64Raw(const char *buf, float64 default // Parses string as a float32 value, if the parsing fails, default_value is returned, doesn't perform error checking/reporting PLATFORM_INTERFACE float32 V_StringToFloat32Raw(const char *buf, float32 default_value, bool *successful = NULL, char **remainder = NULL); -#else - -inline void V_memset (void *dest, int fill, int count) { memset( dest, fill, count ); } -inline void V_memcpy (void *dest, const void *src, int count) { memcpy( dest, src, count ); } -inline void V_memmove (void *dest, const void *src, int count) { memmove( dest, src, count ); } -inline int V_memcmp (const void *m1, const void *m2, int count){ return memcmp( m1, m2, count ); } -inline int V_strlen (const char *str) { return (int) strlen ( str ); } -inline void V_strcpy (char *dest, const char *src) { strcpy( dest, src ); } -inline int V_wcslen(const wchar_t *pwch) { return (int)wcslen(pwch); } -inline char* V_strrchr (const char *s, char c) { return (char*)strrchr( s, c ); } -inline int V_strcmp (const char *s1, const char *s2) { return strcmp( s1, s2 ); } -inline int V_wcscmp (const wchar_t *s1, const wchar_t *s2) { return wcscmp( s1, s2 ); } -inline int V_stricmp( const char *s1, const char *s2 ) { return stricmp( s1, s2 ); } -inline char* V_strstr( const char *s1, const char *search ) { return (char*)strstr( s1, search ); } -inline char* V_strupr (char *start) { return strupr( start ); } -inline char* V_strlower (char *start) { return strlwr( start ); } - -#endif - - -int V_strncmp (const char *s1, const char *s2, int count); -int V_strcasecmp (const char *s1, const char *s2); -int V_strncasecmp (const char *s1, const char *s2, int n); -int V_strnicmp (const char *s1, const char *s2, int n); -int V_atoi (const char *str); -int64 V_atoi64(const char *str); -uint64 V_atoui64(const char *str); -float V_atof (const char *str); -char* V_stristr( char* pStr, const char* pSearch ); -const char* V_stristr( const char* pStr, const char* pSearch ); -const char* V_strnistr( const char* pStr, const char* pSearch, int n ); -const char* V_strnchr( const char* pStr, char c, int n ); - // returns string immediately following prefix, (ie str+strlen(prefix)) or NULL if prefix not found -const char *StringAfterPrefix ( const char *str, const char *prefix ); -const char *StringAfterPrefixCaseSensitive( const char *str, const char *prefix ); -inline bool StringHasPrefix ( const char *str, const char *prefix ) { return StringAfterPrefix ( str, prefix ) != NULL; } -inline bool StringHasPrefixCaseSensitive( const char *str, const char *prefix ) { return StringAfterPrefixCaseSensitive( str, prefix ) != NULL; } +PLATFORM_INTERFACE const char *_V_StringAfterPrefix( const char *str, const char *prefix ); +PLATFORM_INTERFACE const char *_V_StringAfterPrefixCaseSensitive( const char *str, const char *prefix ); +#define V_StringAfterPrefix(str, prefix) _V_StringAfterPrefix((str), (prefix)) +#define V_StringAfterPrefixCaseSensitive(str, prefix) _V_StringAfterPrefixCaseSensitive((str), (prefix)) + +inline bool V_StringHasPrefix ( const char *str, const char *prefix ) { return V_StringAfterPrefix( str, prefix ) != NULL; } +inline bool V_StringHasPrefixCaseSensitive( const char *str, const char *prefix ) { return V_StringAfterPrefixCaseSensitive( str, prefix ) != NULL; } // Normalizes a float string in place. // (removes leading zeros, trailing zeros after the decimal point, and the decimal point itself where possible) -void V_normalizeFloatString( char* pFloat ); - -inline bool V_isspace(int c) -{ - // The standard white-space characters are the following: space, tab, carriage-return, newline, vertical tab, and form-feed. In the C locale, V_isspace() returns true only for the standard white-space characters. - //return c == ' ' || c == 9 /*horizontal tab*/ || c == '\r' || c == '\n' || c == 11 /*vertical tab*/ || c == '\f'; - // codes of whitespace symbols: 9 HT, 10 \n, 11 VT, 12 form feed, 13 \r, 32 space - - // easy to understand version, validated: - // return ((1 << (c-1)) & 0x80001F00) != 0 && ((c-1)&0xE0) == 0; - - // 5% faster on Core i7, 35% faster on Xbox360, no branches, validated: - #ifdef _X360 - return ((1 << (c-1)) & 0x80001F00 & ~(-int((c-1)&0xE0))) != 0; - #else - // this is 11% faster on Core i7 than the previous, VC2005 compiler generates a seemingly unbalanced search tree that's faster - switch(c) - { - case ' ': - case 9: - case '\r': - case '\n': - case 11: - case '\f': - return true; - default: - return false; - } - #endif -} - - -// These are versions of functions that guarantee NULL termination. -// -// maxLen is the maximum number of bytes in the destination string. -// pDest[maxLen-1] is always NULL terminated if pSrc's length is >= maxLen. -// -// This means the last parameter can usually be a sizeof() of a string. -void V_strncpy( char *pDest, const char *pSrc, int maxLen ); -int V_snprintf( char *pDest, int destLen, const char *pFormat, ... ) FMTFUNCTION( 3, 4 ); -void V_wcsncpy( wchar_t *pDest, wchar_t const *pSrc, int maxLenInBytes ); -int V_snwprintf( wchar_t *pDest, int destLen, const wchar_t *pFormat, ... ); - -#define COPY_ALL_CHARACTERS -1 -char *V_strncat(char *, const char *, size_t destBufferSize, int max_chars_to_copy=COPY_ALL_CHARACTERS ); -char *V_strnlwr(char *, size_t); - +PLATFORM_INTERFACE void V_normalizeFloatString( char* pFloat ); +PLATFORM_INTERFACE void V_normalizeFloatWString( wchar_t* pFloat ); // UNDONE: Find a non-compiler-specific way to do this #ifdef _WIN32 @@ -333,6 +349,55 @@ typedef char * va_list; #include #endif +// Prints out a pretified memory counter string value ( e.g., 7,233.27 Mb, 1,298.003 Kb, 127 bytes ) +PLATFORM_INTERFACE char *V_PrettifyMem( float value, int digitsafterdecimal = 2, bool usebinaryonek = false ); + +// Prints out a pretified integer with comma separators (eg, 7,233,270,000) +PLATFORM_INTERFACE char *V_PrettifyNum( int64 value ); + +// Returns the UTF8 encoded length in this byte +PLATFORM_INTERFACE int V_UTF8LenFromFirst( char c ); + +// Conversion functions, returning the number of bytes consumed +PLATFORM_INTERFACE int V_UTF8ToUChar32( const char *str, char32_t &result, bool &failed ); +PLATFORM_INTERFACE int V_UTF32ToUChar32( const char32_t *str, char32_t &result, bool &failed ); + +PLATFORM_INTERFACE int V_UChar32ToUTF16( const char32_t *str, char16_t *result ); +PLATFORM_INTERFACE int V_UChar32ToUTF8( const char32_t *str, char *result ); + +PLATFORM_INTERFACE int V_UTF8ToUTF16( const char *str, char16_t *dest, int dest_size, EStringConvertErrorPolicy policy ); +PLATFORM_INTERFACE int V_UTF8CharsToUTF16( const char *str, int size, char16_t *dest, int dest_size, EStringConvertErrorPolicy policy ); +PLATFORM_INTERFACE int V_UTF8ToUTF32( const char *str, char32_t *dest, int dest_size, EStringConvertErrorPolicy policy ); +PLATFORM_INTERFACE int V_UTF8CharsToUTF32( const char *str, int size, char32_t *dest, int dest_size, EStringConvertErrorPolicy policy ); + +PLATFORM_INTERFACE int V_UTF16ToUTF8( const char16_t *str, char *dest, int dest_size, EStringConvertErrorPolicy policy ); +PLATFORM_INTERFACE int V_UTF16CharsToUTF8( const char16_t *str, int size, char *dest, int dest_size, EStringConvertErrorPolicy policy ); +PLATFORM_INTERFACE int V_UTF16ToUTF16( const char16_t *str, char16_t *dest, int dest_size, EStringConvertErrorPolicy policy ); +PLATFORM_INTERFACE int V_UTF16ToUTF32( const char16_t *str, char32_t *dest, int dest_size, EStringConvertErrorPolicy policy ); +PLATFORM_INTERFACE int V_UTF16CharsToUTF32( const char16_t *str, int size, char32_t *dest, int dest_size, EStringConvertErrorPolicy policy ); + +PLATFORM_INTERFACE int V_UTF32ToUTF8( const char32_t *str, char *dest, int dest_size, EStringConvertErrorPolicy policy ); +PLATFORM_INTERFACE int V_UTF32CharsToUTF8( const char32_t *str, int size, char *dest, int dest_size, EStringConvertErrorPolicy policy ); +PLATFORM_INTERFACE int V_UTF32ToUTF16( const char32_t *str, char16_t *dest, int dest_size, EStringConvertErrorPolicy policy ); +PLATFORM_INTERFACE int V_UTF32CharsToUTF16( const char32_t *str, int size, char16_t *dest, int dest_size, EStringConvertErrorPolicy policy ); +PLATFORM_INTERFACE int V_UTF32ToUTF32( const char32_t *str, char32_t *dest, int dest_size, EStringConvertErrorPolicy policy ); + +// Functions for converting hexidecimal character strings back into binary data etc. +// +// e.g., +// int output; +// V_hextobinary( "ffffffff", 8, &output, sizeof( output ) ); +// would make output == 0xfffffff or -1 +// Similarly, +// char buffer[ 9 ]; +// V_binarytohex( &output, sizeof( output ), buffer, sizeof( buffer ) ); +// would put "ffffffff" into buffer (note null terminator!!!) +PLATFORM_INTERFACE void _V_hextobinary( char const *in, int numchars, byte *out, int maxoutputbytes ); +PLATFORM_INTERFACE void _V_binarytohex( const byte *in, int inputbytes, char *out, int outsize ); + +#define V_HexToBinary(in, numchars, out, maxoutputbytes) _V_hextobinary((in), (numchars), (out), (maxoutputbytes)) +#define V_BinaryToHex(in, inputbytes, out, outsize) _V_binarytohex((in), (inputbytes), (out), (outsize)) + #ifdef _WIN32 #define CORRECT_PATH_SEPARATOR '\\' #define CORRECT_PATH_SEPARATOR_S "\\" @@ -345,174 +410,135 @@ typedef char * va_list; #define INCORRECT_PATH_SEPARATOR_S "\\" #endif -int V_vsnprintf( char *pDest, int maxLenInCharacters, const char *pFormat, va_list params ); -template int V_vsprintf_safe( char (&pDest)[maxLenInCharacters], const char *pFormat, va_list params ) { return V_vsnprintf( pDest, maxLenInCharacters, pFormat, params ); } -int V_vsnprintf( char *pDest, int maxLen, const char *pFormat, va_list params ); - -// Prints out a pretified memory counter string value ( e.g., 7,233.27 Mb, 1,298.003 Kb, 127 bytes ) -char *V_pretifymem( float value, int digitsafterdecimal = 2, bool usebinaryonek = false ); - -// Prints out a pretified integer with comma separators (eg, 7,233,270,000) -char *V_pretifynum( int64 value ); - -// conversion functions wchar_t <-> char, returning the number of characters converted -int V_UTF8ToUnicode( const char *pUTF8, wchar_t *pwchDest, int cubDestSizeInBytes ); -int V_UnicodeToUTF8( const wchar_t *pUnicode, char *pUTF8, int cubDestSizeInBytes ); -int V_UCS2ToUnicode( const ucs2 *pUCS2, wchar_t *pUnicode, int cubDestSizeInBytes ); -int V_UCS2ToUTF8( const ucs2 *pUCS2, char *pUTF8, int cubDestSizeInBytes ); - -// Functions for converting hexidecimal character strings back into binary data etc. -// -// e.g., -// int output; -// V_hextobinary( "ffffffff", 8, &output, sizeof( output ) ); -// would make output == 0xfffffff or -1 -// Similarly, -// char buffer[ 9 ]; -// V_binarytohex( &output, sizeof( output ), buffer, sizeof( buffer ) ); -// would put "ffffffff" into buffer (note null terminator!!!) -void V_hextobinary( char const *in, int numchars, byte *out, int maxoutputbytes ); -void V_binarytohex( const byte *in, int inputbytes, char *out, int outsize ); - // Tools for working with filenames // Extracts the base name of a file (no path, no extension, assumes '/' or '\' as path separator) -void V_FileBase( const char *in, char *out,int maxlen ); +PLATFORM_INTERFACE void _V_FileBase( const char *in, char *out, int maxlen ); +#define V_FileBase _V_FileBase + // Remove the final characters of ppath if it's '\' or '/'. -void V_StripTrailingSlash( char *ppath ); +PLATFORM_INTERFACE void V_StripTrailingSlash( char *ppath ); + // Remove any extension from in and return resulting string in out -void V_StripExtension( const char *in, char *out, int outLen ); +PLATFORM_INTERFACE void _V_StripExtension( const char *in, char *out, int outLen ); +#define V_StripExtension _V_StripExtension + // Make path end with extension if it doesn't already have an extension -void V_DefaultExtension( char *path, const char *extension, int pathStringLength ); +PLATFORM_INTERFACE void _V_DefaultExtension( char *path, const char *extension, int pathStringLength ); +#define V_DefaultExtension _V_DefaultExtension + // Strips any current extension from path and ensures that extension is the new extension. // NOTE: extension string MUST include the . character -void V_SetExtension( char *path, const char *extension, int pathStringLength ); +PLATFORM_INTERFACE void _V_SetExtension( char *path, const char *extension, int pathStringLength ); +#define V_SetExtension _V_SetExtension + // Removes any filename from path ( strips back to previous / or \ character ) -void V_StripFilename( char *path ); +PLATFORM_INTERFACE void V_StripFilename( char *path ); + // Remove the final directory from the path -bool V_StripLastDir( char *dirName, int maxlen ); +PLATFORM_INTERFACE bool _V_StripLastDir( char *dirName, int maxlen ); +#define V_StripLastDir _V_StripLastDir + // Returns a pointer to the unqualified file name (no path) of a file name -const char * V_UnqualifiedFileName( const char * in ); +PLATFORM_INTERFACE const char *V_UnqualifiedFileName( const char *in ); + // Given a path and a filename, composes "path\filename", inserting the (OS correct) separator if necessary -void V_ComposeFileName( const char *path, const char *filename, char *dest, int destSize ); +PLATFORM_INTERFACE void _V_ComposeFileName( const char *path, const char *filename, char *dest, int destSize ); +#define V_ComposeFileName _V_ComposeFileName // Copy out the path except for the stuff after the final pathseparator -bool V_ExtractFilePath( const char *path, char *dest, int destSize ); -// Copy out the file extension into dest -void V_ExtractFileExtension( const char *path, char *dest, int destSize ); +PLATFORM_INTERFACE bool _V_ExtractFilePath( const char *path, char *dest, int destSize ); +#define V_ExtractFilePath _V_ExtractFilePath -const char *V_GetFileExtension( const char * path ); +// Copy out the file extension into dest +PLATFORM_INTERFACE void _V_ExtractFileExtension( const char *path, char *dest, int destSize ); +#define V_ExtractFileExtension _V_ExtractFileExtension + +PLATFORM_INTERFACE const char *V_GetFileExtension( const char *path ); +// Returns empty string instead of null on failure +PLATFORM_INTERFACE const char *V_GetFileExtensionSafe( const char *path ); // This removes "./" and "../" from the pathname. pFilename should be a full pathname. // Returns false if it tries to ".." past the root directory in the drive (in which case // it is an invalid path). -bool V_RemoveDotSlashes( char *pFilename, char separator = CORRECT_PATH_SEPARATOR ); +PLATFORM_INTERFACE bool V_RemoveDotSlashes( char *pFilename, char separator = CORRECT_PATH_SEPARATOR ); // If pPath is a relative path, this function makes it into an absolute path // using the current working directory as the base, or pStartingDir if it's non-NULL. // Returns false if it runs out of room in the string, or if pPath tries to ".." past the root directory. -void V_MakeAbsolutePath( char *pOut, int outLen, const char *pPath, const char *pStartingDir = NULL ); +PLATFORM_INTERFACE void _V_MakeAbsolutePath( char *pOut, int outLen, const char *pPath, int, const char *pStartingDir = NULL ); +#define V_MakeAbsolutePath _V_MakeAbsolutePath // Creates a relative path given two full paths // The first is the full path of the file to make a relative path for. // The second is the full path of the directory to make the first file relative to // Returns false if they can't be made relative (on separate drives, for example) -bool V_MakeRelativePath( const char *pFullPath, const char *pDirectory, char *pRelativePath, int nBufLen ); +PLATFORM_INTERFACE bool _V_MakeRelativePath( const char *pFullPath, const char *pDirectory, char *pRelativePath, int nBufLen, bool ); +#define V_MakeRelativePath _V_MakeRelativePath // Fixes up a file name, removing dot slashes, fixing slashes, converting to lowercase, etc. -void V_FixupPathName( char *pOut, size_t nOutLen, const char *pPath ); +PLATFORM_INTERFACE void _V_FixupPathName( char *pOut, size_t nOutLen, const char *pPath, bool convert_to_lower = true ); +#define V_FixupPathName _V_FixupPathName // Adds a path separator to the end of the string if there isn't one already. Returns false if it would run out of space. -void V_AppendSlash( char *pStr, int strSize ); +PLATFORM_INTERFACE void _V_AppendSlash( char *pStr, int strSize, char separator = CORRECT_PATH_SEPARATOR ); +#define V_AppendSlash _V_AppendSlash // Returns true if the path is an absolute path. -bool V_IsAbsolutePath( const char *pPath ); +PLATFORM_INTERFACE bool V_IsAbsolutePath( const char *pPath ); // Scans pIn and replaces all occurences of pMatch with pReplaceWith. // Writes the result to pOut. // Returns true if it completed successfully. // If it would overflow pOut, it fills as much as it can and returns false. -bool V_StrSubst( const char *pIn, const char *pMatch, const char *pReplaceWith, - char *pOut, int outLen, bool bCaseSensitive=false ); +PLATFORM_INTERFACE bool _V_StrSubst( const char *pIn, const char *pMatch, const char *pReplaceWith, + char *pOut, int outLen, bool bCaseSensitive=false ); +#define V_StrSubst _V_StrSubst - -// If possible, use CSplitString instead -// AM TODO: These are exported by tier0, but will require changes to CUtlVector -// Split the specified string on the specified separator. +// AM TODO: If possible, use CSplitString instead rn. +// These are exported by tier0, but will require changes to CUtlVector (additional template arg) +// +// Split the specified string on the specified separator. // Returns a list of strings separated by pSeparator. // You are responsible for freeing the contents of outStrings (call outStrings.PurgeAndDeleteElements). -void V_SplitString( const char *pString, const char *pSeparator, CUtlVector > &outStrings ); +PLATFORM_OVERLOAD void V_SplitString( const char *pString, const char *pSeparator, CUtlVector> &outStrings, bool ); // Just like V_SplitString, but it can use multiple possible separators. -void V_SplitString2( const char *pString, const char **pSeparators, int nSeparators, CUtlVector > &outStrings ); - -// Returns false if the buffer is not large enough to hold the working directory name. -bool V_GetCurrentDirectory( char *pOut, int maxLen ); - -// Set the working directory thus. -bool V_SetCurrentDirectory( const char *pDirName ); - +PLATFORM_OVERLOAD void V_SplitStringInPlace( char *pString, const char *pSeparator, CUtlVector> &outStrings ); // This function takes a slice out of pStr and stores it in pOut. // It follows the Python slice convention: // Negative numbers wrap around the string (-1 references the last character). // Large numbers are clamped to the end of the string. -void V_StrSlice( const char *pStr, int firstChar, int lastCharNonInclusive, char *pOut, int outSize ); +PLATFORM_INTERFACE void _V_StrSlice( const char *pStr, int firstChar, int lastCharNonInclusive, char *pOut, int outSize ); +#define V_StrSlice _V_StrSlice // Chop off the left nChars of a string. -void V_StrLeft( const char *pStr, int nChars, char *pOut, int outSize ); +PLATFORM_INTERFACE void _V_StrLeft( const char *pStr, int nChars, char *pOut, int outSize ); +#define V_StrLeft _V_StrLeft // Chop off the right nChars of a string. -void V_StrRight( const char *pStr, int nChars, char *pOut, int outSize ); +PLATFORM_INTERFACE void _V_StrRight( const char *pStr, int nChars, char *pOut, int outSize ); +#define V_StrRight _V_StrRight // change "special" characters to have their c-style backslash sequence. like \n, \r, \t, ", etc. // returns a pointer to a newly allocated string, which you must delete[] when finished with. -char *V_AddBackSlashesToSpecialChars( char const *pSrc ); +PLATFORM_INTERFACE char *V_AddBackSlashesToSpecialChars( char const *pSrc ); // Force slashes of either type to be = separator character -void V_FixSlashes( char *pname, char separator = CORRECT_PATH_SEPARATOR ); +PLATFORM_INTERFACE void V_FixSlashes( char *pname, char separator = CORRECT_PATH_SEPARATOR ); // This function fixes cases of filenames like materials\\blah.vmt or somepath\otherpath\\ and removes the extra double slash. -void V_FixDoubleSlashes( char *pStr ); - -// Convert multibyte to wchar + back -// Specify -1 for nInSize for null-terminated string -void V_strtowcs( const char *pString, int nInSize, wchar_t *pWString, int nOutSize ); -void V_wcstostr( const wchar_t *pWString, int nInSize, char *pString, int nOutSize ); - -// buffer-safe strcat -inline void V_strcat( char *dest, const char *src, int cchDest ) -{ - V_strncat( dest, src, cchDest, COPY_ALL_CHARACTERS ); -} - -// Convert from a string to an array of integers. -void V_StringToIntArray( int *pVector, int count, const char *pString ); - -// Convert from a string to a 4 byte color value. -void V_StringToColor32( color32 *color, const char *pString ); +PLATFORM_INTERFACE void V_FixDoubleSlashes( char *pStr ); // Convert \r\n (Windows linefeeds) to \n (Unix linefeeds). -void V_TranslateLineFeedsToUnix( char *pStr ); +PLATFORM_INTERFACE void V_TranslateLineFeedsToUnix( char *pStr ); //----------------------------------------------------------------------------- // generic unique name helper functions //----------------------------------------------------------------------------- // returns -1 if no match, nDefault if pName==prefix, and N if pName==prefix+N -inline int V_IndexAfterPrefix( const char *pName, const char *prefix, int nDefault = 0 ) -{ - if ( !pName || !prefix ) - return -1; - - const char *pIndexStr = StringAfterPrefix( pName, prefix ); - if ( !pIndexStr ) - return -1; - - if ( !*pIndexStr ) - return nDefault; - - return atoi( pIndexStr ); -} +PLATFORM_INTERFACE int V_IndexAfterPrefix( const char *pName, const char *prefix, int nDefault = 0 ); // returns startindex if none found, 2 if "prefix" found, and n+1 if "prefixn" found template < class NameArray > @@ -574,43 +600,14 @@ bool V_GenerateUniqueName( char *name, int memsize, const char *prefix, const Na return true; } - -extern bool V_StringToBin( const char*pString, void *pBin, uint nBinSize ); -extern bool V_BinToString( char*pString, void *pBin, uint nBinSize ); - -template -struct BinString_t -{ - BinString_t(){} - BinString_t( const char *pStr ) - { - V_strncpy( m_string, pStr, sizeof(m_string) ); - ToBin(); - } - BinString_t( const T & that ) - { - m_bin = that; - ToString(); - } - bool ToBin() - { - return V_StringToBin( m_string, &m_bin, sizeof( m_bin ) ); - } - void ToString() - { - V_BinToString( m_string, &m_bin, sizeof( m_bin ) ); - } - T m_bin; - char m_string[sizeof(T)*2+2]; // 0-terminated string representing the binary data in hex -}; - -template -inline BinString_t MakeBinString( const T& that ) -{ - return BinString_t( that ); -} - - +// 3d memcpy. Copy (up-to) 3 dimensional data with arbitrary source and destination +// strides. Optimizes to just a single memcpy when possible. For 2d data, set numslices to 1. +PLATFORM_INTERFACE void V_CopyMemory3D( + void *pDestAdr, void const *pSrcAdr, + int nNumCols, int nNumRows, int nNumSlices, // dimensions of copy + int nSrcBytesPerRow, int nSrcBytesPerSlice, // strides for source. + int nDestBytesPerRow, int nDestBytesPerSlice // strides for dest +); // NOTE: This is for backward compatability! // We need to DLL-export the Q methods in vstdlib but not link to them in other projects @@ -627,12 +624,12 @@ inline BinString_t MakeBinString( const T& that ) #define Q_wcscmp V_wcscmp #define Q_stricmp V_stricmp #define Q_strstr V_strstr -#define Q_strupr V_strupr +#define Q_strupr V_strupper #define Q_strlower V_strlower #define Q_wcslen V_wcslen #define Q_strncmp V_strncmp -#define Q_strcasecmp V_strcasecmp -#define Q_strncasecmp V_strncasecmp +#define Q_strcasecmp V_stricmp +#define Q_strncasecmp V_strnicmp #define Q_strnicmp V_strnicmp #define Q_atoi V_atoi #define Q_atoi64 V_atoi64 @@ -645,17 +642,14 @@ inline BinString_t MakeBinString( const T& that ) #define Q_strncpy V_strncpy #define Q_wcsncpy V_wcsncpy #define Q_snprintf V_snprintf -#define Q_snwprintf V_snwprintf +#define Q_snwprintf V_snwprintf_bytes #define Q_wcsncpy V_wcsncpy #define Q_strncat V_strncat -#define Q_strnlwr V_strnlwr #define Q_vsnprintf V_vsnprintf -#define Q_pretifymem V_pretifymem -#define Q_pretifynum V_pretifynum -#define Q_UTF8ToUnicode V_UTF8ToUnicode -#define Q_UnicodeToUTF8 V_UnicodeToUTF8 -#define Q_hextobinary V_hextobinary -#define Q_binarytohex V_binarytohex +#define Q_pretifymem V_PrettifyMem +#define Q_pretifynum V_PrettifyNum +#define Q_hextobinary V_HexToBinary +#define Q_binarytohex V_BinaryToHex #define Q_FileBase V_FileBase #define Q_StripTrailingSlash V_StripTrailingSlash #define Q_StripExtension V_StripExtension @@ -674,18 +668,14 @@ inline BinString_t MakeBinString( const T& that ) #define Q_IsAbsolutePath V_IsAbsolutePath #define Q_StrSubst V_StrSubst #define Q_SplitString V_SplitString -#define Q_SplitString2 V_SplitString2 #define Q_StrSlice V_StrSlice #define Q_StrLeft V_StrLeft #define Q_StrRight V_StrRight #define Q_FixSlashes V_FixSlashes -#define Q_strtowcs V_strtowcs -#define Q_wcstostr V_wcstostr #define Q_strcat V_strcat #define Q_MakeRelativePath V_MakeRelativePath #define Q_FixupPathName V_FixupPathName #endif // !defined( VSTDLIB_DLL_EXPORT ) - #endif // TIER1_STRTOOLS_H diff --git a/tier1/commandbuffer.cpp b/tier1/commandbuffer.cpp index a8f600a7..f3da734b 100644 --- a/tier1/commandbuffer.cpp +++ b/tier1/commandbuffer.cpp @@ -1,4 +1,4 @@ -//===== Copyright © 1996-2006, Valve Corporation, All rights reserved. ======// +//===== Copyright � 1996-2006, Valve Corporation, All rights reserved. ======// // // Purpose: // diff --git a/tier1/strtools.cpp b/tier1/strtools.cpp deleted file mode 100644 index cdb7ac07..00000000 --- a/tier1/strtools.cpp +++ /dev/null @@ -1,2017 +0,0 @@ -//===== Copyright © 1996-2005, Valve Corporation, All rights reserved. ======// -// -// Purpose: String Tools -// -//===========================================================================// - -// These are redefined in the project settings to prevent anyone from using them. -// We in this module are of a higher caste and thus are privileged in their use. -#ifdef strncpy - #undef strncpy -#endif - -#ifdef _snprintf - #undef _snprintf -#endif - -#if defined( sprintf ) - #undef sprintf -#endif - -#if defined( vsprintf ) - #undef vsprintf -#endif - -#ifdef _vsnprintf -#ifdef _WIN32 - #undef _vsnprintf -#endif -#endif - -#ifdef vsnprintf -#ifndef _WIN32 - #undef vsnprintf -#endif -#endif - -#if defined( strcat ) - #undef strcat -#endif - -#ifdef strncat - #undef strncat -#endif - -// NOTE: I have to include stdio + stdarg first so vsnprintf gets compiled in -#include -#include - -#if defined _LINUX || defined __APPLE__ -#include -#include -#include -#define _getcwd getcwd -#elif _WIN32 -#include -#if !defined( _X360 ) -#define WIN32_LEAN_AND_MEAN -#include -#endif -#endif - -#ifdef _WIN32 -#ifndef CP_UTF8 -#define CP_UTF8 65001 -#endif -#endif -#include "tier0/dbg.h" -#include "tier1/strtools.h" -#include -#include -#include "tier0/basetypes.h" -#include "tier1/utldict.h" -#if defined( _X360 ) -#include "xbox/xbox_win32stubs.h" -#endif -#include "tier0/memdbgon.h" - -void _V_memset (void *dest, int fill, int count) -{ - Assert( count >= 0 ); - AssertValidWritePtr( dest, count ); - - memset(dest,fill,count); -} - -void _V_memcpy (void *dest, const void *src, int count) -{ - Assert( count >= 0 ); - AssertValidReadPtr( src, count ); - AssertValidWritePtr( dest, count ); - - memcpy( dest, src, count ); -} - -void _V_memmove(void *dest, const void *src, int count) -{ - Assert( count >= 0 ); - AssertValidReadPtr( src, count ); - AssertValidWritePtr( dest, count ); - - memmove( dest, src, count ); -} - -int _V_memcmp (const void *m1, const void *m2, int count) -{ - Assert( count >= 0 ); - AssertValidReadPtr( m1, count ); - AssertValidReadPtr( m2, count ); - - return memcmp( m1, m2, count ); -} - -int _V_strlen(const char *str) -{ - AssertValidStringPtr(str); - return strlen( str ); -} - -void _V_strcpy (char *dest, const char *src) -{ - AssertValidWritePtr(dest); - AssertValidStringPtr(src); - - strcpy( dest, src ); -} - -int _V_wcslen(const wchar_t *pwch) -{ - return wcslen( pwch ); -} - -char *_V_strrchr(const char *s, char c) -{ - AssertValidStringPtr( s ); - int len = V_strlen(s); - s += len; - while (len--) - if (*--s == c) return (char *)s; - return 0; -} - -int _V_strcmp (const char *s1, const char *s2) -{ - AssertValidStringPtr( s1 ); - AssertValidStringPtr( s2 ); - - return strcmp( s1, s2 ); -} - -int _V_wcscmp (const wchar_t *s1, const wchar_t *s2) -{ - while (1) - { - if (*s1 != *s2) - return -1; // strings not equal - if (!*s1) - return 0; // strings are equal - s1++; - s2++; - } - - return -1; -} - -#ifdef PLATFORM_WINDOWS -#undef stricmp -#endif - -int _V_stricmp( const char *s1, const char *s2 ) -{ - AssertValidStringPtr( s1 ); - AssertValidStringPtr( s2 ); - - return stricmp( s1, s2 ); -} - - -char *_V_strstr( const char *s1, const char *search ) -{ - AssertValidStringPtr( s1 ); - AssertValidStringPtr( search ); - -#if defined( _X360 ) - return (char *)strstr( (char *)s1, search ); -#else - return (char *)strstr( s1, search ); -#endif -} - -char *_V_strupr (char *start) -{ - AssertValidStringPtr( start ); - return strupr( start ); -} - - -char *_V_strlower (char *start) -{ - AssertValidStringPtr( start ); - return strlwr(start); -} - -int V_strncmp (const char *s1, const char *s2, int count) -{ - Assert( count >= 0 ); - AssertValidStringPtr( s1, count ); - AssertValidStringPtr( s2, count ); - - while ( count-- > 0 ) - { - if ( *s1 != *s2 ) - return *s1 < *s2 ? -1 : 1; // string different - if ( *s1 == '\0' ) - return 0; // null terminator hit - strings the same - s1++; - s2++; - } - - return 0; // count characters compared the same -} - -char *V_strnlwr(char *s, size_t count) -{ - Assert( count >= 0 ); - AssertValidStringPtr( s, count ); - - char* pRet = s; - if ( !s ) - return s; - - while ( count-- ) - { - if ( !*s ) - break; - - *s = tolower( *s ); - ++s; - } - - if ( count > 0 ) - { - s[count-1] = 0; - } - - return pRet; -} - - -int V_strncasecmp (const char *s1, const char *s2, int n) -{ - Assert( n >= 0 ); - AssertValidStringPtr( s1 ); - AssertValidStringPtr( s2 ); - - while ( n-- > 0 ) - { - int c1 = *s1++; - int c2 = *s2++; - - if (c1 != c2) - { - if (c1 >= 'a' && c1 <= 'z') - c1 -= ('a' - 'A'); - if (c2 >= 'a' && c2 <= 'z') - c2 -= ('a' - 'A'); - if (c1 != c2) - return c1 < c2 ? -1 : 1; - } - if ( c1 == '\0' ) - return 0; // null terminator hit - strings the same - } - - return 0; // n characters compared the same -} - -int V_strcasecmp( const char *s1, const char *s2 ) -{ - AssertValidStringPtr( s1 ); - AssertValidStringPtr( s2 ); - - return stricmp( s1, s2 ); -} - -int V_strnicmp (const char *s1, const char *s2, int n) -{ - Assert( n >= 0 ); - AssertValidStringPtr(s1); - AssertValidStringPtr(s2); - - return V_strncasecmp( s1, s2, n ); -} - - -const char *StringAfterPrefix( const char *str, const char *prefix ) -{ - AssertValidStringPtr( str ); - AssertValidStringPtr( prefix ); - do - { - if ( !*prefix ) - return str; - } - while ( tolower( *str++ ) == tolower( *prefix++ ) ); - return NULL; -} - -const char *StringAfterPrefixCaseSensitive( const char *str, const char *prefix ) -{ - AssertValidStringPtr( str ); - AssertValidStringPtr( prefix ); - do - { - if ( !*prefix ) - return str; - } - while ( *str++ == *prefix++ ); - return NULL; -} - - -int V_atoi (const char *str) -{ - AssertValidStringPtr( str ); - - int val; - int sign; - int c; - - Assert( str ); - if (*str == '-') - { - sign = -1; - str++; - } - else - sign = 1; - - val = 0; - -// -// check for hex -// - if (str[0] == '0' && (str[1] == 'x' || str[1] == 'X') ) - { - str += 2; - while (1) - { - c = *str++; - if (c >= '0' && c <= '9') - val = (val<<4) + c - '0'; - else if (c >= 'a' && c <= 'f') - val = (val<<4) + c - 'a' + 10; - else if (c >= 'A' && c <= 'F') - val = (val<<4) + c - 'A' + 10; - else - return val*sign; - } - } - -// -// check for character -// - if (str[0] == '\'') - { - return sign * str[1]; - } - -// -// assume decimal -// - while (1) - { - c = *str++; - if (c <'0' || c > '9') - return val*sign; - val = val*10 + c - '0'; - } - - return 0; -} - - -float V_atof (const char *str) -{ - AssertValidStringPtr( str ); - double val; - int sign; - int c; - int decimal, total; - - if (*str == '-') - { - sign = -1; - str++; - } - else - sign = 1; - - val = 0; - -// -// check for hex -// - if (str[0] == '0' && (str[1] == 'x' || str[1] == 'X') ) - { - str += 2; - while (1) - { - c = *str++; - if (c >= '0' && c <= '9') - val = (val*16) + c - '0'; - else if (c >= 'a' && c <= 'f') - val = (val*16) + c - 'a' + 10; - else if (c >= 'A' && c <= 'F') - val = (val*16) + c - 'A' + 10; - else - return val*sign; - } - } - -// -// check for character -// - if (str[0] == '\'') - { - return sign * str[1]; - } - -// -// assume decimal -// - decimal = -1; - total = 0; - while (1) - { - c = *str++; - if (c == '.') - { - decimal = total; - continue; - } - if (c <'0' || c > '9') - break; - val = val*10 + c - '0'; - total++; - } - - if (decimal == -1) - return val*sign; - while (total > decimal) - { - val /= 10; - total--; - } - - return val*sign; -} - -//----------------------------------------------------------------------------- -// Normalizes a float string in place. -// -// (removes leading zeros, trailing zeros after the decimal point, and the decimal point itself where possible) -//----------------------------------------------------------------------------- -void V_normalizeFloatString( char* pFloat ) -{ - // If we have a decimal point, remove trailing zeroes: - if( strchr( pFloat,'.' ) ) - { - int len = V_strlen(pFloat); - - while( len > 1 && pFloat[len - 1] == '0' ) - { - pFloat[len - 1] = '\0'; - len--; - } - - if( len > 1 && pFloat[ len - 1 ] == '.' ) - { - pFloat[len - 1] = '\0'; - len--; - } - } - - // TODO: Strip leading zeros - -} - - -//----------------------------------------------------------------------------- -// Finds a string in another string with a case insensitive test -//----------------------------------------------------------------------------- -char const* V_stristr( char const* pStr, char const* pSearch ) -{ - AssertValidStringPtr(pStr); - AssertValidStringPtr(pSearch); - - if (!pStr || !pSearch) - return 0; - - char const* pLetter = pStr; - - // Check the entire string - while (*pLetter != 0) - { - // Skip over non-matches - if (tolower((unsigned char)*pLetter) == tolower((unsigned char)*pSearch)) - { - // Check for match - char const* pMatch = pLetter + 1; - char const* pTest = pSearch + 1; - while (*pTest != 0) - { - // We've run off the end; don't bother. - if (*pMatch == 0) - return 0; - - if (tolower((unsigned char)*pMatch) != tolower((unsigned char)*pTest)) - break; - - ++pMatch; - ++pTest; - } - - // Found a match! - if (*pTest == 0) - return pLetter; - } - - ++pLetter; - } - - return 0; -} - -char* V_stristr( char* pStr, char const* pSearch ) -{ - AssertValidStringPtr( pStr ); - AssertValidStringPtr( pSearch ); - - return (char*)V_stristr( (char const*)pStr, pSearch ); -} - -//----------------------------------------------------------------------------- -// Finds a string in another string with a case insensitive test w/ length validation -//----------------------------------------------------------------------------- -char const* V_strnistr( char const* pStr, char const* pSearch, int n ) -{ - AssertValidStringPtr(pStr); - AssertValidStringPtr(pSearch); - - if (!pStr || !pSearch) - return 0; - - char const* pLetter = pStr; - - // Check the entire string - while (*pLetter != 0) - { - if ( n <= 0 ) - return 0; - - // Skip over non-matches - if (tolower(*pLetter) == tolower(*pSearch)) - { - int n1 = n - 1; - - // Check for match - char const* pMatch = pLetter + 1; - char const* pTest = pSearch + 1; - while (*pTest != 0) - { - if ( n1 <= 0 ) - return 0; - - // We've run off the end; don't bother. - if (*pMatch == 0) - return 0; - - if (tolower(*pMatch) != tolower(*pTest)) - break; - - ++pMatch; - ++pTest; - --n1; - } - - // Found a match! - if (*pTest == 0) - return pLetter; - } - - ++pLetter; - --n; - } - - return 0; -} - -const char* V_strnchr( const char* pStr, char c, int n ) -{ - char const* pLetter = pStr; - char const* pLast = pStr + n; - - // Check the entire string - while ( (pLetter < pLast) && (*pLetter != 0) ) - { - if (*pLetter == c) - return pLetter; - ++pLetter; - } - return NULL; -} - -void V_strncpy( char *pDest, char const *pSrc, int maxLen ) -{ - Assert( maxLen >= 0 ); - AssertValidWritePtr( pDest, maxLen ); - AssertValidStringPtr( pSrc ); - - strncpy( pDest, pSrc, maxLen ); - if ( maxLen > 0 ) - { - pDest[maxLen-1] = 0; - } -} - -void V_wcsncpy( wchar_t *pDest, wchar_t const *pSrc, int maxLenInBytes ) -{ - Assert( maxLenInBytes >= 0 ); - AssertValidWritePtr( pDest, maxLenInBytes ); - AssertValidReadPtr( pSrc ); - - int maxLen = maxLenInBytes / sizeof(wchar_t); - - wcsncpy( pDest, pSrc, maxLen ); - if( maxLen ) - { - pDest[maxLen-1] = 0; - } -} - - - -int V_snwprintf( wchar_t *pDest, int maxLen, const wchar_t *pFormat, ... ) -{ - Assert( maxLen >= 0 ); - AssertValidWritePtr( pDest, maxLen ); - AssertValidReadPtr( pFormat ); - - va_list marker; - - va_start( marker, pFormat ); -#ifdef _WIN32 - int len = _snwprintf( pDest, maxLen, pFormat, marker ); -#elif defined _LINUX || defined __APPLE__ - int len = swprintf( pDest, maxLen, pFormat, marker ); -#else -#error "define vsnwprintf type." -#endif - va_end( marker ); - - // Len < 0 represents an overflow - if( len < 0 ) - { - len = maxLen; - pDest[maxLen-1] = 0; - } - - return len; -} - - -int V_snprintf( char *pDest, int maxLen, char const *pFormat, ... ) -{ - Assert( maxLen >= 0 ); - AssertValidWritePtr( pDest, maxLen ); - AssertValidStringPtr( pFormat ); - - va_list marker; - - va_start( marker, pFormat ); -#ifdef _WIN32 - int len = _vsnprintf( pDest, maxLen, pFormat, marker ); -#elif defined _LINUX || defined __APPLE__ - int len = vsnprintf( pDest, maxLen, pFormat, marker ); -#else - #error "define vsnprintf type." -#endif - va_end( marker ); - - // Len < 0 represents an overflow - if( len < 0 ) - { - len = maxLen; - pDest[maxLen-1] = 0; - } - - return len; -} - - -int V_vsnprintf( char *pDest, int maxLen, char const *pFormat, va_list params ) -{ - Assert( maxLen > 0 ); - AssertValidWritePtr( pDest, maxLen ); - AssertValidStringPtr( pFormat ); - - int len = _vsnprintf( pDest, maxLen, pFormat, params ); - - if( len < 0 ) - { - len = maxLen; - pDest[maxLen-1] = 0; - } - - return len; -} - - - -//----------------------------------------------------------------------------- -// Purpose: If COPY_ALL_CHARACTERS == max_chars_to_copy then we try to add the whole pSrc to the end of pDest, otherwise -// we copy only as many characters as are specified in max_chars_to_copy (or the # of characters in pSrc if thats's less). -// Input : *pDest - destination buffer -// *pSrc - string to append -// destBufferSize - sizeof the buffer pointed to by pDest -// max_chars_to_copy - COPY_ALL_CHARACTERS in pSrc or max # to copy -// Output : char * the copied buffer -//----------------------------------------------------------------------------- -char *V_strncat(char *pDest, const char *pSrc, size_t destBufferSize, int max_chars_to_copy ) -{ - size_t charstocopy = (size_t)0; - - Assert( destBufferSize >= 0 ); - AssertValidStringPtr( pDest); - AssertValidStringPtr( pSrc ); - - size_t len = strlen(pDest); - size_t srclen = strlen( pSrc ); - if ( max_chars_to_copy <= COPY_ALL_CHARACTERS ) - { - charstocopy = srclen; - } - else - { - charstocopy = (size_t)MIN( max_chars_to_copy, (int)srclen ); - } - - if ( len + charstocopy >= destBufferSize ) - { - charstocopy = destBufferSize - len - 1; - } - - if ( !charstocopy ) - { - return pDest; - } - - char *pOut = strncat( pDest, pSrc, charstocopy ); - pOut[destBufferSize-1] = 0; - return pOut; -} - - - -//----------------------------------------------------------------------------- -// Purpose: Converts value into x.xx MB/ x.xx KB, x.xx bytes format, including commas -// Input : value - -// 2 - -// false - -// Output : char -//----------------------------------------------------------------------------- -#define NUM_PRETIFYMEM_BUFFERS 8 -char *V_pretifymem( float value, int digitsafterdecimal /*= 2*/, bool usebinaryonek /*= false*/ ) -{ - static char output[ NUM_PRETIFYMEM_BUFFERS ][ 32 ]; - static int current; - - float onekb = usebinaryonek ? 1024.0f : 1000.0f; - float onemb = onekb * onekb; - - char *out = output[ current ]; - current = ( current + 1 ) & ( NUM_PRETIFYMEM_BUFFERS -1 ); - - char suffix[ 8 ]; - - // First figure out which bin to use - if ( value > onemb ) - { - value /= onemb; - V_snprintf( suffix, sizeof( suffix ), " MB" ); - } - else if ( value > onekb ) - { - value /= onekb; - V_snprintf( suffix, sizeof( suffix ), " KB" ); - } - else - { - V_snprintf( suffix, sizeof( suffix ), " bytes" ); - } - - char val[ 32 ]; - - // Clamp to >= 0 - digitsafterdecimal = MAX( digitsafterdecimal, 0 ); - - // If it's basically integral, don't do any decimals - if ( FloatMakePositive( value - (int)value ) < 0.00001 ) - { - V_snprintf( val, sizeof( val ), "%i%s", (int)value, suffix ); - } - else - { - char fmt[ 32 ]; - - // Otherwise, create a format string for the decimals - V_snprintf( fmt, sizeof( fmt ), "%%.%if%s", digitsafterdecimal, suffix ); - V_snprintf( val, sizeof( val ), fmt, value ); - } - - // Copy from in to out - char *i = val; - char *o = out; - - // Search for decimal or if it was integral, find the space after the raw number - char *dot = strstr( i, "." ); - if ( !dot ) - { - dot = strstr( i, " " ); - } - - // Compute position of dot - int pos = dot - i; - // Don't put a comma if it's <= 3 long - pos -= 3; - - while ( *i ) - { - // If pos is still valid then insert a comma every third digit, except if we would be - // putting one in the first spot - if ( pos >= 0 && !( pos % 3 ) ) - { - // Never in first spot - if ( o != out ) - { - *o++ = ','; - } - } - - // Count down comma position - pos--; - - // Copy rest of data as normal - *o++ = *i++; - } - - // Terminate - *o = 0; - - return out; -} - -//----------------------------------------------------------------------------- -// Purpose: Returns a string representation of an integer with commas -// separating the 1000s (ie, 37,426,421) -// Input : value - Value to convert -// Output : Pointer to a static buffer containing the output -//----------------------------------------------------------------------------- -#define NUM_PRETIFYNUM_BUFFERS 8 -char *V_pretifynum( int64 value ) -{ - static char output[ NUM_PRETIFYMEM_BUFFERS ][ 32 ]; - static int current; - - char *out = output[ current ]; - current = ( current + 1 ) & ( NUM_PRETIFYMEM_BUFFERS -1 ); - - *out = 0; - - // Render the leading -, if necessary - if ( value < 0 ) - { - char *pchRender = out + V_strlen( out ); - V_snprintf( pchRender, 32, "-" ); - value = -value; - } - - // Render quadrillions - if ( value >= 1000000000000LL ) - { - char *pchRender = out + V_strlen( out ); - V_snprintf( pchRender, 32, "%lld,", value / 1000000000000LL ); - } - - // Render trillions - if ( value >= 1000000000000LL ) - { - char *pchRender = out + V_strlen( out ); - V_snprintf( pchRender, 32, "%lld,", value / 1000000000000LL ); - } - - // Render billions - if ( value >= 1000000000 ) - { - char *pchRender = out + V_strlen( out ); - V_snprintf( pchRender, 32, "%lld,", value / 1000000000 ); - } - - // Render millions - if ( value >= 1000000 ) - { - char *pchRender = out + V_strlen( out ); - if ( value >= 1000000000 ) - V_snprintf( pchRender, 32, "%03d,", (unsigned int)(( value / 1000000 ) % 1000 )); - else - V_snprintf( pchRender, 32, "%d,", (unsigned int)(( value / 1000000 ) % 1000 )); - } - - // Render thousands - if ( value >= 1000 ) - { - char *pchRender = out + V_strlen( out ); - if ( value >= 1000000 ) - V_snprintf( pchRender, 32, "%03d,", (unsigned int)(( value / 1000 ) % 1000 )); - else - V_snprintf( pchRender, 32, "%d,", (unsigned int)(( value / 1000 ) % 1000 )); - } - - // Render units - char *pchRender = out + V_strlen( out ); - if ( value > 1000 ) - V_snprintf( pchRender, 32, "%03d", (unsigned int)(value % 1000) ); - else - V_snprintf( pchRender, 32, "%d", (unsigned int)(value % 1000) ); - - return out; -} - - -//----------------------------------------------------------------------------- -// Purpose: Converts a UTF8 string into a unicode string -//----------------------------------------------------------------------------- -int V_UTF8ToUnicode( const char *pUTF8, wchar_t *pwchDest, int cubDestSizeInBytes ) -{ - AssertValidStringPtr(pUTF8); - AssertValidWritePtr(pwchDest); - - pwchDest[0] = 0; -#ifdef _WIN32 - int cchResult = MultiByteToWideChar( CP_UTF8, 0, pUTF8, -1, pwchDest, cubDestSizeInBytes / sizeof(wchar_t) ); -#elif defined _LINUX || defined __APPLE__ - int cchResult = mbstowcs( pwchDest, pUTF8, cubDestSizeInBytes / sizeof(wchar_t) ); -#endif - pwchDest[(cubDestSizeInBytes / sizeof(wchar_t)) - 1] = 0; - return cchResult; -} - -//----------------------------------------------------------------------------- -// Purpose: Converts a unicode string into a UTF8 (standard) string -//----------------------------------------------------------------------------- -int V_UnicodeToUTF8( const wchar_t *pUnicode, char *pUTF8, int cubDestSizeInBytes ) -{ - AssertValidStringPtr(pUTF8, cubDestSizeInBytes); - AssertValidReadPtr(pUnicode); - - pUTF8[0] = 0; -#ifdef _WIN32 - int cchResult = WideCharToMultiByte( CP_UTF8, 0, pUnicode, -1, pUTF8, cubDestSizeInBytes, NULL, NULL ); -#elif defined _LINUX || defined __APPLE__ - int cchResult = wcstombs( pUTF8, pUnicode, cubDestSizeInBytes ); -#endif - pUTF8[cubDestSizeInBytes - 1] = 0; - return cchResult; -} - -//----------------------------------------------------------------------------- -// Purpose: Returns the 4 bit nibble for a hex character -// Input : c - -// Output : unsigned char -//----------------------------------------------------------------------------- -static unsigned char V_nibble( char c ) -{ - if ( ( c >= '0' ) && - ( c <= '9' ) ) - { - return (unsigned char)(c - '0'); - } - - if ( ( c >= 'A' ) && - ( c <= 'F' ) ) - { - return (unsigned char)(c - 'A' + 0x0a); - } - - if ( ( c >= 'a' ) && - ( c <= 'f' ) ) - { - return (unsigned char)(c - 'a' + 0x0a); - } - - return '0'; -} - -//----------------------------------------------------------------------------- -// Purpose: -// Input : *in - -// numchars - -// *out - -// maxoutputbytes - -//----------------------------------------------------------------------------- -void V_hextobinary( char const *in, int numchars, byte *out, int maxoutputbytes ) -{ - int len = V_strlen( in ); - numchars = MIN( len, numchars ); - // Make sure it's even - numchars = ( numchars ) & ~0x1; - - // Must be an even # of input characters (two chars per output byte) - Assert( numchars >= 2 ); - - memset( out, 0x00, maxoutputbytes ); - - byte *p; - int i; - - p = out; - for ( i = 0; - ( i < numchars ) && ( ( p - out ) < maxoutputbytes ); - i+=2, p++ ) - { - *p = ( V_nibble( in[i] ) << 4 ) | V_nibble( in[i+1] ); - } -} - -//----------------------------------------------------------------------------- -// Purpose: -// Input : *in - -// inputbytes - -// *out - -// outsize - -//----------------------------------------------------------------------------- -void V_binarytohex( const byte *in, int inputbytes, char *out, int outsize ) -{ - Assert( outsize >= 1 ); - char doublet[10]; - int i; - - out[0]=0; - - for ( i = 0; i < inputbytes; i++ ) - { - unsigned char c = in[i]; - V_snprintf( doublet, sizeof( doublet ), "%02x", c ); - V_strncat( out, doublet, outsize, COPY_ALL_CHARACTERS ); - } -} - -#if defined( _WIN32 ) || defined( WIN32 ) -#define PATHSEPARATOR(c) ((c) == '\\' || (c) == '/') -#else //_WIN32 -#define PATHSEPARATOR(c) ((c) == '/') -#endif //_WIN32 - - -//----------------------------------------------------------------------------- -// Purpose: Extracts the base name of a file (no path, no extension, assumes '/' or '\' as path separator) -// Input : *in - -// *out - -// maxlen - -//----------------------------------------------------------------------------- -void V_FileBase( const char *in, char *out, int maxlen ) -{ - Assert( maxlen >= 1 ); - Assert( in ); - Assert( out ); - - if ( !in || !in[ 0 ] ) - { - *out = 0; - return; - } - - int len, start, end; - - len = V_strlen( in ); - - // scan backward for '.' - end = len - 1; - while ( end&& in[end] != '.' && !PATHSEPARATOR( in[end] ) ) - { - end--; - } - - if ( in[end] != '.' ) // no '.', copy to end - { - end = len-1; - } - else - { - end--; // Found ',', copy to left of '.' - } - - // Scan backward for '/' - start = len-1; - while ( start >= 0 && !PATHSEPARATOR( in[start] ) ) - { - start--; - } - - if ( start < 0 || !PATHSEPARATOR( in[start] ) ) - { - start = 0; - } - else - { - start++; - } - - // Length of new sting - len = end - start + 1; - - int maxcopy = MIN( len + 1, maxlen ); - - // Copy partial string - V_strncpy( out, &in[start], maxcopy ); -} - -//----------------------------------------------------------------------------- -// Purpose: -// Input : *ppath - -//----------------------------------------------------------------------------- -void V_StripTrailingSlash( char *ppath ) -{ - Assert( ppath ); - - int len = V_strlen( ppath ); - if ( len > 0 ) - { - if ( PATHSEPARATOR( ppath[ len - 1 ] ) ) - { - ppath[ len - 1 ] = 0; - } - } -} - -//----------------------------------------------------------------------------- -// Purpose: -// Input : *in - -// *out - -// outSize - -//----------------------------------------------------------------------------- -void V_StripExtension( const char *in, char *out, int outSize ) -{ - // Find the last dot. If it's followed by a dot or a slash, then it's part of a - // directory specifier like ../../somedir/./blah. - - // scan backward for '.' - int end = V_strlen( in ) - 1; - while ( end > 0 && in[end] != '.' && !PATHSEPARATOR( in[end] ) ) - { - --end; - } - - if (end > 0 && !PATHSEPARATOR( in[end] ) && end < outSize) - { - int nChars = MIN( end, outSize-1 ); - if ( out != in ) - { - memcpy( out, in, nChars ); - } - out[nChars] = 0; - } - else - { - // nothing found - if ( out != in ) - { - V_strncpy( out, in, outSize ); - } - } -} - -//----------------------------------------------------------------------------- -// Purpose: -// Input : *path - -// *extension - -// pathStringLength - -//----------------------------------------------------------------------------- -void V_DefaultExtension( char *path, const char *extension, int pathStringLength ) -{ - Assert( path ); - Assert( pathStringLength >= 1 ); - Assert( extension ); - Assert( extension[0] == '.' ); - - char *src; - - // if path doesn't have a .EXT, append extension - // (extension should include the .) - src = path + V_strlen(path) - 1; - - while ( !PATHSEPARATOR( *src ) && ( src > path ) ) - { - if (*src == '.') - { - // it has an extension - return; - } - src--; - } - - // Concatenate the desired extension - V_strncat( path, extension, pathStringLength, COPY_ALL_CHARACTERS ); -} - -//----------------------------------------------------------------------------- -// Purpose: Force extension... -// Input : *path - -// *extension - -// pathStringLength - -//----------------------------------------------------------------------------- -void V_SetExtension( char *path, const char *extension, int pathStringLength ) -{ - V_StripExtension( path, path, pathStringLength ); - V_DefaultExtension( path, extension, pathStringLength ); -} - -//----------------------------------------------------------------------------- -// Purpose: Remove final filename from string -// Input : *path - -// Output : void V_StripFilename -//----------------------------------------------------------------------------- -void V_StripFilename (char *path) -{ - int length; - - length = V_strlen( path )-1; - if ( length <= 0 ) - return; - - while ( length > 0 && - !PATHSEPARATOR( path[length] ) ) - { - length--; - } - - path[ length ] = 0; -} - -#ifdef _WIN32 -#define CORRECT_PATH_SEPARATOR '\\' -#define INCORRECT_PATH_SEPARATOR '/' -#elif defined _LINUX || defined __APPLE__ -#define CORRECT_PATH_SEPARATOR '/' -#define INCORRECT_PATH_SEPARATOR '\\' -#endif - -//----------------------------------------------------------------------------- -// Purpose: Changes all '/' or '\' characters into separator -// Input : *pname - -// separator - -//----------------------------------------------------------------------------- -void V_FixSlashes( char *pname, char separator /* = CORRECT_PATH_SEPARATOR */ ) -{ - while ( *pname ) - { - if ( *pname == INCORRECT_PATH_SEPARATOR || *pname == CORRECT_PATH_SEPARATOR ) - { - *pname = separator; - } - pname++; - } -} - - -//----------------------------------------------------------------------------- -// Purpose: This function fixes cases of filenames like materials\\blah.vmt or somepath\otherpath\\ and removes the extra double slash. -//----------------------------------------------------------------------------- -void V_FixDoubleSlashes( char *pStr ) -{ - int len = V_strlen( pStr ); - - for ( int i=1; i < len-1; i++ ) - { - if ( (pStr[i] == '/' || pStr[i] == '\\') && (pStr[i+1] == '/' || pStr[i+1] == '\\') ) - { - // This means there's a double slash somewhere past the start of the filename. That - // can happen in Hammer if they use a material in the root directory. You'll get a filename - // that looks like 'materials\\blah.vmt' - V_memmove( &pStr[i], &pStr[i+1], len - i ); - --len; - } - } -} - -//----------------------------------------------------------------------------- -// Purpose: Strip off the last directory from dirName -// Input : *dirName - -// maxlen - -// Output : Returns true on success, false on failure. -//----------------------------------------------------------------------------- -bool V_StripLastDir( char *dirName, int maxlen ) -{ - if( dirName[0] == 0 || - !V_stricmp( dirName, "./" ) || - !V_stricmp( dirName, ".\\" ) ) - return false; - - int len = V_strlen( dirName ); - - Assert( len < maxlen ); - - // skip trailing slash - if ( PATHSEPARATOR( dirName[len-1] ) ) - { - len--; - } - - while ( len > 0 ) - { - if ( PATHSEPARATOR( dirName[len-1] ) ) - { - dirName[len] = 0; - V_FixSlashes( dirName, CORRECT_PATH_SEPARATOR ); - return true; - } - len--; - } - - // Allow it to return an empty string and true. This can happen if something like "tf2/" is passed in. - // The correct behavior is to strip off the last directory ("tf2") and return true. - if( len == 0 ) - { - V_snprintf( dirName, maxlen, ".%c", CORRECT_PATH_SEPARATOR ); - return true; - } - - return true; -} - - -//----------------------------------------------------------------------------- -// Purpose: Returns a pointer to the beginning of the unqualified file name -// (no path information) -// Input: in - file name (may be unqualified, relative or absolute path) -// Output: pointer to unqualified file name -//----------------------------------------------------------------------------- -const char * V_UnqualifiedFileName( const char * in ) -{ - // back up until the character after the first path separator we find, - // or the beginning of the string - const char * out = in + strlen( in ) - 1; - while ( ( out > in ) && ( !PATHSEPARATOR( *( out-1 ) ) ) ) - out--; - return out; -} - - -//----------------------------------------------------------------------------- -// Purpose: Composes a path and filename together, inserting a path separator -// if need be -// Input: path - path to use -// filename - filename to use -// dest - buffer to compose result in -// destSize - size of destination buffer -//----------------------------------------------------------------------------- -void V_ComposeFileName( const char *path, const char *filename, char *dest, int destSize ) -{ - V_strncpy( dest, path, destSize ); - V_AppendSlash( dest, destSize ); - V_strncat( dest, filename, destSize, COPY_ALL_CHARACTERS ); - V_FixSlashes( dest ); -} - - -//----------------------------------------------------------------------------- -// Purpose: -// Input : *path - -// *dest - -// destSize - -// Output : void V_ExtractFilePath -//----------------------------------------------------------------------------- -bool V_ExtractFilePath (const char *path, char *dest, int destSize ) -{ - Assert( destSize >= 1 ); - if ( destSize < 1 ) - { - return false; - } - - // Last char - int len = V_strlen(path); - const char *src = path + (len ? len-1 : 0); - - // back up until a \ or the start - while ( src != path && !PATHSEPARATOR( *(src-1) ) ) - { - src--; - } - - int copysize = MIN( src - path, destSize - 1 ); - memcpy( dest, path, copysize ); - dest[copysize] = 0; - - return copysize != 0 ? true : false; -} - -//----------------------------------------------------------------------------- -// Purpose: -// Input : *path - -// *dest - -// destSize - -// Output : void V_ExtractFileExtension -//----------------------------------------------------------------------------- -void V_ExtractFileExtension( const char *path, char *dest, int destSize ) -{ - *dest = '\0'; - const char * extension = V_GetFileExtension( path ); - if ( NULL != extension ) - V_strncpy( dest, extension, destSize ); -} - - -//----------------------------------------------------------------------------- -// Purpose: Returns a pointer to the file extension within a file name string -// Input: in - file name -// Output: pointer to beginning of extension (after the "."), or NULL -// if there is no extension -//----------------------------------------------------------------------------- -const char * V_GetFileExtension( const char * path ) -{ - const char *src; - - src = path + strlen(path) - 1; - -// -// back up until a . or the start -// - while (src != path && *(src-1) != '.' ) - src--; - - // check to see if the '.' is part of a pathname - if (src == path || PATHSEPARATOR( *src ) ) - { - return NULL; // no extension - } - - return src; -} - -bool V_RemoveDotSlashes( char *pFilename, char separator ) -{ - // Remove '//' or '\\' - char *pIn = pFilename; - char *pOut = pFilename; - bool bPrevPathSep = false; - while ( *pIn ) - { - bool bIsPathSep = PATHSEPARATOR( *pIn ); - if ( !bIsPathSep || !bPrevPathSep ) - { - *pOut++ = *pIn; - } - bPrevPathSep = bIsPathSep; - ++pIn; - } - *pOut = 0; - - // Get rid of "./"'s - pIn = pFilename; - pOut = pFilename; - while ( *pIn ) - { - // The logic on the second line is preventing it from screwing up "../" - if ( pIn[0] == '.' && PATHSEPARATOR( pIn[1] ) && - (pIn == pFilename || pIn[-1] != '.') ) - { - pIn += 2; - } - else - { - *pOut = *pIn; - ++pIn; - ++pOut; - } - } - *pOut = 0; - - // Get rid of a trailing "/." (needless). - int len = strlen( pFilename ); - if ( len > 2 && pFilename[len-1] == '.' && PATHSEPARATOR( pFilename[len-2] ) ) - { - pFilename[len-2] = 0; - } - - // Each time we encounter a "..", back up until we've read the previous directory name, - // then get rid of it. - pIn = pFilename; - while ( *pIn ) - { - if ( pIn[0] == '.' && - pIn[1] == '.' && - (pIn == pFilename || PATHSEPARATOR(pIn[-1])) && // Preceding character must be a slash. - (pIn[2] == 0 || PATHSEPARATOR(pIn[2])) ) // Following character must be a slash or the end of the string. - { - char *pEndOfDots = pIn + 2; - char *pStart = pIn - 2; - - // Ok, now scan back for the path separator that starts the preceding directory. - while ( 1 ) - { - if ( pStart < pFilename ) - return false; - - if ( PATHSEPARATOR( *pStart ) ) - break; - - --pStart; - } - - // Now slide the string down to get rid of the previous directory and the ".." - memmove( pStart, pEndOfDots, strlen( pEndOfDots ) + 1 ); - - // Start over. - pIn = pFilename; - } - else - { - ++pIn; - } - } - - V_FixSlashes( pFilename, separator ); - return true; -} - - -void V_AppendSlash( char *pStr, int strSize ) -{ - int len = V_strlen( pStr ); - if ( len > 0 && !PATHSEPARATOR(pStr[len-1]) ) - { - //if ( len+1 >= strSize ) - //Error( "V_AppendSlash: ran out of space on %s.", pStr ); - - pStr[len] = CORRECT_PATH_SEPARATOR; - pStr[len+1] = 0; - } -} - - -void V_MakeAbsolutePath( char *pOut, int outLen, const char *pPath, const char *pStartingDir ) -{ - if ( V_IsAbsolutePath( pPath ) ) - { - // pPath is not relative.. just copy it. - V_strncpy( pOut, pPath, outLen ); - } - else - { - // Make sure the starting directory is absolute.. - if ( pStartingDir && V_IsAbsolutePath( pStartingDir ) ) - { - V_strncpy( pOut, pStartingDir, outLen ); - } - else - { - //if ( !_getcwd( pOut, outLen ) ) - //Error( "V_MakeAbsolutePath: _getcwd failed." ); - - if ( pStartingDir ) - { - V_AppendSlash( pOut, outLen ); - V_strncat( pOut, pStartingDir, outLen, COPY_ALL_CHARACTERS ); - } - } - - // Concatenate the paths. - V_AppendSlash( pOut, outLen ); - V_strncat( pOut, pPath, outLen, COPY_ALL_CHARACTERS ); - } - - //if ( !V_RemoveDotSlashes( pOut ) ) - //Error( "V_MakeAbsolutePath: tried to \"..\" past the root." ); - - V_FixSlashes( pOut ); -} - - -//----------------------------------------------------------------------------- -// Makes a relative path -//----------------------------------------------------------------------------- -bool V_MakeRelativePath( const char *pFullPath, const char *pDirectory, char *pRelativePath, int nBufLen ) -{ - pRelativePath[0] = 0; - - const char *pPath = pFullPath; - const char *pDir = pDirectory; - - // Strip out common parts of the path - const char *pLastCommonPath = NULL; - const char *pLastCommonDir = NULL; - while ( *pPath && ( tolower( *pPath ) == tolower( *pDir ) || - ( PATHSEPARATOR( *pPath ) && ( PATHSEPARATOR( *pDir ) || (*pDir == 0) ) ) ) ) - { - if ( PATHSEPARATOR( *pPath ) ) - { - pLastCommonPath = pPath + 1; - pLastCommonDir = pDir + 1; - } - if ( *pDir == 0 ) - { - --pLastCommonDir; - break; - } - ++pDir; ++pPath; - } - - // Nothing in common - if ( !pLastCommonPath ) - return false; - - // For each path separator remaining in the dir, need a ../ - int nOutLen = 0; - bool bLastCharWasSeparator = true; - for ( ; *pLastCommonDir; ++pLastCommonDir ) - { - if ( PATHSEPARATOR( *pLastCommonDir ) ) - { - pRelativePath[nOutLen++] = '.'; - pRelativePath[nOutLen++] = '.'; - pRelativePath[nOutLen++] = CORRECT_PATH_SEPARATOR; - bLastCharWasSeparator = true; - } - else - { - bLastCharWasSeparator = false; - } - } - - // Deal with relative paths not specified with a trailing slash - if ( !bLastCharWasSeparator ) - { - pRelativePath[nOutLen++] = '.'; - pRelativePath[nOutLen++] = '.'; - pRelativePath[nOutLen++] = CORRECT_PATH_SEPARATOR; - } - - // Copy the remaining part of the relative path over, fixing the path separators - for ( ; *pLastCommonPath; ++pLastCommonPath ) - { - if ( PATHSEPARATOR( *pLastCommonPath ) ) - { - pRelativePath[nOutLen++] = CORRECT_PATH_SEPARATOR; - } - else - { - pRelativePath[nOutLen++] = *pLastCommonPath; - } - - // Check for overflow - if ( nOutLen == nBufLen - 1 ) - break; - } - - pRelativePath[nOutLen] = 0; - return true; -} - - -//----------------------------------------------------------------------------- -// small helper function shared by lots of modules -//----------------------------------------------------------------------------- -bool V_IsAbsolutePath( const char *pStr ) -{ - bool bIsAbsolute = ( pStr[0] && pStr[1] == ':' ) || pStr[0] == '/' || pStr[0] == '\\'; - if ( IsX360() && !bIsAbsolute ) - { - bIsAbsolute = ( V_stristr( pStr, ":" ) != NULL ); - } - return bIsAbsolute; -} - - -// Copies at most nCharsToCopy bytes from pIn into pOut. -// Returns false if it would have overflowed pOut's buffer. -static bool CopyToMaxChars( char *pOut, int outSize, const char *pIn, int nCharsToCopy ) -{ - if ( outSize == 0 ) - return false; - - int iOut = 0; - while ( *pIn && nCharsToCopy > 0 ) - { - if ( iOut == (outSize-1) ) - { - pOut[iOut] = 0; - return false; - } - pOut[iOut] = *pIn; - ++iOut; - ++pIn; - --nCharsToCopy; - } - - pOut[iOut] = 0; - return true; -} - - -//----------------------------------------------------------------------------- -// Fixes up a file name, removing dot slashes, fixing slashes, converting to lowercase, etc. -//----------------------------------------------------------------------------- -void V_FixupPathName( char *pOut, size_t nOutLen, const char *pPath ) -{ - V_strncpy( pOut, pPath, nOutLen ); - V_FixSlashes( pOut ); - V_RemoveDotSlashes( pOut ); - V_FixDoubleSlashes( pOut ); - V_strlower( pOut ); -} - - -// Returns true if it completed successfully. -// If it would overflow pOut, it fills as much as it can and returns false. -bool V_StrSubst( - const char *pIn, - const char *pMatch, - const char *pReplaceWith, - char *pOut, - int outLen, - bool bCaseSensitive - ) -{ - int replaceFromLen = strlen( pMatch ); - int replaceToLen = strlen( pReplaceWith ); - - const char *pInStart = pIn; - char *pOutPos = pOut; - pOutPos[0] = 0; - - while ( 1 ) - { - int nRemainingOut = outLen - (pOutPos - pOut); - - const char *pTestPos = ( bCaseSensitive ? strstr( pInStart, pMatch ) : V_stristr( pInStart, pMatch ) ); - if ( pTestPos ) - { - // Found an occurence of pMatch. First, copy whatever leads up to the string. - int copyLen = pTestPos - pInStart; - if ( !CopyToMaxChars( pOutPos, nRemainingOut, pInStart, copyLen ) ) - return false; - - // Did we hit the end of the output string? - if ( copyLen > nRemainingOut-1 ) - return false; - - pOutPos += strlen( pOutPos ); - nRemainingOut = outLen - (pOutPos - pOut); - - // Now add the replacement string. - if ( !CopyToMaxChars( pOutPos, nRemainingOut, pReplaceWith, replaceToLen ) ) - return false; - - pInStart += copyLen + replaceFromLen; - pOutPos += replaceToLen; - } - else - { - // We're at the end of pIn. Copy whatever remains and get out. - int copyLen = strlen( pInStart ); - V_strncpy( pOutPos, pInStart, nRemainingOut ); - return ( copyLen <= nRemainingOut-1 ); - } - } -} - - -char* AllocString( const char *pStr, int nMaxChars ) -{ - int allocLen; - if ( nMaxChars == -1 ) - allocLen = strlen( pStr ) + 1; - else - allocLen = MIN( (int)strlen(pStr), nMaxChars ) + 1; - - char *pOut = new char[allocLen]; - V_strncpy( pOut, pStr, allocLen ); - return pOut; -} - - -void V_SplitString2( const char *pString, const char **pSeparators, int nSeparators, CUtlVector &outStrings ) -{ - outStrings.Purge(); - const char *pCurPos = pString; - while ( 1 ) - { - int iFirstSeparator = -1; - const char *pFirstSeparator = 0; - for ( int i=0; i < nSeparators; i++ ) - { - const char *pTest = V_stristr( pCurPos, pSeparators[i] ); - if ( pTest && (!pFirstSeparator || pTest < pFirstSeparator) ) - { - iFirstSeparator = i; - pFirstSeparator = pTest; - } - } - - if ( pFirstSeparator ) - { - // Split on this separator and continue on. - int separatorLen = strlen( pSeparators[iFirstSeparator] ); - if ( pFirstSeparator > pCurPos ) - { - outStrings.AddToTail( AllocString( pCurPos, pFirstSeparator-pCurPos ) ); - } - - pCurPos = pFirstSeparator + separatorLen; - } - else - { - // Copy the rest of the string - if ( strlen( pCurPos ) ) - { - outStrings.AddToTail( AllocString( pCurPos, -1 ) ); - } - return; - } - } -} - - -void V_SplitString( const char *pString, const char *pSeparator, CUtlVector &outStrings ) -{ - V_SplitString2( pString, &pSeparator, 1, outStrings ); -} - - -bool V_GetCurrentDirectory( char *pOut, int maxLen ) -{ -#if defined _LINUX || defined __APPLE__ - return getcwd( pOut, maxLen ) == pOut; -#else - return _getcwd( pOut, maxLen ) == pOut; -#endif -} - - -bool V_SetCurrentDirectory( const char *pDirName ) -{ -#if defined _LINUX || defined __APPLE__ - return chdir( pDirName ) == 0; -#else - return _chdir( pDirName ) == 0; -#endif -} - - -// This function takes a slice out of pStr and stores it in pOut. -// It follows the Python slice convention: -// Negative numbers wrap around the string (-1 references the last character). -// Numbers are clamped to the end of the string. -void V_StrSlice( const char *pStr, int firstChar, int lastCharNonInclusive, char *pOut, int outSize ) -{ - if ( outSize == 0 ) - return; - - int length = strlen( pStr ); - - // Fixup the string indices. - if ( firstChar < 0 ) - { - firstChar = length - (-firstChar % length); - } - else if ( firstChar >= length ) - { - pOut[0] = 0; - return; - } - - if ( lastCharNonInclusive < 0 ) - { - lastCharNonInclusive = length - (-lastCharNonInclusive % length); - } - else if ( lastCharNonInclusive > length ) - { - lastCharNonInclusive %= length; - } - - if ( lastCharNonInclusive <= firstChar ) - { - pOut[0] = 0; - return; - } - - int copyLen = lastCharNonInclusive - firstChar; - if ( copyLen <= (outSize-1) ) - { - memcpy( pOut, &pStr[firstChar], copyLen ); - pOut[copyLen] = 0; - } - else - { - memcpy( pOut, &pStr[firstChar], outSize-1 ); - pOut[outSize-1] = 0; - } -} - - -void V_StrLeft( const char *pStr, int nChars, char *pOut, int outSize ) -{ - if ( nChars == 0 ) - { - if ( outSize != 0 ) - pOut[0] = 0; - - return; - } - - V_StrSlice( pStr, 0, nChars, pOut, outSize ); -} - - -void V_StrRight( const char *pStr, int nChars, char *pOut, int outSize ) -{ - int len = strlen( pStr ); - if ( nChars >= len ) - { - V_strncpy( pOut, pStr, outSize ); - } - else - { - V_StrSlice( pStr, -nChars, strlen( pStr ), pOut, outSize ); - } -} - -//----------------------------------------------------------------------------- -// Convert multibyte to wchar + back -//----------------------------------------------------------------------------- -void V_strtowcs( const char *pString, int nInSize, wchar_t *pWString, int nOutSize ) -{ -#ifdef _WIN32 - if ( !MultiByteToWideChar( CP_UTF8, 0, pString, nInSize, pWString, nOutSize ) ) - { - *pWString = L'\0'; - } -#elif defined _LINUX || defined __APPLE__ - if ( mbstowcs( pWString, pString, nOutSize / sizeof(wchar_t) ) <= 0 ) - { - *pWString = 0; - } -#endif -} - -void V_wcstostr( const wchar_t *pWString, int nInSize, char *pString, int nOutSize ) -{ -#ifdef _WIN32 - if ( !WideCharToMultiByte( CP_UTF8, 0, pWString, nInSize, pString, nOutSize, NULL, NULL ) ) - { - *pString = '\0'; - } -#elif defined _LINUX || defined __APPLE__ - if ( wcstombs( pString, pWString, nOutSize ) <= 0 ) - { - *pString = '\0'; - } -#endif -} - - - -//-------------------------------------------------------------------------------- -// backslashification -//-------------------------------------------------------------------------------- - -static char s_BackSlashMap[]="\tt\nn\rr\"\"\\\\"; - -char *V_AddBackSlashesToSpecialChars( char const *pSrc ) -{ - // first, count how much space we are going to need - int nSpaceNeeded = 0; - for( char const *pScan = pSrc; *pScan; pScan++ ) - { - nSpaceNeeded++; - for(char const *pCharSet=s_BackSlashMap; *pCharSet; pCharSet += 2 ) - { - if ( *pCharSet == *pScan ) - nSpaceNeeded++; // we need to store a bakslash - } - } - char *pRet = new char[ nSpaceNeeded + 1 ]; // +1 for null - char *pOut = pRet; - - for( char const *pScan = pSrc; *pScan; pScan++ ) - { - bool bIsSpecial = false; - for(char const *pCharSet=s_BackSlashMap; *pCharSet; pCharSet += 2 ) - { - if ( *pCharSet == *pScan ) - { - *( pOut++ ) = '\\'; - *( pOut++ ) = pCharSet[1]; - bIsSpecial = true; - break; - } - } - if (! bIsSpecial ) - { - *( pOut++ ) = *pScan; - } - } - *( pOut++ ) = 0; - return pRet; -} diff --git a/tier1/tier1.vcxproj b/tier1/tier1.vcxproj index b973a72f..9ea23537 100644 --- a/tier1/tier1.vcxproj +++ b/tier1/tier1.vcxproj @@ -322,7 +322,6 @@ - diff --git a/tier1/tier1.vcxproj.filters b/tier1/tier1.vcxproj.filters index e5ee2758..f5866b6a 100644 --- a/tier1/tier1.vcxproj.filters +++ b/tier1/tier1.vcxproj.filters @@ -23,9 +23,6 @@ Source Files - - Source Files - Source Files