From 00b76b9dda40bc7bd0f7e3fa8e4790b2591378ee Mon Sep 17 00:00:00 2001 From: Nick Hastings Date: Sun, 4 Sep 2022 12:37:41 -0400 Subject: [PATCH] Revert "Remove tier1 lib/code. It's implemented by tier0 now and exported." This reverts commit 4fd0ac35ed9880b5bf26d559ccf09d7d68d05d9b. --- lib/linux64/tier1.a | Bin 0 -> 467608 bytes lib/public/win64/tier1.lib | Bin 0 -> 3027898 bytes tier1/KeyValues.cpp | 2521 ++++++++++++++++++++++++++++++ tier1/NetAdr.cpp | 331 ++++ tier1/bitbuf.cpp | 1330 ++++++++++++++++ tier1/byteswap.cpp | 90 ++ tier1/characterset.cpp | 41 + tier1/checksum_crc.cpp | 180 +++ tier1/checksum_md5.cpp | 271 ++++ tier1/commandbuffer.cpp | 636 ++++++++ tier1/convar.cpp | 1360 ++++++++++++++++ tier1/datamanager.cpp | 406 +++++ tier1/diff.cpp | 547 +++++++ tier1/generichash.cpp | 303 ++++ tier1/mempool.cpp | 316 ++++ tier1/memstack.cpp | 300 ++++ tier1/newbitbuf.cpp | 713 +++++++++ tier1/processor_detect.cpp | 278 ++++ tier1/processor_detect_linux.cpp | 63 + tier1/rangecheckedvar.cpp | 42 + tier1/stringpool.cpp | 350 +++++ tier1/strtools.cpp | 2017 ++++++++++++++++++++++++ tier1/tier1-2005.vcproj | 568 +++++++ tier1/tier1.cpp | 29 + tier1/tier1.sln | 28 + tier1/tier1.vcxproj | 409 +++++ tier1/tier1.vcxproj.filters | 251 +++ tier1/tokenreader.cpp | 480 ++++++ tier1/undiff.cpp | 94 ++ tier1/uniqueid.cpp | 177 +++ tier1/utlbuffer.cpp | 1753 +++++++++++++++++++++ tier1/utlbufferutil.cpp | 562 +++++++ tier1/utlstring.cpp | 767 +++++++++ tier1/utlsymbol.cpp | 397 +++++ 34 files changed, 17610 insertions(+) create mode 100644 lib/linux64/tier1.a create mode 100644 lib/public/win64/tier1.lib create mode 100644 tier1/KeyValues.cpp create mode 100644 tier1/NetAdr.cpp create mode 100644 tier1/bitbuf.cpp create mode 100644 tier1/byteswap.cpp create mode 100644 tier1/characterset.cpp create mode 100644 tier1/checksum_crc.cpp create mode 100644 tier1/checksum_md5.cpp create mode 100644 tier1/commandbuffer.cpp create mode 100644 tier1/convar.cpp create mode 100644 tier1/datamanager.cpp create mode 100644 tier1/diff.cpp create mode 100644 tier1/generichash.cpp create mode 100644 tier1/mempool.cpp create mode 100644 tier1/memstack.cpp create mode 100644 tier1/newbitbuf.cpp create mode 100644 tier1/processor_detect.cpp create mode 100644 tier1/processor_detect_linux.cpp create mode 100644 tier1/rangecheckedvar.cpp create mode 100644 tier1/stringpool.cpp create mode 100644 tier1/strtools.cpp create mode 100644 tier1/tier1-2005.vcproj create mode 100644 tier1/tier1.cpp create mode 100644 tier1/tier1.sln create mode 100644 tier1/tier1.vcxproj create mode 100644 tier1/tier1.vcxproj.filters create mode 100644 tier1/tokenreader.cpp create mode 100644 tier1/undiff.cpp create mode 100644 tier1/uniqueid.cpp create mode 100644 tier1/utlbuffer.cpp create mode 100644 tier1/utlbufferutil.cpp create mode 100644 tier1/utlstring.cpp create mode 100644 tier1/utlsymbol.cpp diff --git a/lib/linux64/tier1.a b/lib/linux64/tier1.a new file mode 100644 index 0000000000000000000000000000000000000000..9f18416f1138921c7ca6282564e001d65e260a64 GIT binary patch literal 467608 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�a#|7B=m>s@2!HPnHWP6}N%(H|-;ZETuT8Z0fZ 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

K(O(mi6Yt(=h?oQ(IFHhG?Gm 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­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

?_Hl;1ANCFy(9qQDNuN*Bs@2snG2)T5m6{d- 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%0AmDH=)+Wg%mrg~*jGhU_$9>C&2| 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≻}ygW+1aKF4%^o^iP&>y~aMvUTBr+8hI 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 -7PY=VtzO@yZTA+_0@d-;~5H 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

AcDaMjhEG)Tt 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

ocAu0n@!$Lu7M`=9d*m4nu5a70s@k zpC2hHE-ERkEG;i6Ea%VxVJs{!j^q~>IFi6%3OE&ImHCn4;=D-yA(dt2MWu+tVU;DN z<#REn*bAalq#!4y(plrAIjQ}x9)hN)Y;J+G8y@!HLuGkIMG;SA=GRp;#) zVWhlrenkYSp9TIR_`tpSb+Ov|WevRl4X3J|zIZbdUP*FS;G=`7{lj?7D=jT9jFccp zQ>B#X%i0#knwB;+*S4%hAos+pC1`8%&8R8Tf-B{gVh|!@sFvD>dL&h9|8p2^9c=1_ zx>!rBbm>uuYcWp>;OaHBM5+CA;VXt+5X```0GkWqVyk0K%1ef>0r4s>TX5)nBnzJ} zLA0tH>Kd9RPLSso$cZ&I)i*%WV7$+Sq#`YfXIf(QP)obu#cVJ(wyeN4X*H{sRx?e6 ze+J;PHlJ#pxB<;GF38X88W@DuBLW10yPlaxwwjPZUM&gCiz)S`lBOSHa|*5 z$Hx&m;HYnmMvM@j4hf!Kj2;Rkd~M zemR^jboRyDVMRLr5cUe!znnnNqqc<^tBC3TbD_PCk*|u6x|SXrBeGx5$OE+xa+kp z23=Uwa7?pq0&F`x092!pL{KD6v1QeqycG4x`1spgrAgp1n}8!IT+}Ms)S5)W>>02J z#SSPtP;B@fAV*0<{VdeXx`f8am6lY21&5-0C`y%TeRWl39U63LgI6QI`DF`=&|PR+ zRVAGqcJ$a72oE2^c*r{p-7a?Q{-0L!W$01aj)2IA%4NfGG+CwLAUV4U3rwh`T>;R7 zHKr!f&-=5%#c|zPt6F$NE(yZSd-0BWzehaH6Vrsmc0^qV0hGfYr$a5y zLQ$hkL0RSO@>2Z8$St2E zcs(wY+~$Nr3RWTF6maS$X07LUyC5f=*|3&^ID?UgcSSRUe3vVWLQyaM1R- z35ppF>f$85+ONz@cQ_>qlh%-heSmcfow-j~1p{ympXeDGB$S;60!{>aa+ zc(i53Mf*(t#rt1heXHZ#D)_T$4~{tJgiF41V zeDxu|`YL$-p;v!$^Bz54DtWnJV$p@4Ov0C#1b^yR8@4vSe#)ddQy)IynmGY{{Ahd% z<@cF4>8+>ko^tO!19n^KJb3>+$2nH;zyAK=w};Fe+I!n&(XpLOyM`hfB4mD6Ob>D3I2}@3QBkGkTo2&#@;}WNcc0^cJM&*@9m>Z_ICg^H4#LF^{g@ ze8ItgyxDP{75s|nu|*#|mpNzRvp3v+`Qy7F?FV6=Iy3Nkzm0$YebfE9Ge#Y~`0;%g z|JiZo2>z$jMm|w_RPVmoV;}sm;qUBH#Zd_)CG8t~xUH)S`heKKb&Pt0&*-IMe#j-{A*7(DCl# zPr^%|nedB+XSX2zj}v^`b=7|kez72J+xcyUH$8qFzHRfk;OA|<<^HW{*Pi?2%8J)+ zt{;N>(i?RR-P+sPw9be*260*KB-u7Sj0~ z!CzjnwAaLu&m8;KA>Y0dU42O@(ns*KKe}*1pX!&sAN1@QZ}xp}?t@r9KpoBu{BcZH z_HFO1=rLu#x;ttgnNWiC5&Xhz3$ri%HI@nmKkfgs_a<;rRc-wE z9fnO%0hhE)L&db*Sll&aU`D_Y5OBvvmI2X$A!ZQQ!ZmfIG|e*8tgQ64#oV=AK+Uak zPc2g`D_bqK%yRjEpXc7W408vx?e6}n4#DHs{IxLp ztMgN5tsUZJEXHGyQrqL5N`dwXr2Fzgji?=aC)X8)7}9 z2cFCLvMYaX^Er8c(({YnTk}nT$5d>$G5*`C$WgslPb|v`^5`^RbG47x^dsHJOZlLX-n#;4!PS=novdQM5*Hp{L*a{%#ya$oopla$}EW5)Szv*z~QJnVN5Z0mLQ zBivK)NNTb)fB&RTsi!o({niS?(kyJKYYslpP6$P3BqQ^6Sf-+a~FO$ z+I_jc{j(!hwG@QE7?1Hi+UNN1r|TvDas11T9&@2*t2??Ef7Q>ERY6;_j&yx^Va}H! z8)m&K2;&&9y>RvWLpO(R8T3TILj&f_8ZHRy89%uEnVntU^_$$-^zoC0ZPIr_2N~lb zfm0?;-D}o8|Kf?CkDBQtW^PesF=JmiXV`C>QJNS=%K`=>A2`t!Nqh(Awx#I>9w2yL)`kAC_7Z(_!d3Vd$q zs>_pJZT#p}LC9qM*W43NY@M@v%6A!iP8Rro`@0~#!uY9czkU1V!8hv_|MLEviJe2y z=YPrg%-I8qJAT#So&Kxd_xt$QCp%zV(TMzSaBKXsPV1UC6kcw;GGzFHJmf#)#}7rf zy=TJTA2wdGV|=e>kDwiUhw&x#h8c~UM`WHbctwprzGVaWhw-&1e|8`5p?j^-)yFd3 ze%{#+<%|76f7Po`8Z!gDbNr5XJ=Gw0!LB8OFp2TcL!NqQ`{rH!PM3M?jD6<5`_cb0 zJ~=48QK!h{+MP|Sc4zu5c}fs&G5*WB^bvoU4}7yKre(tgVPAm%Bkv{uPj|fD*0?Ww zSAOWtqBaM^KtF@=$f28>MI0|`zkOH0%EcoG^uks-;}OZm7d@U@V`+YT{E7PYNq=D@ z@TkA)&pl`6)_dvfk#F?N-X6BH?!*FNw-kL*pvry$;SSd9nKgB`FQYE}M|l*$BO}SR?gUP5R5!?0|blUWWt2 zh79U8VU{4IGQP8I(``rJ`}NP~vQNJB@Y_-I1Ys%TTdanelkR)Q`-{^{R}Y)^+8$BU zUmJ`O>6rnZ4@Q{NV4o@3_rm@T+KNP!c`)pk@qPxsgp3}kP%M#Mkd_;mh0R8DV4Jbs zx;&IhB6_gY5I8!=VovSWAtW^?FT+@vX-F;1#cpS=VZ15Nkd~j*VWcY_m~qOAHY3up zgX5YfW=!P`nW_2ak~pZ zoGJL@0ux9KQvFyPMNLJng@*klGiQ+tF~zDn7RAA5D0vq`mskzyg%??AxjDvh)k!q( zrnw#*ju>QSj>Zx@yr^+0TSnI07sJ?$e9FEWMkb@cl4;1I+E+u5%xT7&dy-+wLrYX( z$jcaaNBkQD36OUpae0O!B(7RbT1YDR8z*Irx6z`}`Bzh3ZW^6CK{&Ttr=%K@U6_-J zVvP%p@v-ucLRBetnB#<|?Uz%Mi| zc~rToRpP;^W7ADz^%+>;GGb9ok20X$OE|A#mCB%wvAVGcsd&Vxs#vp=|1$5u2K`n9JjxQKod4i@}y771H8DH7zm~b?JmyxHb<$o}#uw z>~T%fQC`(ti9cF;9_G5>);ul`+y5?A1gRE|w&dCt4qOO76GsPW-NdyhAn!3|F`7ug zyvsg}MBpwvF0|wr;n+3Sso2$ZbFE#lEgGfe=c7@wK=Lq8j$J4V6oWnk=c;(j?1FoY zIB+rzsidF`wJfYS; zhXl2|7zwzCV{!e;g(?Pz1?B=*hSdmI>MsqP@S6AeX$5y+snv)}Jr-B$ftZm{R(}Up z0<+MA+?h4Jq5>C(h0;XcwSK5#Khntsww8PVYq~a)liZ6{!!<8ZpkQupQ^aLy*OS3* zD^HzW;VdaFcAn66mYj^+ScsCQZ!YyxPJ%D2S*c_e(3$iab~xtDG5VT$gaXdVr469l zZTHHV6AWUa`hL4Uh>eAL3^knCo5t&n*HefKXx~&2wqWls1HXOwv=`ZY1RQG;;)R9{ zE#th`>^NBP=%W7DFE{gD+l2NKEAQ*d?>iPq_Z`P%goFm;?ryqp={LU(+MqTw1GFr4nx3NnpKE-_ewMP%}6l@(KJYWyL zsc>x~hwf@<0{X%$@wo?y3g@GjDnVbsAF=W2>|-{6q)3QQ1()gkF~|AGG-RYUfHJ0@ zpbJO<5!uB@g+sdiaKBJbPL$1sXa@ETz=`C504gR*T!M-d z=Ld*fSnwvOkRSrE(`^H?83-%~(ix!mNKVplXD=ZD2N8q_ytaq(nRbA2*i7gofz5G% zk*qCY)`b}alTt#zsXXX+JD4~WfJ_dSY(Byu85<^J6u3w?R>tPZ*mE-Wj*P95u@f@( zxr|LjTt)wiC7X{BGs_a>KPYDEPk~x%q<@U{w@oSKyXKW6ZhcVg(qZep^UAQFIYCm5^Z>%U>VGSMh1ezx&}g zS`j=8@jE=AknQ4igL_aL$tSTQXM#~Y!73rBDVhMPYjv3x$D{GZM~WKG*YbCY)x-RK zFb>U!fOaTqjUY@%4W^fBPauC+{6p=jkD5VDNeB27R8nI70d@mO2})2=f^4;+*v=2i zLpmpcBW7G}=+jPQBIWB|n3SMHFe!4M!t4X{BuwIb@Mtk*z!xx!V4j0H1?D#}r^5t8 z6u$`bN0?MbIQmn(R{Bk~iTo666WM%(0Wvm3viS%G8OxEesWOJcEbNPqFki-=moW-U z3}d5=9gwkuGKTm`bQfi8uv8$vLaJo*5yE!tQK?$$viE4*XRZ49;vS9n&C^?6h}om5 zJtig8f0m|!+`dnSKkXgb_ZGnDX^xjpr-%=6D+x+;!h7YM+Jej9=ET87`BPDQ1Fl%q z0I2OF9p#Bw;ISnQb0}3d)VvZwBqG^LyEG4q}2>oS@%1gvvkg=C! zEM`_*kazNcfrB(DngN=D8fvcEXs!L-wboc~tyNPy#`>8xKx5sZ2`jbwYONU!G%d^E zW~?S`hq|<6_Sog4PFR!O)q7_x2$~6BHP%v1SXpVQmqxw6C9I|DGEK?cfgAT+&|0Is z)rU0JGVLsFQ0=hN(z4p>!!64|tx@mLl}!FTKQKsZeYCb#y@P1x1Qo-(uu@IwUOz27 zX}JS-b*Zjo_Aj4oE!A3+{k7`7M3@rfj<{$__xb45do?Xf$-gpf$-H;{CjMSB`{56t zinb;<)>6onhFJ}QG^J%;I`v_sgWRci!Ic#0+7%*QzfbTA^`X-Je(J;4(f4buqtT3; z+gQ!PTI+;P)(PDZXVr6kZXiY{UntIDFE}}fTabD;MGR5gVWkL_?)9;yL09s^wiBtd zG@zjPbJR-_p9)dGsVTh`=unIYN4ztqmUP+>YdDrh*DjOQrHgS zErjAO=0a^G?%R*QY>o&aG9|M=_3DZ|g_nzdZZK5GF?*`c@hf7?zzN7{#H`GNicgB! z6p!z}UI{nqJ?g!srL_<%<|0H41^4G`7q3$pP2-9n=2=}a&%oZ#o^mr~Q<}g=C&2=x z2T)F*p^(H1fRfsQl11DR9-_5_;xm7C+`}bQj;Mc}hSFMGjHMduK9GPdD6;VI5aNj( zMm#A(RQ9FBD#%ui`UsVEWcR;rY1AKS)kx6}Jv7imO%DUF)2 z1L`@8(FKpO@06`zMe-df-sv$t_~J3CtQbLP zo4h08i4`WDdbf`G)>Dk3&U%Py?aV1pBwy8BJwlmz(ppM>??jJsQsc|DLM*wR6e}e7 zsMhxgqNNKvifCyjm%S3;9j{ZL(1LkN_ao&}9@*LoO8b7DEfSqC_1LOK&U+IJmF_?w zsDLQW+4GLh_%Y6!5|pn~`M_IWs&^jmA35#kEp*2Xx#jYh9|Ofy`Qs()8wq2U(f}}VpQFEM|dbr^> zn~&Qb)iHG+6~&R#dY-%!{&s%=GlYlX&w63K>UB3yVT;>k)knB|MRZhxqnIuhDfAP@ z3ty{VadQ*izaLBPr(<;PfBAX$4lq&0K)AeEOhttsLlLEX`$H$-G1{zoUOu6 zRk2%u@QPbsw~ik5%>vz({TaJ;@oIr|Hvg=?zW zNaF&$%iX-)wz}74KB4^h#hnOW!itC*VkXo)F`_w$lP6M~7*Uf!jZA`y8W~zd8ViIP zkOUPP5Zj~}7WtvJi>67B0J*}6z-22;hp0WngtC|luPscfw3s3l2f@S=O)*}GixP^d zLSbpC_(8bs4D%tFU0}9{iRoBz2+STZJHhM;vl~p@zbNjEI3Ud82$)#VDSixQB+Ml+ zqhRiUi2^MC5~dF3O_+UP_C#ExVaC9Wf!QBsUzihMJ__@Bm~k*Sz{I_iV!99-4>J^* znFuo)CZ=`8ePJfU%!io*^EsFUV7>%%AWXUdItb=>FbBh|?s+0O~&4ov5hkJzKne?V`pXTZyCEKV~xPiQv4*Fk3e-o#CpqE zhKyy)7}X7tZn2E5m9dR7c2ver$k;6zQ=>+ZFFwKplFe6WDPxbySb~h1WvocX4$0Ut z8H<@^48oGEB`A>Bd$GQ2?eDL#UMO+@0qefAH2yuy%<5a32G-rBKd5Jdv&Ii)S2@`L(c&uXw*>UT3a(7Qqrn0 zErwx7f~ouY+mBMI&WTSwrlwV4>Rf4Ql-7{ZreJhxG>F5~d+@6EP@#Ua|z5ym}p>&DS@xRMAs!Ohlwsn zcpYXM%r{}8i=e%N;;}IQ19Jk*RWP4``7X@4FyDhYALd$^)IhI;xgF+un0sJuhDpu! z7MMRszp2}J2(Q>}kj;m>Q3)F)*?g$0ldxMa(3O;w6T= zQ^qK6B6e2BD4#{_vW(r5F`5~Oajq}fe1%3b7A9j|Wh_d@qGgOkWQ$?!kTF{DjVtj$ zNP=c_1pZ$jYmA7{WO66^UG7ZXx%#xnFL$uC4YSqpb3h#HcnhW#=S{Qf;|D)f$MuQ0 z>P8}^Y@0tL)665~N+8nRgHfh!tCT+5s;cY}#+yFafk^|dA>2qAE{~bI>dGZ%bYE=G) zNkh=P*kH-#L&F@2ZoG`0f{lhWzO<9WHXoMhBKr5IOh*g)17fT{ z#Z3OG7+~0un38_WXs?gU6`O}81F$JbP=xy)-7?-P(Jkk#65R@Mt3>w}Z}+t5vsdmhOreyzY&d$-5{i!*||?|Dkx@X@Ja}>@G}@v6-+@ z3AUh|xiVcG`l8dI^22)+?`)a9L_Ree3NuYfI3Z`s1%KMQjl5)oA(Q!4 z>{8$mj6;hb)IL%7LNX;WaK?@vp@Fb>wA*;6+s^9#p5AItytO@RtLykC_~v@LtDE_z zd-|w-Jw0pRqjqfbZNbA^7M(`Z>i~E>5--gy8euz&FiHWj6_y_``SPmJ&(L?;vl_)pdPa(;s4^_9iM@b)ycOs#`JpqWFjERu6THvZ4@g zf=bLT>Tv?`o3f^SvlGB2yd&`19x4y2SG8b@2|=l0(C5+lauD_8=ShUB)m+ z=C3|Nk&I1{u>~^rf{eWYEQo!bSQgJz+4_X!3YX12%8ix-+Koafe<2)c#OUcGU~0?db%I=t{JatKN(? z$Ks<0!lcLMg1(A$wPl+>Y@!RIq8zb3&ivNlqgq;WEccgUT^@dU2%^8_=O&w{GG#?K zj{;Wo7nq_8(MB$4Xb2Y# zYY7b_1Ag^8SLcxLj#~NNBfJtlgGFbw5@mY`5`7SDb$*AO%=JsZ6mH#O zB+GzPuED``!FwWNuX6>gAgEQu4HX}Iy(ez?q*jr}6|$8-5={yr#Pw;gP+|Y`e+{(4H4BU8ba13B0TO`TCeC2@r_zVrAA){cdh?8&9Okk*Sms} zVMTvLG^Aa{)^$R75z*M`X`x(Gt88Vd*{4B^@8}P84r^Eju1Nf(`@6{@*ca&3KUR(IH(w{m^Lt0eshmD@v3V$f)#B@=qY=7wr zdP2u^`7sS?Podb;Q&-`SKTx%bIG55Md3Nwlr9S~oLt0ZP_VoBG{Gk$1lVl@)-d*?L z0A;z;SG9_?rP#{79{WR1C^zWw76K&>d{6`srVUAu5KkGQ;VnINWdt>VAAcFa)K7YB z{_K~2yUR4^B&42<+>j6-AZh`JelzmNNf6Tj!A%i+Bq%OEq>}_tK6wg2sPgkexyy)+ zg!6!rkYI_1%ED9VV5e220T8vSvGo1g`JF)`ClGL-N`#q4u-75e5FgYk<}}zo?)vM{ za#yys45q0N7S&nN75Urs>YeN>$)95PoPh6@XI*@4b>PT@lg``ikn;a5BEPFjrpN^BQ1>-EH zk%qBSJR)^5m%$w4vxVi1txFE+hQEsUl&Q?1=*AzjW}q$;Y_C;jl9A^6DQHB@Y|Vx$AAw6&BI+`!Bd%kyre79h?LI#qxj{5 z?vZXHRb~EVB4fva=8GO89rZ=d;^&Y2tKSP(HX=m2PB5J5+@n!Y+ened_P;Wnaa}M}DcC~*{X7=CL zlw}i#PI_qaEu<-iTz2@%M1Q9%_+WxpLYR3zLz+FusRUYWM3 zIv^`VAd)sI3WbI`HlLjAgLI^fBJ>-?0x*{Sj*H84XD<7iJZ85#8 zS4gjS&~{XbA|hGeOM7JBUA;oAU+k`4p?^`Y5VZGLk;MEQSlD9wUkk;Wrw0lQA5`o7K*-#zS7d#zp7S;np8W5Ikpz||4BVK zRN78d-q>`XR9mIZ{~0YaRQ$xbcTRr{RhE2WFj6LH8yl6YiXr|>Ltp=I>4ce!b#$6e z{QEj#>ML}=bU?uVDy8n15sWK!ywHxSGaWDAFs{_)(%g;cmAYIq7+30YS;@FkXUk8F zD|NGkVZPx^H_JrEmAY9<8CU9N3Ba_-nQoRLj4O4sEM;7&gM|(xI@7_@5c?v~9ih;{ zlES!B2g^dnl{#2XFdnPW!O{|~rN2t4gXJ;Cl{#3KFs{_Wa-Q)u7dpl-|9GO0e#y(n z3~S03W6>P*Rp<^Xe5&Bxv1^)5OE3KF=!_wM;Mg?dN?j}S8CU9BIn20H*Ghe?{UZMr zI#rSxSL#%m&$v>j%IAzLb(PdX9do98q&MSA9W0X=SL$H-fN`a+lJ6N;>Sk$;IV5yD zD0H*rFs{_ivWjt~ZkCITD|NGU#@?ATT`L8QD|M&5$GB2=%0MR>9l)9HluX8z zx>Hs$uGF1!iE*Xwlpff#bEZ3G4C6}ODccxV>Q1@ExKejYIM!{P=}viqai#8*EsQI5 zr~JvdQg=!Z>=ioGoic%OrS6oij4O4gh`L{tx>I_f-*KipWg_EB-66N-uzF}OcJLMtlZ#vVRlE=7GcgnkrD|M&*!MIX)N@t7& z{8dUFDFuuxb);-$T&W}FD&tBWDPh=a^H(W#q~tTM)RD59aitEBuNhbBPHBt%L}$8F z%#15_r>tgNsXOH=<4WBrz3(CamAX@&WL&8`rIc}{?i3aFBK=iL-6>kemAX@AGOpB} z@-gE|-6{8CkIY}C)RB_OxKc;TO2(BsQZ6yB)REE_`k$ZPWD~Stb{6D8;U1}_hzvlC@yIL#%@RVPUXWQMlxp__FU%D(3zjtUB2n`xMtrUKR5H#k>}gSZK$<%;(JecwcqsJ zyr$ddX8LbzdMR-AsF=q$Up}MRHf_?e&+hy2{1>_X*B`sGXZq2p179%K-?3tJ=J;#r zH-6e@n4OTSYH-TvnUV2`-(SDi@h;gLnAh_$|D3q-$YtKJGe^UL(mrd$T+Qh*o{xX7`XKPg3lIArzc_39dyhY`euL-h=eNHcc5KsySND01?Q~7> zdwNB!g^gdR`{ny}Mm^d7kzDWRjhXXQsTtp1=|6gOdYbY6lfj1R@k08gpP%zIPIz6_ zr1XmSltH`ve*f^)YD41p8|(eBX`6N8%+1%&HvJ+!w*6-fFHbx=#}Iey@4;zn`hC)W zeGiN9!E0Xyzkf{g`q{oGo;&$S?ykej|Gx6+(NW*$L|s3X*Qw9U?6(hX8u6LAy}S0C zrs^<#oX>yuO|0`pug5(S|D$nh?eFiqZAM`2eXZ7y9JF@2DX`YDtj#Zs zudm25mcF5#9>pJvI-MaB@!&J*Um}d^5hD)-!WK_^8}ED~665?|ZQB`6ah%&2RmV;Pc*6uSweZ ze!m`h&HJg5msHJemU-q3AC!LeK(?Xy@h--Dzw;cOH>Sz4o9Egdoi%j)XZ|1c{UY0R zcJsAs7q>kfwQXag<4><1apAR3KYe2U;a7H*o$Qu$>1@Jp+3z3D9`wN*UwE$X{b-jp zF`u=qb26@p&%1y0Rd*RN-d(fv;)t^Y&StN;_;g;#xNSLo=B!OSaNpFd50)J^X$-dZQVz$O?~s$iL#J`ht^w{o@&?h zoioE$mt`(~@KVN4FTFOZ&}V+G+e*(`FZJ$H_s8kkUIq0B2_94WZhx-9_)TBE)Aqdy z-I{Euz4+-P&(_&?{F{vzPfu)q_H*B3M~=>j{OZ_mf3E#vWZu-z9{Bj4ZIg#RxcQGS zi&mS8qBl1FcBuEv{84_l_V@J6O7&F*+*)dQCg+{>KabuTou)fzyl3oJKFfYNQs+d< zRQLF@wd(F^4`#o4^_~%j`bFo&eqNLp-gngDcTNxe^i-Db*@$0zp6r_Z&Ic=ZFMa>a zlLyyCe}8Lz@coyzZk=7WWq@YrS?WVqI zyWEEW*1eAm75bnTr@&Uy?jx#-sZYJe=^*NUbf#6gw_PMq1PAH0poWjUNKi>$$fCr8?Ho{C zmLVc!21$6TAQY2zI82J;V=&vnq?@y%91gPikR(e9gA2C#a1$%iQ4=fD`E4kTDZz0Z zh=g*Vyc1F4M%bM$ZgCU+49xBhd4$t7{E)Lrj(HSqu<(@|U7n?291E-}1er=O8%?6F z5}XZ@9v_y8WBcV`BByNnbI5}P6?@<`pC~?#`IIK*Q#wqFXNHtdbXQo+C$jla{_*`` zUjdYC^WhFiq+20ldsMgZ$gDFPAA%jSg?c4=C=(|*W(%vs_y^8`=w`?WVn3Ass^lDn z2p5WrW0nk(vIMMAOmQ3{WeHuF60?MCqW&Kd8;0K^woI~#y|ajsTt@GhSrdc&tty@M zWSsR#jP+DZ$s-^Y{2qu9G*kcfDhlYAaiEWN8nKZOr{1Hvbxvd5KlMwsw(Y4~`z+yj zAGo!zu)oG{Lp{F@dt<^5TlZS0Jx|o7-+PCZ#@;G(?UT-WKvQ~6t((5jZ`uO*=J$Z0 z33H2`TIP*lN-ua@7jTrq4*6{;EB(RSI_D`0Gi*QV0|K@#5Pu#PziO@1__r=B^12q1 z(fu|+rak-+9cjY$I(6mfr|1Wi5Zv15H{Aqo(oFr@>-$e{!g8lmkEFVgOevLNWwW4h ziOSZBvfX)SBgcM9{_o71OPOBPg9Ab&a!7E8*eyW_#H(geTr^Ttv)nh)HV?l=+YZ@w zP_~_sZNJDi$iR_YG>~m1idOU`RJIL~Z5G+~jBF!GouZ2kvTe6)J0{!ykZq&^Np#Up zw$atxHi(&8h=Hv&+u~q*kZp;uwPITeY}65`g~713WLqk1E!Z{!w&rZJHQtwjI5ysN z^_0RV^9jdRDp6F?9a)%_Wgy*T4jml{LnHauIKGCbo!dt$PlwL0AB zk2ZlERE9nHw+c3Tg4}{3i0x6lS$LNVlY|a9z7~r&6R%a(OE>`YTf8c_26hq-^Xz;l zF;L>;$MG4B-+l~qb|bM~lvB80C<^By>HA_I6zWDPq}~ORmHQMxG6K7%kK(;tHGYdi z!9dUt_wM;SNkd;oZXj=yawJD(OG_~%u+?QZE%-YwpcZ7Xly4lkl*Gz(b9+x1C%mBQ z!jjD?tfNeO5kg_wL!$USkg#S&M^m4lG+(%BK{#!7huN0TnrO#SVrpTTn_U!n5$vF4s$KccVTJ}mo+eT zFo6~Kh50y4158A}xEN*;%*8Or!(0k;0?fBzPJ~H9q$a^U0P_i$pTV31^EAwLFu#L2 z6{Z`~I0I%=n6qG#=ym!|1H}9BioHD9e1s7)mMPhMI4ecEu`-5yklel~V{gdVe`M^6 zjQuHN)W(YbQE7x`D3}`3e$D^{wT{xvJDG@I&~@+m{gtMY@&CnL#x-v=B8yEBGb$U zNPp?pDbViuM+rD#okK+jBmu{ZCE&aV?huEj&L!ZGjKB(y6A3thXp)9G&_z@t0cS$T z3cd+UXV=Wo*Lb`KLD!VH5)XOpOw!9Td}s}tJ;cv=>fxy<28Q+M(W@{oFD=)Q+1@fP-_X7=+z~N{WBJWH;Kv|L zV`7sN<1|B}65{*BM(dNKH1Tn<@j87%l2(@#8z0T3dsjY7rSe&b`5(px66B1^BSVM@ z`WMBv(8^S~)RqRf#xLu%u6aY@<;E*Rh9Ag-P$hi#S1E6A&tP16d;4R?mAAJWVhHc- z_VxhAl~OLAVqAHvdmrQe9#8od`8M*O-lpY^p=&S0%4*n{ol$QaFE2X@=&bab+_!-8Px5ERmJmX9%%t*$Sx5k$=NrbAQU^jX?{g+~U?Ss6sXW^lS4!o%#kf*Rffh?Y{wk%kp1F)Gr5BuHTq&)m zF_zezNw4Y4xKbKT5#vg!Jlh#pO69r1xKb)lZ!AJNlgjfX<4UPK+Zk6%)49R8QkqV$ zy5zr7YR-7Z_fPW7_I%}qABHSiJ?%fMKN&0tknaw9r8J!zj4P$-^v0H*ze*`hXDZ`L zX*&BDS4vTG$1eOP?`RmGTz`h?m#cHXeY$bq zuj7s`T7?}Q#+A}{N*Py5-|@!U52Q~e&HvJBJuoO5ds5fc#fV-$`WLZ%It|7aR6GH*#h4kmuvy(h0&m z#+A}{jxw&4zT=NIK7W-``c5L_Nm;L4?9gG5|DO>PcQ)v`;XXllmT{%@ozsjfrN8*G zR28LEo&?78*ZVf;va`wR`;t2L-sE>H7YC;pS4!pC&bU%4&n3o{Qh7QwqI4;x@)R(x zl(Ms#aix@e6_U4Y= zMYz4IC3Iih#WV8x=8^en8KXPFhiZnIj`e<;W>Jw<(}|tbn%j-$ow%PMGD@bY$Q3S= z?h@eSJZ?Q@rRC-r$JLxq%vb=-%XYog%y&+b3|KbPkVQFD!zy%#MADekj5Uu-hAA(j zu%N(@moZNC&jq&2$<1}Wfb1?>)G%9RAvP`~0kJTTA^9P<>-OKdFnPPNK)wCHS-jVn zG~*b9-b9Ua4SAp@B0lb*@T?l9BF|7%^Q?em8u12XRo81?ZcbiJy|BCe=0ZGB_p)-*vGI#u&jsgBZs1X$mqBB!+ieD%_*KK(e27Y# zF(D!^WsGxKAdD@0GsoyFMyi?>W^B4? ztUkk(X)xk)p&nch<2J^Ib^?s586aGMi)z>y-IZ`aG3PS4oc}mvVJI+~GDaIRUG}5A`Ea@6kT}7WCLK=8g;3S7 zCfg+IxyVa*Wm(;B#-Z@;%CfpE%POZ_{*ZZG9`=K4GEf|C$+fL1xxkLlT4u>hE9C~(<_kqF#n$N#gktg1gElO^1^P<$vkeMT-ukS-2|F;n{gmH4X~c9<4A zyW!f{Wn@}jrqT6khJvEiV;91fCMl?4SbWaF^4=JDQZ4QbNwq(!;zH199>m$Wi&2Mr zq#Khx*TROw0y7H%cA;kFix)x-oL$(j`3*0&|8c7$E}(5wQK5aj(6FIpocEd?2MZou z)c^YBX1;5i;0Qt$xhpQPjP24XwZH&wFdHD~I3zR}+TGKIOTWcT-)D*8%jJV&rv4Nd zWBn|~dM#%95z9kiM>L!01pNj0F8FOwPupQ>m^C-XZ`+QTl3}V3-Mgt6Ec}_SF9*j= z-4&?c*%GAK(8etw92?>Iw}lT~9q#VOlZSZ89D{vL@hOh79a4g}>BzzyVZx!(HfR5N*h9~Cn@Ftm8^O=mU z*J9rm&x8E?QT!I4deV255XFFp^u63$k{%E!Q9Brr9?%H)C4&J|>~V{-JofkELpOY& z7~z9`jO5#tBkcU6JZg;dAvmTXq)0fnS&PYv8z)VzeTz!GB!h|TPb62%h+Za+bU!G zWb9)ZJ0)XZ$XEo5LX3-6vf)OZpS$4K$y4wP_00z%^ADNy;FyDSqfWF@y}_3Mzj~vN zuCG*ls&%8z?$Qd?619rTm^g31fL4EqHv2nmI3NX@Wgrk)m1-AZ^pJac+y%NZhNTv> z!6G68BXsvGOah43Q?S2lg`-h+cdaIVxfH6qY(969Tro|ByH?cNl;5>Fd#F*ba#vg| z_|7x}@kDP$t+w5Z8erej>v7i#m#DP%D&ue8rKCgrwjFlt5)x*29V(FSLv`=gCAdok zv|J;2=ip9u8o`GM2{$8#1>o=o2{)j}Q6snx*mY_b?H?!ip*jr`1P%DN&>#|0=0{X= zAL>1c#^xo{*|8Skfp|T#&;a12hoa}~KGX<&=m?r;vY8A`fpj0r!9Qv$E`z4!NRh58 z|JsA5B&TZs!twbx&~zO2&;E4>&7#r&?B5O0^fXrOA6@3xf#&Vps{ISZ=YTxOEy7Dr zRq5>sn#CrOuCn}l2%m3(rj1ljD)a9=K7@ki9%_B@_~Uh^dHr?Z8$dJ6OjLB4(Rulv z#|IN=lE*L^U(I*s-vNAnvItj2$BJ~7`L`M$9s^C?2_hYJI+giX4~JX6z)MeM{(XQC zzk%lMCq=r-{G<^ZXM=>1Q<+5m=d6B^NPs6m*JHX! zhAQeby;Q|NlxS=oI`fb2Mji#-tr;R!W&EPU=ZvRpK8dC?|E9se6`*T3OQgYBE~oLM zvDOudMx=DkFALzG*KF{!Rivscy+47j^&CN{|FlSl0f*D}B^77|X+$BOn0Pn62I3#v(}N$iGPPd^MxawgMXBNe@isB*i@EYzn35m3okvD zrI!YI-6a|(#J|e?(}1quKln%S8x5K#9qF8;cL``#I?_2w?;g;6?nvjvziXiJSR$sP zvh)(av;<974j? z5j1~0(mC<(UR+vu2roTVr8gQh$&Pdm{!w{6F43@u_*Yr|7zeuP|KJ~$$7`V3=t$=z zy~jcGr6Zj~{HQ!`fu_+iSnyPp-p8@qOHn5O*Q?C1>JyZ z_-C%Be-l9WR5kp2y_){L4Z6+M@b5%5{W}Y~A07QmH%lXBG5d*M9G_w#Vn>IH-99hE z)q1reWd!IjXY8oe_0bH7ONon(?9l=n6B+rrmKGIJe2VIq;s7SZY2!8hbjd9OX5`HRq;|G=}2ns97@GXPPW&IAUig2uY>Yyd-HgFMXWFU@l6_zf%$) zmbSo(li(FF3Ay85OoBL5QuML7e;FT}qQhE~SHS!C(NI1yN*|SwI3#6Aq7Ie;@hR+T zFMmtX>J$3(N!F!EU#gHG(HP>={-%K`KVu9Tp?Xt6PBz59-K+e9m027G%EZc+SAcsx zxbW_$8LW>>h>pf(P(89USre_($LZpuQ(~~(B@zV+_C&E-U3^MxpIBXzjqV=M9ipa4 z$TZ}c3Uc*n>1G4O)3vY#qOx}%6{Crd*TqQ*Yb3c<+1%zA7}#+$n`3u-$0?d<$zdDY z_dvz>7)_EUDh2TqbJdns{|d>7i%m|^#mhtwBCo!c*?B;Ga-uGZ5~-ClCn_N>A&HCc zD5tf+gkxEHi>WBBAX7iyP+(#)AM{Nn*uLrW3~5M@1>$SH0;W7jr5=@#q#vkDN{&s4 z*Z0%(rC*^CuO$^n@vYeSftt8jyI`g4iq&HI$}1ok?5!5!lJ%P8WL;7Umgq#xoiJTe z5~5fi(8nNi6XFKyrP_s&w^x9Pt418<3raA4fKEnL0#L0kazJ#nE{XjlT6mD8*F+{D z7~;R~;1`t;nWWP^nwSt9pQ0a>WMk+^$4|+zLv{KP&Mo@pX77x@h05RD72i6^-@Fyy zx(Q*33f*jW`=`6jsB>U~I8BsJD`qepsf3h7eUv6HE>aWqs6H_%HUViEqK{8V>Zggr zIxmU=RBGo`Qqgd(sY1y!Fi4zM-zP3XlY(V(uK+^bBs4iix?nBBY6%{wi%LNuQHBz= zy9DQOlr0TP&uc9PqDIo0)~FR}5715)Iu)|b#e z1LC77WI53dqz?o8X;40cvD7a{rC~)}KPVw7PMe$v=Ha%IB6g2NBDxG4+{vEEmPd^w zBIZ5RWI0Cn+5+J657o*^yU)%Ain&WC*-4WMPC98Jb>WtzN(4P>Gw1=xE2sB7!@n#!raUxA-T}{0iAi}EWy;Mr z8Z3r{^ihaa98!y@g+iL5cfb$mcyP+IM~}S1Tmz0C>&1&^5EWs@(O*MmAdb<6qh@+@ zSIv}s3k*kCxz9FR#u*Lhr@RBG3$yz!_GRMd=Jep`e&;b6S{}RxnPV zRhXAS87O+vPR;{4xQF59+e&KOrdg-4?WuB$Fxwb-rDr5$wm#VIq1&+1$d?mq1JWk?bR@?lp$SxHEp{#qx zIh|BrsqoHK7MR!)iHRpsJ`re&F=IiKNwKG~t<;((L$FtY*qBn2Z9Y2?Qmk6xljJHnKPN9~5Src57*HZs&c5{MLEmGk3$kEL=pE2N>PN(5 z6LC414G zIWKwwMglnpsS}`4xh@7%7ffFak+?NAI^TpEOx-y~V%`B~aULQ!4JSRuhK=o%hNMtO zT8IoKnRh%`^bRcqvG@N795}p;95uQ}~3(;vv3F>FC zq|qP)U#MT`Shs9>c|8RU@q+W8^rk!JJW$laFBmH^y|!-C@{e zM-c#zXvAnYV5E^xt*VL-BNuA6TEgS%4C%Tt<7@->>GioGp-O3qRKT;T1jLFNUuZP; zgRH=@oJ$$t!v2LQs)9W9<{G-hWXR+%>QD$H$F*#nqU7}AGxCo-n@>d`de$e+Y!N*p z?hWw7$XT2m(NOtD2-bh8hZh?Tj%Ra;!7&h}EYBwwG;zW-0c`||Y*0>KSSXm#Y%&_6 zr~xWxND2Z)C(y}UM1_K&Swj|$k}0OZh>hH<%G^-Y4I1R%MCC}dpQ*;iV>BF($q2P; zXt4yn7N-Kylu$IOofB&%1whLTNd}DKGYsY^Q$b8-0Y(!vBGig^m3ZKJlNzPU#_`>x zZn`R(kZ?}Tm8xh$gTv))(98K?=A2$Ax7hsiKUC0~ylf0Xx#dQCpBN>!_mn1PW5@YJ zIU|R%AJm{w1;Gr87#pi_G>w4g-FLq_Ue zY2lgHm1q#OjlzgG<@Lc>(daOmlK6xQ;_IpkA{2{Olod~+43p9_bJFs3g+`2}sbi%s zM2nR`Eq6*Z8W@v?brp2G)On0S_D3ZSprL*NhRU>FL#4ubBd&we>Km0AdqFWdQ)NuT z!sT*|9D=1UV$|spkE6da6^xS>pW1Pb(2Cvf(m){*Yr*oUnxl+fkdp8?1P|`Hg+FY*@o3^yRoN3F4NHzyMTA;Kx%L1thRFSnoJY~eS3w*I zQVAi^yj;ooRgY3ein2MN>c`!NYk#ElZiAHHIF$hNIfRr;#ihu)-wS}^AmCX zfqYp;HBXw~IL=)t9Rm@)OmW#AHH?sC#3j}?3T4*aiqh9d4?qt`D;kt?iT9a+;pKqK#Z3naiF&a_FOwOia=x>u8!sX?ThnF-+Rh3XNFm=YkwOMnGSPIUZ$fwX=#fit!qTnq8=7MGUFjb zA;x6HgwG_EUa}@_TJ!$;hud}nTId@ojmBOFAlady;7R=S;m#p ziAiszzv_*|Z#rDECb`dl{=2q6YyHjOWX6?Ji%Dadze*{6`V+>L(u{r7M6Z-)9LKm) zTJ^JxE2UB&XFR#{49k!Ev-5v{d0Xe+vkzYq1aEipUn!M3f$>(y+H~9zy=v!G)Ay@% zKQCM-2vZnWO1D11xKf(;4aSwyts`;b+h3)WGFr&EQtI_?#^>pK?#}ZcytvNrEiZ=G zJEg-NMvOfCRZ6MONsMO>fB4<^P2;;?J|2DGp}uuH;~*U4BbyHG`qK0(Q`>sZ894sR z?siZ{#JFe1bKgJL{-J@97h$F6)IThu?RwI)^&wllut%=jg}FB@w0 z?HlmTyRY1ACJ4VV9(lU+@HVebFK#*~e)+%y6CXytp$_}2q5^*KnlLkT$U)PY*|`JO zL_>ci;}f<{Y1edB)c#4jm$Qet-TRXuY+_s~Wf}t=_@k6E9nQE?%5*W~tK1GW-eAUt@KwZrOi)Ze8k84 zzvpLmc==oX%%~2Zlui?bGR8M78?J8}GGR`u^I4JV!E;*TvI1^`_^UoSJ|Ji8>$UT* ztFM$K=Lk2T-J0=@b8fX-)#kTJyL`g6n$qdu^Ag6JE}eDb-WdmUqt@khwcLN{ML{^m z_^xKFrfCNMT-@l%PQ9L4phCM*%a8n5O3999Tqz}c2IB$#?|-y)jps)mhoa7%er4}S zLHLMqrSxpvxr6`fUM_g3=;g}``u6@iWALaFoEquR_;0UzY*|veGh_MXLDz%-`e6z5 zkuu)-*PEFs|Jhsek?tYwhwYZ^5ri|0>t;=CZY?`DFRkpn%I)K!Ik=#K(T2b3LfztY zud$DqG8bQ}Gr?!lb##@C@0l@uS6b~muS6P2Vot=_1C9%)dU%<0Pj4P#luVwt9 zx{=?_@LF+s%Jqv;D`Mtc6oi|Mzc=^GPp&;w1g=QDq7x(n?9<4S4aA2Y6$7Ty3n;jenQ!N*~RS zzm$97)%vr&#s;_A(gC`O8COad|BZ2_bn)&iHCicMypVCFbn&f>E2WFyWIRS8UHlR3 zVEe0-(#0n+u9PmmnQ^6baXKvHOuBe?4A}ft&mJ*8x~S#Zx|@IbG3t5iqTdB!8skc- z`0Vqsldon+C8Hb} zS4t^A%(zlYc>s2+{8cO0N0ly%n$^Lo8tI?dsSjueGOmy-cSA)`Q202veCZv3t#d5VD^F+F{UVFTq)IjJ>yEL=D#tnlxp6p zDfzFIYCf28rBw3;j1TuJeev|^ex7lq6!hi~kpD_4=vj;_rJcXQxKi5rSB(Ffd*X?$ zb9PVpE@RKh0{?HpZw~~L|4M1+dd8y$y>jub2Rx3(AJc}#F1XkUdZHOuYUTKuaizAJ z&dtexrM8*^#+BM?HZ!i&R-{^1&JH}@RuV^>J8vo|n z&mKs${1x~U+C#>b+G;j4uG9u{jqzX3rH}Z-eBhf^F)bS|2>arkAoN0??Mz!uG2==t zA-fr0mOk5k^tKzvw&ZI*U28712*M4VM?~Bzuu7CyLd!9nmlpwj{C=ulKq^PGhcp;5W{@TZ!IpuU67nz$kmP^$gqQhuu$ zri0-3YPtf;XJHMy`bjg28y9eJyA2W=ReO=_{}@3&59~rXQU>CD*MCh&I+7~#aX$FC zhVsqf7kYxcJD}aiT$GR6V9Da4RSoO3O=|H!mLgrx4Nkp%A?xC`UU@{6k)Qw1l~3AG ztqwC|4`?JVC#T9CU9}Ptk_xW6Lv7R8T!>}7GtJYT^9i?gkSi`!I&f(YNn}U6=bCHQ zf196^FO9kXu{dl6D48wLpVO+*Y zLk2NQ4RaY<1odgS80rGcNu_;PDTJ{w(~yb^SgzUO9~%sDaD$m+8r}Cr=2zc^>m_w( zG(Oaj;hOic#gA+PD+ zCd0*XESj-9r`DvVIYGl?DsV-yELc<8_7_(}t2q0mfUGoB22dOsPGGPT+%)Z-g8KjJ;s5H4+Wx)IWP#>2uTHboEdEg|i?SDmEaz(Ac zuBJ_)UifxB;=u}O{=Hp?Qqh7#!6kes1IM#|!;32itO@I3oMrUFy_vdreFb01<|8zR zEr79BlFdix=Z3o+jP;jnJ`h<+nuC;DwAui#oQ2Be?mE??HT9=9ejD6kN>YM?HJcEi zFjE^8d;z8a#aL~2;+QV$qbk>nRUbsr4tlWyK}E5{VN;2vI&h zN3!-RoL~p5hk5o6rUK(|v*K^T#g7{Y zcq$Y>N*hlz7mA+(Qxv}lRxExB)vow2;irA+Q=U{-`Z(7qmp>?KGKcKUE+mMJ6;GY=Y`I2 zRgo9!!RI~>ybum5^1nM?I& zM8@XH*jqBTTE>VMM7P8XqJMXq7n;E5gerJ}&M}KmmAoL!X_T3w@Sm7MB&eJz3OU$2 z#1s^mf+<9>B2!SP_Dpdncw#vG6nTPdKCIVJ#Kz;dh%JFEfRH5#Y%nAtgethCYzm~AY#?BZA_xSmSP)d?#e&!icBQExDv0_j zii*7Uii*ADzwenjXG?ZBA^82@e_j7vIXSb>-1AI(=9y>a%$XCV-D1!lH)u~8v_!O* zj5|d6EEw?rZCjvU>snnNC(FSgF?efBTR;K=wYIbcsCWHTK-+BrCf2OACDFIFnQExk zwjn&22Kd=)H1M_s&O;p8+Vn|VK+CUgF#ygg5b)VoExzF8cV&OJNSH1)TZASwBIdOT6fGfeozq9uv7LFDc zUuKZbyR*~m8(YUOq2^WPVM6b6r&sdWA7u*ClIwdCZ2@;_SuG9$@HPbd;f#p(Frw3} zkzmXZqgH!Kisb5N8-|PDxyUMzaJ_Ntiylq1o>wdfPWwxEi=OV3A0j1``&3*(pqGeSu#inOU4hWa#&&sbm>xgiAPYp5#*gqTB0_D$iYVD z#4tM@2+$qdfuhDjk5WVo3Jv@XfoNdLPzViOaNmwQ@}=Rumj<@mYq--4oq|h>9(@*( zsHBmzq}^@cHXF1j4B9gW?E{1Mu|fORp#5ObIN6bD&|sHotTSlq4H^aZ(#cR&HV803 z`U}~e3)ywVq;3DjWO5fdmS2=GJfrY;0y7=`w>y@*@sZzE)u!T@Q`2zt{S#(Rb{rlX z*b%cOtcRm<4@@9<(|R<)lko*I28Fnzoug@Q-5y6Hc{GACzZQJn4)&Fw*;kIpzJk~j z&09s7=rg5=JP}uzb_f3ZcAn9&y>t9V$~%F=3*6dTT()EDJj#*|*?Vr*QnYl{qfGGA z@q;Kf(UZIla3zQAeEh^Pg+ve4EPRt8JD!ZqlU8fn!E(gi5?(vNlq3pcp zn5vukDmIIVO0$8T24Bg;d9lSp{p3QG+$v}mq1e1;qeh3dTdCN%w4-S|wG1TetJoq0 zcPchLV`gmvFrk#$9-}~1W_rA2tXO#~GfuY6IZ$SUBm9*a^@o>DOqHT@(Un`-A^RyauX(ajH-VKICq@lk2~#$x$~xkb8JDVytwGgAl||Ln8+WQMsvN2=mWZm0 zDvG~1;7-*?(=(A|G25o`zS+pw+TBAXG#Gq|4 zXyh;XF$KvF3qOkXo%G)kSsO*d$>4BBl5ZG%Be zY^UdCi1PjaMkVz@fv1H~Nj;BECHbyd9EWc5Ug|hb-Q=|>V)VcNd%B5>KS6X8t%Ls) zy2*Q?#!okSE!P-z6IeGPXa8SPPt%bfsh;SwXcytXq%|m?1-80QTW!#wCKc`lgGMzg zJM`gMx z%4g9GYw6!#u{ibEy1ZPl3fa}0uUK&5NPo}~uzLqyv5?Wc*8*r#{9jqIU{->xSjZsn zT>ihhVlfp0E4v1La>YW@>hW9BXbDK#W`p*GL1QP8IIdVo+{Xs(TZ8t4LF0;r#Bs$! z#^s8Iq^&n-SW`&oyUd!l%x+p{H#-`)r7g>7w}bXCd6fc} zp~lI{@@!)Y-^&P7%Vm@a&vVnRs0`htbk+zP)DUo-itH6wA_AES>3jkUM4)F{?Gu=f zC8jhh4ad$}x-}adJVvAmiFoGOJm)03lNN4{4#V+~a`vpJ=X>{FF=OG>idl?WF{3@0 zZ9;)ah{q2_C=mpkhfp90%#T9kW7?i=r7};!r90L$4`6AJ`w&I!iHfEd_GLpS+!JuO zs^4r6{-&*%g-c2teHIuLI_*5=lTs*gltPKS*1+9h&>k>ov?L|&9fS71LAwZ*EcrDk zpGEsA#@Yebq%a7UAyl6s%5XoSqCrg;jjKINBwT}jnrw2i?h}vF4nST4idILIb+k1F zkxfw06uY}5C;aygn<2vP^$O#niSg6Ny?hMbWNoEa5Q5HPEvU_YS!4SB;npzidSMEaHiXq~+tcq%BmwDDjXDA+`Za1g5{<*f3OL)-sB`2?nKth95}#wNsAI) zpPnc}2Z-MuU2~#9_d%~BT28Vv!HY}MIFV4GX*o!Dl2~cC=|6q$oT$b^I#><-3;>h_ zN=C|XP?&pCY6T?)zm!%$4vBGq!dwu;T#T@u4hkKqVwIgeJ`CKGaXV&=-a4jQ`Z)(&+=yWS6@YW6=rT!;Sw~KVp+PHx3`iP#spLl;7C&XG(p@I#u8hWan|3)G|8O*Zx%jvEm@Bzh z=2#`h7st(MjjJyMKP}VzhP~;qJ?05}+>)&^R}CbF%bR_K=lz%~PN8Syn=w~#Ls=T1 z<-F-=gi4&1kR$Zo`Ln+ypY)g~GU6PKul)-FA~Rr>wkkR$D7$p??x11zZ6CL57MRg! zPt1gNPe~vAOD5K79hr^8i_=G55LY``JaEb=93Pw6n1#njuVt*itFVEFQJnKeq5 zT+*dvO~VzY-H-p%h3_T&=fYE%_CJHxWcb*|5|;;Gp1>`GuLwS~wi3R%!gmdP#lp85 zzEa`489tZr(WovEzV+}G3g1S9b`N}#%YE>biO`1(+GB=~n;RwWS;M#0@a;5wyA0o} zhHszYd&}^>YxoWtzC(uZ6T|lfd>ksws3U3er=$D(@1gq!sAz=qexj~+Ve;#rX-Q7z z<8$%lXWysi!dmlsZtgpLcgL5}>{ibJU1FLIYj-}bt8v|f>qT523pnsFTiyTu1&aJ!gUx|6E3c8b4WI6)oJ*ShKNgZ10yRO<3=NH zG~z}hZZzUXBW^U}MhgQV2UzL4z^ET>?TuX$*CONnESQDKMW_S>vUQvLr8?xr6f!Pp|Vw$jXX(&*r7*+}TnIdewX7iffaJPeb zYQH2yYkNp+j{0F8*u!IKJGm>F64?9ohX1j6|Un2V5n zHp07p#ls)`(Id9LLKvc%i0)!MmVQEJ)}X;Cv|;*_Fvy>fh4U1U&|K=7;;}_}hm2VBEQ`HU#$+ z+=t^n9rtA13veHaJH?0bU`1$?aY>7TKDlR5(k@V;7BPpBw95?IHsy+8YM# zZG*-I4;hyW9x{y)2JIY!Hq)S;Z_t(+v=s)8>wc0S*Zm~F9R}@XgVw&Cj_aU&7Ojgx z>t@jA!IzKRMrl>bhdpxe6$siQ<-;Q!_zDHBQTZ&|&G2zliqh68pGDgQA4i}l?SAF6 zXive%kt#}iPWdd_ZuqF-qqNtQ&!QcGkK`9Oc7f z7+74GFqS98bJl2cEYD1c6y{e(#?G>+W=MRU4! zV2%j4Y?9aFeJAE-uBYVGART7`Egr+JQtz2@Y|{7*}-lhr4IPRyY-0X7Xby zqAF<-gjW0k_MA}7LS^Wx)MrHRim((TmLr$HNF&;}VaPL?HZvO#kiv_gXx zh8C2#NaceXKn}!^#me+_sVDHOzh9SXPpER2#Ol6=(uLJkZq(Oks~t2fp2&r`?K%K5 z=M^Yd;&yli>Kg=xbe3Xe1o?QlsKSNTNKly$mPe)w0yClrY7y>7Q2OH19rGQJA(!$i zdkIXZc3K0&2jEWCG6|P#a{4S{VN=p_Rj5Vd!iuC-8MIdo+CGD3ii_0Zig4vcXmLZr zwYa3%Y6N1}n#aw7SK8px$6|5*Y}QQC;ac<%ix!;}SsgJaJO@NA0Zpho=0e7lKE}LQ z(0XfmQptb*mG*2uPUF6-2zOVb@;FGb)Tbg|!!3E;K7<9ANQ-pi?qPHnD)06R- zmgGyGw10FLi0^U)qQu=IwQfZnv~GF04~fvaC3O+?#V)P8a(HB^rH?6IEodf7JI#_5 zo=BvgL;5Rl$r#ed7&i!7PYmJh-Bc8w7z~v-mO%PgTPg;8gK+6C5bw1JL>-ZLQMky7 z9wQiU8H1=rI%C`e@xDXy#($Pj=gaz+Xx|hhU-G0Ksk=aY??#}fUG>@v##hz_dETir z#XS(;`vqT9m`Mv8E1_q4#h|q-TSoer`$q*$whYrp4;BCA`-&3BmXSWTjEq6l2!-S= z5N}$=C?$JGQH0hWJ<>atFIO3#y+g(#?^|){E)f405GZTWn=eZt(JY_zF)hiLJU8Id zT_C zjIXQ@|JDh_mjkkI>)4opa@DxY){#E8&i8`m-JUj3baw$fGKTaq#?ON09V1bP<4z+- z#*jY7_*2llV~hqxceU`y7}CcWCKGAFVz`YM(#IGPB1TiwrI+$b!8`ud1IvmYzwKkK zsfoN&ie35cfr*LNz)X{rfkibqa(=!Gk%bLoHhGV+q+g7ovQg8rC2#Mv+9Sklngf6ZKDsbi zLP*PtPdI*?O{{zJ>HJ*hJDT(1IOWR+-#Y@$n-6QxY+{R$&jsnPT;7~d2Z8aMb z%xOz}q6DVYt6Y|5eAts(s-KR{@)O;RPbY!thyN_s(?{abz1W7{^&BHGp8yaG9~~Bj z@ZYIe#-}r=W)t-%`Mh#8=}>b%CkV_#0GtFL zUFT+e;y`VQPZxoC){9SEGd|ohU^a!WpA!YfyMDSh;}b71%qFf@ zvsLKgoAF_Z%_g=iT}ruqeRDo1BgAat(xu)nPHM)7R=TGz&p7?vf12~@E-+Vs4{MX| zlxBR`l4cWIgzmw|PMgx4G8o4C@im#arJJ~n}&HQO7${8`_^G{p}eIqWGgvml`Z z;iI!P9P5-FU!*>D$_VSCkn{_v$x z(!;fZ^+kNPBODjo%qCq!T$x&URB8zZn#=;i6>^OF1FJo;PAA1AMltx7zj|@LCsrR7 zOJID`>MLTg2Ixw2PLGxvfWP>holanU(xUeEq!nLs?)#otH>+3zz7T&%-8Prv`LC)Nmx zHk`otq(#~Hq~+fE(<`1>3so$E@kwilh((!aTDGR|cY0zyrD6$;Pg?9%p0o!4ddef7 zSih@S0^^ewRf^f9%f`(EH`aP$jfg-XoWS^`Mg8GPYtvU9pYg<6sA36>Pg+!Qp0pB{ zHLmo;dP>C-7@xGLDm`gc{95~%C)V#OmcaO=l`LZEvhl`<7h|OL1+q3mkp;#lEsmL< zw7M-g@PH>)y^19;K52~-vGn$O@WkEiJ+Zc^SOVjd7RL-vT4#Ou)RmrCzo=LOQz-6t)|h9}m~Dwe?bq%}^&@|F!xtiha$!3m5{ zTH`_Wv=?Q=6RTFm5*VMf93qytY><@0lFGbc*MmtYS?EiK8|i)Pce}kd%QQ<5cW$^T=4<3sF?_%FR)H zX5hEvQ=upXw9}l$o$g@Jm_)JVHYH_Jy4{}QfFo7kiJRgTI9(4Mlc?|PSFt8e6mbIYCrdH5 zoJq9EVInd&g&)c*a@7{rlvTUSsw$oCloTI6eh>A7Gh)T!+c`ReF$uv=hDk{a#3U_I z)bcbC~pR=kQ--*sO`$sAZb9ZCm;18497be7Y0$ zGF37+bbiB6>xebeKxL?ePtXKCbj3z-^3g$ZH$p%MJwbY-47^U#{qd$5*b#R~XSt0aaCfGJw+Sno|S4B?W?rmN`lIDxD2TAM%+7cKs7 zhD%BDUJ4-xo0b24U4xdh)qCRxL!ZXg{%TEo0T&&YHEgjtbG$c!kj}H+J^<$TYxzsQ zz?Kq=a(HdHA-yZE3$CNj;{x&HR);HrOI73*}Q2vI4pA)#7Zj%_+Q=t6WKtK0(iP8TD;`a># z=K(iuy+j2oZxVv9R~U&5T;4e3??vDaY>+4}I0wofAFnL@kHqNz1Lbck+V=_I7ThUO z!P?h`;O`YC6u%<~jJZqGnsCttD=+)+$h!r^_!lUD8uFJ4TKsIB{wa2_{oidq_f>G1Lj(VLpB2P`vUZ}z$|_M9=KrbaWcYQP#6Kkzd-euhJ@Y& zuE#?X6->XJfZ)p&CKSKn;CBOXuRSbL!P=Mnx<8_GlJ`LQBfmu8N*@i)Z!UtLR2ZFW zAb#v`y&l8k_hK5VP6{vmr;4JoeB0Mfo{`gAO zG~jN3LE?h7FXiQZV7^v3L<`uyM?n7>m`}ID0~f44+9Pb}HUTmI1ux3&%{zicQCNR+-5EWeh%E7NI zFqeNQalyuqDZqUO%*aC$7p%Oo2q*-m_7jOqz%5Yz2BMzd|5VdDd?9fWxCN>|ytkue z1GD%$i5n7xAM2qJ%5n`ZIKG2oD!bUon64foV{Ffe#zrqn6sJv{CgTOp_n&cO( zJ*f7M0(0>6(E0lU?QsN{cl%4+X^0mnf2j!0!)xL<4GhgM5&Sj-^Zp=-3szoCQM9X* zOxmcyq4{y3$^j;4n8fu8lD{I*H=b?MB8N*H?U_LJ$5)J!f!V-QJ>Ww1j~{{gOW}wP z#E6M#F7XP3YQ%ik#o zD^M5##J@oK6YE33?H?`q1*<>m_g-UKE^jm-rvaCg(lWox6(&^vpjx!0z};qVncsH` z(-OZQfwQm!zy&KW=`(>TP&lFk)gMectsIyXPORaAwZ{nvyGUUK5dQ-4TMaf>1J`?; z6u6-H+nh#%$o za^TKaho=OqKj!Zi&jBlfWiWoX19zc1@iP>^Cp@QuhUE7wa5rbl@&@Bad*dyI5zO!} zQ2vg9&2PYcktO-X0vAX>_XT|!kL>Vrf%qK-2WQh$n zUUGx_PrwYM0)c~C4_MxB5S$6j@Tn3Pth|E}|6O3Brb!(C2P$tl0=fWm*>s5uCV#ge z{u{u|n;~(*#t+WlZUtuIEQyOpyg=-0bPMfu8_E3^~c99D}Y(6 zaL8^ze#^k-L150VlKg_%&vzjHgTUleOI$E{;q!n>VCL6ITrmBIs?*xlnlzVN;)1pB zbR={WFyAkbxM1zUC!T6;hU_CI0Zjk(f>6a+*OS{peW#gg?#*g`%0Zjf) z5*I9goNql0%szz+#*g;Kd%*m7b7+3d-`F+K8@T9#@nim`0pq+SG{2$X@gOjtC|t1q z#`^mWnBnUrzhLz@8~oNO4D&}9sD1APo8N)E^ESyZSpQ8y{O-3)40+K7;>Yo0HgI>W zm)KzWTZj1V?*I-LU9j?&Bj9mhdTx}sVEJQvtN~`D!Vw)Pe{7EjfZ1}V-7j(c zAE>t+?od>8r;O{39@T(E}GOf8Qaj$Kx1}wn$vC z`WuD(*?^h#l*IKwyg>P5y)Jti`UMvq{|72B+jl)M_dFwU!P=Mf--vlu;`l!hzg?hP zfZ4Bb!R$ZQSEuJBFL;Fu#P1=5oB-Sog$>4!`D+3u;`z||+Xvd_y=QvuVF#JuI5}TOf{em=Ul#hDgu25Jsx5NeDx1p8% zwg9)i1%Ax;p;q$y0=T0s@MAeTZkoWnD6{?0r*AlFlndYYN@=*z>M?9`SGK?6e)~gh=0N4r5d=4THr@{ zzNMA?HURfP3;Z~bcomp0{BZ&5FMOv->x_%ekORN+vV9YQN%6-8;CDVSbNz9C{8)d> z6o%>21*^Z+z^!kAAItkZFz@-}0_5*EV8UJuU0(9*1KJqFBHe_Q~59|H58KP~{j=$A}dJTAIm?aTHUrZ57Cf5F;gEO1#Z@Z&tYyp{Z} z0PdO=__6*TXeGbrfqSI|e(Y~ww36Qu;QnfXAIHm+UY2zXuW-TYZy<2V3LC6FSbx)7 z$*&r?i(23(^h+!GZ2<0pR`7eZmHgfU?occE{nJW*;k%%(aM1;;Kgx5W!U!P#1#6E{ zz&TpMueg=`YJj_>1%8y5b*<$05OB}7z>np9ua*2h1MbHb_%VO6yG>dGE;^&01L&8r zz-0O30_dx9U@r2<1>koJFn9Um{P6Z7p%Nb1NTxZ_hD9~zG{J=4e=vi zHEDfu(S<7SIAC)9aen!uyi^0z;ExMX-rIn=*B|G{kNRMj!Z3ey!OHs-q%Wgj{&!}1%52= zhppuIBXIw;g5N2x%Q|kU{t|&3rLe);gXNvsN`3{vRkpy7^0%^;{B8zrV+;IPf7^li zuRkt8|2Rs_-q7;L{?-GSf&RDv{4#-=?vL}6XV%|*g@ISNVDfwka4TBD@19ojdkDB^ zTi{21`d%yf{RrGYE%4)bdCI=l$=`6`(iAq7{1vp4-(2A4x4@6`vKp9s{BZ%=_a$KV z`{VrDm;8=*uM_9-D2TjhHneH59gthaICc=`8u&`!fLyWM9Gv!ER*Tb~@V&kWD}&mJpo~hl ztE48s92FRC{geB#g!6t2w_EcN{hi#d;I)r~q*mmrtg5MS<`>kuD&6=@u%w%GdUcIU z1oTEg7-b`JB96<_-~5FbPPUIvcV?z%jn8vnceMoJ+k9T2jI{KuJialUtK)j<%uL?6 zREIq)D?Jmh6Hm#?6E*mz$YD)YU1gEeU9}*;rpUR-Ra1q-%2j5`j`b-_X2#^a^eh8(8mjm+Dh=U+zZ@-O znbp_Oq$JX)L%rA#($2_SBD%3z%be`APoA8fn}@GoNm>|b>AAUh)A|IEUIVP1mO0g_ zv*J zmbs_Z;Dgl^%34vOzo09cwVbL2u9_*eu9}JY^<@=x6$t8RUF#Jwz204eFIF*DPgKq( z(S+nGc;a)G=`}S~HIDqsBI=Hok`2nc50c$zB%6xt$}eRmC)YYFnS5S;LAgt_0rr4z z7Cgnus4R191CYrCuiofWa3T`Q@UIMSvP1L|@KwVI>*c4h>Qb|Fom10uCud}5IVajD z@K+Mb6KO3(XUxgXgCIk_WI%B_C#R?80fzRCwBCfsPD+szy&`u8KEM=dy#whxb0(%i zHAGrZi}U2{g@vx#+Nv6S5GvBz1yxa4 zU7la*!dJIX2jQ+04Pf4=)Ny6?t|A$YOh+XR9X8rFTEyG{>CMFlB?hM)SdLBmA+?~z01JlB<9BnYQN zp6t2K$$56@;CL|1Ku*f53iHcdWtGKMPWjn%d`~md+8b#LrJIKrej=?l{2ZH|otbXW z5;@L5$I2_M0b?mvC`dQJ*hMm{N^l-Q$y8TOK~-&;dm)0@L|a)#|4JE@G<-Bp_l~sA zf%Tg@(N$qDM|SLPcTHJAo!cdT@z^~KIg!?@*-EPL90|)^ZdZ1}TvTKxihz&2CqdOj zTE9Yj)w+w4lPl{gTs38d&T=GQEA7S~l4vH~TOGmSbh zk~;%&J`2LtK-ZR5)u7IX1G_m0|MDu>Cq-3t&;S8a>4%u#wUi23j22?_t`2o()m5-! zoCQ3|VlcR@36g%$q}ft;=#i*n7nIeyoT6f7oYDB~V5Id6JxRaD6v9H$=FlBLPS|}H z8tkXl;Dkp+ff9_gz88cgPL-*VQvZ7pgq|^Kl|O@EyefROP+~vpKv8KjtD@T2(KqT@ z^eH%V`HddUui&yZSiJx02*Fseq$D5I$$k+RuzXI43mg4#5Rf5SvNFyD^v9NzaGrqQ~i~VcPLn5QWMF-M+2Aw z{R%r0x{|r4L88>?WY>HsF`-4NhpV8$Gjpa)n~V{Gzt=#47gm*5)!;h_arpfi^e6@@ zD8sP}r{q7-wEq?tL*hEe9K4}w&z z$<<|*xznI_=V8i#Tm=eAPG)!p#}&z%MgfN-KWl)jpY>#D^1{kOsnvxlj73#ssJh53 zt9837VZyMH)+uf%ZGh2sa1sYwO7D2oP_a`9iR6f=A9^^IGRl;1> zB4w)hY9AIl|!CtlbjTkCaIVZZ@`Dr*V79q4w{s}a4 zju<9~ijf{sNv*>Cq~48KEVqSKsteIVWT`@!5UY`lFF84RY<}UqqN=JI9qrC{GglmQ zuL}V8gHadsY?c^XU)TYt2=HQO=oTE5TAE*3=_&`1(m*>|#m;rrR##O*VY`Jbb{85Q z5~Q27c{rR`&__@JGf?~*m=E(@Met(Zm^541K*NQ|^b9F7s8NUv3mt(%OB+j=f)32$ z^J@xA7pAFmfMEc#`=4pRXy6H`7lMPz6d#Mw$G{tn8G*D+y$n;T!QSB78XIr8kih35 z#!hDi>?k2r#rRoXUQ{+8^+kzX!RC`4J*%#~d?IYBdQruN5a&sCXy=+rSO@lUp^rqA z>)A>&%DDVmw~Rtzw_;;p&SVE?E;OqD9s~oCc7aqkA~!u%e}MhT+OK8|%(ZecErDi1 zt4=Gc9GnC>t*t6|iBp?BGRq{;iW(L>*xEE1|3M$g@m`3?$b#vbm6|Tf3U#G9(+a^% zwl$TU?28n(|M^sXAiEQdP0{7dBG&~w9;SUNW=TagusLWqrn!pCDqXcgt#S<@9fFsN zUQ#5ajw)ya_=&1hvn65uQ#hQubWlYw7f7|PJijKRqPngeCKiX*SX8W3 znCMJuYM^EYY!!T6LDMbuaacxC^GdWCZOKJ!73cgyXTEO4*Cr=RZkQApmc4d1u(hqj zdc}9*I5R}74ipgsB@9I@-MGpyWcsF5atslW9MlR@8i15sfgLz0F9!vEUAGal)B2RT{S);R9B1h>^zk{7E#BvDQa@EV1@b^4IZOf$z%Q?XMVYx zHR8#`IK)4@?eUFjV4u4P%279S^f51|s=Talq0ppeYSO9MSg#^D9QwgqEv9Ep&B(=) z$kf5YUf=?*cd)*ED|At+Py(V~qsP)@eB4kzy2;31z7kBZA`)Olg^D_#+1c zXPeXX;LqQgMp+dWy2Vn94WR`K-BP#x1zo6{K{Op5D0u4RGS22PI22Vas8u7sVeE0R zIStheWmMxTF2w4hTPzu@pq31jL%HZC#vImLbED2!vfwCw9y1`uBG_U@ff8>Tgtnm3*oso&?L9a3|q&;+l6?aFl&Hjk(j zdsbRzx@aCYo?yXcF&lo2oq^RMu5kUV#@`$){D=fN#)#xF$Z&wafKkN&PdG!T=*1S} zKL~Elam0vp77dHEf|79+?uoS}Li9R%<_&5#!Du!LyT}AhB-W+VNvmMk5Xcu7i@xX+ zL^f5+vyYt0DwlHQ-=<6hp_;U1SZd@*55xe8>`KKGY^YCG=7!i3pDk9-f?xRkh0e3Rlqps>T6zqctk# z_+yFT&!cv#?GsR!x1_ zdz8+B0c5BhcG90={)mNcW%sfQ`IIZb!Og5!O$JyjE5R{QEr{3hUo*hIr zxW55TGjcLg&d@C{A*#=zX`SPzh-Ymu8!2jX(xv888C+ndfY%|2#-XtA_c0xnfH5f$ zeTL%bZ)eJda5AADP`bs5*{!`T1_ZA zjrz$M6LT`tjfae4>GltlM;QEEXP%Pd9G{zw|9F&{%4bySaikDhJ{fUN!P6Qio*!jQ z<-^IG-1N!moE$KFSF-!Vg3qrj$Lg?{hz1x|**Q@ws&77k@?kE8Uo0)_R#Yvg;6LdZ z(;tbdJ|gB)zv_YBxfY8C4~z{Tsf9f1UVg2MXGarmS?S)gF0Mxt4kr-wmmjlF7&Yhmy@xMZbW7HVs~?Yw8@A)*hfc~pYs`}|O%-_gM$o&sw-=4vJm;H!e0%Xb1*R8q+JXshJR<*VD=zXyzd;>qnqGYUbv2*fX&Y9bapC%dKWE{PTr=sZ)9(2GzEj)3ne|rM;EdJZ zgMXEve>Y~qJ;`^zmGn}|>WNoeyA%g~JtXKICJp)Ml`X@be4_Ko^RyS9n}nBw1%36x z+j0(dC{6AhbK%;oia+LQT1puCZ!FILJm!TNwX3F2?vgWM&W|{}OVAHLv;E_4V@`@_ zT03Is`1{_UfKAwfz9R9SGnY1I-Tml$r{=i-u%W&F5cK=b-TTSB!dUmr(_Z_b_YaZK zI1})uVytQ8Z+i#qDf#@<=Mx7+3|W04dg7IWeywxli z>xVqnvx|0n{H8&(_f*3C7WB9Gjql&}!arY%zh~>BQ9aIi0SAZ*`mLSMD=&X)PSHEA zh}1=IKfMKq@Co{(?|vJ$sD1i>PW<)!qITczn27JA;>3wq(}qjSi>#4lF>jxJAg*Hd z&RcQ#f}p=Y=*oUCJhgM;!R_sLWL$j`cJn!!7(Q%2!ETtUAp=hJ~dHs*$1f79pvzfFsULO3euDU-`@X@BJ-?w)Tidgp`_ zx+Oslqsaem%bVBF-uQ0&8ISe-=fpnIJ8-Cs?*Db=RX5y;{`jY$kJ`Iz)h#1VU6mJCzy8A9q2(}NqRIc_KdO4{2`j7| zxaYhX(?(sm9ESi4`i}nHpMUe=Bfs5H^6t7b?oYiIhwlpd(~YiW7oT)>Gij#l-1uEUHzB&=&H$O+TW-jLI2`a=l>2oUwp^5$q&BX?#6E?Yua6celU5* z>|1xbOKPy!A`shVtt~mR?ufM=5Du#<#Q`4P=@0gEH ziE6s8A^qN$FHFV|BIr-7Z0fVQ?++L6w2V%(Z(A}ChlL6H&K{euuuuQC;lxXajJkTY z33};(pj%^~dG)zR!e4E_FZIyDJ9d?78mAbsrpIot>9^qapH@#8^Jn4oxvMZP7YlmH zuEdK*hfgpSz467Llc)U(8M$82Ps~}jrS{6Elis{${mJeB`1*VtS|jK`Y-s=Vt=o1K zZv1K5Ux|Nwg?`kdGx-la@=sCTy}MSun%*z%r894ZJh%jX?7^Y4`)*j$(0ygr#;JQQ zIs=E42>Ms&e*VGo{Big0dm^X(^zGLTg8mfr^yL@zY~23VwfWmWF|~VbW*H8s#V8wV z`l3@qK}7vIRYhxm?0BK&;=f>=2>NRiYj5~y&Zw-|zwb>->gt}412F~t<)uq@Rt~;x z(Svo7PEh-131TpV5!e#gyU%~_dxmRXxK73^UlD~Rj{1SA> zb0fd2-`Y6vk?T_4`DMxTA86V~g8rZSRlN^yp8aj{Ll$}bQkhJ_~P^r|E}G( zApQ5u7dI_Uf*fWE`sXh=|LIee5irWV>toExJ4}X6t1a92$a6rfB0>(=C(w-+%wMw08Y>F5Gwh=(q2Kg(m2? zCcCD8^?K}t!LQx@$hw!iKyR!Q^sOH*x^>J?t_~9>SU-L6j(?EP*9Cn<>72El&VPOG zfCUF$Z+H5Mm*P+rm{=HptzSi4xGZVL-l`8*R7`nfJhqJqdWGrj!^OX(esp=+e-KYGB(~Eu)^b4Q6{LJo~Q(w6_{q~ac+I9N|dJm>z ztf^n8v7axExaX(K|N1`l9>>b>q4xy+;cGsA{r8(b`m3O4&ucrJJ7ynVY7z9lQ|5d= z?WbX-BZe)TuVL=3$MBN2p!XQ{eB&pxzPA;; znsn3DtK5+D+XVgZ|6Va~S(0`AvtcDS6@A@(r>1===x4;eHmuY0k3KPaQ~aPU5sj~F z+7Q@Mv8HRke&D&Uqc&c%dtTmq_f>Yw#gc-cpM3C~7uQvMvEhUj5%r0Eo*oGODd^wa z)#=5|aC6RS)(Q3ZH7tA^had>LrEv3GaoM+Td+?^o8`gg^?f|TNoOm8r7$0{E`rG~E6CVCwX}e(q${#J; zk(7mT9AjIo>AL;p=dS7fQKzTA`#SZe#x*}x@_~(}(%76K z<4^~m3;GMA!**`{F!`I9+0XX4D#CmkUXp<<#+rJ3(ywI6W0U$MytDa0)ynshv6Lj} z3u3x%?|tI#$8WqN>e&^mZ-K3}RnP|}E_&pT8^<61WbyJxXGD}Y;A0$uzW(TM&s*L- zCHJN^4?ps$wLQu^>QwUoVe{CzV;;I_ds#yJAyb~}e7B}867-ucPhYvRc*olx|9$Yq z0R`J$#J7zF{jw95R(<#DHJ@D-KjD9wZ>~W-d@tx@*8MRif7_t_&mA4OX>GjaV!Tvr zBmX5$Wt&D_VP3haQ{VM}UA+f+xmeI0xz%0HD*R;l@@pnMb>7eIr@<{_`j}rX3^}+PkFDlVhv_+f}Z_?%XQ6-pU(^1=p1m} zoXr>?R|xv2OSgp`T{fss$1^6JKKc2*_reYl^xt0o@S4u+KHC4ObN&72ZJGdi{$9`> zQE!fW`{#q5bAEaI<0sl*GYocAFQ)tLWu}Cui}#;>#*Jkk58ASP1N5PwN8k9+Gc%t` zdV1O=6ZcJ7xqP;!-7DyOH(tGC*n=^b#aF#{Xz5ky1$m>HfrxNrNrkcjyb+kAo>-GG-hxSgq9ov=@$iL$Y9Y6o- z$%QNL%Go}^?2i5mhbRmBz1#1+X8(%6AMNtTys0Z`XWB&&*Ca3n0tC zXt23W_y?DOF?3lZY{Pb%)<^kQ!_Vbq($jGj!T&C>O}JdjAA|TDuSw@Qx+Tibxm~I9 zr@=o@`8oG0SN^f^S1A89_$!sa0DeBgCeJeXtCjys_-mE_CHOB_{uyByTb2I;_-}{3 zkpo+8H2mw8KNWtiPdwQk{S|z#Q2525FN41{0{sT`HSp(vmInVF$`29N?pFS<;D18- zS0E2NmA?soZr)?uo6OMp%Kr#{f2jQ5!hb39FdX&qAn+tp!v_wURaRM8URUIrRaY^q)>T-? z?JoJ%)p)Y&#-~JGH3LhJnNuwmon1w|ys#Ia@Hl8k-0y4#z6uN-*bP--WBZw%S$5sy$B8WQp3I74GMA*A^XrHVSLp zMXut1p*-S|Q5y;b2`?3U+|fG6U!2xg=s^4M3y5!E8Eg7_6oYO zqq>c17OB(olz2X^uY=Vwdmnvw_xJP}9aX=H54Kq?79ISbK)*p4GLb)!6j^k9+_0aebz~g08sMrJ- zK%Z$#Q9(&Do*5(it&E`NEY!lSj8QJP6dZpIRpj%9x8vvI^}?jw|J7na#9JdsxDAqq zSx{|N8^)*tv_vjJm}l>r=q_;su!`&UsoLhjE?N#g+fU{6?BD z$J;3us%c+~C7^OnoP|zt{8CowT5$YK3dOR*aTgz*w$%gmpji+*-J)-?!V0;`pBv_m zzpSFD$IqsIo@-%YsjF}vShbk_1ywcW|5Em0DLeD=+H7l*#psWI)f%J}NY0q6Dl77N z)CFQ4s~S>cRY_eLN0`eLA`RuX2?}Phl`i*!HfsF>43TYB^r}4;R95~AlbU?5);P}EEELOi$31!|)4h#S zs@B>DwXIRve`_(8w{db0@x%b6zaaguh-e`P$>XildUuJM$sB8~`WPsN#2%-h;1Hcb z(ll+0hUQ~#S+&Pn7}asy^Q-FGvi66%C~_6lwQ&g)v7s`sj@dTJtSGE+TSWDcLYkS% ztUlI?L*AiwalC=Msu~Ajl+Z{;ZjMt7tsAMQb?o?_+&Q%+$5r25wIUoxtL2-UXS@}Y6338UG_5-$CVT&6+9-L|Y0sBb# zjV`?QfcMMzbsqXGS|{%D!rrbZt+Vo3w7&4|6SOmx&!RQr_p5?-wenfCJnZXwL(rxx zpG8{*-+n>6R{1O%KSqhIYe?fh<+Ese;KR05(Do{yMf(yyY}*HoyUOUZXkpmf_NL$$ zseBf#KYZ^9+F8nH(I&zdiC9tEB;`X~aKOoQUEB*JAKALM=G--t{`#p$)T1Z&1wFWE z%jZ_C(;9U?>-@q&Ns0IZS%LQB4^994_1lp{TN@n9XC*{Bmb(*T9m_9Dh#&mEqw#mg zDkP0j zl@Yo4(5a1KOPh8rw;x@VYFfObormxnBOGuvGMkOeX5-6_M&xt{Hh_zo55vpw*wcr4 z4AT~pDXuV4XOx?(At9OCcbv#^7y( zqFrFn>Xgr-U1rdh7_^NB?H+@M*Oe5%R}9)lw69F#9_6!WF;BGKz z4;ZvZ4B9&e?R|rG5mJ);8kEnX{S;&EfNN411j`Vr&k$v}pHOiKqhoh#&k_mOpue`A zoUHqVXdQsO1Qe}~DC=lz3L@k44njWelAQ40J8XssyVonMb_NqqRhkFN5_NzwRWi%pv77cGAXp)w%d=@dd zNE+VD5TO>0O($vGh%V#e?EpnX%_y4DIPlECK;~(oPQVQDYoX5IK*z@6=6~r_3+e46 zTE~S^B4F!u4$(T^Vg9Y-9X3<69A#3v&Um{$sJ{2=u*_5|TaGPh1NRhM*`}F6T9Wm_ z7acIhv)c(bzn#`V4_=CBVE0^zJG&!4v?RMDeHLwoL1UXrTAe|o!60eujxsLWRMPG@ zXb&5-1aOtOzRG9OyxVgHkpAr%1{xjn-@9$?8FuV-FUDHYD?Iv`rje{mjCx=x9lj#n zKwqt@Lw@W_)**ee4ke9sC~51JFG|~J(9#F*w=X{Q*Gu*;CdYDX=JHALY0K@A_Qk(9 z)txwYRoIIFYH76+r{*+^)Dq|Pb6%|o0my{wQMy0ZT#DBI0 zZ8i(;vlJaxQUkqL;!aUthCB1V6nDHLEPk`AGF)_N+|R=A<+u-4;bYWqc4dBNMT#MP zQYlMXz6!NyRK=2ZnL)eFplvW{+YB0|Q1XidR~eU|wU@N@28|Y+q&329voHQw$@Qf8 z%;hGCZRFzLn(87U)~|t~262AbPSZqt$sXsU5Z(tLe@PxjAly(~>)S5L!*CGGXzN)> zmXgdR(k!f_`-$_gfa0EmTuH~{)D3C&h`UFYBZG-MGY%1evxPJP`}%c-a7%Qg79L@a zjp~iQkREP9uP9^}hzOb!D1W$tZR-LjsxH8aVizzfihYCDqkrG9f!3^VP>BZW8$W{X zz@m9_iJ#c>4$cq#4_pv!RQV2U;o?Y9p#BioNY*?y9i50s>BRK6(f9)m_r zBS+6;)iO^aozZ?~BqfS&5Uw4bn)N!Y8AoV(o!rcojd{UF&7{`onk1oX&Q=OZA6j#e zH|dgE(lwF+yBWTbXN;>JMRQ6>MRS^$qT$P*;o;F?TGU0&)J*FKQdWl=NL$n*EVlOu zYeOk~v1EV=0&S=@U0`+Dl+$W& z>0}-IOXqixI*_&Rai?@1!TogHf55%J`kkzPQ#$`Z+ezu9PfDkxQ931Uv4OkNpiyT^ z9OYEvb{e!@2CW`kC5|g464%->YBjj{%asi@I*w7>j#sW)J5qV+oAkE>n6_9KQZ6#Ym~ZnM^8+kM zNI5SP`nUPg5%cc9;P4FUjOjjyJInOEszZKhR?0Gca;%rMe4r$a%M6mn`HH0NGiYxa zG}P-)F|jRFEE|-Lne5kM#TLZ{nFeh(fEU-@vEl2 zj>ZG^SdQ4!^k0YhgQmR;kMem_qNA}qVK^T;r8pMvv^foFUx4hS`q^6PND7r979h{| zG|C)o8;6kF_!^zNrcU^As-=+p)3E}puS4JvU?JNXVBHIBG+0}{PnLQKbZ>-UB_BsY zGSo8`br-+05WBmG-CdyB7DQKyP$~dEG{YfP;P@tYF> z=}r>DVbg#5-1*oi7DGuQsB%`tl94hT6y_ew_Q*XcDflI&g*ha}0Sa?L40AEUdO9d{ zqzZGLTI*S4MG6Le7LB?}(&j0jMO$FdV6%%*xmYW4YYf_*25yr<+hNdNHfV1eG_J?X zbbl~tKN~a?awOBBH6(Gh291&N`6bp=v?aal?O6|v)xP+TOXtVp;XIgb`zoSoD}FEd#ZXk=1CipVs7?lrj(vNRr~34zQ+zN7 zr`b=&3qm*tH$!~=httBKi>W7z2^njJusYoFsZV|4=NYL_7Qw7Id0e+pDNLPh&L@$f z1yFyI>@|5OiPg*`vrQsNqbX8A(;dspreH!t6!8z$6o2AQ`d_${R}=267c7N{rui6E zEQOdp3m-0Pl2)dC7Hy?LyT+j5JTHZN(4d8ZgNz%geCPo7So6M-lcFyP!=j-nW{W+} zXu6LP(ZA{R>ZBkS1!}rfzD9*!kc}6cu_t&z=yh<8FuG;snQQBbu*ST52@jQu4zsk} zO9Hf&J`0f@N2cYaQ&LbK-7)!had|h_KdQOdJX~)!p?SED3=J#Rk+EJSn(G%-tZXj& zWOGRxn@iG`C|?v;ofYjjg9brRv=B}62|)hCzg}x>nhH>X>GK^H9u|=)`nBfa<-?-nb{`hV9sq^ycBHKhj3Nf6*?ny~y5g z26)U$h;Mw^WAI&x=xKg>bS^k@i8mkD?ochBi;tpB!MK!(FF=Y88MMh`g;u1YMP;OE zGjTUMXk7&c9BKCH!bY9Tfh`VLVNKv+Cnrl(i5!U;77rh_Gc&4Bq_}H_Vcdhn=Q21I z9Wz_cfXK7n%-!*{>Qr-h`)G4-KDP?jbp^k|!B6jX1_N4&TZ<;_xIaCpLY_`!QFoMz*{*3OWjNV$)XTn$kw*L|<|Ok%M=qubPD4Z(lOx zQPbDXhWa?I?(4=^9NYdd%MOYTi$3aTjEvb5XL$hPZI9Wq+a0<8ust#^@oU_F*>AVSA?vSXH0_C5vH*`HmNeBzH#(w6 z{*Fx7$9`>rpSeK+L_g;wuP?iPqP_p?%N^0%em5_7MB2~y^nPvwJ;$&2_d*V+-^{ol z3ex-2>+zv=7kYkepl2%d%Lz6>Q7$)#lE}BA|xy#v0l0f(0Evxw7d04>o85|h)<`^!Go?2qEh&&he!=C zI8=jws+E&Yx?bY{5kUh&bngCwb{Mu|s+DV~R2jnr?HfE{P7qk=0WlMiM((#hT8$@L znup=Rdxxmr;W6fR;+ea*g(Jt%G%74!30@kJ5Aefn(e1j0cZVv(^Gh&^43CXAqo-wA zdwC&6Dh*#EnJ6UF(cCU-FcLE3Q}-VIDidn>OHV1@E35=5MR#Y4Mre z(8cXKc;{N!W$iB3d7a|Li)VkD8y*jDXYLWzOKd*SQQkX8d75W*+??pdp59ya#2C8R|?gAqV}VOWR!YI#$autQ2XAwr%_~{19oAZymK$BqEgQn?=8;+DED52 zh401%qsMf^7(&^VV~9_$khUl7oAtPK$3D%G1Uc2H%; z{Y0NdD==uq%4gx!TjAy#v>OZ>mpo+LI}O?NqF{M9JN#w{2J1SKt(D|WSFoU$$cZdB|Z#U4=XS;e>@K;k<9yjsEz zu&$6ZM6n|j+o9NpiY3z%W65-U;JSF<7(O^Ta#Pbj$(B(;+#`NxU7YpK!H{;W?c&JV zczM7gZRsKobHk^3MjrGjey`$pbe7l{3yc?)4(^I8mzjA^H4*2*%)$ndC*h!5!yPw) z_vM|!G!|2AJ$`ZxV#17yaJ2NmNY9ee%Hn;(qrg5exhNFrT<&jf+@UuT{Fd9?3O6;s z^_;1&MqV}?Hk)ZSJ=PU+R@ma8Jk(pf-Ri=DS4AKO*&uZ^hHMppWy5V%FNl{ zc6{13bLa{=Gx1EYIo1_2T7h7XDpsG48`fGsa&=R`x|W(eJayTY#skPyvv_Mfjj46L z7$k$acEjtlb@DpAj#m;tvP8Lj%ysO-=`+Y%6O*wAQpXIo4&x}tnNf^@GlS-|F)*jq zU4X*?=VEQ*yh}}+XLXXRF2htNT=rmc*<9xP?T&Sv0*vLH94SF!>IiO_D^FY}mW`J^P$xP6pptC^9toeKd z=y{;bbJzcY%5LZqT}3eJDuRJk8CTfMpcjmNSn+q5b@>)Gn0fPUtc#!G*A*VJ#|6mo zc+vcn^on1Oo*prRgC3^L)6nPg3e_muy}O`c?qXBI_nR2`C*z?M|IhM2yv&4r#P@LT z#4OWg#jLx`r3R6V4G8YS6YJeD?THrG1+gMnY)3%KyE6-$niE=4^oEnf~UX2B1 zF~5vF6~;%GtYZ;us(mW!SOjAw6Mrm9!N~Olidh z7O!9|Ucp$rg0Xl7WAO^c;uS2JHrhaP`Rc~vWc&6uGE8zDZ+PXplZX5mG^e9 zq%jzUjpe7$gD!?6XluEVse1rwSG3#vd$C!Y{Y}l$r0k@2HSzFI#oo+btZ)u+PBDk9 zP8xtPrDoVP`(2DTiBv=P!qt(o#|im8!MD-=9Hwr3z)M}h$%GvAj+m%1JcmF&pZ$~+tgN?X;*v>=&9|-)Cn8(yM#a`BwpOwI zkOLAQOHksgR*bzr!7!#(uFaaA>g<_Srh)+HhctSH&2_hO&@ednB6mD%mPqZp3w4V+ zQi}Y7l@Vn1Xee0Si)q@1pI=?vXq(jwpiJwFwpksZnM#+;pc3p{_!8_v>%zKm#WDu_ zegL>5J$i^^EKFkXB+&(e`ARgc{+>gP5#&YR^aw@vU1?G-yF8;!&> zFqax;*o2@MtH+L-GwZOEwn#+J#9Z1z=gZ%g_!elSe2dG}7&C_Cy_kJW%-_!VEj$az z-_DMOG6|UH1Eu(l$Agl2wQ2RD3sYAVqfJ1ts})8%A+_ms-ms}V~C0L z8jO4_-xB>EYo8fM#Q0+L$p9n3Hz8(9My{ny0PTQHu1fsN%G8pCzz4cIRs5k9lUscUad zw!hN!U^0D76~`kmD8bibEV3e6=|n4&6>)5qu=Kg|w&Rh2%y}~0^CG+5tcEXgDs*t2 z7YnqT3A1LM-_h741zmT9=Uxe!gB0EOI5t^nLd-!7^713pPCUlMcp0qoLr{{LL`WCWf zUuEL!l{by-vH5NEv}H$%hla}#V^L3k7tffpi^jY5HB!If-)!Abno9dIGy4db8-|^Q za+8>xKhP)KSuehBeFtNuhG(tt#j_f2stwHHD=faSSR~rzpkZKFg0jr70v!sP0-b2@ zC)xXD_WnDdOYuAnx*YTti$4b1jQdrf*k>ihI(R)OTXHAmjdTfb6pXx4utxQ_STV*e z{%%+7e#O`sldw-J1{06PUQ_H%#lBVy^GmEh@<@5dN!A5UqZrS=mUnQDp7`U=GJ=_D z31k^Mpc9F=h%f*3czZ&NmYLJ+7x&y?iZx~l$Mn}`D z6C+QFTveJ_v8em5>eS^JBORJd7st~Z;_25g^ttt2u#6-IDKV8H!0g2s=_wWcH%D(? z4K2GYF{q?3u-av-8~Y@ew726OS4I*m634{a*CyN7?Ya)*rGMMCjPWKL)~-ziV@^{^ z&9aXgi))ANK5=<_W2f3>yQ4R)j;|(b{Bu1hbfu1o(peh$Y_X(uR076r{>6Jc5`g5Mx3gQhEgsCi08 z^(lV;#9cDWaK@wS`rz4@`27h@Pp(vk0zm6|eE!ThH=Kuo<`lCLyXo#{Sp&< zMoymP&Fp=L2!ejg$Fz6=U8JN>q%<5p4(TpJ!0PLy_y^epmt*4)uJ z`^}_*w&MLvbRSE)jeEwV3okr{dq5jMW0206!FOcXr+EHd^5V`| zaZ(OijI8gll&(T)P{}P2T+ow4=%BIpyKn<;RA@9E2>*;o8BITn?N~ z-3%x}caq$hl|9d8xpNJk`nWSYfJs2CS6CdT^@`J-V~B-yXMBKlN9}hDe37&6lVOuF z&$M`Fj0v(mRD#ApdCw}%`!%3lLD$*)mq5GWeiLX<(04%h0sRMPZ&0?WKA>dGebM$r zgQqLxT%g!R)+NiW#orRe?oxmEDfXCRPbl`jVjn1WM8JLT(bk0tu!^0f7{~hLy}wh8 zHU`07QS1Z7{-)Sb_!{vy(z-&budvmp6;94 zLHF$F{1@wdhIm5l7m;{q~|jEQ1}OqM+TXx}~cO`}DB-V{}$E`P8Y`tO4$aA?&8;^YTh6dUsASP{m z07-MXHD3>_0A8=$n)S=Qm_ON8xu2l}%P)Eulp^crpv=EVKv{Lzb(5+?mrPm~Y_5GO zOZ^37B@%zM83{(kSg_&9J;7*;6O3wU>@;$*`UXsVO>^6oH)>nX2-J?;CiBiymqHoD z=6^NurxD6&I?U*s8{_HC&^Lbv#G%r;G5v+Bb|#vqLgTE7-n@2Ka9Df#i~5FBpuE}` z6D!7bH|ixc;p+6qP5u3`nTT?td4BosrpWS-n#!Y-SMU5T-j_s#>|WQ7+;mmYjj-te z#FXBMG{v{RljOWXQG%)eCi-tca@H;1-B|Gq`!=px-LfFC{G-O`Gi=i?mfiub{XF>f z=h4#*vyPsz9?06yqwlZ&EII}5Gg_etmqjO=r`&9?#;ycAvnok$es#-;u=wK5+Nkj!s!i- zn6+zK6xkRJC7c7u&U8;SzI)C6{VEznWdpM`iWM{zCt-X%2sU42LiIwZ4-Li*q+FIS zGlLoH-FQaX&blr40rR0ut~Y5Adv?3YqEsA5|9B+>?1L9HnEOw2RmC0+k%N2h?^7Vz z!Dnau%J3xUt@}c64dzT(W~^+0D^09H)fwgEAH!Q#;Nwop*z%A){o)2HjGg^_MrN%o zaAg!}jvb;r6sZhHs(a>Ww8IeH{@4Z2wQYEr#?+l|Qdf$B1E$u^gU_6UF-7E5o5CDh zM0rTG+Kh>TlF0r2iS*kYjIpFT^?2{BY%ET_fGq6EEG)~HNKU;pf(6x^iJS|SUuwc! z@Zw@K@8W}Ui z+%k)Q1=-E^R|G~3&EDZX+Y;|t^NK-PH%dVt2kivP4~>9+0vZKH0Xf}3xwxkXD5oXt z3u@F_P%5?ifl}rj0D2h0bykK?m*@(D&9P5qoK>*Jiv3W-{z$P06njXq4T@3umv{U@ zv3C^vw_+$k>yO+_-piGN6877Q4OQ$o#YQQ1lVZ0jcCTU&DmD~fE$=wexA#Dj%V}(?ZNhX+gE>{j2^mrC+nyYirEkT3eWJj^8=G|SA-*b+?1!k@T50$CBO7u z>q%?hSNo;)_8e*5YNd5=q}(JL$!{w0QVF?jWcDhQsI&CnfoNirE532p6hc3%GoCoR z%3YWA#Lx%Zgnrj%+`SBWz5((a?lab8$@2-is5^f4SyS8C5=4ggL|%#O*Xnv*UGKrQ z6DbNh>|DNYT>GFN2Ekc8Sw9wPLp;lbg-Jg~t?dK4c`s!Bi4zJ*``-L)ryFcS{v`vw zAS6R?R!z#z1X&21a zCK&(ScoH@#stA-oQ19>jRkaFcDL*N%R>4pCIiDl<`6<*gIHut$Kh!cVF!!qY5|OheMX_S5Szb!8f2I$<+^@5Pu;s%30=o0<=ruXGYcN<9j7# zWW>DEj4K4OGpm;#5tRM>a?=0UB=`7B{32K8@BaYF4Ch$SxJ-+6;1?#DvoTx0yD2Uv z^$?RAC4qA1gZ$diC55E;GJop)Qr@KQh}1Lw43^}*1WltmHH}a{O@qco(KO0T@@QO? z+B69FQIkCXCo>0&Q_nDco&4{&T1H!k>8oCHK~DOXEbCAcV*2hf*(J&((|4b_KN5O! zasKozxu8J)ExD}2^c}NgNcIvvL{zk7%wA}`RN2U(*aBF_QsaXK5;&w#0*~`2uqV_s zusv1NsH*Lqx>kcwzP`3GkOCs}8XxeOmv*qX;h}qxk5Z2#!+FtyRnV*0!9EO>4Vd?= z-MnXe=RLV5@5yAo4SEUa5YQ(fqy^`#6I%s#$8K9hfJqwijU>CT>06zh5f$q+)9o+o;&7klzya zbnAlgMKM_XY<&Mv3_S#km7oqvSo8`kcDrIfRt&};>ksB0>+ekH2NHIgb%i)y7hR70 zm;FEhJ0YYqXzT-`k07`iAmg5;*>k99@!-W)@CuuNx$;_w_q+(Xi^_QHz?XN?vG|}I z$Lx|*Ft&qfS!69!kTkiv;9h!hFZtMl`!tJM6I?l9A6ua5wgONiexB*p9qZ=HG3ms< z-0ks+YJo?%m?z{EC^B6i@iBUMxOF}OWnO&_$`%+wUP}w4OXhG1cCLLIa#%WoH7my6 zmtgFDN!WqN1i?5BQZN}rsBfsNs86@b8d!JF2io462Gyl8p=5(u)e1HHSwv<`ZaU6e zi`gO^;%(biH0&*-FXNmIBO24IqmxC?hZPH&uhEK)1?w%(f@KCECL>a*O7q~_j(iDn zJIgHPwH1lZw)*nZY4xSmXluvS>m(e713MFkKUtP}r&-IIbuIxjiN(n#-VqrYmMXsL zEc|$$fV&XhvrMtZ(HK13_~>bBAhsSwbi8EK+ZyBc3@mr!o)wB#?mZRt$ z0BP8#OFs34GG?rati-&Wl2u+_VkB#hl_pp!nqA1Rx`}dvUW6<3!|S zh)tQfH_aqY{;&+$99ZoqS^NqJAeQS@pfrT=o<+iYe#jEgX`stMnQPwxr8!~+DC


y*!crqNe)N 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
6}I>mDocS{s&_ov9Y+2qymo$9`+@%hi9x% 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 Co`J*w literal 0 HcmV?d00001 diff --git a/tier1/KeyValues.cpp b/tier1/KeyValues.cpp new file mode 100644 index 00000000..4ac50926 --- /dev/null +++ b/tier1/KeyValues.cpp @@ -0,0 +1,2521 @@ +//========= Copyright © 1996-2005, Valve Corporation, All rights reserved. ============// +// +// Purpose: +// +// $NoKeywords: $ +// +//=============================================================================// + +#if defined( _WIN32 ) && !defined( _X360 ) +#include // for WideCharToMultiByte and MultiByteToWideChar +#elif defined( _LINUX ) || defined( __APPLE__ ) +#include // wcslen() +#define _alloca alloca +#endif + +#include +#include "filesystem.h" +#include + +#include +#include +#include "tier0/dbg.h" +#include "tier0/mem.h" +#include "utlvector.h" +#include "utlbuffer.h" + +// memdbgon must be the last include file in a .cpp file!!! +#include + +static const char * s_LastFileLoadingFrom = "unknown"; // just needed for error messages + +#define KEYVALUES_TOKEN_SIZE 1024 +static char s_pTokenBuf[KEYVALUES_TOKEN_SIZE]; + + +#define INTERNALWRITE( pData, len ) InternalWrite( filesystem, f, pBuf, pData, len ) + + +// a simple class to keep track of a stack of valid parsed symbols +const int MAX_ERROR_STACK = 64; +class CKeyValuesErrorStack +{ +public: + CKeyValuesErrorStack() : m_pFilename("NULL"), m_errorIndex(0), m_maxErrorIndex(0) {} + + void SetFilename( const char *pFilename ) + { + m_pFilename = pFilename; + m_maxErrorIndex = 0; + } + + // entering a new keyvalues block, save state for errors + // Not save symbols instead of pointers because the pointers can move! + int Push(HKeySymbol symName) + { + if ( m_errorIndex < MAX_ERROR_STACK ) + { + m_errorStack[m_errorIndex] = symName; + } + m_errorIndex++; + m_maxErrorIndex = MAX( m_maxErrorIndex, (m_errorIndex-1) ); + return m_errorIndex-1; + } + + // exiting block, error isn't in this block, remove. + void Pop() + { + m_errorIndex--; + Assert(m_errorIndex>=0); + } + + // Allows you to keep the same stack level, but change the name as you parse peers + void Reset(int stackLevel, HKeySymbol symName) + { + Assert( stackLevel >= 0 && stackLevel < m_errorIndex ); + m_errorStack[stackLevel] = symName; + } + + // Hit an error, report it and the parsing stack for context + void ReportError( const char *pError ) + { + Warning( "KeyValues Error: %s in file %s\n", pError, m_pFilename ); + for ( int i = 0; i < m_maxErrorIndex; i++ ) + { + if ( m_errorStack[i] != INVALID_KEY_SYMBOL ) + { + if ( i < m_errorIndex ) + { + Warning( "%s, ", KeyValuesSystem()->GetStringForSymbol(m_errorStack[i]) ); + } + else + { + Warning( "(*%s*), ", KeyValuesSystem()->GetStringForSymbol(m_errorStack[i]) ); + } + } + } + Warning( "\n" ); + } + +private: + HKeySymbol m_errorStack[MAX_ERROR_STACK]; + const char *m_pFilename; + int m_errorIndex; + int m_maxErrorIndex; +} g_KeyValuesErrorStack; + + +// a simple helper that creates stack entries as it goes in & out of scope +class CKeyErrorContext +{ +public: + CKeyErrorContext( KeyValues *pKv ) + { + Init( pKv->GetNameSymbol() ); + } + + ~CKeyErrorContext() + { + g_KeyValuesErrorStack.Pop(); + } + CKeyErrorContext( HKeySymbol symName ) + { + Init( symName ); + } + void Reset( HKeySymbol symName ) + { + g_KeyValuesErrorStack.Reset( m_stackLevel, symName ); + } +private: + void Init( HKeySymbol symName ) + { + m_stackLevel = g_KeyValuesErrorStack.Push( symName ); + } + + int m_stackLevel; +}; + +// Uncomment this line to hit the ~CLeakTrack assert to see what's looking like it's leaking +// #define LEAKTRACK + +#ifdef LEAKTRACK + +class CLeakTrack +{ +public: + CLeakTrack() + { + } + ~CLeakTrack() + { + if ( keys.Count() != 0 ) + { + Assert( 0 ); + } + } + + struct kve + { + KeyValues *kv; + char name[ 256 ]; + }; + + void AddKv( KeyValues *kv, char const *name ) + { + kve k; + Q_strncpy( k.name, name ? name : "NULL", sizeof( k.name ) ); + k.kv = kv; + + keys.AddToTail( k ); + } + + void RemoveKv( KeyValues *kv ) + { + int c = keys.Count(); + for ( int i = 0; i < c; i++ ) + { + if ( keys[i].kv == kv ) + { + keys.Remove( i ); + break; + } + } + } + + CUtlVector< kve > keys; +}; + +static CLeakTrack track; + +#define TRACK_KV_ADD( ptr, name ) track.AddKv( ptr, name ) +#define TRACK_KV_REMOVE( ptr ) track.RemoveKv( ptr ) + +#else + +#define TRACK_KV_ADD( ptr, name ) +#define TRACK_KV_REMOVE( ptr ) + +#endif + +//----------------------------------------------------------------------------- +// Purpose: Constructor +//----------------------------------------------------------------------------- +KeyValues::KeyValues( const char *setName ) +{ + TRACK_KV_ADD( this, setName ); + + Init(); + SetName ( setName ); +} + +//----------------------------------------------------------------------------- +// Purpose: Constructor +//----------------------------------------------------------------------------- +KeyValues::KeyValues( const char *setName, const char *firstKey, const char *firstValue ) +{ + TRACK_KV_ADD( this, setName ); + + Init(); + SetName( setName ); + SetString( firstKey, firstValue ); +} + +//----------------------------------------------------------------------------- +// Purpose: Constructor +//----------------------------------------------------------------------------- +KeyValues::KeyValues( const char *setName, const char *firstKey, const wchar_t *firstValue ) +{ + TRACK_KV_ADD( this, setName ); + + Init(); + SetName( setName ); + SetWString( firstKey, firstValue ); +} + +//----------------------------------------------------------------------------- +// Purpose: Constructor +//----------------------------------------------------------------------------- +KeyValues::KeyValues( const char *setName, const char *firstKey, int firstValue ) +{ + TRACK_KV_ADD( this, setName ); + + Init(); + SetName( setName ); + SetInt( firstKey, firstValue ); +} + +//----------------------------------------------------------------------------- +// Purpose: Constructor +//----------------------------------------------------------------------------- +KeyValues::KeyValues( const char *setName, const char *firstKey, const char *firstValue, const char *secondKey, const char *secondValue ) +{ + TRACK_KV_ADD( this, setName ); + + Init(); + SetName( setName ); + SetString( firstKey, firstValue ); + SetString( secondKey, secondValue ); +} + +//----------------------------------------------------------------------------- +// Purpose: Constructor +//----------------------------------------------------------------------------- +KeyValues::KeyValues( const char *setName, const char *firstKey, int firstValue, const char *secondKey, int secondValue ) +{ + TRACK_KV_ADD( this, setName ); + + Init(); + SetName( setName ); + SetInt( firstKey, firstValue ); + SetInt( secondKey, secondValue ); +} + +//----------------------------------------------------------------------------- +// Purpose: Initialize member variables +//----------------------------------------------------------------------------- +void KeyValues::Init() +{ + m_iKeyName = HKeySymbol::MakeHandle(0); + m_iDataType = TYPE_NONE; + + m_pSub = NULL; + m_pPeer = NULL; + m_pChain = NULL; + + m_sValue = NULL; + m_wsValue = NULL; + m_pValue = NULL; + + m_bHasEscapeSequences = false; +} + +//----------------------------------------------------------------------------- +// Purpose: Destructor +//----------------------------------------------------------------------------- +KeyValues::~KeyValues() +{ + TRACK_KV_REMOVE( this ); + + RemoveEverything(); +} + +//----------------------------------------------------------------------------- +// Purpose: remove everything +//----------------------------------------------------------------------------- +void KeyValues::RemoveEverything() +{ + KeyValues *dat; + KeyValues *datNext = NULL; + for ( dat = m_pSub; dat != NULL; dat = datNext ) + { + datNext = dat->m_pPeer; + dat->m_pPeer = NULL; + delete dat; + } + + for ( dat = m_pPeer; dat && dat != this; dat = datNext ) + { + datNext = dat->m_pPeer; + dat->m_pPeer = NULL; + delete dat; + } + + delete [] m_sValue; + m_sValue = NULL; + delete [] m_wsValue; + m_wsValue = NULL; +} + +//----------------------------------------------------------------------------- +// Purpose: +// Input : *f - +//----------------------------------------------------------------------------- + +void KeyValues::RecursiveSaveToFile( CUtlBuffer& buf, int indentLevel ) +{ + RecursiveSaveToFile( NULL, FILESYSTEM_INVALID_HANDLE, &buf, indentLevel ); +} + +//----------------------------------------------------------------------------- +// Adds a chain... if we don't find stuff in this keyvalue, we'll look +// in the one we're chained to. +//----------------------------------------------------------------------------- + +void KeyValues::ChainKeyValue( KeyValues* pChain ) +{ + m_pChain = pChain; +} + +//----------------------------------------------------------------------------- +// Purpose: Get the name of the current key section +//----------------------------------------------------------------------------- +const char *KeyValues::GetName( void ) const +{ + return KeyValuesSystem()->GetStringForSymbol(m_iKeyName); +} + +//----------------------------------------------------------------------------- +// Purpose: Get the symbol name of the current key section +//----------------------------------------------------------------------------- +HKeySymbol KeyValues::GetNameSymbol() const +{ + return m_iKeyName; +} + + +//----------------------------------------------------------------------------- +// Purpose: Read a single token from buffer (0 terminated) +//----------------------------------------------------------------------------- +#ifdef _MSC_VER +#pragma warning (disable:4706) +#endif +const char *KeyValues::ReadToken( CUtlBuffer &buf, bool &wasQuoted, bool &wasConditional ) +{ + wasQuoted = false; + wasConditional = false; + + if ( !buf.IsValid() ) + return NULL; + + // eating white spaces and remarks loop + while ( true ) + { + buf.EatWhiteSpace(); + if ( !buf.IsValid() ) + return NULL; // file ends after reading whitespaces + + // stop if it's not a comment; a new token starts here + if ( !buf.EatCPPComment() ) + break; + } + + const char *c = (const char*)buf.PeekGet( sizeof(char), 0 ); + if ( !c ) + return NULL; + + // read quoted strings specially + if ( *c == '\"' ) + { + wasQuoted = true; + buf.GetDelimitedString( m_bHasEscapeSequences ? GetCStringCharConversion() : GetNoEscCharConversion(), + s_pTokenBuf, KEYVALUES_TOKEN_SIZE ); + return s_pTokenBuf; + } + + if ( *c == '{' || *c == '}' ) + { + // it's a control char, just add this one char and stop reading + s_pTokenBuf[0] = *c; + s_pTokenBuf[1] = 0; + buf.SeekGet( CUtlBuffer::SEEK_CURRENT, 1 ); + return s_pTokenBuf; + } + + // read in the token until we hit a whitespace or a control character + bool bReportedError = false; + bool bConditionalStart = false; + int nCount = 0; + while ( (c = (const char*)buf.PeekGet( sizeof(char), 0 )) ) + { + // end of file + if ( *c == 0 ) + break; + + // break if any control character appears in non quoted tokens + if ( *c == '"' || *c == '{' || *c == '}' ) + break; + + if ( *c == '[' ) + bConditionalStart = true; + + if ( *c == ']' && bConditionalStart ) + { + wasConditional = true; + } + + // break on whitespace + if ( isspace(*c) ) + break; + + if (nCount < (KEYVALUES_TOKEN_SIZE-1) ) + { + s_pTokenBuf[nCount++] = *c; // add char to buffer + } + else if ( !bReportedError ) + { + bReportedError = true; + g_KeyValuesErrorStack.ReportError(" ReadToken overflow" ); + } + + buf.SeekGet( CUtlBuffer::SEEK_CURRENT, 1 ); + } + s_pTokenBuf[ nCount ] = 0; + return s_pTokenBuf; +} +#ifdef _MSC_VER +#pragma warning (default:4706) +#endif + + +//----------------------------------------------------------------------------- +// Purpose: if parser should translate escape sequences ( /n, /t etc), set to true +//----------------------------------------------------------------------------- +void KeyValues::UsesEscapeSequences(bool state) +{ + m_bHasEscapeSequences = state; +} + + +//----------------------------------------------------------------------------- +// Purpose: Load keyValues from disk +//----------------------------------------------------------------------------- +bool KeyValues::LoadFromFile( IBaseFileSystem *filesystem, const char *resourceName, const char *pathID, GetSymbolProc_t pfnEvaluateSymbolProc ) +{ + Assert(filesystem); +#ifndef _LINUX + Assert( IsX360() || ( IsPC() && _heapchk() == _HEAPOK ) ); +#endif + + FileHandle_t f = filesystem->Open(resourceName, "rb", pathID); + if ( !f ) + return false; + + s_LastFileLoadingFrom = (char*)resourceName; + + // load file into a null-terminated buffer + int fileSize = filesystem->Size( f ); + unsigned bufSize = ((IFileSystem *)filesystem)->GetOptimalReadSize( f, fileSize + 1 ); + + char *buffer = (char*)((IFileSystem *)filesystem)->AllocOptimalReadBuffer( f, bufSize ); + Assert( buffer ); + + // read into local buffer + bool bRetOK = ( ((IFileSystem *)filesystem)->ReadEx( buffer, bufSize, fileSize, f ) != 0 ); + + filesystem->Close( f ); // close file after reading + + if ( bRetOK ) + { + buffer[fileSize] = 0; // null terminate file as EOF + bRetOK = LoadFromBuffer( resourceName, buffer, filesystem, pathID, pfnEvaluateSymbolProc); + } + + ((IFileSystem *)filesystem)->FreeOptimalReadBuffer( buffer ); + + return bRetOK; +} + +//----------------------------------------------------------------------------- +// Purpose: Save the keyvalues to disk +// Creates the path to the file if it doesn't exist +//----------------------------------------------------------------------------- +bool KeyValues::SaveToFile( IBaseFileSystem *filesystem, const char *resourceName, const char *pathID ) +{ + // create a write file + FileHandle_t f = filesystem->Open(resourceName, "wb", pathID); + + if ( f == FILESYSTEM_INVALID_HANDLE ) + { + DevMsg(1, "KeyValues::SaveToFile: couldn't open file \"%s\" in path \"%s\".\n", + resourceName?resourceName:"NULL", pathID?pathID:"NULL" ); + return false; + } + + RecursiveSaveToFile(filesystem, f, NULL, 0); + filesystem->Close(f); + + return true; +} + +//----------------------------------------------------------------------------- +// Purpose: Write out a set of indenting +//----------------------------------------------------------------------------- +void KeyValues::WriteIndents( IBaseFileSystem *filesystem, FileHandle_t f, CUtlBuffer *pBuf, int indentLevel ) +{ + for ( int i = 0; i < indentLevel; i++ ) + { + INTERNALWRITE( "\t", 1 ); + } +} + +//----------------------------------------------------------------------------- +// Purpose: Write out a string where we convert the double quotes to backslash double quote +//----------------------------------------------------------------------------- +void KeyValues::WriteConvertedString( IBaseFileSystem *filesystem, FileHandle_t f, CUtlBuffer *pBuf, const char *pszString ) +{ + // handle double quote chars within the string + // the worst possible case is that the whole string is quotes + int len = Q_strlen(pszString); + char *convertedString = (char *) _alloca ((len + 1) * sizeof(char) * 2); + int j=0; + for (int i=0; i <= len; i++) + { + if (pszString[i] == '\"') + { + convertedString[j] = '\\'; + j++; + } + else if ( m_bHasEscapeSequences && pszString[i] == '\\' ) + { + convertedString[j] = '\\'; + j++; + } + convertedString[j] = pszString[i]; + j++; + } + + INTERNALWRITE(convertedString, strlen(convertedString)); +} + + +void KeyValues::InternalWrite( IBaseFileSystem *filesystem, FileHandle_t f, CUtlBuffer *pBuf, const void *pData, int len ) +{ + if ( filesystem ) + { + filesystem->Write( pData, len, f ); + } + + if ( pBuf ) + { + pBuf->Put( pData, len ); + } +} + + +//----------------------------------------------------------------------------- +// Purpose: Save keyvalues from disk, if subkey values are detected, calls +// itself to save those +//----------------------------------------------------------------------------- +void KeyValues::RecursiveSaveToFile( IBaseFileSystem *filesystem, FileHandle_t f, CUtlBuffer *pBuf, int indentLevel ) +{ + // write header + WriteIndents( filesystem, f, pBuf, indentLevel ); + INTERNALWRITE("\"", 1); + WriteConvertedString(filesystem, f, pBuf, GetName()); + INTERNALWRITE("\"\n", 2); + WriteIndents( filesystem, f, pBuf, indentLevel ); + INTERNALWRITE("{\n", 2); + + // loop through all our keys writing them to disk + for ( KeyValues *dat = m_pSub; dat != NULL; dat = dat->m_pPeer ) + { + if ( dat->m_pSub ) + { + dat->RecursiveSaveToFile( filesystem, f, pBuf, indentLevel + 1 ); + } + else + { + // only write non-empty keys + + switch (dat->m_iDataType) + { + case TYPE_STRING: + { + if (dat->m_sValue && *(dat->m_sValue)) + { + WriteIndents(filesystem, f, pBuf, indentLevel + 1); + INTERNALWRITE("\"", 1); + WriteConvertedString(filesystem, f, pBuf, dat->GetName()); + INTERNALWRITE("\"\t\t\"", 4); + + WriteConvertedString(filesystem, f, pBuf, dat->m_sValue); + + INTERNALWRITE("\"\n", 2); + } + break; + } + case TYPE_WSTRING: + { +#ifdef _WIN32 + if ( dat->m_wsValue ) + { + static char buf[KEYVALUES_TOKEN_SIZE]; + // make sure we have enough space + Assert(::WideCharToMultiByte(CP_UTF8, 0, dat->m_wsValue, -1, NULL, 0, NULL, NULL) < KEYVALUES_TOKEN_SIZE); + int result = ::WideCharToMultiByte(CP_UTF8, 0, dat->m_wsValue, -1, buf, KEYVALUES_TOKEN_SIZE, NULL, NULL); + if (result) + { + WriteIndents(filesystem, f, pBuf, indentLevel + 1); + INTERNALWRITE("\"", 1); + INTERNALWRITE(dat->GetName(), Q_strlen(dat->GetName())); + INTERNALWRITE("\"\t\t\"", 4); + + WriteConvertedString(filesystem, f, pBuf, buf); + + INTERNALWRITE("\"\n", 2); + } + } +#endif + break; + } + + case TYPE_INT: + { + WriteIndents(filesystem, f, pBuf, indentLevel + 1); + INTERNALWRITE("\"", 1); + INTERNALWRITE(dat->GetName(), Q_strlen(dat->GetName())); + INTERNALWRITE("\"\t\t\"", 4); + + char buf[32]; + Q_snprintf(buf, sizeof( buf ), "%d", dat->m_iValue); + + INTERNALWRITE(buf, Q_strlen(buf)); + INTERNALWRITE("\"\n", 2); + break; + } + + case TYPE_UINT64: + { + WriteIndents(filesystem, f, pBuf, indentLevel + 1); + INTERNALWRITE("\"", 1); + INTERNALWRITE(dat->GetName(), Q_strlen(dat->GetName())); + INTERNALWRITE("\"\t\t\"", 4); + + char buf[32]; + // write "0x" + 16 char 0-padded hex encoded 64 bit value + Q_snprintf( buf, sizeof( buf ), "0x%016llX", *( (uint64 *)dat->m_sValue ) ); + + INTERNALWRITE(buf, Q_strlen(buf)); + INTERNALWRITE("\"\n", 2); + break; + } + + case TYPE_FLOAT: + { + WriteIndents(filesystem, f, pBuf, indentLevel + 1); + INTERNALWRITE("\"", 1); + INTERNALWRITE(dat->GetName(), Q_strlen(dat->GetName())); + INTERNALWRITE("\"\t\t\"", 4); + + char buf[48]; + Q_snprintf(buf, sizeof( buf ), "%f", dat->m_flValue); + + INTERNALWRITE(buf, Q_strlen(buf)); + INTERNALWRITE("\"\n", 2); + break; + } + case TYPE_COLOR: + DevMsg(1, "KeyValues::RecursiveSaveToFile: TODO, missing code for TYPE_COLOR.\n"); + break; + + default: + break; + } + } + } + + // write tail + WriteIndents(filesystem, f, pBuf, indentLevel); + INTERNALWRITE("}\n", 2); +} + +//----------------------------------------------------------------------------- +// Purpose: looks up a key by symbol name +//----------------------------------------------------------------------------- +KeyValues *KeyValues::FindKey(HKeySymbol keySymbol) const +{ + for (KeyValues *dat = m_pSub; dat != NULL; dat = dat->m_pPeer) + { + if (dat->m_iKeyName == keySymbol) + return dat; + } + + return NULL; +} + +//----------------------------------------------------------------------------- +// Purpose: Find a keyValue, create it if it is not found. +// Set bCreate to true to create the key if it doesn't already exist +// (which ensures a valid pointer will be returned) +//----------------------------------------------------------------------------- +KeyValues *KeyValues::FindKey(const char *keyName, bool bCreate) +{ + // return the current key if a NULL subkey is asked for + if (!keyName || !keyName[0]) + return this; + + // look for '/' characters deliminating sub fields + char szBuf[256]; + const char *subStr = strchr(keyName, '/'); + const char *searchStr = keyName; + + // pull out the substring if it exists + if (subStr) + { + int size = subStr - keyName; + Q_memcpy( szBuf, keyName, size ); + szBuf[size] = 0; + searchStr = szBuf; + } + + // lookup the symbol for the search string + HKeySymbol iSearchStr = KeyValuesSystem()->GetSymbolForString( searchStr, bCreate ); + if ( iSearchStr == INVALID_KEY_SYMBOL ) + { + // not found, couldn't possibly be in key value list + return NULL; + } + + KeyValues *lastItem = NULL; + KeyValues *dat; + // find the searchStr in the current peer list + for (dat = m_pSub; dat != NULL; dat = dat->m_pPeer) + { + lastItem = dat; // record the last item looked at (for if we need to append to the end of the list) + + // symbol compare + if (dat->m_iKeyName == iSearchStr) + { + break; + } + } + + if ( !dat && m_pChain ) + { + dat = m_pChain->FindKey(keyName, false); + } + + // make sure a key was found + if (!dat) + { + if (bCreate) + { + // we need to create a new key + dat = new KeyValues( searchStr ); +// Assert(dat != NULL); + + // insert new key at end of list + if (lastItem) + { + lastItem->m_pPeer = dat; + } + else + { + m_pSub = dat; + } + dat->m_pPeer = NULL; + + // a key graduates to be a submsg as soon as it's m_pSub is set + // this should be the only place m_pSub is set + m_iDataType = TYPE_NONE; + } + else + { + return NULL; + } + } + + // if we've still got a subStr we need to keep looking deeper in the tree + if ( subStr ) + { + // recursively chain down through the paths in the string + return dat->FindKey(subStr + 1, bCreate); + } + + return dat; +} + +//----------------------------------------------------------------------------- +// Purpose: Create a new key, with an autogenerated name. +// Name is guaranteed to be an integer, of value 1 higher than the highest +// other integer key name +//----------------------------------------------------------------------------- +KeyValues *KeyValues::CreateNewKey() +{ + int newID = 1; + + // search for any key with higher values + for (KeyValues *dat = m_pSub; dat != NULL; dat = dat->m_pPeer) + { + // case-insensitive string compare + int val = atoi(dat->GetName()); + if (newID <= val) + { + newID = val + 1; + } + } + + char buf[12]; + Q_snprintf( buf, sizeof(buf), "%d", newID ); + + return CreateKey( buf ); +} + + +//----------------------------------------------------------------------------- +// Create a key +//----------------------------------------------------------------------------- +KeyValues* KeyValues::CreateKey( const char *keyName ) +{ + // key wasn't found so just create a new one + KeyValues* dat = new KeyValues( keyName ); + + dat->UsesEscapeSequences( m_bHasEscapeSequences != 0 ); // use same format as parent does + + // add into subkey list + AddSubKey( dat ); + + return dat; +} + + +//----------------------------------------------------------------------------- +// Adds a subkey. Make sure the subkey isn't a child of some other keyvalues +//----------------------------------------------------------------------------- +void KeyValues::AddSubKey( KeyValues *pSubkey ) +{ + // Make sure the subkey isn't a child of some other keyvalues + Assert( pSubkey->m_pPeer == NULL ); + + // add into subkey list + if ( m_pSub == NULL ) + { + m_pSub = pSubkey; + } + else + { + KeyValues *pTempDat = m_pSub; + while ( pTempDat->GetNextKey() != NULL ) + { + pTempDat = pTempDat->GetNextKey(); + } + + pTempDat->SetNextKey( pSubkey ); + } +} + + + +//----------------------------------------------------------------------------- +// Purpose: Remove a subkey from the list +//----------------------------------------------------------------------------- +void KeyValues::RemoveSubKey(KeyValues *subKey) +{ + if (!subKey) + return; + + // check the list pointer + if (m_pSub == subKey) + { + m_pSub = subKey->m_pPeer; + } + else + { + // look through the list + KeyValues *kv = m_pSub; + while (kv->m_pPeer) + { + if (kv->m_pPeer == subKey) + { + kv->m_pPeer = subKey->m_pPeer; + break; + } + + kv = kv->m_pPeer; + } + } + + subKey->m_pPeer = NULL; +} + + + +//----------------------------------------------------------------------------- +// Purpose: Return the first subkey in the list +//----------------------------------------------------------------------------- +KeyValues *KeyValues::GetFirstSubKey() +{ + return m_pSub; +} + +//----------------------------------------------------------------------------- +// Purpose: Return the next subkey +//----------------------------------------------------------------------------- +KeyValues *KeyValues::GetNextKey() +{ + return m_pPeer; +} + +//----------------------------------------------------------------------------- +// Purpose: Sets this key's peer to the KeyValues passed in +//----------------------------------------------------------------------------- +void KeyValues::SetNextKey( KeyValues *pDat ) +{ + m_pPeer = pDat; +} + + +KeyValues* KeyValues::GetFirstTrueSubKey() +{ + KeyValues *pRet = m_pSub; + while ( pRet && pRet->m_iDataType != TYPE_NONE ) + pRet = pRet->m_pPeer; + + return pRet; +} + +KeyValues* KeyValues::GetNextTrueSubKey() +{ + KeyValues *pRet = m_pPeer; + while ( pRet && pRet->m_iDataType != TYPE_NONE ) + pRet = pRet->m_pPeer; + + return pRet; +} + +KeyValues* KeyValues::GetFirstValue() +{ + KeyValues *pRet = m_pSub; + while ( pRet && pRet->m_iDataType == TYPE_NONE ) + pRet = pRet->m_pPeer; + + return pRet; +} + +KeyValues* KeyValues::GetNextValue() +{ + KeyValues *pRet = m_pPeer; + while ( pRet && pRet->m_iDataType == TYPE_NONE ) + pRet = pRet->m_pPeer; + + return pRet; +} + + +//----------------------------------------------------------------------------- +// Purpose: Get the integer value of a keyName. Default value is returned +// if the keyName can't be found. +//----------------------------------------------------------------------------- +int KeyValues::GetInt( const char *keyName, int defaultValue ) +{ + KeyValues *dat = FindKey( keyName, false ); + if ( dat ) + { + switch ( dat->m_iDataType ) + { + case TYPE_STRING: + return atoi(dat->m_sValue); + case TYPE_WSTRING: +#ifdef _WIN32 + return _wtoi(dat->m_wsValue); +#else + DevMsg( "TODO: implement _wtoi\n"); + return 0; +#endif + case TYPE_FLOAT: + return (int)dat->m_flValue; + case TYPE_UINT64: + // can't convert, since it would lose data + Assert(0); + return 0; + case TYPE_INT: + case TYPE_PTR: + default: + return dat->m_iValue; + }; + } + return defaultValue; +} + +//----------------------------------------------------------------------------- +// Purpose: Get the integer value of a keyName. Default value is returned +// if the keyName can't be found. +//----------------------------------------------------------------------------- +uint64 KeyValues::GetUint64( const char *keyName, uint64 defaultValue ) +{ + KeyValues *dat = FindKey( keyName, false ); + if ( dat ) + { + switch ( dat->m_iDataType ) + { + case TYPE_STRING: + return atoi(dat->m_sValue); + case TYPE_WSTRING: +#ifdef _WIN32 + return _wtoi(dat->m_wsValue); +#else + AssertFatal( 0 ); + return 0; +#endif + case TYPE_FLOAT: + return (int)dat->m_flValue; + case TYPE_UINT64: + return *((uint64 *)dat->m_sValue); + case TYPE_INT: + case TYPE_PTR: + default: + return dat->m_iValue; + }; + } + return defaultValue; +} + +//----------------------------------------------------------------------------- +// Purpose: Get the pointer value of a keyName. Default value is returned +// if the keyName can't be found. +//----------------------------------------------------------------------------- +void *KeyValues::GetPtr( const char *keyName, void *defaultValue ) +{ + KeyValues *dat = FindKey( keyName, false ); + if ( dat ) + { + switch ( dat->m_iDataType ) + { + case TYPE_PTR: + return dat->m_pValue; + + case TYPE_WSTRING: + case TYPE_STRING: + case TYPE_FLOAT: + case TYPE_INT: + case TYPE_UINT64: + default: + return NULL; + }; + } + return defaultValue; +} + +//----------------------------------------------------------------------------- +// Purpose: Get the float value of a keyName. Default value is returned +// if the keyName can't be found. +//----------------------------------------------------------------------------- +float KeyValues::GetFloat( const char *keyName, float defaultValue ) +{ + KeyValues *dat = FindKey( keyName, false ); + if ( dat ) + { + switch ( dat->m_iDataType ) + { + case TYPE_STRING: + return (float)atof(dat->m_sValue); + case TYPE_WSTRING: +#ifdef _WIN32 + return (float) _wtof(dat->m_wsValue); // no wtof +#else + Assert(0); + return 0.; +#endif + case TYPE_FLOAT: + return dat->m_flValue; + case TYPE_INT: + return (float)dat->m_iValue; + case TYPE_UINT64: + return (float)(*((uint64 *)dat->m_sValue)); + case TYPE_PTR: + default: + return 0.0f; + }; + } + return defaultValue; +} + +//----------------------------------------------------------------------------- +// Purpose: Get the string pointer of a keyName. Default value is returned +// if the keyName can't be found. +//----------------------------------------------------------------------------- +const char *KeyValues::GetString( const char *keyName, const char *defaultValue ) +{ + KeyValues *dat = FindKey( keyName, false ); + if ( dat ) + { + // convert the data to string form then return it + char buf[64]; + switch ( dat->m_iDataType ) + { + case TYPE_FLOAT: + Q_snprintf( buf, sizeof( buf ), "%f", dat->m_flValue ); + SetString( keyName, buf ); + break; + case TYPE_INT: + case TYPE_PTR: + Q_snprintf( buf, sizeof( buf ), "%d", dat->m_iValue ); + SetString( keyName, buf ); + break; + case TYPE_UINT64: + Q_snprintf( buf, sizeof( buf ), "%llu", *((uint64 *)(dat->m_sValue)) ); + SetString( keyName, buf ); + break; + + case TYPE_WSTRING: + { +#ifdef _WIN32 + // convert the string to char *, set it for future use, and return it + char wideBuf[512]; + int result = ::WideCharToMultiByte(CP_UTF8, 0, dat->m_wsValue, -1, wideBuf, 512, NULL, NULL); + if ( result ) + { + // note: this will copy wideBuf + SetString( keyName, wideBuf ); + } + else + { + return defaultValue; + } +#endif + break; + } + case TYPE_STRING: + break; + default: + return defaultValue; + }; + + return dat->m_sValue; + } + return defaultValue; +} + +const wchar_t *KeyValues::GetWString( const char *keyName, const wchar_t *defaultValue) +{ +#ifdef _WIN32 + KeyValues *dat = FindKey( keyName, false ); + if ( dat ) + { + wchar_t wbuf[64]; + switch ( dat->m_iDataType ) + { + case TYPE_FLOAT: + swprintf(wbuf, L"%f", dat->m_flValue); + SetWString( keyName, wbuf); + break; + case TYPE_INT: + case TYPE_PTR: + swprintf( wbuf, L"%d", dat->m_iValue ); + SetWString( keyName, wbuf ); + break; + case TYPE_UINT64: + { + swprintf( wbuf, L"%I64i", *((uint64 *)(dat->m_sValue)) ); + SetWString( keyName, wbuf ); + } + break; + + case TYPE_WSTRING: + break; + case TYPE_STRING: + { + static wchar_t wbuftemp[512]; // convert to wide + int result = ::MultiByteToWideChar(CP_UTF8, 0, dat->m_sValue, -1, wbuftemp, 512); + if ( result ) + { + SetWString( keyName, wbuftemp); + } + else + { + return defaultValue; + } + break; + } + default: + return defaultValue; + }; + + return (const wchar_t* )dat->m_wsValue; + } +#else + DevMsg("TODO: implement wide char functions\n"); +#endif + return defaultValue; +} + +//----------------------------------------------------------------------------- +// Purpose: Gets a color +//----------------------------------------------------------------------------- +Color KeyValues::GetColor( const char *keyName, const Color &defaultColor ) +{ + Color color = defaultColor; + KeyValues *dat = FindKey( keyName, false ); + if ( dat ) + { + if ( dat->m_iDataType == TYPE_COLOR ) + { + color[0] = dat->m_Color[0]; + color[1] = dat->m_Color[1]; + color[2] = dat->m_Color[2]; + color[3] = dat->m_Color[3]; + } + else if ( dat->m_iDataType == TYPE_FLOAT ) + { + color[0] = (unsigned char)dat->m_flValue; + } + else if ( dat->m_iDataType == TYPE_INT ) + { + color[0] = dat->m_iValue; + } + else if ( dat->m_iDataType == TYPE_STRING ) + { + // parse the colors out of the string + float a, b, c, d; + sscanf(dat->m_sValue, "%f %f %f %f", &a, &b, &c, &d); + color[0] = (unsigned char)a; + color[1] = (unsigned char)b; + color[2] = (unsigned char)c; + color[3] = (unsigned char)d; + } + } + return color; +} + +//----------------------------------------------------------------------------- +// Purpose: Sets a color +//----------------------------------------------------------------------------- +void KeyValues::SetColor( const char *keyName, Color value) +{ + KeyValues *dat = FindKey( keyName, true ); + + if ( dat ) + { + dat->m_iDataType = TYPE_COLOR; + dat->m_Color[0] = value[0]; + dat->m_Color[1] = value[1]; + dat->m_Color[2] = value[2]; + dat->m_Color[3] = value[3]; + } +} + +void KeyValues::SetStringValue( char const *strValue ) +{ + // delete the old value + delete [] m_sValue; + // make sure we're not storing the WSTRING - as we're converting over to STRING + delete [] m_wsValue; + m_wsValue = NULL; + + if (!strValue) + { + // ensure a valid value + strValue = ""; + } + + // allocate memory for the new value and copy it in + int len = Q_strlen( strValue ); + m_sValue = new char[len + 1]; + Q_memcpy( m_sValue, strValue, len+1 ); + + m_iDataType = TYPE_STRING; +} + +//----------------------------------------------------------------------------- +// Purpose: Set the string value of a keyName. +//----------------------------------------------------------------------------- +void KeyValues::SetString( const char *keyName, const char *value ) +{ + KeyValues *dat = FindKey( keyName, true ); + + if ( dat ) + { + // delete the old value + delete [] dat->m_sValue; + // make sure we're not storing the WSTRING - as we're converting over to STRING + delete [] dat->m_wsValue; + dat->m_wsValue = NULL; + + if (!value) + { + // ensure a valid value + value = ""; + } + + // allocate memory for the new value and copy it in + int len = Q_strlen( value ); + dat->m_sValue = new char[len + 1]; + Q_memcpy( dat->m_sValue, value, len+1 ); + + dat->m_iDataType = TYPE_STRING; + } +} + +//----------------------------------------------------------------------------- +// Purpose: Set the string value of a keyName. +//----------------------------------------------------------------------------- +void KeyValues::SetWString( const char *keyName, const wchar_t *value ) +{ + KeyValues *dat = FindKey( keyName, true ); + if ( dat ) + { + // delete the old value + delete [] dat->m_wsValue; + // make sure we're not storing the STRING - as we're converting over to WSTRING + delete [] dat->m_sValue; + dat->m_sValue = NULL; + + if (!value) + { + // ensure a valid value + value = L""; + } + + // allocate memory for the new value and copy it in + int len = wcslen( value ); + dat->m_wsValue = new wchar_t[len + 1]; + Q_memcpy( dat->m_wsValue, value, (len+1) * sizeof(wchar_t) ); + + dat->m_iDataType = TYPE_WSTRING; + } +} + +//----------------------------------------------------------------------------- +// Purpose: Set the integer value of a keyName. +//----------------------------------------------------------------------------- +void KeyValues::SetInt( const char *keyName, int value ) +{ + KeyValues *dat = FindKey( keyName, true ); + + if ( dat ) + { + dat->m_iValue = value; + dat->m_iDataType = TYPE_INT; + } +} + +//----------------------------------------------------------------------------- +// Purpose: Set the integer value of a keyName. +//----------------------------------------------------------------------------- +void KeyValues::SetUint64( const char *keyName, uint64 value ) +{ + KeyValues *dat = FindKey( keyName, true ); + + if ( dat ) + { + // delete the old value + delete [] dat->m_sValue; + // make sure we're not storing the WSTRING - as we're converting over to STRING + delete [] dat->m_wsValue; + dat->m_wsValue = NULL; + + dat->m_sValue = new char[sizeof(uint64)]; + *((uint64 *)dat->m_sValue) = value; + dat->m_iDataType = TYPE_UINT64; + } +} + +//----------------------------------------------------------------------------- +// Purpose: Set the float value of a keyName. +//----------------------------------------------------------------------------- +void KeyValues::SetFloat( const char *keyName, float value ) +{ + KeyValues *dat = FindKey( keyName, true ); + + if ( dat ) + { + dat->m_flValue = value; + dat->m_iDataType = TYPE_FLOAT; + } +} + +void KeyValues::SetName( const char * setName ) +{ + m_iKeyName = KeyValuesSystem()->GetSymbolForString( setName ); +} + +//----------------------------------------------------------------------------- +// Purpose: Set the pointer value of a keyName. +//----------------------------------------------------------------------------- +void KeyValues::SetPtr( const char *keyName, void *value ) +{ + KeyValues *dat = FindKey( keyName, true ); + + if ( dat ) + { + dat->m_pValue = value; + dat->m_iDataType = TYPE_PTR; + } +} + +void KeyValues::RecursiveCopyKeyValues( KeyValues& src ) +{ + // garymcthack - need to check this code for possible buffer overruns. + + m_iKeyName = src.GetNameSymbol(); + + if( !src.m_pSub ) + { + m_iDataType = src.m_iDataType; + char buf[256]; + switch( src.m_iDataType ) + { + case TYPE_NONE: + break; + case TYPE_STRING: + if( src.m_sValue ) + { + int len = Q_strlen(src.m_sValue) + 1; + m_sValue = new char[len]; + Q_strncpy( m_sValue, src.m_sValue, len ); + } + break; + case TYPE_INT: + { + m_iValue = src.m_iValue; + Q_snprintf( buf,sizeof(buf), "%d", m_iValue ); + int len = Q_strlen(buf) + 1; + m_sValue = new char[len]; + Q_strncpy( m_sValue, buf, len ); + } + break; + case TYPE_FLOAT: + { + m_flValue = src.m_flValue; + Q_snprintf( buf,sizeof(buf), "%f", m_flValue ); + int len = Q_strlen(buf) + 1; + m_sValue = new char[len]; + Q_strncpy( m_sValue, buf, len ); + } + break; + case TYPE_PTR: + { + m_pValue = src.m_pValue; + } + break; + case TYPE_UINT64: + { + m_sValue = new char[sizeof(uint64)]; + Q_memcpy( m_sValue, src.m_sValue, sizeof(uint64) ); + } + break; + case TYPE_COLOR: + { + m_Color[0] = src.m_Color[0]; + m_Color[1] = src.m_Color[1]; + m_Color[2] = src.m_Color[2]; + m_Color[3] = src.m_Color[3]; + } + break; + + default: + { + // do nothing . .what the heck is this? + Assert( 0 ); + } + break; + } + + } +#if 0 + KeyValues *pDst = this; + for ( KeyValues *pSrc = src.m_pSub; pSrc; pSrc = pSrc->m_pPeer ) + { + if ( pSrc->m_pSub ) + { + pDst->m_pSub = new KeyValues( pSrc->m_pSub->getName() ); + pDst->m_pSub->RecursiveCopyKeyValues( *pSrc->m_pSub ); + } + else + { + // copy non-empty keys + if ( pSrc->m_sValue && *(pSrc->m_sValue) ) + { + pDst->m_pPeer = new KeyValues( + } + } + } +#endif + + // Handle the immediate child + if( src.m_pSub ) + { + m_pSub = new KeyValues( NULL ); + m_pSub->RecursiveCopyKeyValues( *src.m_pSub ); + } + + // Handle the immediate peer + if( src.m_pPeer ) + { + m_pPeer = new KeyValues( NULL ); + m_pPeer->RecursiveCopyKeyValues( *src.m_pPeer ); + } +} + +KeyValues& KeyValues::operator=( KeyValues& src ) +{ + RemoveEverything(); + Init(); // reset all values + RecursiveCopyKeyValues( src ); + return *this; +} + + +//----------------------------------------------------------------------------- +// Make a new copy of all subkeys, add them all to the passed-in keyvalues +//----------------------------------------------------------------------------- +void KeyValues::CopySubkeys( KeyValues *pParent ) const +{ + // recursively copy subkeys + // Also maintain ordering.... + KeyValues *pPrev = NULL; + for ( KeyValues *sub = m_pSub; sub != NULL; sub = sub->m_pPeer ) + { + // take a copy of the subkey + KeyValues *dat = sub->MakeCopy(); + + // add into subkey list + if (pPrev) + { + pPrev->m_pPeer = dat; + } + else + { + pParent->m_pSub = dat; + } + dat->m_pPeer = NULL; + pPrev = dat; + } +} + + +//----------------------------------------------------------------------------- +// Purpose: Makes a copy of the whole key-value pair set +//----------------------------------------------------------------------------- +KeyValues *KeyValues::MakeCopy( void ) const +{ + KeyValues *newKeyValue = new KeyValues(GetName()); + + // copy data + newKeyValue->m_iDataType = m_iDataType; + switch ( m_iDataType ) + { + case TYPE_STRING: + { + if ( m_sValue ) + { + int len = Q_strlen( m_sValue ); + Assert( !newKeyValue->m_sValue ); + newKeyValue->m_sValue = new char[len + 1]; + Q_memcpy( newKeyValue->m_sValue, m_sValue, len+1 ); + } + } + break; + case TYPE_WSTRING: + { + if ( m_wsValue ) + { + int len = wcslen( m_wsValue ); + newKeyValue->m_wsValue = new wchar_t[len+1]; + Q_memcpy( newKeyValue->m_wsValue, m_wsValue, (len+1)*sizeof(wchar_t)); + } + } + break; + + case TYPE_INT: + newKeyValue->m_iValue = m_iValue; + break; + + case TYPE_FLOAT: + newKeyValue->m_flValue = m_flValue; + break; + + case TYPE_PTR: + newKeyValue->m_pValue = m_pValue; + break; + + case TYPE_COLOR: + newKeyValue->m_Color[0] = m_Color[0]; + newKeyValue->m_Color[1] = m_Color[1]; + newKeyValue->m_Color[2] = m_Color[2]; + newKeyValue->m_Color[3] = m_Color[3]; + break; + + case TYPE_UINT64: + newKeyValue->m_sValue = new char[sizeof(uint64)]; + Q_memcpy( newKeyValue->m_sValue, m_sValue, sizeof(uint64) ); + break; + }; + + // recursively copy subkeys + CopySubkeys( newKeyValue ); + return newKeyValue; +} + + +//----------------------------------------------------------------------------- +// Purpose: Check if a keyName has no value assigned to it. +//----------------------------------------------------------------------------- +bool KeyValues::IsEmpty(const char *keyName) +{ + KeyValues *dat = FindKey(keyName, false); + if (!dat) + return true; + + if (dat->m_iDataType == TYPE_NONE && dat->m_pSub == NULL) + return true; + + return false; +} + +//----------------------------------------------------------------------------- +// Purpose: Clear out all subkeys, and the current value +//----------------------------------------------------------------------------- +void KeyValues::Clear( void ) +{ + delete m_pSub; + m_pSub = NULL; + m_iDataType = TYPE_NONE; +} + +//----------------------------------------------------------------------------- +// Purpose: Get the data type of the value stored in a keyName +//----------------------------------------------------------------------------- +KeyValues::types_t KeyValues::GetDataType(const char *keyName) +{ + KeyValues *dat = FindKey(keyName, false); + if (dat) + return (types_t)dat->m_iDataType; + + return TYPE_NONE; +} + +//----------------------------------------------------------------------------- +// Purpose: Deletion, ensures object gets deleted from correct heap +//----------------------------------------------------------------------------- +void KeyValues::deleteThis() +{ + delete this; +} + +//----------------------------------------------------------------------------- +// Purpose: +// Input : includedKeys - +//----------------------------------------------------------------------------- +void KeyValues::AppendIncludedKeys( CUtlVector< KeyValues * >& includedKeys ) +{ + // Append any included keys, too... + int includeCount = includedKeys.Count(); + int i; + for ( i = 0; i < includeCount; i++ ) + { + KeyValues *kv = includedKeys[ i ]; + Assert( kv ); + + KeyValues *insertSpot = this; + while ( insertSpot->GetNextKey() ) + { + insertSpot = insertSpot->GetNextKey(); + } + + insertSpot->SetNextKey( kv ); + } +} + +void KeyValues::ParseIncludedKeys( char const *resourceName, const char *filetoinclude, + IBaseFileSystem* pFileSystem, const char *pPathID, CUtlVector< KeyValues * >& includedKeys, + GetSymbolProc_t pfnEvaluateSymbolProc ) +{ + Assert( resourceName ); + Assert( filetoinclude ); + Assert( pFileSystem ); + + // Load it... + if ( !pFileSystem ) + { + return; + } + + // Get relative subdirectory + char fullpath[ 512 ]; + Q_strncpy( fullpath, resourceName, sizeof( fullpath ) ); + + // Strip off characters back to start or first / + bool done = false; + int len = Q_strlen( fullpath ); + while ( !done ) + { + if ( len <= 0 ) + { + break; + } + + if ( fullpath[ len - 1 ] == '\\' || + fullpath[ len - 1 ] == '/' ) + { + break; + } + + // zero it + fullpath[ len - 1 ] = 0; + --len; + } + + // Append included file + Q_strncat( fullpath, filetoinclude, sizeof( fullpath ), COPY_ALL_CHARACTERS ); + + KeyValues *newKV = new KeyValues( fullpath ); + + // CUtlSymbol save = s_CurrentFileSymbol; // did that had any use ??? + + newKV->UsesEscapeSequences( m_bHasEscapeSequences != 0 ); // use same format as parent + + if ( newKV->LoadFromFile( pFileSystem, fullpath, pPathID, pfnEvaluateSymbolProc ) ) + { + includedKeys.AddToTail( newKV ); + } + else + { + DevMsg( "KeyValues::ParseIncludedKeys: Couldn't load included keyvalue file %s\n", fullpath ); + newKV->deleteThis(); + } + + // s_CurrentFileSymbol = save; +} + +//----------------------------------------------------------------------------- +// Purpose: +// Input : baseKeys - +//----------------------------------------------------------------------------- +void KeyValues::MergeBaseKeys( CUtlVector< KeyValues * >& baseKeys ) +{ + int includeCount = baseKeys.Count(); + int i; + for ( i = 0; i < includeCount; i++ ) + { + KeyValues *kv = baseKeys[ i ]; + Assert( kv ); + + RecursiveMergeKeyValues( kv ); + } +} + +//----------------------------------------------------------------------------- +// Purpose: +// Input : baseKV - keyvalues we're basing ourselves on +//----------------------------------------------------------------------------- +void KeyValues::RecursiveMergeKeyValues( KeyValues *baseKV ) +{ + // Merge ourselves + // we always want to keep our value, so nothing to do here + + // Now merge our children + for ( KeyValues *baseChild = baseKV->m_pSub; baseChild != NULL; baseChild = baseChild->m_pPeer ) + { + // for each child in base, see if we have a matching kv + + bool bFoundMatch = false; + + // If we have a child by the same name, merge those keys + for ( KeyValues *newChild = m_pSub; newChild != NULL; newChild = newChild->m_pPeer ) + { + if ( !Q_strcmp( baseChild->GetName(), newChild->GetName() ) ) + { + newChild->RecursiveMergeKeyValues( baseChild ); + bFoundMatch = true; + break; + } + } + + // If not merged, append this key + if ( !bFoundMatch ) + { + KeyValues *dat = baseChild->MakeCopy(); + Assert( dat ); + AddSubKey( dat ); + } + } +} + +//----------------------------------------------------------------------------- +// Returns whether a keyvalues conditional evaluates to true or false +// Needs more flexibility with conditionals, checking convars would be nice. +//----------------------------------------------------------------------------- +bool KeyValues::EvaluateConditional( const char *str, GetSymbolProc_t pfnEvaluateSymbolProc ) +{ + bool bResult = false; + bool bXboxUI = IsX360(); + + if ( bXboxUI ) + { + bResult = !Q_stricmp( "[$X360]", str ); + } + else + { + bResult = !Q_stricmp( "[$WIN32]", str ); + } + + return bResult; +} + + +//----------------------------------------------------------------------------- +// Read from a buffer... +//----------------------------------------------------------------------------- +bool KeyValues::LoadFromBuffer( char const *resourceName, CUtlBuffer &buf, IBaseFileSystem* pFileSystem, const char *pPathID, GetSymbolProc_t pfnEvaluateSymbolProc ) +{ + KeyValues *pPreviousKey = NULL; + KeyValues *pCurrentKey = this; + CUtlVector< KeyValues * > includedKeys; + CUtlVector< KeyValues * > baseKeys; + bool wasQuoted; + bool wasConditional; + g_KeyValuesErrorStack.SetFilename( resourceName ); + do + { + bool bAccepted = true; + + // the first thing must be a key + const char *s = ReadToken( buf, wasQuoted, wasConditional ); + if ( !buf.IsValid() || !s || *s == 0 ) + break; + + if ( !Q_stricmp( s, "#include" ) ) // special include macro (not a key name) + { + s = ReadToken( buf, wasQuoted, wasConditional ); + // Name of subfile to load is now in s + + if ( !s || *s == 0 ) + { + g_KeyValuesErrorStack.ReportError("#include is NULL " ); + } + else + { + ParseIncludedKeys( resourceName, s, pFileSystem, pPathID, includedKeys, pfnEvaluateSymbolProc ); + } + + continue; + } + else if ( !Q_stricmp( s, "#base" ) ) + { + s = ReadToken( buf, wasQuoted, wasConditional ); + // Name of subfile to load is now in s + + if ( !s || *s == 0 ) + { + g_KeyValuesErrorStack.ReportError("#base is NULL " ); + } + else + { + ParseIncludedKeys( resourceName, s, pFileSystem, pPathID, baseKeys, pfnEvaluateSymbolProc ); + } + + continue; + } + + if ( !pCurrentKey ) + { + pCurrentKey = new KeyValues( s ); + Assert( pCurrentKey ); + + pCurrentKey->UsesEscapeSequences( m_bHasEscapeSequences != 0 ); // same format has parent use + + if ( pPreviousKey ) + { + pPreviousKey->SetNextKey( pCurrentKey ); + } + } + else + { + pCurrentKey->SetName( s ); + } + + // get the '{' + s = ReadToken( buf, wasQuoted, wasConditional ); + + if ( wasConditional ) + { + bAccepted = EvaluateConditional( s, pfnEvaluateSymbolProc ); + + // Now get the '{' + s = ReadToken( buf, wasQuoted, wasConditional ); + } + + if ( s && *s == '{' && !wasQuoted ) + { + // header is valid so load the file + pCurrentKey->RecursiveLoadFromBuffer( resourceName, buf, pfnEvaluateSymbolProc ); + } + else + { + g_KeyValuesErrorStack.ReportError("LoadFromBuffer: missing {" ); + } + + if ( !bAccepted ) + { + if ( pPreviousKey ) + { + pPreviousKey->SetNextKey( NULL ); + } + pCurrentKey->Clear(); + } + else + { + pPreviousKey = pCurrentKey; + pCurrentKey = NULL; + } + } while ( buf.IsValid() ); + + AppendIncludedKeys( includedKeys ); + { + // delete included keys! + int i; + for ( i = includedKeys.Count() - 1; i > 0; i-- ) + { + KeyValues *kv = includedKeys[ i ]; + kv->deleteThis(); + } + } + + MergeBaseKeys( baseKeys ); + { + // delete base keys! + int i; + for ( i = baseKeys.Count() - 1; i >= 0; i-- ) + { + KeyValues *kv = baseKeys[ i ]; + kv->deleteThis(); + } + } + + g_KeyValuesErrorStack.SetFilename( "" ); + + return true; +} + + +//----------------------------------------------------------------------------- +// Read from a buffer... +//----------------------------------------------------------------------------- +bool KeyValues::LoadFromBuffer( char const *resourceName, const char *pBuffer, IBaseFileSystem* pFileSystem, const char *pPathID, GetSymbolProc_t pfnEvaluateSymbolProc ) +{ + if ( !pBuffer ) + return true; + + int nLen = Q_strlen( pBuffer ); + CUtlBuffer buf( pBuffer, nLen, CUtlBuffer::READ_ONLY | CUtlBuffer::TEXT_BUFFER ); + return LoadFromBuffer( resourceName, buf, pFileSystem, pPathID, pfnEvaluateSymbolProc ); +} + +//----------------------------------------------------------------------------- +// Purpose: +//----------------------------------------------------------------------------- +void KeyValues::RecursiveLoadFromBuffer( char const *resourceName, CUtlBuffer &buf, GetSymbolProc_t pfnEvaluateSymbolProc ) +{ + CKeyErrorContext errorReport(this); + bool wasQuoted; + bool wasConditional; + // keep this out of the stack until a key is parsed + CKeyErrorContext errorKey( INVALID_KEY_SYMBOL ); + while ( 1 ) + { + bool bAccepted = true; + + // get the key name + const char * name = ReadToken( buf, wasQuoted, wasConditional ); + + if ( !name ) // EOF stop reading + { + g_KeyValuesErrorStack.ReportError("RecursiveLoadFromBuffer: got EOF instead of keyname" ); + break; + } + + if ( !*name ) // empty token, maybe "" or EOF + { + g_KeyValuesErrorStack.ReportError("RecursiveLoadFromBuffer: got empty keyname" ); + break; + } + + if ( *name == '}' && !wasQuoted ) // top level closed, stop reading + break; + + // Always create the key; note that this could potentially + // cause some duplication, but that's what we want sometimes + KeyValues *dat = CreateKey( name ); + + errorKey.Reset( dat->GetNameSymbol() ); + + // get the value + const char * value = ReadToken( buf, wasQuoted, wasConditional ); + + if ( wasConditional && value ) + { + bAccepted = EvaluateConditional( value, pfnEvaluateSymbolProc ); + + // get the real value + value = ReadToken( buf, wasQuoted, wasConditional ); + } + + if ( !value ) + { + g_KeyValuesErrorStack.ReportError("RecursiveLoadFromBuffer: got NULL key" ); + break; + } + + if ( *value == '}' && !wasQuoted ) + { + g_KeyValuesErrorStack.ReportError("RecursiveLoadFromBuffer: got } in key" ); + break; + } + + if ( *value == '{' && !wasQuoted ) + { + // this isn't a key, it's a section + errorKey.Reset( INVALID_KEY_SYMBOL ); + // sub value list + dat->RecursiveLoadFromBuffer( resourceName, buf, pfnEvaluateSymbolProc ); + } + else + { + if ( wasConditional ) + { + g_KeyValuesErrorStack.ReportError("RecursiveLoadFromBuffer: got conditional between key and value" ); + break; + } + + if (dat->m_sValue) + { + delete[] dat->m_sValue; + dat->m_sValue = NULL; + } + + int len = Q_strlen( value ); + + // Here, let's determine if we got a float or an int.... + char* pIEnd; // pos where int scan ended + char* pFEnd; // pos where float scan ended + const char* pSEnd = value + len ; // pos where token ends + + int ival = strtol( value, &pIEnd, 10 ); + float fval = (float)strtod( value, &pFEnd ); + + if ( *value == 0 ) + { + dat->m_iDataType = TYPE_STRING; + } + else if ( ( 18 == len ) && ( value[0] == '0' ) && ( value[1] == 'x' ) ) + { + // an 18-byte value prefixed with "0x" (followed by 16 hex digits) is an int64 value + int64 retVal = 0; + for( int i=2; i < 2 + 16; i++ ) + { + char digit = value[i]; + if ( digit >= 'a' ) + digit -= 'a' - ( '9' + 1 ); + else + if ( digit >= 'A' ) + digit -= 'A' - ( '9' + 1 ); + retVal = ( retVal * 16 ) + ( digit - '0' ); + } + dat->m_sValue = new char[sizeof(uint64)]; + *((uint64 *)dat->m_sValue) = retVal; + dat->m_iDataType = TYPE_UINT64; + } + else if ( (pFEnd > pIEnd) && (pFEnd == pSEnd) ) + { + dat->m_flValue = fval; + dat->m_iDataType = TYPE_FLOAT; + } + else if (pIEnd == pSEnd) + { + dat->m_iValue = ival; + dat->m_iDataType = TYPE_INT; + } + else + { + dat->m_iDataType = TYPE_STRING; + } + + if (dat->m_iDataType == TYPE_STRING) + { + // copy in the string information + dat->m_sValue = new char[len+1]; + Q_memcpy( dat->m_sValue, value, len+1 ); + } + + // Look ahead one token for a conditional tag + int prevPos = buf.TellGet(); + const char *peek = ReadToken( buf, wasQuoted, wasConditional ); + if ( wasConditional ) + { + bAccepted = EvaluateConditional( peek, pfnEvaluateSymbolProc ); + } + else + { + buf.SeekGet( CUtlBuffer::SEEK_HEAD, prevPos ); + } + } + + if ( !bAccepted ) + { + this->RemoveSubKey( dat ); + dat->deleteThis(); + dat = NULL; + } + } +} + + + +// writes KeyValue as binary data to buffer +bool KeyValues::WriteAsBinary( CUtlBuffer &buffer ) +{ + if ( buffer.IsText() ) // must be a binary buffer + return false; + + if ( !buffer.IsValid() ) // must be valid, no overflows etc + return false; + + // Write subkeys: + + // loop through all our peers + for ( KeyValues *dat = this; dat != NULL; dat = dat->m_pPeer ) + { + // write type + buffer.PutUnsignedChar( dat->m_iDataType ); + + // write name + buffer.PutString( dat->GetName() ); + + // write type + switch (dat->m_iDataType) + { + case TYPE_NONE: + { + dat->m_pSub->WriteAsBinary( buffer ); + break; + } + case TYPE_STRING: + { + if (dat->m_sValue && *(dat->m_sValue)) + { + buffer.PutString( dat->m_sValue ); + } + else + { + buffer.PutString( "" ); + } + break; + } + case TYPE_WSTRING: + { + Assert( !"TYPE_WSTRING" ); + break; + } + + case TYPE_INT: + { + buffer.PutInt( dat->m_iValue ); + break; + } + + case TYPE_UINT64: + { + buffer.PutDouble( *((double *)dat->m_sValue) ); + break; + } + + case TYPE_FLOAT: + { + buffer.PutFloat( dat->m_flValue ); + break; + } + case TYPE_COLOR: + { + buffer.PutUnsignedChar( dat->m_Color[0] ); + buffer.PutUnsignedChar( dat->m_Color[1] ); + buffer.PutUnsignedChar( dat->m_Color[2] ); + buffer.PutUnsignedChar( dat->m_Color[3] ); + break; + } + case TYPE_PTR: + { + buffer.PutPtr( dat->m_pValue ); + } + + default: + break; + } + } + + // write tail, marks end of peers + buffer.PutUnsignedChar( TYPE_NUMTYPES ); + + return buffer.IsValid(); +} + +// read KeyValues from binary buffer, returns true if parsing was successful +bool KeyValues::ReadAsBinary( CUtlBuffer &buffer ) +{ + if ( buffer.IsText() ) // must be a binary buffer + return false; + + if ( !buffer.IsValid() ) // must be valid, no overflows etc + return false; + + RemoveEverything(); // remove current content + Init(); // reset + + char token[KEYVALUES_TOKEN_SIZE]; + KeyValues *dat = this; + types_t type = (types_t)buffer.GetUnsignedChar(); + + // loop through all our peers + while ( true ) + { + if ( type == TYPE_NUMTYPES ) + break; // no more peers + + dat->m_iDataType = type; + + buffer.GetString( token, KEYVALUES_TOKEN_SIZE-1 ); + token[KEYVALUES_TOKEN_SIZE-1] = 0; + + dat->SetName( token ); + + switch ( type ) + { + case TYPE_NONE: + { + dat->m_pSub = new KeyValues(""); + dat->m_pSub->ReadAsBinary( buffer ); + break; + } + case TYPE_STRING: + { + buffer.GetString( token, KEYVALUES_TOKEN_SIZE-1 ); + token[KEYVALUES_TOKEN_SIZE-1] = 0; + + int len = Q_strlen( token ); + dat->m_sValue = new char[len + 1]; + Q_memcpy( dat->m_sValue, token, len+1 ); + + break; + } + case TYPE_WSTRING: + { + Assert( !"TYPE_WSTRING" ); + break; + } + + case TYPE_INT: + { + dat->m_iValue = buffer.GetInt(); + break; + } + + case TYPE_UINT64: + { + dat->m_sValue = new char[sizeof(uint64)]; + *((double *)dat->m_sValue) = buffer.GetDouble(); + } + + case TYPE_FLOAT: + { + dat->m_flValue = buffer.GetFloat(); + break; + } + case TYPE_COLOR: + { + dat->m_Color[0] = buffer.GetUnsignedChar(); + dat->m_Color[1] = buffer.GetUnsignedChar(); + dat->m_Color[2] = buffer.GetUnsignedChar(); + dat->m_Color[3] = buffer.GetUnsignedChar(); + break; + } + case TYPE_PTR: + { + dat->m_pValue = buffer.GetPtr(); + } + + default: + break; + } + + if ( !buffer.IsValid() ) // error occured + return false; + + type = (types_t)buffer.GetUnsignedChar(); + + if ( type == TYPE_NUMTYPES ) + break; + + // new peer follows + dat->m_pPeer = new KeyValues(""); + dat = dat->m_pPeer; + } + + return buffer.IsValid(); +} + +#include "tier0/memdbgoff.h" + +#if 0 +//----------------------------------------------------------------------------- +// Purpose: memory allocator +//----------------------------------------------------------------------------- +void *KeyValues::operator new( size_t iAllocSize ) +{ + MEM_ALLOC_CREDIT(); + return KeyValuesSystem()->AllocKeyValuesMemory(); +} + +void *KeyValues::operator new( size_t iAllocSize, int nBlockUse, const char *pFileName, int nLine ) +{ + MemAlloc_PushAllocDbgInfo( pFileName, nLine ); + void *p = KeyValuesSystem()->AllocKeyValuesMemory(); + MemAlloc_PopAllocDbgInfo(); + return p; +} + +//----------------------------------------------------------------------------- +// Purpose: deallocator +//----------------------------------------------------------------------------- +void KeyValues::operator delete( void *pMem ) +{ + KeyValuesSystem()->FreeKeyValuesMemory((KeyValues *)pMem); +} + +void KeyValues::operator delete( void *pMem, int nBlockUse, const char *pFileName, int nLine ) +{ + KeyValuesSystem()->FreeKeyValuesMemory((KeyValues *)pMem); +} +#endif + +void KeyValues::UnpackIntoStructure( KeyValuesUnpackStructure const *pUnpackTable, void *pDest ) +{ + uint8 *dest=(uint8 *) pDest; + while( pUnpackTable->m_pKeyName ) + { + uint8 *dest_field=dest+pUnpackTable->m_nFieldOffset; + KeyValues *find_it=FindKey( pUnpackTable->m_pKeyName ); + switch( pUnpackTable->m_eDataType ) + { + case UNPACK_TYPE_FLOAT: + { + float default_value=(pUnpackTable->m_pKeyDefault)?atof(pUnpackTable->m_pKeyDefault):0.0; + *( ( float *) dest_field)=GetFloat( pUnpackTable->m_pKeyName, default_value ); + break; + } + break; + + case UNPACK_TYPE_VECTOR: + { + Vector *dest_v=(Vector *) dest_field; + char const *src_string= + GetString( pUnpackTable->m_pKeyName, pUnpackTable->m_pKeyDefault ); + if ( (!src_string) || + ( sscanf(src_string,"%f %f %f", + &(dest_v->x), &(dest_v->y), &(dest_v->z)) != 3)) + dest_v->Init( 0, 0, 0 ); + } + break; + + case UNPACK_TYPE_FOUR_FLOATS: + { + float *dest_f=(float *) dest_field; + char const *src_string= + GetString( pUnpackTable->m_pKeyName, pUnpackTable->m_pKeyDefault ); + if ( (!src_string) || + ( sscanf(src_string,"%f %f %f %f", + dest_f,dest_f+1,dest_f+2,dest_f+3)) != 4) + memset( dest_f, 0, 4*sizeof(float) ); + } + break; + + case UNPACK_TYPE_TWO_FLOATS: + { + float *dest_f=(float *) dest_field; + char const *src_string= + GetString( pUnpackTable->m_pKeyName, pUnpackTable->m_pKeyDefault ); + if ( (!src_string) || + ( sscanf(src_string,"%f %f", + dest_f,dest_f+1)) != 2) + memset( dest_f, 0, 2*sizeof(float) ); + } + break; + + case UNPACK_TYPE_STRING: + { + char *dest_s=(char *) dest_field; + strncpy( dest_s, GetString( pUnpackTable->m_pKeyName, + pUnpackTable->m_pKeyDefault ), + pUnpackTable->m_nFieldSize ); + + } + break; + + case UNPACK_TYPE_INT: + { + int *dest_i=(int *) dest_field; + int default_int=0; + if ( pUnpackTable->m_pKeyDefault) + default_int = atoi( pUnpackTable->m_pKeyDefault ); + *(dest_i)=GetInt( pUnpackTable->m_pKeyName, default_int ); + } + break; + + case UNPACK_TYPE_VECTOR_COLOR: + { + Vector *dest_v=(Vector *) dest_field; + if (find_it) + { + Color c=GetColor( pUnpackTable->m_pKeyName ); + dest_v->x = c.r(); + dest_v->y = c.g(); + dest_v->z = c.b(); + } + else + { + if ( pUnpackTable->m_pKeyDefault ) + sscanf(pUnpackTable->m_pKeyDefault,"%f %f %f", + &(dest_v->x), &(dest_v->y), &(dest_v->z)); + else + dest_v->Init( 0, 0, 0 ); + } + *(dest_v) *= (1.0/255); + } + } + pUnpackTable++; + } +} + +//----------------------------------------------------------------------------- +// Helper function for processing a keyvalue tree for console resolution support. +// Alters key/values for easier console video resolution support. +// If running SD (640x480), the presence of "???_lodef" creates or slams "???". +// If running HD (1280x720), the presence of "???_hidef" creates or slams "???". +//----------------------------------------------------------------------------- +bool KeyValues::ProcessResolutionKeys( const char *pResString ) +{ + if ( !pResString ) + { + // not for pc, console only + return false; + } + + KeyValues *pSubKey = GetFirstSubKey(); + if ( !pSubKey ) + { + // not a block + return false; + } + + for ( ; pSubKey != NULL; pSubKey = pSubKey->GetNextKey() ) + { + // recursively descend each sub block + pSubKey->ProcessResolutionKeys( pResString ); + + // check to see if our substring is present + if ( Q_stristr( pSubKey->GetName(), pResString ) != NULL ) + { + char normalKeyName[128]; + V_strncpy( normalKeyName, pSubKey->GetName(), sizeof( normalKeyName ) ); + + // substring must match exactly, otherwise keys like "_lodef" and "_lodef_wide" would clash. + char *pString = Q_stristr( normalKeyName, pResString ); + if ( pString && !Q_stricmp( pString, pResString ) ) + { + *pString = '\0'; + + // find and delete the original key (if any) + KeyValues *pKey = FindKey( normalKeyName ); + if ( pKey ) + { + // remove the key + RemoveSubKey( pKey ); + } + + // rename the marked key + pSubKey->SetName( normalKeyName ); + } + } + } + + return true; +} diff --git a/tier1/NetAdr.cpp b/tier1/NetAdr.cpp new file mode 100644 index 00000000..78657a5d --- /dev/null +++ b/tier1/NetAdr.cpp @@ -0,0 +1,331 @@ +//===== Copyright © 1996-2005, Valve Corporation, All rights reserved. ======// +// +// Purpose: +// +// NetAdr.cpp: implementation of the CNetAdr class. +// +//===========================================================================// +#if defined( _WIN32 ) && !defined( _X360 ) +#include +#endif + +#include "tier0/dbg.h" +#include "netadr.h" +#include "tier1/strtools.h" + +#if defined( _WIN32 ) && !defined( _X360 ) +#define WIN32_LEAN_AND_MEAN +#include +typedef int socklen_t; +#elif !defined( _X360 ) +#include // ntohs() +#include // gethostbyname() +#include // getsockname() +#endif + +// memdbgon must be the last include file in a .cpp file!!! +#include "tier0/memdbgon.h" + +////////////////////////////////////////////////////////////////////// +// Construction/Destruction +////////////////////////////////////////////////////////////////////// + +bool netadr_t::CompareAdr (const netadr_t &a, bool onlyBase) const +{ + if ( a.type != type ) + return false; + + if ( type == NA_LOOPBACK ) + return true; + + if ( type == NA_BROADCAST ) + return true; + + if ( type == NA_IP ) + { + if ( !onlyBase && (port != a.port) ) + return false; + + if ( a.ip[0] == ip[0] && a.ip[1] == ip[1] && a.ip[2] == ip[2] && a.ip[3] == ip[3] ) + return true; + } + + return false; +} + +bool netadr_t::CompareClassBAdr (const netadr_t &a) const +{ + if ( a.type != type ) + return false; + + if ( type == NA_LOOPBACK ) + return true; + + if ( type == NA_IP ) + { + if (a.ip[0] == ip[0] && a.ip[1] == ip[1] ) + return true; + } + + return false; +} + +bool netadr_t::CompareClassCAdr (const netadr_t &a) const +{ + if ( a.type != type ) + return false; + + if ( type == NA_LOOPBACK ) + return true; + + if ( type == NA_IP ) + { + if (a.ip[0] == ip[0] && a.ip[1] == ip[1] && a.ip[2] == ip[2] ) + return true; + } + + return false; +} +// reserved addresses are not routeable, so they can all be used in a LAN game +bool netadr_t::IsReservedAdr () const +{ + if ( type == NA_LOOPBACK ) + return true; + + if ( type == NA_IP ) + { + if ( (ip[0] == 10) || // 10.x.x.x is reserved + (ip[0] == 127) || // 127.x.x.x + (ip[0] == 172 && ip[1] >= 16 && ip[1] <= 31) || // 172.16.x.x - 172.31.x.x + (ip[0] == 192 && ip[1] >= 168) ) // 192.168.x.x + return true; + } + return false; +} + +const char * netadr_t::ToString(bool baseOnly) const +{ + static char s[64]; + + Q_strncpy (s, "unknown", sizeof( s ) ); + + if (type == NA_LOOPBACK) + { + Q_strncpy (s, "loopback", sizeof( s ) ); + } + else if (type == NA_BROADCAST) + { + Q_strncpy (s, "broadcast", sizeof( s ) ); + } + else if (type == NA_IP) + { + if ( baseOnly) + { + Q_snprintf (s, sizeof( s ), "%i.%i.%i.%i", ip[0], ip[1], ip[2], ip[3]); + } + else + { + Q_snprintf (s, sizeof( s ), "%i.%i.%i.%i:%i", ip[0], ip[1], ip[2], ip[3], ntohs(port)); + } + } + + return s; +} + +bool netadr_t::IsLocalhost() const +{ + // are we 127.0.0.1 ? + return (ip[0] == 127) && (ip[1] == 0) && (ip[2] == 0) && (ip[3] == 1); +} + +bool netadr_t::IsLoopback() const +{ + // are we useding engine loopback buffers + return type == NA_LOOPBACK; +} + +void netadr_t::Clear() +{ + ip[0] = ip[1] = ip[2] = ip[3] = 0; + port = 0; + type = NA_NULL; +} + +void netadr_t::SetIP(uint8 b1, uint8 b2, uint8 b3, uint8 b4) +{ + ip[0] = b1; + ip[1] = b2; + ip[2] = b3; + ip[3] = b4; +} + +void netadr_t::SetIP(uint unIP) +{ + *((uint*)ip) = BigLong( unIP ); +} + +void netadr_t::SetType(netadrtype_t newtype) +{ + type = newtype; +} + +netadrtype_t netadr_t::GetType() const +{ + return type; +} + +unsigned short netadr_t::GetPort() const +{ + return BigShort( port ); +} + +unsigned int netadr_t::GetIP() const +{ + return *(unsigned int *)&ip;; +} + +unsigned long netadr_t::addr_ntohl() const +{ + return ntohl( GetIP() ); +} + +unsigned long netadr_t::addr_htonl() const +{ + return htonl( GetIP() ); +} + + +void netadr_t::ToSockadr (struct sockaddr * s) const +{ + Q_memset ( s, 0, sizeof(struct sockaddr)); + + if (type == NA_BROADCAST) + { + ((struct sockaddr_in*)s)->sin_family = AF_INET; + ((struct sockaddr_in*)s)->sin_port = port; + ((struct sockaddr_in*)s)->sin_addr.s_addr = INADDR_BROADCAST; + } + else if (type == NA_IP) + { + ((struct sockaddr_in*)s)->sin_family = AF_INET; + ((struct sockaddr_in*)s)->sin_addr.s_addr = *(int *)&ip; + ((struct sockaddr_in*)s)->sin_port = port; + } + else if (type == NA_LOOPBACK ) + { + ((struct sockaddr_in*)s)->sin_family = AF_INET; + ((struct sockaddr_in*)s)->sin_port = port; + ((struct sockaddr_in*)s)->sin_addr.s_addr = INADDR_LOOPBACK ; + } +} + +bool netadr_t::SetFromSockadr(const struct sockaddr * s) +{ + if (s->sa_family == AF_INET) + { + type = NA_IP; + *(int *)&ip = ((struct sockaddr_in *)s)->sin_addr.s_addr; + port = ((struct sockaddr_in *)s)->sin_port; + return true; + } + else + { + Clear(); + return false; + } +} + +bool netadr_t::IsValid() const +{ + return ( (port !=0 ) && (type != NA_NULL) && + ( ip[0] != 0 || ip[1] != 0 || ip[2] != 0 || ip[3] != 0 ) ); +} + +#ifdef _WIN32 +#undef SetPort // get around stupid WINSPOOL.H macro +#endif + +void netadr_t::SetPort(unsigned short newport) +{ + port = BigShort( newport ); +} + +void netadr_t::SetFromString( const char *pch, bool bUseDNS ) +{ + Clear(); + type = NA_IP; + + Assert( pch ); // invalid to call this with NULL pointer; fix your code bug! + if ( !pch ) // but let's not crash + return; + + + if ( pch[0] >= '0' && pch[0] <= '9' && strchr( pch, '.' ) ) + { + int n1, n2, n3, n4, n5; + int nRes = sscanf( pch, "%d.%d.%d.%d:%d", &n1, &n2, &n3, &n4, &n5 ); + if ( nRes >= 4 ) + { + SetIP( n1, n2, n3, n4 ); + } + + if ( nRes == 5 ) + { + SetPort( ( uint16 ) n5 ); + } + } + else if ( bUseDNS ) + { +// X360TBD: +#if !defined( _X360 ) + char szHostName[ 256 ]; + Q_strncpy( szHostName, pch, sizeof(szHostName) ); + char *pchColon = strchr( szHostName, ':' ); + if ( pchColon ) + { + *pchColon = 0; + } + + // DNS it + struct hostent *h = gethostbyname( szHostName ); + if ( !h ) + return; + + SetIP( ntohl( *(int *)h->h_addr_list[0] ) ); + + if ( pchColon ) + { + SetPort( atoi( ++pchColon ) ); + } +#else + Assert( 0 ); +#endif + } +} + +bool netadr_t::operator<(const netadr_t &netadr) const +{ + if ( *((uint *)netadr.ip) < *((uint *)ip) ) + return true; + else if ( *((uint *)netadr.ip) > *((uint *)ip) ) + return false; + return ( netadr.port < port ); +} + + +void netadr_t::SetFromSocket( int hSocket ) +{ +#if !defined(_X360) + Clear(); + type = NA_IP; + + struct sockaddr address; + int namelen = sizeof(address); + if ( getsockname( hSocket, (struct sockaddr *)&address, (socklen_t *)&namelen) == 0 ) + { + SetFromSockadr( &address ); + } +#else + Assert(0); +#endif +} diff --git a/tier1/bitbuf.cpp b/tier1/bitbuf.cpp new file mode 100644 index 00000000..f59956f1 --- /dev/null +++ b/tier1/bitbuf.cpp @@ -0,0 +1,1330 @@ +//========= Copyright © 1996-2005, Valve Corporation, All rights reserved. ============// +// +// Purpose: +// +// $NoKeywords: $ +// +//=============================================================================// + +#include "bitbuf.h" +#include "coordsize.h" +#include "mathlib/vector.h" +#include "mathlib/mathlib.h" +#include "tier1/strtools.h" +#include "bitvec.h" + +// FIXME: Can't use this until we get multithreaded allocations in tier0 working for tools +// This is used by VVIS and fails to link +// NOTE: This must be the last file included!!! +//#include "tier0/memdbgon.h" + +#ifdef _X360 +// mandatory ... wary of above comment and isolating, tier0 is built as MT though +#include "tier0/memdbgon.h" +#endif + +#if _WIN32 +#define FAST_BIT_SCAN 1 +#if _X360 +#define CountLeadingZeros(x) _CountLeadingZeros(x) +inline unsigned int CountTrailingZeros( unsigned int elem ) +{ + // this implements CountTrailingZeros() / BitScanForward() + unsigned int mask = elem-1; + unsigned int comp = ~elem; + elem = mask & comp; + return (32 - _CountLeadingZeros(elem)); +} +#else +#include +#pragma intrinsic(_BitScanReverse) +#pragma intrinsic(_BitScanForward) + +inline unsigned int CountLeadingZeros(unsigned int x) +{ + unsigned long firstBit; + if ( _BitScanReverse(&firstBit,x) ) + return 31 - firstBit; + return 32; +} +inline unsigned int CountTrailingZeros(unsigned int elem) +{ + unsigned long out; + if ( _BitScanForward(&out, elem) ) + return out; + return 32; +} + +#endif +#else +#define FAST_BIT_SCAN 0 +#endif + + +static BitBufErrorHandler g_BitBufErrorHandler = 0; + +inline int BitForBitnum(int bitnum) +{ + return GetBitForBitnum(bitnum); +} + +void InternalBitBufErrorHandler( BitBufErrorType errorType, const char *pDebugName ) +{ + if ( g_BitBufErrorHandler ) + g_BitBufErrorHandler( errorType, pDebugName ); +} + + +void SetBitBufErrorHandler( BitBufErrorHandler fn ) +{ + g_BitBufErrorHandler = fn; +} + + +// #define BB_PROFILING + + +// Precalculated bit masks for WriteUBitLong. Using these tables instead of +// doing the calculations gives a 33% speedup in WriteUBitLong. +unsigned long g_BitWriteMasks[32][33]; + +// (1 << i) - 1 +unsigned long g_ExtraMasks[32]; + +class CBitWriteMasksInit +{ +public: + CBitWriteMasksInit() + { + for( unsigned int startbit=0; startbit < 32; startbit++ ) + { + for( unsigned int nBitsLeft=0; nBitsLeft < 33; nBitsLeft++ ) + { + unsigned int endbit = startbit + nBitsLeft; + g_BitWriteMasks[startbit][nBitsLeft] = BitForBitnum(startbit) - 1; + if(endbit < 32) + g_BitWriteMasks[startbit][nBitsLeft] |= ~(BitForBitnum(endbit) - 1); + } + } + + for ( unsigned int maskBit=0; maskBit < 32; maskBit++ ) + g_ExtraMasks[maskBit] = BitForBitnum(maskBit) - 1; + } +}; +CBitWriteMasksInit g_BitWriteMasksInit; + + +// ---------------------------------------------------------------------------------------- // +// bf_write +// ---------------------------------------------------------------------------------------- // + +bf_write::bf_write() +{ + m_pData = NULL; + m_nDataBytes = 0; + m_nDataBits = -1; // set to -1 so we generate overflow on any operation + m_iCurBit = 0; + m_bOverflow = false; + m_bAssertOnOverflow = true; + m_pDebugName = NULL; +} + +bf_write::bf_write( void *pData, int nBytes, int nMaxBits ) +{ + m_bAssertOnOverflow = true; + m_pDebugName = NULL; + StartWriting( pData, nBytes, 0, nMaxBits ); +} + +bf_write::bf_write( const char *pDebugName, void *pData, int nBytes, int nMaxBits ) +{ + m_bAssertOnOverflow = true; + m_pDebugName = pDebugName; + StartWriting( pData, nBytes, 0, nMaxBits ); +} + +void bf_write::StartWriting( void *pData, int nBytes, int iStartBit, int nMaxBits ) +{ + // Make sure it's dword aligned and padded. + Assert( (nBytes % 4) == 0 ); + Assert(((unsigned long)pData & 3) == 0); + + // The writing code will overrun the end of the buffer if it isn't dword aligned, so truncate to force alignment + nBytes &= ~3; + + m_pData = (unsigned char*)pData; + m_nDataBytes = nBytes; + + if ( nMaxBits == -1 ) + { + m_nDataBits = nBytes << 3; + } + else + { + Assert( nMaxBits <= nBytes*8 ); + m_nDataBits = nMaxBits; + } + + m_iCurBit = iStartBit; + m_bOverflow = false; +} + +void bf_write::Reset() +{ + m_iCurBit = 0; + m_bOverflow = false; +} + + +void bf_write::SetAssertOnOverflow( bool bAssert ) +{ + m_bAssertOnOverflow = bAssert; +} + + +const char* bf_write::GetDebugName() +{ + return m_pDebugName; +} + + +void bf_write::SetDebugName( const char *pDebugName ) +{ + m_pDebugName = pDebugName; +} + + +void bf_write::SeekToBit( int bitPos ) +{ + m_iCurBit = bitPos; +} + + +// Sign bit comes first +void bf_write::WriteSBitLong( int data, int numbits ) +{ + // Do we have a valid # of bits to encode with? + Assert( numbits >= 1 ); + + // Note: it does this wierdness here so it's bit-compatible with regular integer data in the buffer. + // (Some old code writes direct integers right into the buffer). + if(data < 0) + { +#ifdef _DEBUG + if( numbits < 32 ) + { + // Make sure it doesn't overflow. + + if( data < 0 ) + { + Assert( data >= -(BitForBitnum(numbits-1)) ); + } + else + { + Assert( data < (BitForBitnum(numbits-1)) ); + } + } +#endif + + WriteUBitLong( (unsigned int)(0x80000000 + data), numbits - 1, false ); + WriteOneBit( 1 ); + } + else + { + WriteUBitLong((unsigned int)data, numbits - 1); + WriteOneBit( 0 ); + } +} + +void bf_write::WriteVarInt32( uint32 data ) +{ + while ( data > 0x7F ) + { + WriteUBitLong( (data & 0x7F) | 0x80, 8 ); + data >>= 7; + } + WriteUBitLong( data & 0x7F, 8 ); +} + +int bf_write::ByteSizeVarInt32( uint32 data ) +{ + int size = 1; + while ( data > 0x7F ) + { + size++; + data >>= 7; + } + return size; +} + +#if _WIN32 +inline unsigned int BitCountNeededToEncode(unsigned int data) +{ +#if defined(_X360) + return (32 - CountLeadingZeros(data+1)) - 1; +#else + unsigned long firstBit; + _BitScanReverse(&firstBit,data+1); + return firstBit; +#endif +} +#endif // _WIN32 + +// writes an unsigned integer with variable bit length +void bf_write::WriteUBitVar( unsigned int data ) +{ + if ( ( data &0xf ) == data ) + { + WriteUBitLong( 0, 2 ); + WriteUBitLong( data, 4 ); + } + else + { + if ( ( data & 0xff ) == data ) + { + WriteUBitLong( 1, 2 ); + WriteUBitLong( data, 8 ); + } + else + { + if ( ( data & 0xfff ) == data ) + { + WriteUBitLong( 2, 2 ); + WriteUBitLong( data, 12 ); + } + else + { + WriteUBitLong( 0x3, 2 ); + WriteUBitLong( data, 32 ); + } + } + } +#if 0 +#if !FAST_BIT_SCAN + unsigned int bits = 0; + unsigned int base = 0; + + while (data > (base<<1)) + { + bits++; + base = BitForBitnum(bits)-1; + } +#else + unsigned int bits = BitCountNeededToEncode(data); + unsigned int base = GetBitForBitnum(bits)-1; +#endif + + // how many bits do we use + WriteUBitLong( 0, bits ); + + // end marker + WriteOneBit( 1 ); + + // write the value + if ( bits > 0) + WriteUBitLong( data - base , bits ); +#endif +} + +void bf_write::WriteBitLong(unsigned int data, int numbits, bool bSigned) +{ + if(bSigned) + WriteSBitLong((int)data, numbits); + else + WriteUBitLong(data, numbits); +} + +bool bf_write::WriteBits(const void *pInData, int nBits) +{ +#if defined( BB_PROFILING ) + VPROF( "bf_write::WriteBits" ); +#endif + + unsigned char *pOut = (unsigned char*)pInData; + int nBitsLeft = nBits; + + // Bounds checking.. + if ( (m_iCurBit+nBits) > m_nDataBits ) + { + SetOverflowFlag(); + CallErrorHandler( BITBUFERROR_BUFFER_OVERRUN, GetDebugName() ); + return false; + } + + // Align output to dword boundary + while (((unsigned long)pOut & 3) != 0 && nBitsLeft >= 8) + { + + WriteUBitLong( *pOut, 8, false ); + ++pOut; + nBitsLeft -= 8; + } + + if ( IsPC() && (nBitsLeft >= 32) && (m_iCurBit & 7) == 0 ) + { + // current bit is byte aligned, do block copy + int numbytes = nBitsLeft >> 3; + int numbits = numbytes << 3; + + Q_memcpy( m_pData+(m_iCurBit>>3), pOut, numbytes ); + pOut += numbytes; + nBitsLeft -= numbits; + m_iCurBit += numbits; + } + + // X360TBD: Can't write dwords in WriteBits because they'll get swapped + if ( IsPC() && nBitsLeft >= 32 ) + { + unsigned long iBitsRight = (m_iCurBit & 31); + unsigned long iBitsLeft = 32 - iBitsRight; + unsigned long bitMaskLeft = g_BitWriteMasks[iBitsRight][32]; + unsigned long bitMaskRight = g_BitWriteMasks[0][iBitsRight]; + + unsigned long *pData = &((unsigned long*)m_pData)[m_iCurBit>>5]; + + // Read dwords. + while(nBitsLeft >= 32) + { + unsigned long curData = *(unsigned long*)pOut; + pOut += sizeof(unsigned long); + + *pData &= bitMaskLeft; + *pData |= curData << iBitsRight; + + pData++; + + if ( iBitsLeft < 32 ) + { + curData >>= iBitsLeft; + *pData &= bitMaskRight; + *pData |= curData; + } + + nBitsLeft -= 32; + m_iCurBit += 32; + } + } + + + // write remaining bytes + while ( nBitsLeft >= 8 ) + { + WriteUBitLong( *pOut, 8, false ); + ++pOut; + nBitsLeft -= 8; + } + + // write remaining bits + if ( nBitsLeft ) + { + WriteUBitLong( *pOut, nBitsLeft, false ); + } + + return !IsOverflowed(); +} + + +bool bf_write::WriteBitsFromBuffer( bf_read *pIn, int nBits ) +{ + // This could be optimized a little by + while ( nBits > 32 ) + { + WriteUBitLong( pIn->ReadUBitLong( 32 ), 32 ); + nBits -= 32; + } + + WriteUBitLong( pIn->ReadUBitLong( nBits ), nBits ); + return !IsOverflowed() && !pIn->IsOverflowed(); +} + + +void bf_write::WriteBitAngle( float fAngle, int numbits ) +{ + int d; + unsigned int mask; + unsigned int shift; + + shift = BitForBitnum(numbits); + mask = shift - 1; + + d = (int)( (fAngle / 360.0) * shift ); + d &= mask; + + WriteUBitLong((unsigned int)d, numbits); +} + +void bf_write::WriteBitCoordMP( const float f, EBitCoordType coordType ) +{ +#if defined( BB_PROFILING ) + VPROF( "bf_write::WriteBitCoordMP" ); +#endif + int signbit = (f <= -( coordType == kCW_LowPrecision ? COORD_RESOLUTION_LOWPRECISION : COORD_RESOLUTION )); + int intval = (int)fabs(f); + int fractval = coordType == kCW_LowPrecision ? + ( abs((int)(f*COORD_DENOMINATOR_LOWPRECISION)) & (COORD_DENOMINATOR_LOWPRECISION-1) ) : + ( abs((int)(f*COORD_DENOMINATOR)) & (COORD_DENOMINATOR-1) ); + + + bool bInBounds = intval < (1 << COORD_INTEGER_BITS_MP ); + + WriteOneBit( bInBounds ); + + if ( coordType == kCW_Integral ) + { + // Send the sign bit + WriteOneBit( intval ); + if ( intval ) + { + WriteOneBit( signbit ); + // Send the integer if we have one. + // Adjust the integers from [1..MAX_COORD_VALUE] to [0..MAX_COORD_VALUE-1] + intval--; + if ( bInBounds ) + { + WriteUBitLong( (unsigned int)intval, COORD_INTEGER_BITS_MP ); + } + else + { + WriteUBitLong( (unsigned int)intval, COORD_INTEGER_BITS ); + } + } + } + else + { + // Send the bit flags that indicate whether we have an integer part and/or a fraction part. + WriteOneBit( intval ); + // Send the sign bit + WriteOneBit( signbit ); + + if ( intval ) + { + // Adjust the integers from [1..MAX_COORD_VALUE] to [0..MAX_COORD_VALUE-1] + intval--; + if ( bInBounds ) + { + WriteUBitLong( (unsigned int)intval, COORD_INTEGER_BITS_MP ); + } + else + { + WriteUBitLong( (unsigned int)intval, COORD_INTEGER_BITS ); + } + } + WriteUBitLong( (unsigned int)fractval, coordType == kCW_LowPrecision ? COORD_FRACTIONAL_BITS_MP_LOWPRECISION : COORD_FRACTIONAL_BITS ); + } +} + +void bf_write::WriteBitCellCoord( const float f, int bits, EBitCoordType coordType ) +{ +#if defined( BB_PROFILING ) + VPROF( "bf_write::WriteCellBitCoordMP" ); +#endif + int intval = (int)fabs(f); + int fractval = coordType == kCW_LowPrecision ? + ( abs((int)(f*COORD_DENOMINATOR_LOWPRECISION)) & (COORD_DENOMINATOR_LOWPRECISION-1) ) : + ( abs((int)(f*COORD_DENOMINATOR)) & (COORD_DENOMINATOR-1) ); + + if ( coordType == kCW_Integral ) + { + WriteUBitLong( (unsigned int)intval, bits ); + } + else + { + WriteUBitLong( (unsigned int)intval, bits ); + WriteUBitLong( (unsigned int)fractval, coordType == kCW_LowPrecision ? COORD_FRACTIONAL_BITS_MP_LOWPRECISION : COORD_FRACTIONAL_BITS ); + } +} + +void bf_write::WriteBitCoord (const float f) +{ +#if defined( BB_PROFILING ) + VPROF( "bf_write::WriteBitCoord" ); +#endif + int signbit = (f <= -COORD_RESOLUTION); + int intval = (int)fabs(f); + int fractval = abs((int)(f*COORD_DENOMINATOR)) & (COORD_DENOMINATOR-1); + + + // Send the bit flags that indicate whether we have an integer part and/or a fraction part. + WriteOneBit( intval ); + WriteOneBit( fractval ); + + if ( intval || fractval ) + { + // Send the sign bit + WriteOneBit( signbit ); + + // Send the integer if we have one. + if ( intval ) + { + // Adjust the integers from [1..MAX_COORD_VALUE] to [0..MAX_COORD_VALUE-1] + intval--; + WriteUBitLong( (unsigned int)intval, COORD_INTEGER_BITS ); + } + + // Send the fraction if we have one + if ( fractval ) + { + WriteUBitLong( (unsigned int)fractval, COORD_FRACTIONAL_BITS ); + } + } +} + +void bf_write::WriteBitFloat(float val) +{ + long intVal; + + Assert(sizeof(long) == sizeof(float)); + Assert(sizeof(float) == 4); + + intVal = *((long*)&val); + WriteUBitLong( intVal, 32 ); +} + +void bf_write::WriteBitVec3Coord( const Vector& fa ) +{ + int xflag, yflag, zflag; + + xflag = (fa[0] >= COORD_RESOLUTION) || (fa[0] <= -COORD_RESOLUTION); + yflag = (fa[1] >= COORD_RESOLUTION) || (fa[1] <= -COORD_RESOLUTION); + zflag = (fa[2] >= COORD_RESOLUTION) || (fa[2] <= -COORD_RESOLUTION); + + WriteOneBit( xflag ); + WriteOneBit( yflag ); + WriteOneBit( zflag ); + + if ( xflag ) + WriteBitCoord( fa[0] ); + if ( yflag ) + WriteBitCoord( fa[1] ); + if ( zflag ) + WriteBitCoord( fa[2] ); +} + +void bf_write::WriteBitNormal( float f ) +{ + int signbit = (f <= -NORMAL_RESOLUTION); + + // NOTE: Since +/-1 are valid values for a normal, I'm going to encode that as all ones + unsigned int fractval = abs( (int)(f*NORMAL_DENOMINATOR) ); + + // clamp.. + if (fractval > NORMAL_DENOMINATOR) + fractval = NORMAL_DENOMINATOR; + + // Send the sign bit + WriteOneBit( signbit ); + + // Send the fractional component + WriteUBitLong( fractval, NORMAL_FRACTIONAL_BITS ); +} + +void bf_write::WriteBitVec3Normal( const Vector& fa ) +{ + int xflag, yflag; + + xflag = (fa[0] >= NORMAL_RESOLUTION) || (fa[0] <= -NORMAL_RESOLUTION); + yflag = (fa[1] >= NORMAL_RESOLUTION) || (fa[1] <= -NORMAL_RESOLUTION); + + WriteOneBit( xflag ); + WriteOneBit( yflag ); + + if ( xflag ) + WriteBitNormal( fa[0] ); + if ( yflag ) + WriteBitNormal( fa[1] ); + + // Write z sign bit + int signbit = (fa[2] <= -NORMAL_RESOLUTION); + WriteOneBit( signbit ); +} + +void bf_write::WriteBitAngles( const QAngle& fa ) +{ + // FIXME: + Vector tmp( fa.x, fa.y, fa.z ); + WriteBitVec3Coord( tmp ); +} + +void bf_write::WriteChar(int val) +{ + WriteSBitLong(val, sizeof(char) << 3); +} + +void bf_write::WriteByte(unsigned int val) +{ + WriteUBitLong(val, sizeof(unsigned char) << 3); +} + +void bf_write::WriteShort(int val) +{ + WriteSBitLong(val, sizeof(short) << 3); +} + +void bf_write::WriteWord(unsigned int val) +{ + WriteUBitLong(val, sizeof(unsigned short) << 3); +} + +void bf_write::WriteLong(long val) +{ + WriteSBitLong(val, sizeof(long) << 3); +} + +void bf_write::WriteLongLong(int64 val) +{ + uint *pLongs = (uint*)&val; + + // Insert the two DWORDS according to network endian + const short endianIndex = 0x0100; + byte *idx = (byte*)&endianIndex; + WriteUBitLong(pLongs[*idx++], sizeof(long) << 3); + WriteUBitLong(pLongs[*idx], sizeof(long) << 3); +} + +void bf_write::WriteFloat(float val) +{ + // Pre-swap the float, since WriteBits writes raw data + LittleFloat( &val, &val ); + + WriteBits(&val, sizeof(val) << 3); +} + +bool bf_write::WriteBytes( const void *pBuf, int nBytes ) +{ + return WriteBits(pBuf, nBytes << 3); +} + +bool bf_write::WriteString(const char *pStr) +{ + if(pStr) + { + do + { + WriteChar( *pStr ); + ++pStr; + } while( *(pStr-1) != 0 ); + } + else + { + WriteChar( 0 ); + } + + return !IsOverflowed(); +} + +bool bf_write::WriteString(const wchar_t *pStr) +{ + if(pStr) + { + do + { + WriteSBitLong( *pStr, 16 ); + ++pStr; + } while ( (*pStr-1) != 0 ); + } + else + { + WriteUBitLong( 0, 15 ); + WriteOneBit( 0 ); + } + + return !IsOverflowed(); +} + +// ---------------------------------------------------------------------------------------- // +// old_bf_read +// ---------------------------------------------------------------------------------------- // + +old_bf_read::old_bf_read() +{ + m_pData = NULL; + m_nDataBytes = 0; + m_nDataBits = -1; // set to -1 so we overflow on any operation + m_iCurBit = 0; + m_bOverflow = false; + m_bAssertOnOverflow = true; + m_pDebugName = NULL; +} + +old_bf_read::old_bf_read( const void *pData, int nBytes, int nBits ) +{ + m_bAssertOnOverflow = true; + StartReading( pData, nBytes, 0, nBits ); +} + +old_bf_read::old_bf_read( const char *pDebugName, const void *pData, int nBytes, int nBits ) +{ + m_bAssertOnOverflow = true; + m_pDebugName = pDebugName; + StartReading( pData, nBytes, 0, nBits ); +} + +void old_bf_read::StartReading( const void *pData, int nBytes, int iStartBit, int nBits ) +{ + // Make sure we're dword aligned. + Assert(((unsigned long)pData & 3) == 0); + + m_pData = (unsigned char*)pData; + m_nDataBytes = nBytes; + + if ( nBits == -1 ) + { + m_nDataBits = m_nDataBytes << 3; + } + else + { + Assert( nBits <= nBytes*8 ); + m_nDataBits = nBits; + } + + m_iCurBit = iStartBit; + m_bOverflow = false; +} + +void old_bf_read::Reset() +{ + m_iCurBit = 0; + m_bOverflow = false; +} + +void old_bf_read::SetAssertOnOverflow( bool bAssert ) +{ + m_bAssertOnOverflow = bAssert; +} + +const char* old_bf_read::GetDebugName() +{ + return m_pDebugName; +} + +void old_bf_read::SetDebugName( const char *pName ) +{ + m_pDebugName = pName; +} + +unsigned int old_bf_read::CheckReadUBitLong(int numbits) +{ + // Ok, just read bits out. + int i, nBitValue; + unsigned int r = 0; + + for(i=0; i < numbits; i++) + { + nBitValue = ReadOneBitNoCheck(); + r |= nBitValue << i; + } + m_iCurBit -= numbits; + + return r; +} + +void old_bf_read::ReadBits(void *pOutData, int nBits) +{ +#if defined( BB_PROFILING ) + VPROF( "old_bf_write::ReadBits" ); +#endif + + unsigned char *pOut = (unsigned char*)pOutData; + int nBitsLeft = nBits; + + + // align output to dword boundary + while( ((unsigned long)pOut & 3) != 0 && nBitsLeft >= 8 ) + { + *pOut = (unsigned char)ReadUBitLong(8); + ++pOut; + nBitsLeft -= 8; + } + + // X360TBD: Can't read dwords in ReadBits because they'll get swapped + if ( IsPC() ) + { + // read dwords + while ( nBitsLeft >= 32 ) + { + *((unsigned long*)pOut) = ReadUBitLong(32); + pOut += sizeof(unsigned long); + nBitsLeft -= 32; + } + } + + // read remaining bytes + while ( nBitsLeft >= 8 ) + { + *pOut = ReadUBitLong(8); + ++pOut; + nBitsLeft -= 8; + } + + // read remaining bits + if ( nBitsLeft ) + { + *pOut = ReadUBitLong(nBitsLeft); + } + +} + +float old_bf_read::ReadBitAngle( int numbits ) +{ + float fReturn; + int i; + float shift; + + shift = (float)( BitForBitnum(numbits) ); + + i = ReadUBitLong( numbits ); + fReturn = (float)i * (360.0 / shift); + + return fReturn; +} + +unsigned int old_bf_read::PeekUBitLong( int numbits ) +{ + unsigned int r; + int i, nBitValue; +#ifdef BIT_VERBOSE + int nShifts = numbits; +#endif + + old_bf_read savebf; + + savebf = *this; // Save current state info + + r = 0; + for(i=0; i < numbits; i++) + { + nBitValue = ReadOneBit(); + + // Append to current stream + if ( nBitValue ) + { + r |= BitForBitnum(i); + } + } + + *this = savebf; + +#ifdef BIT_VERBOSE + Con_Printf( "PeekBitLong: %i %i\n", nShifts, (unsigned int)r ); +#endif + + return r; +} + +// Append numbits least significant bits from data to the current bit stream +int old_bf_read::ReadSBitLong( int numbits ) +{ + int r, sign; + + r = ReadUBitLong(numbits - 1); + + // Note: it does this wierdness here so it's bit-compatible with regular integer data in the buffer. + // (Some old code writes direct integers right into the buffer). + sign = ReadOneBit(); + if(sign) + r = -((BitForBitnum(numbits-1)) - r); + + return r; +} + +const byte g_BitMask[8] = {0x1, 0x2, 0x4, 0x8, 0x10, 0x20, 0x40, 0x80}; +const byte g_TrailingMask[8] = {0xff, 0xfe, 0xfc, 0xf8, 0xf0, 0xe0, 0xc0, 0x80}; + +inline int old_bf_read::CountRunOfZeros() +{ + int bits = 0; + if ( m_iCurBit + 32 < m_nDataBits ) + { +#if !FAST_BIT_SCAN + while (true) + { + int value = (m_pData[m_iCurBit >> 3] & g_BitMask[m_iCurBit & 7]); + ++m_iCurBit; + if ( value ) + return bits; + ++bits; + } +#else + while (true) + { + int value = (m_pData[m_iCurBit >> 3] & g_TrailingMask[m_iCurBit & 7]); + if ( !value ) + { + int zeros = (8-(m_iCurBit&7)); + bits += zeros; + m_iCurBit += zeros; + } + else + { + int zeros = CountTrailingZeros(value) - (m_iCurBit & 7); + m_iCurBit += zeros + 1; + bits += zeros; + return bits; + } + } +#endif + } + else + { + while ( ReadOneBit() == 0 ) + bits++; + } + return bits; +} + +unsigned int old_bf_read::ReadUBitVar() +{ + switch( ReadUBitLong( 2 ) ) + { + case 0: + return ReadUBitLong( 4 ); + + case 1: + return ReadUBitLong( 8 ); + + case 2: + return ReadUBitLong( 12 ); + + default: + case 3: + return ReadUBitLong( 32 ); + } +#if 0 + int bits = CountRunOfZeros(); + + unsigned int data = BitForBitnum(bits)-1; + + // read the value + if ( bits > 0) + data += ReadUBitLong( bits ); + + return data; +#endif +} + + +unsigned int old_bf_read::ReadBitLong(int numbits, bool bSigned) +{ + if(bSigned) + return (unsigned int)ReadSBitLong(numbits); + else + return ReadUBitLong(numbits); +} + + +// Basic Coordinate Routines (these contain bit-field size AND fixed point scaling constants) +float old_bf_read::ReadBitCoord (void) +{ +#if defined( BB_PROFILING ) + VPROF( "old_bf_write::ReadBitCoord" ); +#endif + int intval=0,fractval=0,signbit=0; + float value = 0.0; + + + // Read the required integer and fraction flags + intval = ReadOneBit(); + fractval = ReadOneBit(); + + // If we got either parse them, otherwise it's a zero. + if ( intval || fractval ) + { + // Read the sign bit + signbit = ReadOneBit(); + + // If there's an integer, read it in + if ( intval ) + { + // Adjust the integers from [0..MAX_COORD_VALUE-1] to [1..MAX_COORD_VALUE] + intval = ReadUBitLong( COORD_INTEGER_BITS ) + 1; + } + + // If there's a fraction, read it in + if ( fractval ) + { + fractval = ReadUBitLong( COORD_FRACTIONAL_BITS ); + } + + // Calculate the correct floating point value + value = intval + ((float)fractval * COORD_RESOLUTION); + + // Fixup the sign if negative. + if ( signbit ) + value = -value; + } + + return value; +} + +float old_bf_read::ReadBitCoordMP( EBitCoordType coordType ) +{ +#if defined( BB_PROFILING ) + VPROF( "old_bf_write::ReadBitCoordMP" ); +#endif + int intval=0,fractval=0,signbit=0; + float value = 0.0; + + + bool bInBounds = ReadOneBit() ? true : false; + + if ( coordType == kCW_Integral ) + { + // Read the required integer and fraction flags + intval = ReadOneBit(); + // If we got either parse them, otherwise it's a zero. + if ( intval ) + { + // Read the sign bit + signbit = ReadOneBit(); + + // If there's an integer, read it in + // Adjust the integers from [0..MAX_COORD_VALUE-1] to [1..MAX_COORD_VALUE] + if ( bInBounds ) + { + value = ReadUBitLong( COORD_INTEGER_BITS_MP ) + 1; + } + else + { + value = ReadUBitLong( COORD_INTEGER_BITS ) + 1; + } + } + } + else + { + // Read the required integer and fraction flags + intval = ReadOneBit(); + + // Read the sign bit + signbit = ReadOneBit(); + + // If we got either parse them, otherwise it's a zero. + if ( intval ) + { + if ( bInBounds ) + { + intval = ReadUBitLong( COORD_INTEGER_BITS_MP ) + 1; + } + else + { + intval = ReadUBitLong( COORD_INTEGER_BITS ) + 1; + } + } + + // If there's a fraction, read it in + fractval = ReadUBitLong( coordType == kCW_LowPrecision ? COORD_FRACTIONAL_BITS_MP_LOWPRECISION : COORD_FRACTIONAL_BITS ); + + // Calculate the correct floating point value + value = intval + ((float)fractval * ( coordType == kCW_LowPrecision ? COORD_RESOLUTION_LOWPRECISION : COORD_RESOLUTION ) ); + } + + // Fixup the sign if negative. + if ( signbit ) + value = -value; + + return value; +} + +void old_bf_read::ReadBitVec3Coord( Vector& fa ) +{ + int xflag, yflag, zflag; + + // This vector must be initialized! Otherwise, If any of the flags aren't set, + // the corresponding component will not be read and will be stack garbage. + fa.Init( 0, 0, 0 ); + + xflag = ReadOneBit(); + yflag = ReadOneBit(); + zflag = ReadOneBit(); + + if ( xflag ) + fa[0] = ReadBitCoord(); + if ( yflag ) + fa[1] = ReadBitCoord(); + if ( zflag ) + fa[2] = ReadBitCoord(); +} + +float old_bf_read::ReadBitNormal (void) +{ + // Read the sign bit + int signbit = ReadOneBit(); + + // Read the fractional part + unsigned int fractval = ReadUBitLong( NORMAL_FRACTIONAL_BITS ); + + // Calculate the correct floating point value + float value = (float)fractval * NORMAL_RESOLUTION; + + // Fixup the sign if negative. + if ( signbit ) + value = -value; + + return value; +} + +void old_bf_read::ReadBitVec3Normal( Vector& fa ) +{ + int xflag = ReadOneBit(); + int yflag = ReadOneBit(); + + if (xflag) + fa[0] = ReadBitNormal(); + else + fa[0] = 0.0f; + + if (yflag) + fa[1] = ReadBitNormal(); + else + fa[1] = 0.0f; + + // The first two imply the third (but not its sign) + int znegative = ReadOneBit(); + + float fafafbfb = fa[0] * fa[0] + fa[1] * fa[1]; + if (fafafbfb < 1.0f) + fa[2] = sqrt( 1.0f - fafafbfb ); + else + fa[2] = 0.0f; + + if (znegative) + fa[2] = -fa[2]; +} + +void old_bf_read::ReadBitAngles( QAngle& fa ) +{ + Vector tmp; + ReadBitVec3Coord( tmp ); + fa.Init( tmp.x, tmp.y, tmp.z ); +} + +int old_bf_read::ReadChar() +{ + return ReadSBitLong(sizeof(char) << 3); +} + +int old_bf_read::ReadByte() +{ + return ReadUBitLong(sizeof(unsigned char) << 3); +} + +int old_bf_read::ReadShort() +{ + return ReadSBitLong(sizeof(short) << 3); +} + +int old_bf_read::ReadWord() +{ + return ReadUBitLong(sizeof(unsigned short) << 3); +} + +long old_bf_read::ReadLong() +{ + return ReadSBitLong(sizeof(long) << 3); +} + +int64 old_bf_read::ReadLongLong() +{ + int64 retval; + uint *pLongs = (uint*)&retval; + + // Read the two DWORDs according to network endian + const short endianIndex = 0x0100; + byte *idx = (byte*)&endianIndex; + pLongs[*idx++] = ReadUBitLong(sizeof(long) << 3); + pLongs[*idx] = ReadUBitLong(sizeof(long) << 3); + + return retval; +} + +float old_bf_read::ReadFloat() +{ + float ret; + Assert( sizeof(ret) == 4 ); + ReadBits(&ret, 32); + + // Swap the float, since ReadBits reads raw data + LittleFloat( &ret, &ret ); + return ret; +} + +bool old_bf_read::ReadBytes(void *pOut, int nBytes) +{ + ReadBits(pOut, nBytes << 3); + return !IsOverflowed(); +} + +bool old_bf_read::ReadString( char *pStr, int maxLen, bool bLine, int *pOutNumChars ) +{ + Assert( maxLen != 0 ); + + bool bTooSmall = false; + int iChar = 0; + while(1) + { + char val = ReadChar(); + if ( val == 0 ) + break; + else if ( bLine && val == '\n' ) + break; + + if ( iChar < (maxLen-1) ) + { + pStr[iChar] = val; + ++iChar; + } + else + { + bTooSmall = true; + } + } + + // Make sure it's null-terminated. + Assert( iChar < maxLen ); + pStr[iChar] = 0; + + if ( pOutNumChars ) + *pOutNumChars = iChar; + + return !IsOverflowed() && !bTooSmall; +} + + +char* old_bf_read::ReadAndAllocateString( bool *pOverflow ) +{ + char str[2048]; + + int nChars; + bool bOverflow = !ReadString( str, sizeof( str ), false, &nChars ); + if ( pOverflow ) + *pOverflow = bOverflow; + + // Now copy into the output and return it; + char *pRet = new char[ nChars + 1 ]; + for ( int i=0; i <= nChars; i++ ) + pRet[i] = str[i]; + + return pRet; +} + +void old_bf_read::ExciseBits( int startbit, int bitstoremove ) +{ + int endbit = startbit + bitstoremove; + int remaining_to_end = m_nDataBits - endbit; + + bf_write temp; + temp.StartWriting( (void *)m_pData, m_nDataBits << 3, startbit ); + + Seek( endbit ); + + for ( int i = 0; i < remaining_to_end; i++ ) + { + temp.WriteOneBit( ReadOneBit() ); + } + + Seek( startbit ); + + m_nDataBits -= bitstoremove; + m_nDataBytes = m_nDataBits >> 3; +} + + diff --git a/tier1/byteswap.cpp b/tier1/byteswap.cpp new file mode 100644 index 00000000..0c42a38d --- /dev/null +++ b/tier1/byteswap.cpp @@ -0,0 +1,90 @@ +//========= Copyright © 1996-2006, Valve LLC, All rights reserved. ============ +// +// Purpose: Low level byte swapping routines. +// +// $NoKeywords: $ +//============================================================================= + +#include "byteswap.h" + +//----------------------------------------------------------------------------- +// Copy a single field from the input buffer to the output buffer, swapping the bytes if necessary +//----------------------------------------------------------------------------- +void CByteswap::SwapFieldToTargetEndian( void* pOutputBuffer, void *pData, typedescription_t *pField ) +{ + switch ( pField->fieldType ) + { + case FIELD_CHARACTER: + SwapBufferToTargetEndian( (char*)pOutputBuffer, (char*)pData, pField->fieldSize ); + break; + + case FIELD_BOOLEAN: + SwapBufferToTargetEndian( (bool*)pOutputBuffer, (bool*)pData, pField->fieldSize ); + break; + + case FIELD_SHORT: + SwapBufferToTargetEndian( (short*)pOutputBuffer, (short*)pData, pField->fieldSize ); + break; + + case FIELD_FLOAT: + SwapBufferToTargetEndian( (uint*)pOutputBuffer, (uint*)pData, pField->fieldSize ); + break; + + case FIELD_INTEGER: + SwapBufferToTargetEndian( (int*)pOutputBuffer, (int*)pData, pField->fieldSize ); + break; + + case FIELD_VECTOR: + SwapBufferToTargetEndian( (uint*)pOutputBuffer, (uint*)pData, pField->fieldSize * 3 ); + break; + + case FIELD_VECTOR2D: + SwapBufferToTargetEndian( (uint*)pOutputBuffer, (uint*)pData, pField->fieldSize * 2 ); + break; + + case FIELD_QUATERNION: + SwapBufferToTargetEndian( (uint*)pOutputBuffer, (uint*)pData, pField->fieldSize * 4 ); + break; + + case FIELD_EMBEDDED: + { + typedescription_t *pEmbed = pField->td->dataDesc; + for ( int i = 0; i < pField->fieldSize; ++i ) + { + SwapFieldsToTargetEndian( (byte*)pOutputBuffer + pEmbed->fieldOffset, + (byte*)pData + pEmbed->fieldOffset, + pField->td ); + + pOutputBuffer = (byte*)pOutputBuffer + pField->fieldSizeInBytes; + pData = (byte*)pData + pField->fieldSizeInBytes; + } + } + break; + + default: + Assert(0); + } +} + +//----------------------------------------------------------------------------- +// Write a block of fields. Works a bit like the saverestore code. +//----------------------------------------------------------------------------- +void CByteswap::SwapFieldsToTargetEndian( void *pOutputBuffer, void *pBaseData, datamap_t *pDataMap ) +{ + // deal with base class first + if ( pDataMap->baseMap ) + { + SwapFieldsToTargetEndian( pOutputBuffer, pBaseData, pDataMap->baseMap ); + } + + typedescription_t *pFields = pDataMap->dataDesc; + int fieldCount = pDataMap->dataNumFields; + for ( int i = 0; i < fieldCount; ++i ) + { + typedescription_t *pField = &pFields[i]; + SwapFieldToTargetEndian( (BYTE*)pOutputBuffer + pField->fieldOffset, + (BYTE*)pBaseData + pField->fieldOffset, + pField ); + } +} + diff --git a/tier1/characterset.cpp b/tier1/characterset.cpp new file mode 100644 index 00000000..3914ae0a --- /dev/null +++ b/tier1/characterset.cpp @@ -0,0 +1,41 @@ +//========= Copyright © 1996-2005, Valve Corporation, All rights reserved. ============// +// +// Purpose: +// +// $Workfile: $ +// $Date: $ +// +//----------------------------------------------------------------------------- +// $Log: $ +// +// $NoKeywords: $ +//============================================================================= + +#include +#include "characterset.h" + +// memdbgon must be the last include file in a .cpp file!!! +#include "tier0/memdbgon.h" + +//----------------------------------------------------------------------------- +// Purpose: builds a simple lookup table of a group of important characters +// Input : *pParseGroup - pointer to the buffer for the group +// *pGroupString - null terminated list of characters to flag +//----------------------------------------------------------------------------- +void CharacterSetBuild( characterset_t *pSetBuffer, const char *pszSetString ) +{ + int i = 0; + + // Test our pointers + if ( !pSetBuffer || !pszSetString ) + return; + + memset( pSetBuffer->set, 0, sizeof(pSetBuffer->set) ); + + while ( pszSetString[i] ) + { + pSetBuffer->set[ static_cast(pszSetString[i]) ] = 1; + i++; + } + +} diff --git a/tier1/checksum_crc.cpp b/tier1/checksum_crc.cpp new file mode 100644 index 00000000..cb1d34a3 --- /dev/null +++ b/tier1/checksum_crc.cpp @@ -0,0 +1,180 @@ +//========= Copyright © 1996-2005, Valve Corporation, All rights reserved. ============// +// +// Purpose: Generic CRC functions +// +//=============================================================================// + +#include "basetypes.h" +#include "commonmacros.h" +#include "checksum_crc.h" + +// memdbgon must be the last include file in a .cpp file!!! +#include "tier0/memdbgon.h" + +#define CRC32_INIT_VALUE 0xFFFFFFFFUL +#define CRC32_XOR_VALUE 0xFFFFFFFFUL + +#define NUM_BYTES 256 +static const CRC32_t pulCRCTable[NUM_BYTES] = +{ + 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, + 0x076dc419, 0x706af48f, 0xe963a535, 0x9e6495a3, + 0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988, + 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91, + 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de, + 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, + 0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, + 0x14015c4f, 0x63066cd9, 0xfa0f3d63, 0x8d080df5, + 0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172, + 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, + 0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, + 0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59, + 0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116, + 0x21b4f4b5, 0x56b3c423, 0xcfba9599, 0xb8bda50f, + 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924, + 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, + 0x76dc4190, 0x01db7106, 0x98d220bc, 0xefd5102a, + 0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433, + 0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818, + 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01, + 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, + 0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457, + 0x65b0d9c6, 0x12b7e950, 0x8bbeb8ea, 0xfcb9887c, + 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65, + 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, + 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb, + 0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0, + 0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9, + 0x5005713c, 0x270241aa, 0xbe0b1010, 0xc90c2086, + 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f, + 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, + 0x59b33d17, 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad, + 0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a, + 0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683, + 0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8, + 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1, + 0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, + 0xf762575d, 0x806567cb, 0x196c3671, 0x6e6b06e7, + 0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc, + 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, + 0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, + 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b, + 0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, + 0xdf60efc3, 0xa867df55, 0x316e8eef, 0x4669be79, + 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236, + 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, + 0xc5ba3bbe, 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, + 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d, + 0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a, + 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713, + 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, + 0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, + 0x86d3d2d4, 0xf1d4e242, 0x68ddb3f8, 0x1fda836e, + 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777, + 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, + 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45, + 0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2, + 0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db, + 0xaed16a4a, 0xd9d65adc, 0x40df0b66, 0x37d83bf0, + 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9, + 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, + 0xbad03605, 0xcdd70693, 0x54de5729, 0x23d967bf, + 0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94, + 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d +}; + +void CRC32_Init(CRC32_t *pulCRC) +{ + *pulCRC = CRC32_INIT_VALUE; +} + +void CRC32_Final(CRC32_t *pulCRC) +{ + *pulCRC ^= CRC32_XOR_VALUE; +} + +CRC32_t CRC32_GetTableEntry( unsigned int slot ) +{ + return pulCRCTable[(unsigned char)slot]; +} + +void CRC32_ProcessBuffer(CRC32_t *pulCRC, const void *pBuffer, int nBuffer) +{ + CRC32_t ulCrc = *pulCRC; + uintp pb = (uintp)pBuffer; + unsigned int nFront; + int nMain; + +JustAfew: + + switch (nBuffer) + { + case 7: + ulCrc = pulCRCTable[*(unsigned char *)(pb++) ^ (unsigned char)ulCrc] ^ (ulCrc >> 8); + + case 6: + ulCrc = pulCRCTable[*(unsigned char *)(pb++) ^ (unsigned char)ulCrc] ^ (ulCrc >> 8); + + case 5: + ulCrc = pulCRCTable[*(unsigned char *)(pb++) ^ (unsigned char)ulCrc] ^ (ulCrc >> 8); + + case 4: + ulCrc ^= LittleLong( *(CRC32_t *)pb ); + ulCrc = pulCRCTable[(unsigned char)ulCrc] ^ (ulCrc >> 8); + ulCrc = pulCRCTable[(unsigned char)ulCrc] ^ (ulCrc >> 8); + ulCrc = pulCRCTable[(unsigned char)ulCrc] ^ (ulCrc >> 8); + ulCrc = pulCRCTable[(unsigned char)ulCrc] ^ (ulCrc >> 8); + *pulCRC = ulCrc; + return; + + case 3: + ulCrc = pulCRCTable[*(unsigned char *)(pb++) ^ (unsigned char)ulCrc] ^ (ulCrc >> 8); + + case 2: + ulCrc = pulCRCTable[*(unsigned char *)(pb++) ^ (unsigned char)ulCrc] ^ (ulCrc >> 8); + + case 1: + ulCrc = pulCRCTable[*(unsigned char *)(pb++) ^ (unsigned char)ulCrc] ^ (ulCrc >> 8); + + case 0: + *pulCRC = ulCrc; + return; + } + + // We may need to do some alignment work up front, and at the end, so that + // the main loop is aligned and only has to worry about 8 byte at a time. + // + // The low-order two bits of pb and nBuffer in total control the + // upfront work. + // + nFront = pb & 3; + nBuffer -= nFront; + switch (nFront) + { + case 3: + ulCrc = pulCRCTable[*(unsigned char *)(pb++) ^ (unsigned char)ulCrc] ^ (ulCrc >> 8); + case 2: + ulCrc = pulCRCTable[*(unsigned char *)(pb++) ^ (unsigned char)ulCrc] ^ (ulCrc >> 8); + case 1: + ulCrc = pulCRCTable[*(unsigned char *)(pb++) ^ (unsigned char)ulCrc] ^ (ulCrc >> 8); + } + + nMain = nBuffer >> 3; + while (nMain--) + { + ulCrc ^= LittleLong( *(CRC32_t *)pb ); + ulCrc = pulCRCTable[(unsigned char)ulCrc] ^ (ulCrc >> 8); + ulCrc = pulCRCTable[(unsigned char)ulCrc] ^ (ulCrc >> 8); + ulCrc = pulCRCTable[(unsigned char)ulCrc] ^ (ulCrc >> 8); + ulCrc = pulCRCTable[(unsigned char)ulCrc] ^ (ulCrc >> 8); + ulCrc ^= LittleLong( *(CRC32_t *)(pb + 4) ); + ulCrc = pulCRCTable[(unsigned char)ulCrc] ^ (ulCrc >> 8); + ulCrc = pulCRCTable[(unsigned char)ulCrc] ^ (ulCrc >> 8); + ulCrc = pulCRCTable[(unsigned char)ulCrc] ^ (ulCrc >> 8); + ulCrc = pulCRCTable[(unsigned char)ulCrc] ^ (ulCrc >> 8); + pb += 8; + } + + nBuffer &= 7; + goto JustAfew; +} diff --git a/tier1/checksum_md5.cpp b/tier1/checksum_md5.cpp new file mode 100644 index 00000000..0c4aeefa --- /dev/null +++ b/tier1/checksum_md5.cpp @@ -0,0 +1,271 @@ +//===== Copyright © 1996-2005, Valve Corporation, All rights reserved. ======// +// +// Purpose: +// +//===========================================================================// + +#include "basetypes.h" +#include "commonmacros.h" +#include "checksum_md5.h" +#include +#include +#include "tier1/strtools.h" +#include "tier0/dbg.h" + +// memdbgon must be the last include file in a .cpp file!!! +#include "tier0/memdbgon.h" + +// The four core functions - F1 is optimized somewhat +// #define F1(x, y, z) (x & y | ~x & z) +#define F1(x, y, z) (z ^ (x & (y ^ z))) +#define F2(x, y, z) F1(z, x, y) +#define F3(x, y, z) (x ^ y ^ z) +#define F4(x, y, z) (y ^ (x | ~z)) + +// This is the central step in the MD5 algorithm. +#define MD5STEP(f, w, x, y, z, data, s) \ + ( w += f(x, y, z) + data, w = w<>(32-s), w += x ) + +//----------------------------------------------------------------------------- +// Purpose: The core of the MD5 algorithm, this alters an existing MD5 hash to +// reflect the addition of 16 longwords of new data. MD5Update blocks +// the data and converts bytes into longwords for this routine. +// Input : buf[4] - +// in[16] - +// Output : static void +//----------------------------------------------------------------------------- +static void MD5Transform(unsigned int buf[4], unsigned int const in[16]) +{ + register unsigned int a, b, c, d; + + a = buf[0]; + b = buf[1]; + c = buf[2]; + d = buf[3]; + + MD5STEP(F1, a, b, c, d, in[0] + 0xd76aa478, 7); + MD5STEP(F1, d, a, b, c, in[1] + 0xe8c7b756, 12); + MD5STEP(F1, c, d, a, b, in[2] + 0x242070db, 17); + MD5STEP(F1, b, c, d, a, in[3] + 0xc1bdceee, 22); + MD5STEP(F1, a, b, c, d, in[4] + 0xf57c0faf, 7); + MD5STEP(F1, d, a, b, c, in[5] + 0x4787c62a, 12); + MD5STEP(F1, c, d, a, b, in[6] + 0xa8304613, 17); + MD5STEP(F1, b, c, d, a, in[7] + 0xfd469501, 22); + MD5STEP(F1, a, b, c, d, in[8] + 0x698098d8, 7); + MD5STEP(F1, d, a, b, c, in[9] + 0x8b44f7af, 12); + MD5STEP(F1, c, d, a, b, in[10] + 0xffff5bb1, 17); + MD5STEP(F1, b, c, d, a, in[11] + 0x895cd7be, 22); + MD5STEP(F1, a, b, c, d, in[12] + 0x6b901122, 7); + MD5STEP(F1, d, a, b, c, in[13] + 0xfd987193, 12); + MD5STEP(F1, c, d, a, b, in[14] + 0xa679438e, 17); + MD5STEP(F1, b, c, d, a, in[15] + 0x49b40821, 22); + + MD5STEP(F2, a, b, c, d, in[1] + 0xf61e2562, 5); + MD5STEP(F2, d, a, b, c, in[6] + 0xc040b340, 9); + MD5STEP(F2, c, d, a, b, in[11] + 0x265e5a51, 14); + MD5STEP(F2, b, c, d, a, in[0] + 0xe9b6c7aa, 20); + MD5STEP(F2, a, b, c, d, in[5] + 0xd62f105d, 5); + MD5STEP(F2, d, a, b, c, in[10] + 0x02441453, 9); + MD5STEP(F2, c, d, a, b, in[15] + 0xd8a1e681, 14); + MD5STEP(F2, b, c, d, a, in[4] + 0xe7d3fbc8, 20); + MD5STEP(F2, a, b, c, d, in[9] + 0x21e1cde6, 5); + MD5STEP(F2, d, a, b, c, in[14] + 0xc33707d6, 9); + MD5STEP(F2, c, d, a, b, in[3] + 0xf4d50d87, 14); + MD5STEP(F2, b, c, d, a, in[8] + 0x455a14ed, 20); + MD5STEP(F2, a, b, c, d, in[13] + 0xa9e3e905, 5); + MD5STEP(F2, d, a, b, c, in[2] + 0xfcefa3f8, 9); + MD5STEP(F2, c, d, a, b, in[7] + 0x676f02d9, 14); + MD5STEP(F2, b, c, d, a, in[12] + 0x8d2a4c8a, 20); + + MD5STEP(F3, a, b, c, d, in[5] + 0xfffa3942, 4); + MD5STEP(F3, d, a, b, c, in[8] + 0x8771f681, 11); + MD5STEP(F3, c, d, a, b, in[11] + 0x6d9d6122, 16); + MD5STEP(F3, b, c, d, a, in[14] + 0xfde5380c, 23); + MD5STEP(F3, a, b, c, d, in[1] + 0xa4beea44, 4); + MD5STEP(F3, d, a, b, c, in[4] + 0x4bdecfa9, 11); + MD5STEP(F3, c, d, a, b, in[7] + 0xf6bb4b60, 16); + MD5STEP(F3, b, c, d, a, in[10] + 0xbebfbc70, 23); + MD5STEP(F3, a, b, c, d, in[13] + 0x289b7ec6, 4); + MD5STEP(F3, d, a, b, c, in[0] + 0xeaa127fa, 11); + MD5STEP(F3, c, d, a, b, in[3] + 0xd4ef3085, 16); + MD5STEP(F3, b, c, d, a, in[6] + 0x04881d05, 23); + MD5STEP(F3, a, b, c, d, in[9] + 0xd9d4d039, 4); + MD5STEP(F3, d, a, b, c, in[12] + 0xe6db99e5, 11); + MD5STEP(F3, c, d, a, b, in[15] + 0x1fa27cf8, 16); + MD5STEP(F3, b, c, d, a, in[2] + 0xc4ac5665, 23); + + MD5STEP(F4, a, b, c, d, in[0] + 0xf4292244, 6); + MD5STEP(F4, d, a, b, c, in[7] + 0x432aff97, 10); + MD5STEP(F4, c, d, a, b, in[14] + 0xab9423a7, 15); + MD5STEP(F4, b, c, d, a, in[5] + 0xfc93a039, 21); + MD5STEP(F4, a, b, c, d, in[12] + 0x655b59c3, 6); + MD5STEP(F4, d, a, b, c, in[3] + 0x8f0ccc92, 10); + MD5STEP(F4, c, d, a, b, in[10] + 0xffeff47d, 15); + MD5STEP(F4, b, c, d, a, in[1] + 0x85845dd1, 21); + MD5STEP(F4, a, b, c, d, in[8] + 0x6fa87e4f, 6); + MD5STEP(F4, d, a, b, c, in[15] + 0xfe2ce6e0, 10); + MD5STEP(F4, c, d, a, b, in[6] + 0xa3014314, 15); + MD5STEP(F4, b, c, d, a, in[13] + 0x4e0811a1, 21); + MD5STEP(F4, a, b, c, d, in[4] + 0xf7537e82, 6); + MD5STEP(F4, d, a, b, c, in[11] + 0xbd3af235, 10); + MD5STEP(F4, c, d, a, b, in[2] + 0x2ad7d2bb, 15); + MD5STEP(F4, b, c, d, a, in[9] + 0xeb86d391, 21); + + buf[0] += a; + buf[1] += b; + buf[2] += c; + buf[3] += d; +} + +//----------------------------------------------------------------------------- +// Purpose: Start MD5 accumulation. Set bit count to 0 and buffer to mysterious initialization constants. + +// Input : *ctx - +//----------------------------------------------------------------------------- +void MD5Init(MD5Context_t *ctx) +{ + ctx->buf[0] = 0x67452301; + ctx->buf[1] = 0xefcdab89; + ctx->buf[2] = 0x98badcfe; + ctx->buf[3] = 0x10325476; + + ctx->bits[0] = 0; + ctx->bits[1] = 0; +} + +//----------------------------------------------------------------------------- +// Purpose: Update context to reflect the concatenation of another buffer full of bytes. +// Input : *ctx - +// *buf - +// len - +//----------------------------------------------------------------------------- +void MD5Update(MD5Context_t *ctx, unsigned char const *buf, unsigned int len) +{ + unsigned int t; + + /* Update bitcount */ + + t = ctx->bits[0]; + if ((ctx->bits[0] = t + ((unsigned int) len << 3)) < t) + ctx->bits[1]++; /* Carry from low to high */ + ctx->bits[1] += len >> 29; + + t = (t >> 3) & 0x3f; /* Bytes already in shsInfo->data */ + + /* Handle any leading odd-sized chunks */ + + if (t) + { + unsigned char *p = (unsigned char *) ctx->in + t; + + t = 64 - t; + if (len < t) + { + memcpy(p, buf, len); + return; + } + memcpy(p, buf, t); + //byteReverse(ctx->in, 16); + MD5Transform(ctx->buf, (unsigned int *) ctx->in); + buf += t; + len -= t; + } + /* Process data in 64-byte chunks */ + + while (len >= 64) + { + memcpy(ctx->in, buf, 64); + //byteReverse(ctx->in, 16); + MD5Transform(ctx->buf, (unsigned int *) ctx->in); + buf += 64; + len -= 64; + } + + /* Handle any remaining bytes of data. */ + memcpy(ctx->in, buf, len); +} + +//----------------------------------------------------------------------------- +// Purpose: Final wrapup - pad to 64-byte boundary with the bit pattern +// 1 0* (64-bit count of bits processed, MSB-first) +// Input : digest[MD5_DIGEST_LENGTH] - +// *ctx - +//----------------------------------------------------------------------------- +void MD5Final(unsigned char digest[MD5_DIGEST_LENGTH], MD5Context_t *ctx) +{ + unsigned count; + unsigned char *p; + + /* Compute number of bytes mod 64 */ + count = (ctx->bits[0] >> 3) & 0x3F; + + /* Set the first char of padding to 0x80. This is safe since there is + always at least one byte free */ + p = ctx->in + count; + *p++ = 0x80; + + /* Bytes of padding needed to make 64 bytes */ + count = 64 - 1 - count; + + /* Pad out to 56 mod 64 */ + if (count < 8) + { + /* Two lots of padding: Pad the first block to 64 bytes */ + memset(p, 0, count); + //byteReverse(ctx->in, 16); + MD5Transform(ctx->buf, (unsigned int *) ctx->in); + + /* Now fill the next block with 56 bytes */ + memset(ctx->in, 0, 56); + } + else + { + /* Pad block to 56 bytes */ + memset(p, 0, count - 8); + } + //byteReverse(ctx->in, 14); + + /* Append length in bits and transform */ + ((unsigned int *) ctx->in)[14] = ctx->bits[0]; + ((unsigned int *) ctx->in)[15] = ctx->bits[1]; + + MD5Transform(ctx->buf, (unsigned int *) ctx->in); + //byteReverse((unsigned char *) ctx->buf, 4); + memcpy(digest, ctx->buf, MD5_DIGEST_LENGTH); + memset(ctx, 0, sizeof(MD5Context_t)); /* In case it's sensitive */ +} + +//----------------------------------------------------------------------------- +// Purpose: +// Input : *hash - +// hashlen - +// Output : char +//----------------------------------------------------------------------------- +char *MD5_Print( unsigned char *hash, int hashlen ) +{ + static char szReturn[64]; + + Assert( hashlen <= 32 ); + + Q_binarytohex( hash, hashlen, szReturn, sizeof( szReturn ) ); + return szReturn; +} + +//----------------------------------------------------------------------------- +// Purpose: generate pseudo random number from a seed number +// Input : seed number +// Output : pseudo random number +//----------------------------------------------------------------------------- +unsigned int MD5_PseudoRandom(unsigned int nSeed) +{ + MD5Context_t ctx; + unsigned char digest[MD5_DIGEST_LENGTH]; // The MD5 Hash + + memset( &ctx, 0, sizeof( ctx ) ); + + MD5Init(&ctx); + MD5Update(&ctx, (unsigned char*)&nSeed, sizeof(nSeed) ); + MD5Final(digest, &ctx); + + return *(unsigned int*)(digest+6); // use 4 middle bytes for random value +} diff --git a/tier1/commandbuffer.cpp b/tier1/commandbuffer.cpp new file mode 100644 index 00000000..a8f600a7 --- /dev/null +++ b/tier1/commandbuffer.cpp @@ -0,0 +1,636 @@ +//===== Copyright © 1996-2006, Valve Corporation, All rights reserved. ======// +// +// Purpose: +// +// $Workfile: $ +// $Date: $ +// $NoKeywords: $ +//===========================================================================// + +#include "tier1/CommandBuffer.h" +#include "tier1/utlbuffer.h" +#include "tier1/strtools.h" + +// memdbgon must be the last include file in a .cpp file!!! +#include "tier0/memdbgon.h" + +#define MAX_ALIAS_NAME 32 +#define MAX_COMMAND_LENGTH 1024 + +struct cmdalias_t +{ + cmdalias_t *next; + char name[ MAX_ALIAS_NAME ]; + char *value; +}; + + +//----------------------------------------------------------------------------- +// Constructor, destructor +//----------------------------------------------------------------------------- +CCommandBuffer::CCommandBuffer( ) : m_Commands( 32, 32 ) +{ + m_hNextCommand = m_Commands.InvalidIndex(); + m_nWaitDelayTicks = 1; + m_nCurrentTick = 0; + m_nLastTickToProcess = -1; + m_nArgSBufferSize = 0; + m_bIsProcessingCommands = false; + m_nMaxArgSBufferLength = ARGS_BUFFER_LENGTH; +} + +CCommandBuffer::~CCommandBuffer() +{ +} + + +//----------------------------------------------------------------------------- +// Indicates how long to delay when encoutering a 'wait' command +//----------------------------------------------------------------------------- +void CCommandBuffer::SetWaitDelayTime( int nTickDelay ) +{ + Assert( nTickDelay >= 0 ); + m_nWaitDelayTicks = nTickDelay; +} + + +//----------------------------------------------------------------------------- +// Specifies a max limit of the args buffer. For unittesting. Size == 0 means use default +//----------------------------------------------------------------------------- +void CCommandBuffer::LimitArgumentBufferSize( int nSize ) +{ + if ( nSize > ARGS_BUFFER_LENGTH ) + { + nSize = ARGS_BUFFER_LENGTH; + } + + m_nMaxArgSBufferLength = ( nSize == 0 ) ? ARGS_BUFFER_LENGTH : nSize; +} + + +//----------------------------------------------------------------------------- +// Parses argv0 out of the buffer +//----------------------------------------------------------------------------- +bool CCommandBuffer::ParseArgV0( CUtlBuffer &buf, char *pArgV0, int nMaxLen, const char **pArgS ) +{ + pArgV0[0] = 0; + *pArgS = NULL; + + if ( !buf.IsValid() ) + return false; + + int nSize = buf.ParseToken( CCommand::DefaultBreakSet(), pArgV0, nMaxLen ); + if ( ( nSize <= 0 ) || ( nMaxLen == nSize ) ) + return false; + + int nArgSLen = buf.TellMaxPut() - buf.TellGet(); + *pArgS = (nArgSLen > 0) ? (const char*)buf.PeekGet() : NULL; + return true; +} + + +//----------------------------------------------------------------------------- +// Insert a command into the command queue +//----------------------------------------------------------------------------- +void CCommandBuffer::InsertCommandAtAppropriateTime( int hCommand ) +{ + int i; + Command_t &command = m_Commands[hCommand]; + for ( i = m_Commands.Head(); i != m_Commands.InvalidIndex(); i = m_Commands.Next(i) ) + { + if ( m_Commands[i].m_nTick > command.m_nTick ) + break; + } + m_Commands.LinkBefore( i, hCommand ); +} + + +//----------------------------------------------------------------------------- +// Insert a command into the command queue at the appropriate time +//----------------------------------------------------------------------------- +void CCommandBuffer::InsertImmediateCommand( int hCommand ) +{ + m_Commands.LinkBefore( m_hNextCommand, hCommand ); +} + + +//----------------------------------------------------------------------------- +// Insert a command into the command queue +//----------------------------------------------------------------------------- +bool CCommandBuffer::InsertCommand( const char *pArgS, int nCommandSize, int nTick ) +{ + if ( nCommandSize >= CCommand::MaxCommandLength() ) + { + Warning( "WARNING: Command too long... ignoring!\n%s\n", pArgS ); + return false; + } + + // Add one for null termination + if ( m_nArgSBufferSize + nCommandSize + 1 > m_nMaxArgSBufferLength ) + { + Compact(); + if ( m_nArgSBufferSize + nCommandSize + 1 > m_nMaxArgSBufferLength ) + return false; + } + + memcpy( &m_pArgSBuffer[m_nArgSBufferSize], pArgS, nCommandSize ); + m_pArgSBuffer[m_nArgSBufferSize + nCommandSize] = 0; + ++nCommandSize; + + int hCommand = m_Commands.Alloc(); + Command_t &command = m_Commands[hCommand]; + command.m_nTick = nTick; + command.m_nFirstArgS = m_nArgSBufferSize; + command.m_nBufferSize = nCommandSize; + + m_nArgSBufferSize += nCommandSize; + + if ( !m_bIsProcessingCommands || ( nTick > m_nCurrentTick ) ) + { + InsertCommandAtAppropriateTime( hCommand ); + } + else + { + InsertImmediateCommand( hCommand ); + } + return true; +} + + +//----------------------------------------------------------------------------- +// Returns the length of the next command +//----------------------------------------------------------------------------- +void CCommandBuffer::GetNextCommandLength( const char *pText, int nMaxLen, int *pCommandLength, int *pNextCommandOffset ) +{ + int nCommandLength = 0; + int nNextCommandOffset; + bool bIsQuoted = false; + bool bIsCommented = false; + for ( nNextCommandOffset=0; nNextCommandOffset < nMaxLen; ++nNextCommandOffset, nCommandLength += bIsCommented ? 0 : 1 ) + { + char c = pText[nNextCommandOffset]; + if ( !bIsCommented ) + { + if ( c == '"' ) + { + bIsQuoted = !bIsQuoted; + continue; + } + + // don't break if inside a C++ style comment + if ( !bIsQuoted && c == '/' ) + { + bIsCommented = ( nNextCommandOffset < nMaxLen-1 ) && pText[nNextCommandOffset+1] == '/'; + if ( bIsCommented ) + { + ++nNextCommandOffset; + continue; + } + } + + // don't break if inside a quoted string + if ( !bIsQuoted && c == ';' ) + break; + } + + // FIXME: This is legacy behavior; should we not break if a \n is inside a quoted string? + if ( c == '\n' ) + break; + } + + *pCommandLength = nCommandLength; + *pNextCommandOffset = nNextCommandOffset; +} + + +//----------------------------------------------------------------------------- +// Add text to command buffer, return false if it couldn't owing to overflow +//----------------------------------------------------------------------------- +bool CCommandBuffer::AddText( const char *pText, int nTickDelay ) +{ + Assert( nTickDelay >= 0 ); + + int nLen = Q_strlen( pText ); + int nTick = m_nCurrentTick + nTickDelay; + + // Parse the text into distinct commands + const char *pCurrentCommand = pText; + int nOffsetToNextCommand; + for( ; nLen > 0; nLen -= nOffsetToNextCommand+1, pCurrentCommand += nOffsetToNextCommand+1 ) + { + // find a \n or ; line break + int nCommandLength; + GetNextCommandLength( pCurrentCommand, nLen, &nCommandLength, &nOffsetToNextCommand ); + if ( nCommandLength <= 0 ) + continue; + + const char *pArgS; + char *pArgV0 = (char*)_alloca( nCommandLength+1 ); + CUtlBuffer bufParse( pCurrentCommand, nCommandLength, CUtlBuffer::TEXT_BUFFER | CUtlBuffer::READ_ONLY ); + ParseArgV0( bufParse, pArgV0, nCommandLength+1, &pArgS ); + if ( pArgV0[0] == 0 ) + continue; + + // Deal with the special 'wait' command + if ( !Q_stricmp( pArgV0, "wait" ) ) + { + int nDelay = pArgS ? atoi( pArgS ) : m_nWaitDelayTicks; + nTick += nDelay; + continue; + } + + if ( !InsertCommand( pCurrentCommand, nCommandLength, nTick ) ) + return false; + } + + return true; +} + + +//----------------------------------------------------------------------------- +// Are we in the middle of processing commands? +//----------------------------------------------------------------------------- +bool CCommandBuffer::IsProcessingCommands() +{ + return m_bIsProcessingCommands; +} + + +//----------------------------------------------------------------------------- +// Delays all queued commands to execute at a later time +//----------------------------------------------------------------------------- +void CCommandBuffer::DelayAllQueuedCommands( int nDelay ) +{ + if ( nDelay <= 0 ) + return; + + for ( int i = m_Commands.Head(); i != m_Commands.InvalidIndex(); i = m_Commands.Next(i) ) + { + m_Commands[i].m_nTick += nDelay; + } +} + + +//----------------------------------------------------------------------------- +// Call this to begin iterating over all commands up to flCurrentTime +//----------------------------------------------------------------------------- +void CCommandBuffer::BeginProcessingCommands( int nDeltaTicks ) +{ + if ( nDeltaTicks == 0 ) + return; + + Assert( !m_bIsProcessingCommands ); + m_bIsProcessingCommands = true; + m_nLastTickToProcess = m_nCurrentTick + nDeltaTicks - 1; + + // Necessary to insert commands while commands are being processed + m_hNextCommand = m_Commands.Head(); +} + + +//----------------------------------------------------------------------------- +// Returns the next command +//----------------------------------------------------------------------------- +bool CCommandBuffer::DequeueNextCommand( ) +{ + m_CurrentCommand.Reset(); + + Assert( m_bIsProcessingCommands ); + if ( m_Commands.Count() == 0 ) + return false; + + int nHead = m_Commands.Head(); + Command_t &command = m_Commands[ nHead ]; + if ( command.m_nTick > m_nLastTickToProcess ) + return false; + + m_nCurrentTick = command.m_nTick; + + // Copy the current command into a temp buffer + // NOTE: This is here to avoid the pointers returned by DequeueNextCommand + // to become invalid by calling AddText. Is there a way we can avoid the memcpy? + if ( command.m_nBufferSize > 0 ) + { + m_CurrentCommand.Tokenize( &m_pArgSBuffer[command.m_nFirstArgS] ); + } + + m_Commands.Remove( nHead ); + + // Necessary to insert commands while commands are being processed + m_hNextCommand = m_Commands.Head(); + +// Msg("Dequeue : "); +// for ( int i = 0; i < nArgc; ++i ) +// { +// Msg("%s ", m_pCurrentArgv[i] ); +// } +// Msg("\n"); + return true; +} + + +//----------------------------------------------------------------------------- +// Returns the next command +//----------------------------------------------------------------------------- +int CCommandBuffer::DequeueNextCommand( const char **& ppArgv ) +{ + DequeueNextCommand(); + ppArgv = ArgV(); + return ArgC(); +} + + +//----------------------------------------------------------------------------- +// Compacts the command buffer +//----------------------------------------------------------------------------- +void CCommandBuffer::Compact() +{ + // Compress argvbuffer + argv + // NOTE: I'm using this choice instead of calling malloc + free + // per command to allocate arguments because I expect to post a + // bunch of commands but not have many delayed commands; + // avoiding the allocation cost seems more important that the memcpy + // cost here since I expect to not have much to copy. + m_nArgSBufferSize = 0; + + char pTempBuffer[ ARGS_BUFFER_LENGTH ]; + for ( int i = m_Commands.Head(); i != m_Commands.InvalidIndex(); i = m_Commands.Next(i) ) + { + Command_t &command = m_Commands[ i ]; + + memcpy( &pTempBuffer[m_nArgSBufferSize], &m_pArgSBuffer[command.m_nFirstArgS], command.m_nBufferSize ); + command.m_nFirstArgS = m_nArgSBufferSize; + m_nArgSBufferSize += command.m_nBufferSize; + } + + // NOTE: We could also store 2 buffers in the command buffer and switch + // between the two to avoid the 2nd memcpy; but again I'm guessing the memory + // tradeoff isn't worth it + memcpy( m_pArgSBuffer, pTempBuffer, m_nArgSBufferSize ); +} + + +//----------------------------------------------------------------------------- +// Call this to finish iterating over all commands +//----------------------------------------------------------------------------- +void CCommandBuffer::EndProcessingCommands() +{ + Assert( m_bIsProcessingCommands ); + m_bIsProcessingCommands = false; + m_nCurrentTick = m_nLastTickToProcess + 1; + m_hNextCommand = m_Commands.InvalidIndex(); + + // Extract commands that are before the end time + // NOTE: This is a bug for this to + int i = m_Commands.Head(); + if ( i == m_Commands.InvalidIndex() ) + { + m_nArgSBufferSize = 0; + return; + } + + while ( i != m_Commands.InvalidIndex() ) + { + if ( m_Commands[i].m_nTick >= m_nCurrentTick ) + break; + + AssertMsgOnce( false, "CCommandBuffer::EndProcessingCommands() called before all appropriate commands were dequeued.\n" ); + int nNext = i; + Msg( "Warning: Skipping command %s\n", m_pArgSBuffer[ m_Commands[i].m_nFirstArgS ] ); + m_Commands.Remove( i ); + i = nNext; + } + + Compact(); +} + + +//----------------------------------------------------------------------------- +// Returns a handle to the next command to process +//----------------------------------------------------------------------------- +CommandHandle_t CCommandBuffer::GetNextCommandHandle() +{ + Assert( m_bIsProcessingCommands ); + return m_Commands.Head(); +} + + +#if 0 +/* +=============== +Cmd_Alias_f + +Creates a new command that executes a command string (possibly ; seperated) +=============== +*/ +void Cmd_Alias_f (void) +{ + cmdalias_t *a; + char cmd[MAX_COMMAND_LENGTH]; + int i, c; + char *s; + + if (Cmd_Argc() == 1) + { + Con_Printf ("Current alias commands:\n"); + for (a = cmd_alias ; a ; a=a->next) + Con_Printf ("%s : %s\n", a->name, a->value); + return; + } + + s = Cmd_Argv(1); + if (strlen(s) >= MAX_ALIAS_NAME) + { + Con_Printf ("Alias name is too long\n"); + return; + } + +// copy the rest of the command line + cmd[0] = 0; // start out with a null string + c = Cmd_Argc(); + for (i=2 ; i< c ; i++) + { + Q_strncat(cmd, Cmd_Argv(i), sizeof( cmd ), COPY_ALL_CHARACTERS); + if (i != c) + { + Q_strncat (cmd, " ", sizeof( cmd ), COPY_ALL_CHARACTERS ); + } + } + Q_strncat (cmd, "\n", sizeof( cmd ), COPY_ALL_CHARACTERS); + + // if the alias already exists, reuse it + for (a = cmd_alias ; a ; a=a->next) + { + if (!strcmp(s, a->name)) + { + if ( !strcmp( a->value, cmd ) ) // Re-alias the same thing + return; + + delete[] a->value; + break; + } + } + + if (!a) + { + a = (cmdalias_t *)new cmdalias_t; + a->next = cmd_alias; + cmd_alias = a; + } + Q_strncpy (a->name, s, sizeof( a->name ) ); + + a->value = COM_StringCopy(cmd); +} + + + +/* +============================================================================= + + COMMAND EXECUTION + +============================================================================= +*/ + +#define MAX_ARGS 80 + +static int cmd_argc; +static char *cmd_argv[MAX_ARGS]; +static char *cmd_null_string = ""; +static const char *cmd_args = NULL; + +cmd_source_t cmd_source; + +//----------------------------------------------------------------------------- +// Purpose: +// Output : void Cmd_Init +//----------------------------------------------------------------------------- + +//----------------------------------------------------------------------------- +// Purpose: +//----------------------------------------------------------------------------- +void Cmd_Shutdown( void ) +{ + // TODO, cleanup + while ( cmd_alias ) + { + cmdalias_t *next = cmd_alias->next; + delete cmd_alias->value; // created by StringCopy() + delete cmd_alias; + cmd_alias = next; + } +} + + + +/* +============ +Cmd_ExecuteString + +A complete command line has been parsed, so try to execute it +FIXME: lookupnoadd the token to speed search? +============ +*/ +const ConCommandBase *Cmd_ExecuteString (const char *text, cmd_source_t src) +{ + cmdalias_t *a; + + cmd_source = src; + Cmd_TokenizeString (text); + +// execute the command line + if (!Cmd_Argc()) + return NULL; // no tokens + +// check alias + for (a=cmd_alias ; a ; a=a->next) + { + if (!Q_strcasecmp (cmd_argv[0], a->name)) + { + Cbuf_InsertText (a->value); + return NULL; + } + } + +// check ConCommands + ConCommandBase const *pCommand = ConCommandBase::FindCommand( cmd_argv[ 0 ] ); + if ( pCommand && pCommand->IsCommand() ) + { + bool isServerCommand = ( pCommand->IsBitSet( FCVAR_GAMEDLL ) && + // Typed at console + cmd_source == src_command && + // Not HLDS + !sv.IsDedicated() ); + + // Hook to allow game .dll to figure out who type the message on a listen server + if ( serverGameClients ) + { + // We're actually the server, so set it up locally + if ( sv.IsActive() ) + { + g_pServerPluginHandler->SetCommandClient( -1 ); + +#ifndef SWDS + // Special processing for listen server player + if ( isServerCommand ) + { + g_pServerPluginHandler->SetCommandClient( cl.m_nPlayerSlot ); + } +#endif + } + // We're not the server, but we've been a listen server (game .dll loaded) + // forward this command tot he server instead of running it locally if we're still + // connected + // Otherwise, things like "say" won't work unless you quit and restart + else if ( isServerCommand ) + { + if ( cl.IsConnected() ) + { + Cmd_ForwardToServer(); + return NULL; + } + else + { + // It's a server command, but we're not connected to a server. Don't try to execute it. + return NULL; + } + } + } + + // Allow cheat commands in singleplayer, debug, or multiplayer with sv_cheats on +#ifndef _DEBUG + if ( pCommand->IsBitSet( FCVAR_CHEAT ) ) + { + if ( !Host_IsSinglePlayerGame() && sv_cheats.GetInt() == 0 ) + { + Msg( "Can't use cheat command %s in multiplayer, unless the server has sv_cheats set to 1.\n", pCommand->GetName() ); + return NULL; + } + } +#endif + + (( ConCommand * )pCommand )->Dispatch(); + return pCommand; + } + + // check cvars + if ( cv->IsCommand() ) + { + return pCommand; + } + + // forward the command line to the server, so the entity DLL can parse it + if ( cmd_source == src_command ) + { + if ( cl.IsConnected() ) + { + Cmd_ForwardToServer(); + return NULL; + } + } + + Msg("Unknown command \"%s\"\n", Cmd_Argv(0)); + + return NULL; +} +#endif diff --git a/tier1/convar.cpp b/tier1/convar.cpp new file mode 100644 index 00000000..678fba6d --- /dev/null +++ b/tier1/convar.cpp @@ -0,0 +1,1360 @@ + +//===== Copyright © 1996-2005, Valve Corporation, All rights reserved. ======// +// +// Purpose: +// +// $NoKeywords: $ +// +//===========================================================================// + +#include +#include +#include +#include "basetypes.h" +#include "tier1/convar.h" +#include "tier1/strtools.h" +#include "tier1/characterset.h" +#include "tier1/utlbuffer.h" +#include "tier1/tier1.h" +#include "tier1/convar_serverbounded.h" +#include "icvar.h" +#include "tier0/dbg.h" +#include "Color.h" +#if defined( _X360 ) +#include "xbox/xbox_console.h" +#endif +#include "tier0/memdbgon.h" + + +// Comment this out when we release. +//#define ALLOW_DEVELOPMENT_CVARS + + + +//----------------------------------------------------------------------------- +// Statically constructed list of ConCommandBases, +// used for registering them with the ICVar interface +//----------------------------------------------------------------------------- +ConCommandBase *ConCommandBase::s_pConCommandBases = NULL; +IConCommandBaseAccessor *ConCommandBase::s_pAccessor = NULL; +static int64 s_nCVarFlag = 0; +static int s_nDLLIdentifier = -1; // A unique identifier indicating which DLL this convar came from +static bool s_bRegistered = false; + +class CDefaultAccessor : public IConCommandBaseAccessor +{ +public: + virtual bool RegisterConCommandBase( ConCommandBase *pVar ) + { + // Link to engine's list instead + g_pCVar->RegisterConCommand( pVar ); + return true; + } +}; + +static CDefaultAccessor s_DefaultAccessor; + +//----------------------------------------------------------------------------- +// Called by the framework to register ConCommandBases with the ICVar +//----------------------------------------------------------------------------- +void ConVar_Register( int64 nCVarFlag, IConCommandBaseAccessor *pAccessor ) +{ + if ( !g_pCVar || s_bRegistered ) + return; + + Assert( s_nDLLIdentifier < 0 ); + s_bRegistered = true; + s_nCVarFlag = nCVarFlag; + s_nDLLIdentifier = g_pCVar->AllocateDLLIdentifier(); + + ConCommandBase *pCur, *pNext; + + ConCommandBase::s_pAccessor = pAccessor ? pAccessor : &s_DefaultAccessor; + pCur = ConCommandBase::s_pConCommandBases; + while ( pCur ) + { + pNext = pCur->m_pNext; + pCur->AddFlags( s_nCVarFlag ); + pCur->Init(); + pCur = pNext; + } + + ConCommandBase::s_pConCommandBases = NULL; +} + +void ConVar_Unregister( ) +{ + if ( !g_pCVar || !s_bRegistered ) + return; + + Assert( s_nDLLIdentifier >= 0 ); + g_pCVar->UnregisterConCommands( s_nDLLIdentifier ); + s_nDLLIdentifier = -1; + s_bRegistered = false; +} + + +//----------------------------------------------------------------------------- +// Purpose: Default constructor +//----------------------------------------------------------------------------- +ConCommandBase::ConCommandBase( void ) +{ + m_bRegistered = false; + m_pszName = NULL; + m_pszHelpString = NULL; + + m_nFlags = 0; + m_pNext = NULL; +} + +//----------------------------------------------------------------------------- +// Purpose: The base console invoked command/cvar interface +// Input : *pName - name of variable/command +// *pHelpString - help text +// flags - flags +//----------------------------------------------------------------------------- +ConCommandBase::ConCommandBase( const char *pName, const char *pHelpString /*=0*/, int64 flags /*= 0*/ ) +{ + Create( pName, pHelpString, flags ); +} + +//----------------------------------------------------------------------------- +// Purpose: +//----------------------------------------------------------------------------- +ConCommandBase::~ConCommandBase( void ) +{ +} + +//----------------------------------------------------------------------------- +// Purpose: +// Output : Returns true on success, false on failure. +//----------------------------------------------------------------------------- +bool ConCommandBase::IsCommand( void ) const +{ +// Assert( 0 ); This can't assert. . causes a recursive assert in Sys_Printf, etc. + return true; +} + + +//----------------------------------------------------------------------------- +// Returns the DLL identifier +//----------------------------------------------------------------------------- +CVarDLLIdentifier_t ConCommandBase::GetDLLIdentifier() const +{ + return s_nDLLIdentifier; +} + + +//----------------------------------------------------------------------------- +// Purpose: +// Input : *pName - +// callback - +// *pHelpString - +// flags - +//----------------------------------------------------------------------------- +void ConCommandBase::Create( const char *pName, const char *pHelpString /*= 0*/, int64 flags /*= 0*/ ) +{ + static const char *empty_string = ""; + + m_bRegistered = false; + + // Name should be static data + Assert( pName ); + m_pszName = pName; + m_pszHelpString = pHelpString ? pHelpString : empty_string; + + m_nFlags = flags; + +#ifdef ALLOW_DEVELOPMENT_CVARS + m_nFlags &= ~FCVAR_DEVELOPMENTONLY; +#endif + + if ( !( m_nFlags & FCVAR_UNREGISTERED ) ) + { + m_pNext = s_pConCommandBases; + s_pConCommandBases = this; + } + else + { + // It's unregistered + m_pNext = NULL; + } + + // If s_pAccessor is already set (this ConVar is not a global variable), + // register it. + if ( s_pAccessor ) + { + Init(); + } +} + + +//----------------------------------------------------------------------------- +// Purpose: Used internally by OneTimeInit to initialize. +//----------------------------------------------------------------------------- +void ConCommandBase::Init() +{ + if ( s_pAccessor ) + { + s_pAccessor->RegisterConCommandBase( this ); + } +} + +void ConCommandBase::Shutdown() +{ + if ( g_pCVar ) + { + g_pCVar->UnregisterConCommand( this ); + } +} + + +//----------------------------------------------------------------------------- +// Purpose: Return name of the command/var +// Output : const char +//----------------------------------------------------------------------------- +const char *ConCommandBase::GetName( void ) const +{ + return m_pszName; +} + + +//----------------------------------------------------------------------------- +// Purpose: +// Input : flag - +// Output : Returns true on success, false on failure. +//----------------------------------------------------------------------------- +bool ConCommandBase::IsFlagSet( int64 flag ) const +{ + return ( flag & m_nFlags ) ? true : false; +} + +//----------------------------------------------------------------------------- +// Purpose: +// Input : flags - +//----------------------------------------------------------------------------- +void ConCommandBase::AddFlags( int64 flags ) +{ + m_nFlags |= flags; + +#ifdef ALLOW_DEVELOPMENT_CVARS + m_nFlags &= ~FCVAR_DEVELOPMENTONLY; +#endif +} + +void ConCommandBase::RemoveFlags( int64 flags ) +{ + m_nFlags &= ~flags; +} + +int64 ConCommandBase::GetFlags( void ) const +{ + return m_nFlags; +} + + +//----------------------------------------------------------------------------- +// Purpose: +// Output : const ConCommandBase +//----------------------------------------------------------------------------- +const ConCommandBase *ConCommandBase::GetNext( void ) const +{ + return m_pNext; +} + +ConCommandBase *ConCommandBase::GetNext( void ) +{ + return m_pNext; +} + + +//----------------------------------------------------------------------------- +// Purpose: Copies string using local new/delete operators +// Input : *from - +// Output : char +//----------------------------------------------------------------------------- +char *ConCommandBase::CopyString( const char *from ) +{ + int len; + char *to; + + len = strlen( from ); + if ( len <= 0 ) + { + to = new char[1]; + to[0] = 0; + } + else + { + to = new char[len+1]; + Q_strncpy( to, from, len+1 ); + } + return to; +} + +//----------------------------------------------------------------------------- +// Purpose: +// Output : const char +//----------------------------------------------------------------------------- +const char *ConCommandBase::GetHelpText( void ) const +{ + return m_pszHelpString; +} + +//----------------------------------------------------------------------------- +// Purpose: Has this cvar been registered +// Output : Returns true on success, false on failure. +//----------------------------------------------------------------------------- +bool ConCommandBase::IsRegistered( void ) const +{ + return m_bRegistered; +} + +bool ConCommandBase::IsBoundedVar(void) const +{ + return false; +} + +//----------------------------------------------------------------------------- +// +// Con Commands start here +// +//----------------------------------------------------------------------------- + + +//----------------------------------------------------------------------------- +// Global methods +//----------------------------------------------------------------------------- +static characterset_t s_BreakSet; +static bool s_bBuiltBreakSet = false; + + +//----------------------------------------------------------------------------- +// Tokenizer class +//----------------------------------------------------------------------------- +CCommand::CCommand() +{ + if ( !s_bBuiltBreakSet ) + { + s_bBuiltBreakSet = true; + CharacterSetBuild( &s_BreakSet, "{}()':" ); + } + + Reset(); +} + +CCommand::CCommand( int nArgC, const char **ppArgV ) +{ + Assert( nArgC > 0 ); + + if ( !s_bBuiltBreakSet ) + { + s_bBuiltBreakSet = true; + CharacterSetBuild( &s_BreakSet, "{}()':" ); + } + + Reset(); + + char *pBuf = m_pArgvBuffer; + char *pSBuf = m_pArgSBuffer; + m_nArgc = nArgC; + for ( int i = 0; i < nArgC; ++i ) + { + m_ppArgv[i] = pBuf; + int nLen = Q_strlen( ppArgV[i] ); + memcpy( pBuf, ppArgV[i], nLen+1 ); + if ( i == 0 ) + { + m_nArgv0Size = nLen; + } + pBuf += nLen+1; + + bool bContainsSpace = strchr( ppArgV[i], ' ' ) != NULL; + if ( bContainsSpace ) + { + *pSBuf++ = '\"'; + } + memcpy( pSBuf, ppArgV[i], nLen ); + pSBuf += nLen; + if ( bContainsSpace ) + { + *pSBuf++ = '\"'; + } + + if ( i != nArgC - 1 ) + { + *pSBuf++ = ' '; + } + } +} + +void CCommand::Reset() +{ + m_nArgc = 0; + m_nArgv0Size = 0; + m_pArgSBuffer[0] = 0; +} + +characterset_t* CCommand::DefaultBreakSet() +{ + return &s_BreakSet; +} + +bool CCommand::Tokenize( const char *pCommand, characterset_t *pBreakSet ) +{ + Reset(); + if ( !pCommand ) + return false; + + // Use default break set + if ( !pBreakSet ) + { + pBreakSet = &s_BreakSet; + } + + // Copy the current command into a temp buffer + // NOTE: This is here to avoid the pointers returned by DequeueNextCommand + // to become invalid by calling AddText. Is there a way we can avoid the memcpy? + int nLen = Q_strlen( pCommand ); + if ( nLen >= COMMAND_MAX_LENGTH - 1 ) + { + Warning( "CCommand::Tokenize: Encountered command which overflows the tokenizer buffer.. Skipping!\n" ); + return false; + } + + memcpy( m_pArgSBuffer, pCommand, nLen + 1 ); + + // Parse the current command into the current command buffer + CUtlBuffer bufParse( m_pArgSBuffer, nLen, CUtlBuffer::TEXT_BUFFER | CUtlBuffer::READ_ONLY ); + int nArgvBufferSize = 0; + while ( bufParse.IsValid() && ( m_nArgc < COMMAND_MAX_ARGC ) ) + { + char *pArgvBuf = &m_pArgvBuffer[nArgvBufferSize]; + int nMaxLen = COMMAND_MAX_LENGTH - nArgvBufferSize; + int nStartGet = bufParse.TellGet(); + int nSize = bufParse.ParseToken( pBreakSet, pArgvBuf, nMaxLen ); + if ( nSize < 0 ) + break; + + // Check for overflow condition + if ( nMaxLen == nSize ) + { + Reset(); + return false; + } + + if ( m_nArgc == 1 ) + { + // Deal with the case where the arguments were quoted + m_nArgv0Size = bufParse.TellGet(); + bool bFoundEndQuote = m_pArgSBuffer[m_nArgv0Size-1] == '\"'; + if ( bFoundEndQuote ) + { + --m_nArgv0Size; + } + m_nArgv0Size -= nSize; + Assert( m_nArgv0Size != 0 ); + + // The StartGet check is to handle this case: "foo"bar + // which will parse into 2 different args. ArgS should point to bar. + bool bFoundStartQuote = ( m_nArgv0Size > nStartGet ) && ( m_pArgSBuffer[m_nArgv0Size-1] == '\"' ); + Assert( bFoundEndQuote == bFoundStartQuote ); + if ( bFoundStartQuote ) + { + --m_nArgv0Size; + } + } + + m_ppArgv[ m_nArgc++ ] = pArgvBuf; + if( m_nArgc >= COMMAND_MAX_ARGC ) + { + Warning( "CCommand::Tokenize: Encountered command which overflows the argument buffer.. Clamped!\n" ); + } + + nArgvBufferSize += nSize + 1; + Assert( nArgvBufferSize <= COMMAND_MAX_LENGTH ); + } + + return true; +} + + +//----------------------------------------------------------------------------- +// Helper function to parse arguments to commands. +//----------------------------------------------------------------------------- +const char* CCommand::FindArg( const char *pName ) const +{ + int nArgC = ArgC(); + for ( int i = 1; i < nArgC; i++ ) + { + if ( !Q_stricmp( Arg(i), pName ) ) + return (i+1) < nArgC ? Arg( i+1 ) : ""; + } + return 0; +} + +int CCommand::FindArgInt( const char *pName, int nDefaultVal ) const +{ + const char *pVal = FindArg( pName ); + if ( pVal ) + return atoi( pVal ); + else + return nDefaultVal; +} + + +//----------------------------------------------------------------------------- +// Default console command autocompletion function +//----------------------------------------------------------------------------- +int DefaultCompletionFunc( const char *partial, CUtlVector< CUtlString > &commands ) +{ + return 0; +} + + +ConCommand::ConCommand( const char *pName, FnCommandCallback_t callback, const char *pHelpString /*= 0*/, int64 flags /*= 0*/, FnCommandCompletionCallback completionFunc /*= 0*/ ) +{ + // Add the callback + if (callback) + { + ConCommandCB cb; + cb.m_fnCommandCallback = callback; + cb.m_bUsingOldCommandCallback = true; + cb.m_bUsingV1CommandCallback = false; + cb.m_bUsingV2CommandCallback = false; + cb.m_bUsingCommandCallbackInterface = false; + m_Callbacks.AddToTail(cb); + } + + m_fnCompletionCallback = completionFunc ? completionFunc : DefaultCompletionFunc; + m_bHasCompletionCallback = completionFunc != 0 ? true : false; + m_bUsingCommandCompletionInterface = false; + + m_pParent = this; + + // Setup the rest + BaseClass::Create( pName, pHelpString, flags ); +} + +ConCommand::ConCommand(const char *pName, FnCommandCallbackV1_t callback, const char *pHelpString /*= 0*/, int64 flags /*= 0*/, FnCommandCompletionCallback completionFunc /*= 0*/) +{ + // Add the callback + if (callback) + { + ConCommandCB cb; + cb.m_fnCommandCallbackV1 = callback; + cb.m_bUsingOldCommandCallback = false; + cb.m_bUsingV1CommandCallback = true; + cb.m_bUsingV2CommandCallback = false; + cb.m_bUsingCommandCallbackInterface = false; + m_Callbacks.AddToTail(cb); + } + + m_fnCompletionCallback = completionFunc ? completionFunc : DefaultCompletionFunc; + m_bHasCompletionCallback = completionFunc != 0 ? true : false; + m_bUsingCommandCompletionInterface = false; + + m_pParent = this; + + // Setup the rest + BaseClass::Create(pName, pHelpString, flags); +} + +ConCommand::ConCommand(const char *pName, FnCommandCallbackV2_t callback, const char *pHelpString /*= 0*/, int64 flags /*= 0*/, FnCommandCompletionCallback completionFunc /*= 0*/) +{ + // Add the callback + if (callback) + { + ConCommandCB cb; + cb.m_fnCommandCallbackV2 = callback; + cb.m_bUsingOldCommandCallback = false; + cb.m_bUsingV1CommandCallback = false; + cb.m_bUsingV2CommandCallback = true; + cb.m_bUsingCommandCallbackInterface = false; + m_Callbacks.AddToTail(cb); + } + + m_fnCompletionCallback = completionFunc ? completionFunc : DefaultCompletionFunc; + m_bHasCompletionCallback = completionFunc != 0 ? true : false; + m_bUsingCommandCompletionInterface = false; + + m_pParent = this; + + // Setup the rest + BaseClass::Create(pName, pHelpString, flags); +} + +ConCommand::ConCommand( const char *pName, ICommandCallback *pCallback, const char *pHelpString /*= 0*/, int64 flags /*= 0*/, ICommandCompletionCallback *pCompletionCallback /*= 0*/ ) +{ + // Add the callback iface + if (pCallback) + { + ConCommandCB cb; + cb.m_pCommandCallback = pCallback; + cb.m_bUsingOldCommandCallback = false; + cb.m_bUsingV1CommandCallback = false; + cb.m_bUsingV2CommandCallback = false; + cb.m_bUsingCommandCallbackInterface = true; + m_Callbacks.AddToTail(cb); + } + + m_pCommandCompletionCallback = pCompletionCallback; + m_bHasCompletionCallback = ( pCompletionCallback != 0 ); + m_bUsingCommandCompletionInterface = true; + + m_pParent = this; + + // Setup the rest + BaseClass::Create( pName, pHelpString, flags ); +} + +//----------------------------------------------------------------------------- +// Destructor +//----------------------------------------------------------------------------- +ConCommand::~ConCommand( void ) +{ +} + + +//----------------------------------------------------------------------------- +// Purpose: Returns true if this is a command +//----------------------------------------------------------------------------- +bool ConCommand::IsCommand( void ) const +{ + return true; +} + + +//----------------------------------------------------------------------------- +// Purpose: Invoke the function if there is one +//----------------------------------------------------------------------------- +void ConCommand::Dispatch( const CCommandContext &context, const CCommand &command ) +{ + FOR_EACH_VEC(m_Callbacks, i) + { + ConCommandCB cb = m_Callbacks[i]; + if (cb.m_fnCallbackAny) + { + if (cb.m_bUsingOldCommandCallback) + { + (*cb.m_fnCommandCallback)(command); + return; + } + else if (cb.m_bUsingCommandCallbackInterface) + { + cb.m_pCommandCallback->CommandCallback(context, command); + return; + } + else if (cb.m_bUsingV1CommandCallback) + { + (*cb.m_fnCommandCallbackV1)(context); + return; + } + else if (cb.m_bUsingV2CommandCallback) + { + cb.m_fnCommandCallbackV2(context, command); + } + } + + // Command without callback!!! + AssertMsg(0, ("Encountered ConCommand without a callback!\n")); + } +} + + +//----------------------------------------------------------------------------- +// Purpose: Calls the autocompletion method to get autocompletion suggestions +//----------------------------------------------------------------------------- +int ConCommand::AutoCompleteSuggest( const char *partial, CUtlVector< CUtlString > &commands ) +{ + if (m_bUsingCommandCompletionInterface) + { + if ( !m_pCommandCompletionCallback ) + return 0; + return m_pCommandCompletionCallback->CommandCompletionCallback( partial, commands ); + } + + Assert( m_fnCompletionCallback ); + if ( !m_fnCompletionCallback ) + return 0; + + return m_fnCompletionCallback( partial, commands ); +} + + +//----------------------------------------------------------------------------- +// Returns true if the console command can autocomplete +//----------------------------------------------------------------------------- +bool ConCommand::CanAutoComplete( void ) +{ + return m_bHasCompletionCallback; +} + + + +//----------------------------------------------------------------------------- +// +// Console Variables +// +//----------------------------------------------------------------------------- + +//----------------------------------------------------------------------------- +// Various constructors +//----------------------------------------------------------------------------- +ConVar::ConVar( const char *pName, const char *pDefaultValue, int64 flags /* = 0 */ ) +{ + Create( pName, pDefaultValue, flags ); +} + +ConVar::ConVar( const char *pName, const char *pDefaultValue, int64 flags, const char *pHelpString ) +{ + Create( pName, pDefaultValue, flags, pHelpString ); +} + +ConVar::ConVar( const char *pName, const char *pDefaultValue, int64 flags, const char *pHelpString, bool bMin, float fMin, bool bMax, float fMax ) +{ + Create( pName, pDefaultValue, flags, pHelpString, bMin, fMin, bMax, fMax ); +} + +ConVar::ConVar( const char *pName, const char *pDefaultValue, int64 flags, const char *pHelpString, FnChangeCallback_t callback ) +{ + Create( pName, pDefaultValue, flags, pHelpString, false, 0.0, false, 0.0, callback ); +} + +ConVar::ConVar( const char *pName, const char *pDefaultValue, int64 flags, const char *pHelpString, bool bMin, float fMin, bool bMax, float fMax, FnChangeCallback_t callback ) +{ + Create( pName, pDefaultValue, flags, pHelpString, bMin, fMin, bMax, fMax, callback ); +} + + +//----------------------------------------------------------------------------- +// Destructor +//----------------------------------------------------------------------------- +ConVar::~ConVar( void ) +{ + if ( m_Value.m_pszString ) + { + delete[] m_Value.m_pszString; + m_Value.m_pszString = NULL; + } +} + + +//----------------------------------------------------------------------------- +// Install a change callback (there shouldn't already be one....) +//----------------------------------------------------------------------------- +void ConVar::InstallChangeCallback( FnChangeCallback_t callback, bool bInvoke ) +{ + if (callback) + { + if (m_fnChangeCallbacks.Find(callback) != -1) + { + m_fnChangeCallbacks.AddToTail(callback); + if (bInvoke) + callback(this, m_Value.m_pszString, m_Value.m_fValue); + } + else + { + Warning("InstallChangeCallback ignoring duplicate change callback!!!\n"); + } + } + else + { + Warning("InstallChangeCallback called with NULL callback, ignoring!!!\n"); + } +} + +bool ConVar::IsFlagSet( int64 flag ) const +{ + return ( flag & m_pParent->m_nFlags ) ? true : false; +} + +const char *ConVar::GetHelpText( void ) const +{ + return m_pParent->m_pszHelpString; +} + +void ConVar::AddFlags( int64 flags ) +{ + m_pParent->m_nFlags |= flags; + +#ifdef ALLOW_DEVELOPMENT_CVARS + m_pParent->m_nFlags &= ~FCVAR_DEVELOPMENTONLY; +#endif +} + +int64 ConVar::GetFlags( void ) const +{ + return m_pParent->m_nFlags; +} + +bool ConVar::IsRegistered( void ) const +{ + return m_pParent->m_bRegistered; +} + +const char *ConVar::GetName( void ) const +{ + return m_pParent->m_pszName; +} + +//----------------------------------------------------------------------------- +// Purpose: +// Output : Returns true on success, false on failure. +//----------------------------------------------------------------------------- +bool ConVar::IsCommand( void ) const +{ + return false; +} + +//----------------------------------------------------------------------------- +// Purpose: +// Input : +//----------------------------------------------------------------------------- +void ConVar::Init() +{ + BaseClass::Init(); +} + +const char *ConVar::GetBaseName( void ) const +{ + return m_pParent->m_pszName; +} + +int ConVar::GetSplitScreenPlayerSlot( void ) const +{ + return 0; +} + +//----------------------------------------------------------------------------- +// Purpose: +// Input : *value - +//----------------------------------------------------------------------------- +void ConVar::InternalSetValue( const char *value ) +{ + float fNewValue; + char tempVal[ 32 ]; + char *val; + + Assert(m_pParent == this); // Only valid for root convars. + + float flOldValue = m_Value.m_fValue; + + val = (char *)value; + fNewValue = ( float )atof( value ); + + if ( ClampValue( fNewValue ) ) + { + Q_snprintf( tempVal,sizeof(tempVal), "%f", fNewValue ); + val = tempVal; + } + + // Redetermine value + m_Value.m_fValue = fNewValue; + m_Value.m_nValue = ( int )( fNewValue ); + + if ( !( m_nFlags & FCVAR_NEVER_AS_STRING ) ) + { + ChangeStringValue( val, flOldValue ); + } +} + +//----------------------------------------------------------------------------- +// Purpose: +// Input : *tempVal - +//----------------------------------------------------------------------------- +void ConVar::ChangeStringValue( const char *tempVal, float flOldValue ) +{ + Assert( !( m_nFlags & FCVAR_NEVER_AS_STRING ) ); + + char* pszOldValue = (char*)stackalloc( m_Value.m_StringLength ); + memcpy( pszOldValue, m_Value.m_pszString, m_Value.m_StringLength ); + + int len = Q_strlen(tempVal) + 1; + + if ( len > m_Value.m_StringLength) + { + if (m_Value.m_pszString) + { + delete[] m_Value.m_pszString; + } + + m_Value.m_pszString = new char[len]; + m_Value.m_StringLength = len; + } + + memcpy( m_Value.m_pszString, tempVal, len ); + + // Invoke any necessary callback function + for (int i = 0; i < m_fnChangeCallbacks.Count(); i++) + { + m_fnChangeCallbacks[i]( this, pszOldValue, flOldValue ); + } + + if (g_pCVar) + g_pCVar->CallGlobalChangeCallbacks( this, pszOldValue, flOldValue ); +} + +//----------------------------------------------------------------------------- +// Purpose: Check whether to clamp and then perform clamp +// Input : value - +// Output : Returns true if value changed +//----------------------------------------------------------------------------- +bool ConVar::ClampValue( float& value ) +{ + if ( m_bHasMin && ( value < m_fMinVal ) ) + { + value = m_fMinVal; + return true; + } + + if ( m_bHasMax && ( value > m_fMaxVal ) ) + { + value = m_fMaxVal; + return true; + } + + return false; +} + +//----------------------------------------------------------------------------- +// Purpose: +// Input : *value - +//----------------------------------------------------------------------------- +void ConVar::InternalSetFloatValue( float fNewValue ) +{ + if ( fNewValue == m_Value.m_fValue ) + return; + + Assert( m_pParent == this ); // Only valid for root convars. + + // Check bounds + ClampValue( fNewValue ); + + // Redetermine value + float flOldValue = m_Value.m_fValue; + m_Value.m_fValue = fNewValue; + m_Value.m_nValue = ( int )fNewValue; + + if ( !( m_nFlags & FCVAR_NEVER_AS_STRING ) ) + { + char tempVal[ 32 ]; + Q_snprintf( tempVal, sizeof( tempVal), "%f", m_Value.m_fValue ); + ChangeStringValue( tempVal, flOldValue ); + } + else + { + Assert( m_fnChangeCallbacks.Count() == 0 ); + } +} + +//----------------------------------------------------------------------------- +// Purpose: +// Input : *value - +//----------------------------------------------------------------------------- +void ConVar::InternalSetIntValue( int nValue ) +{ + if ( nValue == m_Value.m_nValue ) + return; + + Assert( m_pParent == this ); // Only valid for root convars. + + float fValue = (float)nValue; + if ( ClampValue( fValue ) ) + { + nValue = ( int )( fValue ); + } + + // Redetermine value + float flOldValue = m_Value.m_fValue; + m_Value.m_fValue = fValue; + m_Value.m_nValue = nValue; + + if ( !( m_nFlags & FCVAR_NEVER_AS_STRING ) ) + { + char tempVal[ 32 ]; + Q_snprintf( tempVal, sizeof( tempVal ), "%d", m_Value.m_nValue ); + ChangeStringValue( tempVal, flOldValue ); + } + else + { + Assert( m_fnChangeCallbacks.Count() == 0 ); + } +} + +//----------------------------------------------------------------------------- +// Purpose: +// Input : *value - +//----------------------------------------------------------------------------- +void ConVar::InternalSetColorValue( Color cValue ) +{ + int color = cValue.GetRawColor(); + InternalSetIntValue( color ); +} + +bool ConVar::GetBoolVirtualized() const +{ + return m_Value.m_nValue != 0; +} + +int ConVar::GetIntVirtualized() const +{ + return m_Value.m_nValue; +} + +float ConVar::GetFloatVirtualized() const +{ + return m_Value.m_fValue; +} + +//----------------------------------------------------------------------------- +// Purpose: Private creation +//----------------------------------------------------------------------------- +void ConVar::Create( const char *pName, const char *pDefaultValue, int64 flags /*= 0*/, + const char *pHelpString /*= NULL*/, bool bMin /*= false*/, float fMin /*= 0.0*/, + bool bMax /*= false*/, float fMax /*= false*/, FnChangeCallback_t callback /*= NULL*/ ) +{ + static const char *empty_string = ""; + + m_pParent = this; + + // Name should be static data + m_pszDefaultValue = pDefaultValue ? pDefaultValue : empty_string; + Assert( m_pszDefaultValue ); + + m_Value.m_StringLength = strlen( m_pszDefaultValue ) + 1; + m_Value.m_pszString = new char[m_Value.m_StringLength]; + memcpy( m_Value.m_pszString, m_pszDefaultValue, m_Value.m_StringLength ); + + m_bHasMin = bMin; + m_fMinVal = fMin; + m_bHasMax = bMax; + m_fMaxVal = fMax; + + if (callback) + m_fnChangeCallbacks.AddToTail(callback); + + m_Value.m_fValue = ( float )atof( m_Value.m_pszString ); + + // Bounds Check, should never happen, if it does, no big deal + if ( m_bHasMin && ( m_Value.m_fValue < m_fMinVal ) ) + { + Assert( 0 ); + } + + if ( m_bHasMax && ( m_Value.m_fValue > m_fMaxVal ) ) + { + Assert( 0 ); + } + + m_Value.m_nValue = ( int )m_Value.m_fValue; + + BaseClass::Create( pName, pHelpString, flags ); +} + +//----------------------------------------------------------------------------- +// Purpose: +// Input : *value - +//----------------------------------------------------------------------------- +void ConVar::SetValue(const char *value) +{ + ConVar *var = ( ConVar * )m_pParent; + var->InternalSetValue( value ); +} + +//----------------------------------------------------------------------------- +// Purpose: +// Input : value - +//----------------------------------------------------------------------------- +void ConVar::SetValue( float value ) +{ + ConVar *var = ( ConVar * )m_pParent; + var->InternalSetFloatValue( value ); +} + +//----------------------------------------------------------------------------- +// Purpose: +// Input : value - +//----------------------------------------------------------------------------- +void ConVar::SetValue( int value ) +{ + ConVar *var = ( ConVar * )m_pParent; + var->InternalSetIntValue( value ); +} + +//----------------------------------------------------------------------------- +// Purpose: +// Input : value - +//----------------------------------------------------------------------------- +void ConVar::SetValue( Color value ) +{ + ConVar *var = ( ConVar * )m_pParent; + var->InternalSetColorValue( value ); +} + +//----------------------------------------------------------------------------- +// Purpose: Reset to default value +//----------------------------------------------------------------------------- +void ConVar::Revert( void ) +{ + // Force default value again + ConVar *var = ( ConVar * )m_pParent; + var->SetValue( var->m_pszDefaultValue ); +} + +//----------------------------------------------------------------------------- +// Purpose: +// Input : minVal - +// Output : true if there is a min set +//----------------------------------------------------------------------------- +bool ConVar::GetMin( float& minVal ) const +{ + minVal = m_pParent->m_fMinVal; + return m_pParent->m_bHasMin; +} + +//----------------------------------------------------------------------------- +// Purpose: +// Input : maxVal - +//----------------------------------------------------------------------------- +bool ConVar::GetMax( float& maxVal ) const +{ + maxVal = m_pParent->m_fMaxVal; + return m_pParent->m_bHasMax; +} + +//----------------------------------------------------------------------------- +// Purpose: +// Output : const char +//----------------------------------------------------------------------------- +const char *ConVar::GetDefault( void ) const +{ + return m_pParent->m_pszDefaultValue; +} + + +//----------------------------------------------------------------------------- +// This version is simply used to make reading convars simpler. +// Writing convars isn't allowed in this mode +//----------------------------------------------------------------------------- +class CEmptyConVar : public ConVar +{ +public: + CEmptyConVar() : ConVar( "", "0" ) {} + // Used for optimal read access + virtual void SetValue( const char *pValue ) {} + virtual void SetValue( float flValue ) {} + virtual void SetValue( int nValue ) {} + virtual void SetValue( Color cValue ) {} + virtual const char *GetName( void ) const { return ""; } + virtual bool IsFlagSet( int nFlags ) const { return false; } +}; + +static CEmptyConVar s_EmptyConVar; + +ConVarRef::ConVarRef( const char *pName ) +{ + Init( pName, false ); +} + +ConVarRef::ConVarRef( const char *pName, bool bIgnoreMissing ) +{ + Init( pName, bIgnoreMissing ); +} + +void ConVarRef::Init( const char *pName, bool bIgnoreMissing ) +{ + m_pConVar = g_pCVar ? g_pCVar->FindVar( pName ) : &s_EmptyConVar; + if ( !m_pConVar ) + { + m_pConVar = &s_EmptyConVar; + } + m_pConVarState = static_cast< ConVar * >( m_pConVar ); + if( !IsValid() ) + { + static bool bFirst = true; + if ( g_pCVar || bFirst ) + { + if ( !bIgnoreMissing ) + { + Warning( "ConVarRef %s doesn't point to an existing ConVar\n", pName ); + } + bFirst = false; + } + } +} + +ConVarRef::ConVarRef( IConVar *pConVar ) +{ + m_pConVar = pConVar ? pConVar : &s_EmptyConVar; + m_pConVarState = static_cast< ConVar * >( m_pConVar ); +} + +bool ConVarRef::IsValid() const +{ + return m_pConVar != &s_EmptyConVar; +} + + +//----------------------------------------------------------------------------- +// Purpose: +//----------------------------------------------------------------------------- +void ConVar_PrintFlags( const ConCommandBase *var ) +{ + bool any = false; + if ( var->IsFlagSet( FCVAR_GAMEDLL ) ) + { + ConMsg( " game" ); + any = true; + } + + if ( var->IsFlagSet( FCVAR_CLIENTDLL ) ) + { + ConMsg( " client" ); + any = true; + } + + if ( var->IsFlagSet( FCVAR_ARCHIVE ) ) + { + ConMsg( " archive" ); + any = true; + } + + if ( var->IsFlagSet( FCVAR_NOTIFY ) ) + { + ConMsg( " notify" ); + any = true; + } + + if ( var->IsFlagSet( FCVAR_SPONLY ) ) + { + ConMsg( " singleplayer" ); + any = true; + } + + if ( var->IsFlagSet( FCVAR_NOT_CONNECTED ) ) + { + ConMsg( " notconnected" ); + any = true; + } + + if ( var->IsFlagSet( FCVAR_CHEAT ) ) + { + ConMsg( " cheat" ); + any = true; + } + + if ( var->IsFlagSet( FCVAR_REPLICATED ) ) + { + ConMsg( " replicated" ); + any = true; + } + + if ( var->IsFlagSet( FCVAR_SERVER_CAN_EXECUTE ) ) + { + ConMsg( " server_can_execute" ); + any = true; + } + + if ( var->IsFlagSet( FCVAR_CLIENTCMD_CAN_EXECUTE ) ) + { + ConMsg( " clientcmd_can_execute" ); + any = true; + } + + if ( any ) + { + ConMsg( "\n" ); + } +} + + +//----------------------------------------------------------------------------- +// Purpose: +//----------------------------------------------------------------------------- +void ConVar_PrintDescription( const ConCommandBase *pVar ) +{ + bool bMin, bMax; + float fMin, fMax; + const char *pStr; + + Assert( pVar ); + + Color clr; + clr.SetColor( 255, 100, 100, 255 ); + + if ( !pVar->IsCommand() ) + { + ConVar *var = ( ConVar * )pVar; + const ConVar_ServerBounded *pBounded = dynamic_cast( var ); + + bMin = var->GetMin( fMin ); + bMax = var->GetMax( fMax ); + + const char *value = NULL; + char tempVal[ 32 ]; + + if ( pBounded || var->IsFlagSet( FCVAR_NEVER_AS_STRING ) ) + { + value = tempVal; + + int intVal = pBounded ? pBounded->GetInt() : var->GetInt(); + float floatVal = pBounded ? pBounded->GetFloat() : var->GetFloat(); + + if ( fabs( (float)intVal - floatVal ) < 0.000001 ) + { + Q_snprintf( tempVal, sizeof( tempVal ), "%d", intVal ); + } + else + { + Q_snprintf( tempVal, sizeof( tempVal ), "%f", floatVal ); + } + } + else + { + value = var->GetString(); + } + + if ( value ) + { + ConColorMsg( clr, "\"%s\" = \"%s\"", var->GetName(), value ); + + if ( stricmp( value, var->GetDefault() ) ) + { + ConMsg( " ( def. \"%s\" )", var->GetDefault() ); + } + } + + if ( bMin ) + { + ConMsg( " min. %f", fMin ); + } + if ( bMax ) + { + ConMsg( " max. %f", fMax ); + } + + ConMsg( "\n" ); + + // Handled virtualized cvars. + if ( pBounded && fabs( pBounded->GetFloat() - var->GetFloat() ) > 0.0001f ) + { + ConColorMsg( clr, "** NOTE: The real value is %.3f but the server has temporarily restricted it to %.3f **\n", + var->GetFloat(), pBounded->GetFloat() ); + } + } + else + { + ConCommand *var = ( ConCommand * )pVar; + + ConColorMsg( clr, "\"%s\"\n", var->GetName() ); + } + + ConVar_PrintFlags( pVar ); + + pStr = pVar->GetHelpText(); + if ( pStr && pStr[0] ) + { + ConMsg( " - %s\n", pStr ); + } +} diff --git a/tier1/datamanager.cpp b/tier1/datamanager.cpp new file mode 100644 index 00000000..ff48504b --- /dev/null +++ b/tier1/datamanager.cpp @@ -0,0 +1,406 @@ +//========= Copyright © 1996-2005, Valve Corporation, All rights reserved. ============// +// +// Purpose: +// +// $NoKeywords: $ +// +//=============================================================================// + +#include "basetypes.h" +#include "datamanager.h" + +#define AUTO_LOCK_DM() AUTO_LOCK_( CDataManagerBase, *this ) + +CDataManagerBase::CDataManagerBase( unsigned int maxSize ) +{ + m_targetMemorySize = maxSize; + m_memUsed = 0; + m_lruList = m_memoryLists.CreateList(); + m_lockList = m_memoryLists.CreateList(); + m_freeList = m_memoryLists.CreateList(); + m_listsAreFreed = 0; +} + +CDataManagerBase::~CDataManagerBase() +{ + Assert( m_listsAreFreed ); +} + +void CDataManagerBase::NotifySizeChanged( datamanhandle_t handle, unsigned int oldSize, unsigned int newSize ) +{ + Lock(); + m_memUsed += (int)newSize - (int)oldSize; + Unlock(); +} + +void CDataManagerBase::SetTargetSize( unsigned int targetSize ) +{ + m_targetMemorySize = targetSize; +} + +unsigned int CDataManagerBase::FlushAllUnlocked() +{ + Lock(); + + int nFlush = m_memoryLists.Count( m_lruList ); + void **pScratch = (void **)_alloca( nFlush * sizeof(void *) ); + CUtlVector destroyList( pScratch, nFlush ); + + unsigned nBytesInitial = MemUsed_Inline(); + + int node = m_memoryLists.Head(m_lruList); + while ( node != m_memoryLists.InvalidIndex() ) + { + int next = m_memoryLists.Next(node); + m_memoryLists.Unlink( m_lruList, node ); + destroyList.AddToTail( GetForFreeByIndex( node ) ); + node = next; + } + + Unlock(); + + for ( int i = 0; i < nFlush; i++ ) + { + DestroyResourceStorage( destroyList[i] ); + } + + return ( nBytesInitial - MemUsed_Inline() ); +} + +unsigned int CDataManagerBase::FlushToTargetSize() +{ + return EnsureCapacity(0); +} + +// Frees everything! The LRU AND the LOCKED items. This is only used to forcibly free the resources, +// not to make space. + +unsigned int CDataManagerBase::FlushAll() +{ + Lock(); + + int nFlush = m_memoryLists.Count( m_lruList ) + m_memoryLists.Count( m_lockList ); + void **pScratch = (void **)_alloca( nFlush * sizeof(void *) ); + CUtlVector destroyList( pScratch, nFlush ); + + unsigned result = MemUsed_Inline(); + int node; + int nextNode; + + node = m_memoryLists.Head(m_lruList); + while ( node != m_memoryLists.InvalidIndex() ) + { + nextNode = m_memoryLists.Next(node); + m_memoryLists.Unlink( m_lruList, node ); + destroyList.AddToTail( GetForFreeByIndex( node ) ); + node = nextNode; + } + + node = m_memoryLists.Head(m_lockList); + while ( node != m_memoryLists.InvalidIndex() ) + { + nextNode = m_memoryLists.Next(node); + m_memoryLists.Unlink( m_lockList, node ); + m_memoryLists[node].lockCount = 0; + destroyList.AddToTail( GetForFreeByIndex( node ) ); + node = nextNode; + } + + m_listsAreFreed = false; + Unlock(); + + for ( int i = 0; i < nFlush; i++ ) + { + DestroyResourceStorage( destroyList[i] ); + } + + return result; +} + +unsigned int CDataManagerBase::Purge( unsigned int nBytesToPurge ) +{ + unsigned int nTargetSize = MemUsed_Inline() - nBytesToPurge; + unsigned int nImpliedCapacity = MemTotal_Inline() - nTargetSize; + return EnsureCapacity( nImpliedCapacity ); +} + + +void CDataManagerBase::DestroyResource( datamanhandle_t handle ) +{ + Lock(); + unsigned short index = FromHandle( handle ); + if ( !m_memoryLists.IsValidIndex(index) ) + { + Unlock(); + return; + } + + Assert( m_memoryLists[index].lockCount == 0 ); + if ( m_memoryLists[index].lockCount ) + BreakLock( handle ); + m_memoryLists.Unlink( m_lruList, index ); + void *p = GetForFreeByIndex( index ); + Unlock(); + + DestroyResourceStorage( p ); +} + + +void *CDataManagerBase::LockResource( datamanhandle_t handle ) +{ + AUTO_LOCK_DM(); + unsigned short memoryIndex = FromHandle(handle); + if ( memoryIndex != m_memoryLists.InvalidIndex() ) + { + if ( m_memoryLists[memoryIndex].lockCount == 0 ) + { + m_memoryLists.Unlink( m_lruList, memoryIndex ); + m_memoryLists.LinkToTail( m_lockList, memoryIndex ); + } + Assert(m_memoryLists[memoryIndex].lockCount != (unsigned short)-1); + m_memoryLists[memoryIndex].lockCount++; + return m_memoryLists[memoryIndex].pStore; + } + + return NULL; +} + +int CDataManagerBase::UnlockResource( datamanhandle_t handle ) +{ + AUTO_LOCK_DM(); + unsigned short memoryIndex = FromHandle(handle); + if ( memoryIndex != m_memoryLists.InvalidIndex() ) + { + Assert( m_memoryLists[memoryIndex].lockCount > 0 ); + if ( m_memoryLists[memoryIndex].lockCount > 0 ) + { + m_memoryLists[memoryIndex].lockCount--; + if ( m_memoryLists[memoryIndex].lockCount == 0 ) + { + m_memoryLists.Unlink( m_lockList, memoryIndex ); + m_memoryLists.LinkToTail( m_lruList, memoryIndex ); + } + } + return m_memoryLists[memoryIndex].lockCount; + } + + return 0; +} + +void *CDataManagerBase::GetResource_NoLockNoLRUTouch( datamanhandle_t handle ) +{ + AUTO_LOCK_DM(); + unsigned short memoryIndex = FromHandle(handle); + if ( memoryIndex != m_memoryLists.InvalidIndex() ) + { + return m_memoryLists[memoryIndex].pStore; + } + return NULL; +} + + +void *CDataManagerBase::GetResource_NoLock( datamanhandle_t handle ) +{ + AUTO_LOCK_DM(); + unsigned short memoryIndex = FromHandle(handle); + if ( memoryIndex != m_memoryLists.InvalidIndex() ) + { + TouchByIndex( memoryIndex ); + return m_memoryLists[memoryIndex].pStore; + } + return NULL; +} + +void CDataManagerBase::TouchResource( datamanhandle_t handle ) +{ + AUTO_LOCK_DM(); + TouchByIndex( FromHandle(handle) ); +} + +void CDataManagerBase::MarkAsStale( datamanhandle_t handle ) +{ + AUTO_LOCK_DM(); + unsigned short memoryIndex = FromHandle(handle); + if ( memoryIndex != m_memoryLists.InvalidIndex() ) + { + if ( m_memoryLists[memoryIndex].lockCount == 0 ) + { + m_memoryLists.Unlink( m_lruList, memoryIndex ); + m_memoryLists.LinkToHead( m_lruList, memoryIndex ); + } + } +} + +int CDataManagerBase::BreakLock( datamanhandle_t handle ) +{ + AUTO_LOCK_DM(); + unsigned short memoryIndex = FromHandle(handle); + if ( memoryIndex != m_memoryLists.InvalidIndex() && m_memoryLists[memoryIndex].lockCount ) + { + int nBroken = m_memoryLists[memoryIndex].lockCount; + m_memoryLists[memoryIndex].lockCount = 0; + m_memoryLists.Unlink( m_lockList, memoryIndex ); + m_memoryLists.LinkToTail( m_lruList, memoryIndex ); + + return nBroken; + } + return 0; +} + +int CDataManagerBase::BreakAllLocks() +{ + AUTO_LOCK_DM(); + int nBroken = 0; + int node; + int nextNode; + + node = m_memoryLists.Head(m_lockList); + while ( node != m_memoryLists.InvalidIndex() ) + { + nBroken++; + nextNode = m_memoryLists.Next(node); + m_memoryLists[node].lockCount = 0; + m_memoryLists.Unlink( m_lockList, node ); + m_memoryLists.LinkToTail( m_lruList, node ); + node = nextNode; + } + + return nBroken; + +} + +unsigned short CDataManagerBase::CreateHandle( bool bCreateLocked ) +{ + AUTO_LOCK_DM(); + int memoryIndex = m_memoryLists.Head(m_freeList); + unsigned short list = ( bCreateLocked ) ? m_lockList : m_lruList; + if ( memoryIndex != m_memoryLists.InvalidIndex() ) + { + m_memoryLists.Unlink( m_freeList, memoryIndex ); + m_memoryLists.LinkToTail( list, memoryIndex ); + } + else + { + memoryIndex = m_memoryLists.AddToTail( list ); + } + + if ( bCreateLocked ) + { + m_memoryLists[memoryIndex].lockCount++; + } + + return memoryIndex; +} + +datamanhandle_t CDataManagerBase::StoreResourceInHandle( unsigned short memoryIndex, void *pStore, unsigned int realSize ) +{ + AUTO_LOCK_DM(); + resource_lru_element_t &mem = m_memoryLists[memoryIndex]; + mem.pStore = pStore; + m_memUsed += realSize; + return ToHandle(memoryIndex); +} + +void CDataManagerBase::TouchByIndex( unsigned short memoryIndex ) +{ + if ( memoryIndex != m_memoryLists.InvalidIndex() ) + { + if ( m_memoryLists[memoryIndex].lockCount == 0 ) + { + m_memoryLists.Unlink( m_lruList, memoryIndex ); + m_memoryLists.LinkToTail( m_lruList, memoryIndex ); + } + } +} + +datamanhandle_t CDataManagerBase::ToHandle( unsigned short index ) +{ + unsigned int hiword = m_memoryLists.Element(index).serial; + hiword <<= 16; + index++; + return datamanhandle_t::MakeHandle( hiword|index ); +} + +unsigned int CDataManagerBase::TargetSize() +{ + return MemTotal_Inline(); +} + +unsigned int CDataManagerBase::AvailableSize() +{ + return MemAvailable_Inline(); +} + + +unsigned int CDataManagerBase::UsedSize() +{ + return MemUsed_Inline(); +} + +// free resources until there is enough space to hold "size" +unsigned int CDataManagerBase::EnsureCapacity( unsigned int size ) +{ + unsigned nBytesInitial = MemUsed_Inline(); + while ( MemUsed_Inline() > MemTotal_Inline() || MemAvailable_Inline() < size ) + { + Lock(); + int lruIndex = m_memoryLists.Head( m_lruList ); + if ( lruIndex == m_memoryLists.InvalidIndex() ) + { + Unlock(); + break; + } + m_memoryLists.Unlink( m_lruList, lruIndex ); + void *p = GetForFreeByIndex( lruIndex ); + Unlock(); + DestroyResourceStorage( p ); + } + return ( nBytesInitial - MemUsed_Inline() ); +} + +// free this resource and move the handle to the free list +void *CDataManagerBase::GetForFreeByIndex( unsigned short memoryIndex ) +{ + void *p = NULL; + if ( memoryIndex != m_memoryLists.InvalidIndex() ) + { + Assert( m_memoryLists[memoryIndex].lockCount == 0 ); + + resource_lru_element_t &mem = m_memoryLists[memoryIndex]; + unsigned size = GetRealSize( mem.pStore ); + if ( size > m_memUsed ) + { + ExecuteOnce( Warning( "Data manager 'used' memory incorrect\n" ) ); + size = m_memUsed; + } + m_memUsed -= size; + p = mem.pStore; + mem.pStore = NULL; + mem.serial++; + m_memoryLists.LinkToTail( m_freeList, memoryIndex ); + } + return p; +} + +// get a list of everything in the LRU +void CDataManagerBase::GetLRUHandleList( CUtlVector< datamanhandle_t >& list ) +{ + for ( int node = m_memoryLists.Tail(m_lruList); + node != m_memoryLists.InvalidIndex(); + node = m_memoryLists.Previous(node) ) + { + list.AddToTail( ToHandle( node ) ); + } +} + +// get a list of everything locked +void CDataManagerBase::GetLockHandleList( CUtlVector< datamanhandle_t >& list ) +{ + for ( int node = m_memoryLists.Head(m_lockList); + node != m_memoryLists.InvalidIndex(); + node = m_memoryLists.Next(node) ) + { + list.AddToTail( ToHandle( node ) ); + } +} + diff --git a/tier1/diff.cpp b/tier1/diff.cpp new file mode 100644 index 00000000..151a1b6a --- /dev/null +++ b/tier1/diff.cpp @@ -0,0 +1,547 @@ +//========= Copyright © 1996-2005, Valve Corporation, All rights reserved. ============// +// +// Purpose: +// +// $NoKeywords: $ +//=============================================================================// + +#include "tier0/platform.h" +#include "tier0/dbg.h" +#include "tier1/diff.h" +#include "mathlib/mathlib.h" + +// memdbgon must be the last include file in a .cpp file!!! +#include "tier0/memdbgon.h" + + +// format of diff output: +// 0NN (N=1..127) copy next N literaly +// +// 1NN (N=1..127) ofs (-128..127) copy next N bytes from original, changin offset by N bytes from +// last copy end +// 100 N ofs(-32768..32767) copy next N, with larger delta offset +// 00 NNNN(1..65535) ofs(-32768..32767) big copy from old +// 80 00 NN NN NN big raw copy +// +// available codes (could be used for additonal compression ops) +// long offset form whose offset could have fit in short offset + +// note - this algorithm uses storage equal to 8* the old buffer size. 64k=.5mb + + +#define MIN_MATCH_LEN 8 +#define ACCEPTABLE_MATCH_LEN 4096 + +struct BlockPtr +{ + BlockPtr *Next; + uint8 const *dataptr; +}; + +template static inline void AddToHead(T * & head, V * node) +{ + node->Next=head; + head=node; +} + +void Fail(char const *msg) +{ + Assert(0); +} + +void ApplyDiffs(uint8 const *OldBlock, uint8 const *DiffList, + int OldSize, int DiffListSize, int &ResultListSize,uint8 *Output,uint32 OutSize) +{ + uint8 const *copy_src=OldBlock; + uint8 const *end_of_diff_list=DiffList+DiffListSize; + uint8 const *obuf=Output; + while(DiffList32767) + copy_ofs|=0xffff0000; + // printf("long cp from %x to %x len=%d\n", copy_src+copy_ofs-OldBlock,Output-obuf,copy_sz); + + memcpy(Output,copy_src+copy_ofs,copy_sz); + Output+=copy_sz; + copy_src=copy_src+copy_ofs+copy_sz; + DiffList+=4; + } + else + { + if (op & 0x80) + { + int copy_sz=op & 0x7f; + int copy_ofs; + if (copy_sz==0) + { + copy_sz=DiffList[0]; + if (copy_sz==0) + { + // big raw copy + copy_sz=DiffList[1]+256*DiffList[2]+65536*DiffList[3]; + memcpy(Output,DiffList+4,copy_sz); + // printf("big rawcopy to %x len=%d\n", Output-obuf,copy_sz); + + DiffList+=copy_sz+4; + Output+=copy_sz; + } + else + { + copy_ofs=DiffList[1]+(DiffList[2]*256); + if (copy_ofs>32767) + copy_ofs|=0xffff0000; + // printf("long ofs cp from %x to %x len=%d\n", copy_src+copy_ofs-OldBlock,Output-obuf,copy_sz); + + memcpy(Output,copy_src+copy_ofs,copy_sz); + Output+=copy_sz; + copy_src=copy_src+copy_ofs+copy_sz; + DiffList+=3; + } + } + else + { + copy_ofs=DiffList[0]; + if (copy_ofs>127) + copy_ofs|=0xffffff80; + // printf("cp from %x to %x len=%d\n", copy_src+copy_ofs-OldBlock,Output-obuf,copy_sz); + + memcpy(Output,copy_src+copy_ofs,copy_sz); + Output+=copy_sz; + copy_src=copy_src+copy_ofs+copy_sz; + DiffList++; + } + } + else + { + // printf("raw copy %d to %x\n",op & 127,Output-obuf); + memcpy(Output,DiffList,op & 127); + Output+=op & 127; + DiffList+=(op & 127); + } + } + } + ResultListSize=Output-obuf; + +} + +static void CopyPending(int len, uint8 const *rawbytes,uint8 * &outbuf, uint8 const *limit) +{ +// printf("copy raw len=%d\n",len); + if (len<128) + { + if (limit-outbuf < len+1) + Fail("diff buffer overrun"); + *(outbuf++)=len; + memcpy(outbuf,rawbytes,len); + outbuf+=len; + } + else + { + if (limit-outbuf < len+5) + Fail("diff buffer overrun"); + *(outbuf++)=0x80; + *(outbuf++)=0x00; + *(outbuf++)=(len & 255); + *(outbuf++)=((len>>8) & 255); + *(outbuf++)=((len>>16) & 255); + memcpy(outbuf,rawbytes,len); + outbuf+=len; + } +} + +static uint32 hasher(uint8 const *mdata) +{ + // attempt to scramble the bits of h1 and h2 together + uint32 ret=0; + for(int i=0;idataptr=walk; + AddToHead(HashedMatches[hash1],newnode); + walk++; + } + else + ret=1; + // now, we have the hash table which may be used to search. begin the output step + int pending_raw_len=0; + walk=NewBlock; + uint8 *outbuf=Output; + uint8 const *lastmatchend=OldBlock; + while(walkMIN_MATCH_LEN, take it + for(BlockPtr *b=HashedMatches[hash1];b;b=b->Next) + { + // find the match length + int match_of=b->dataptr-lastmatchend; + if ((match_of>-32768) && (match_of<32767)) + { + int max_mlength=MIN(65535,OldBlock+OldSize-b->dataptr); + max_mlength=MIN(max_mlength,NewBlock+NewSize-walk); + int i; + for(i=0;idataptr[i]) + break; + if ((i>MIN_MATCH_LEN) && (i>longest)) + { + longest=i; + longest_block=b; + if (longest>ACCEPTABLE_MATCH_LEN) + break; + } + } + } + } + // now, we have a match maybe + if (longest_block) + { + if (pending_raw_len) // must output + { + ret=1; + CopyPending(pending_raw_len,walk-pending_raw_len,outbuf,Output+OutSize); + pending_raw_len=0; + } + // now, output copy block + int match_of=longest_block->dataptr-lastmatchend; + int nremaining=OutSize-(outbuf-Output); + + if (match_of) + ret=1; +// printf("copy from %x to %x len=%d\n", match_of,outbuf-Output,longest); + if (longest>127) + { + // use really long encoding + if (nremaining<5) + Fail("diff buff needs increase"); + *(outbuf++)=00; + *(outbuf++)=(longest & 255); + *(outbuf++)=((longest>>8) & 255); + *(outbuf++)=(match_of & 255); + *(outbuf++)=((match_of>>8) & 255); + + } + else + { + if ((match_of>=-128) && (match_of<128)) + { + if (nremaining<2) + Fail("diff buff needs increase"); + *(outbuf++)=128+longest; + *(outbuf++)=(match_of&255); + } + else + { + // use long encoding + if (nremaining<4) + Fail("diff buff needs increase"); + *(outbuf++)=0x80; + *(outbuf++)=longest; + *(outbuf++)=(match_of & 255); + *(outbuf++)=((match_of>>8) & 255); + } + } + lastmatchend=longest_block->dataptr+longest; + walk+=longest; + } + else + { + walk++; + pending_raw_len++; + } + } + // now, flush pending raw copy + if (pending_raw_len) // must output + { + ret=1; + CopyPending(pending_raw_len,walk-pending_raw_len,outbuf,Output+OutSize); + pending_raw_len=0; + } + delete[] HashedMatches; + if (Blocks) + delete[] Blocks; + DiffListSize=outbuf-Output; + return ret; +} + + +int FindDiffs(uint8 const *NewBlock, uint8 const *OldBlock, + int NewSize, int OldSize, int &DiffListSize,uint8 *Output,uint32 OutSize) +{ + + int ret=0; + if (OldSize!=NewSize) + ret=1; + // first, build the hash table + BlockPtr *HashedMatches[65536]; + memset(HashedMatches,0,sizeof(HashedMatches)); + BlockPtr *Blocks=0; + if (OldSize) + Blocks=new BlockPtr[OldSize]; + BlockPtr *FreeList=Blocks; + // now, build the hash table + uint8 const *walk=OldBlock; + if (OldBlock && OldSize) + while(walkdataptr=walk; + AddToHead(HashedMatches[hash1],newnode); + walk++; + } + else + ret=1; + // now, we have the hash table which may be used to search. begin the output step + int pending_raw_len=0; + walk=NewBlock; + uint8 *outbuf=Output; + uint8 const *lastmatchend=OldBlock; + while(walkMIN_MATCH_LEN, take it + for(BlockPtr *b=HashedMatches[hash1];b;b=b->Next) + { + // find the match length + int match_of=b->dataptr-lastmatchend; + if ((match_of>-32768) && (match_of<32767)) + { + int max_mlength=MIN(65535,OldBlock+OldSize-b->dataptr); + max_mlength=MIN(max_mlength,NewBlock+NewSize-walk); + int i; + for(i=0;idataptr[i]) + break; + if ((i>MIN_MATCH_LEN) && (i>longest)) + { + longest=i; + longest_block=b; + } + } + } + } + // now, we have a match maybe + if (longest_block) + { + if (pending_raw_len) // must output + { + ret=1; + CopyPending(pending_raw_len,walk-pending_raw_len,outbuf,Output+OutSize); + pending_raw_len=0; + } + // now, output copy block + int match_of=longest_block->dataptr-lastmatchend; + int nremaining=OutSize-(outbuf-Output); + if (match_of) + ret=1; + if (longest>127) + { + // use really long encoding + if (nremaining<5) + Fail("diff buff needs increase"); + *(outbuf++)=00; + *(outbuf++)=(longest & 255); + *(outbuf++)=((longest>>8) & 255); + *(outbuf++)=(match_of & 255); + *(outbuf++)=((match_of>>8) & 255); + } + else + { + if ((match_of>=-128) && (match_of<128)) + { + if (nremaining<2) + Fail("diff buff needs increase"); + *(outbuf++)=128+longest; + *(outbuf++)=(match_of&255); + } + else + { + // use long encoding + if (nremaining<4) + Fail("diff buff needs increase"); + *(outbuf++)=0x80; + *(outbuf++)=longest; + *(outbuf++)=(match_of & 255); + *(outbuf++)=((match_of>>8) & 255); + } + } + lastmatchend=longest_block->dataptr+longest; + walk+=longest; + } + else + { + walk++; + pending_raw_len++; + } + } + // now, flush pending raw copy + if (pending_raw_len) // must output + { + ret=1; + CopyPending(pending_raw_len,walk-pending_raw_len,outbuf,Output+OutSize); + pending_raw_len=0; + } + if (Blocks) + delete[] Blocks; + DiffListSize=outbuf-Output; + return ret; +} + + +int FindDiffsLowMemory(uint8 const *NewBlock, uint8 const *OldBlock, + int NewSize, int OldSize, int &DiffListSize,uint8 *Output,uint32 OutSize) +{ + + int ret=0; + if (OldSize!=NewSize) + ret=1; + uint8 const *old_data_hash[256]; + memset(old_data_hash,0,sizeof(old_data_hash)); + int pending_raw_len=0; + uint8 const *walk=NewBlock; + uint8 const *oldptr=OldBlock; + uint8 *outbuf=Output; + uint8 const *lastmatchend=OldBlock; + while(walkMIN_MATCH_LEN) + { + longest_block=old_data_hash[hash1]; + longest=nmatches; + } + } + } + // now, we have a match maybe + if (longest_block) + { + if (pending_raw_len) // must output + { + ret=1; + CopyPending(pending_raw_len,walk-pending_raw_len,outbuf,Output+OutSize); + pending_raw_len=0; + } + // now, output copy block + int match_of=longest_block-lastmatchend; + int nremaining=OutSize-(outbuf-Output); + if (match_of) + ret=1; + if (longest>127) + { + // use really long encoding + if (nremaining<5) + Fail("diff buff needs increase"); + *(outbuf++)=00; + *(outbuf++)=(longest & 255); + *(outbuf++)=((longest>>8) & 255); + *(outbuf++)=(match_of & 255); + *(outbuf++)=((match_of>>8) & 255); + } + else + { + if ((match_of>=-128) && (match_of<128)) + { + if (nremaining<2) + Fail("diff buff needs increase"); + *(outbuf++)=128+longest; + *(outbuf++)=(match_of&255); + } + else + { + // use long encoding + if (nremaining<4) + Fail("diff buff needs increase"); + *(outbuf++)=0x80; + *(outbuf++)=longest; + *(outbuf++)=(match_of & 255); + *(outbuf++)=((match_of>>8) & 255); + } + } + lastmatchend=longest_block+longest; + walk+=longest; + } + else + { + walk++; + pending_raw_len++; + } + } + // now, flush pending raw copy + if (pending_raw_len) // must output + { + ret=1; + CopyPending(pending_raw_len,walk-pending_raw_len,outbuf,Output+OutSize); + pending_raw_len=0; + } + DiffListSize=outbuf-Output; + return ret; +} + + diff --git a/tier1/generichash.cpp b/tier1/generichash.cpp new file mode 100644 index 00000000..f251f1c4 --- /dev/null +++ b/tier1/generichash.cpp @@ -0,0 +1,303 @@ +//======= Copyright © 2005, , Valve Corporation, All rights reserved. ========= +// +// Purpose: Variant Pearson Hash general purpose hashing algorithm described +// by Cargill in C++ Report 1994. Generates a 16-bit result. +// +//============================================================================= + +#include +#include "tier0/basetypes.h" +#include "tier0/platform.h" +#include "generichash.h" +#include + +//----------------------------------------------------------------------------- +// +// Table of randomly shuffled values from 0-255 generated by: +// +//----------------------------------------------------------------------------- +/* +void MakeRandomValues() +{ + int i, j, r; + unsigned t; + srand( 0xdeadbeef ); + + for ( i = 0; i < 256; i++ ) + { + g_nRandomValues[i] = (unsigned )i; + } + + for (j = 0; j < 8; j++) + { + for (i = 0; i < 256; i++) + { + r = rand() & 0xff; + t = g_nRandomValues[i]; + g_nRandomValues[i] = g_nRandomValues[r]; + g_nRandomValues[r] = t; + } + } + + printf("static unsigned g_nRandomValues[256] =\n{\n"); + + for (i = 0; i < 256; i += 16) + { + printf("\t"); + for (j = 0; j < 16; j++) + printf(" %3d,", g_nRandomValues[i+j]); + printf("\n"); + } + printf("};\n"); +} +*/ + +static unsigned g_nRandomValues[256] = +{ + 238, 164, 191, 168, 115, 16, 142, 11, 213, 214, 57, 151, 248, 252, 26, 198, + 13, 105, 102, 25, 43, 42, 227, 107, 210, 251, 86, 66, 83, 193, 126, 108, + 131, 3, 64, 186, 192, 81, 37, 158, 39, 244, 14, 254, 75, 30, 2, 88, + 172, 176, 255, 69, 0, 45, 116, 139, 23, 65, 183, 148, 33, 46, 203, 20, + 143, 205, 60, 197, 118, 9, 171, 51, 233, 135, 220, 49, 71, 184, 82, 109, + 36, 161, 169, 150, 63, 96, 173, 125, 113, 67, 224, 78, 232, 215, 35, 219, + 79, 181, 41, 229, 149, 153, 111, 217, 21, 72, 120, 163, 133, 40, 122, 140, + 208, 231, 211, 200, 160, 182, 104, 110, 178, 237, 15, 101, 27, 50, 24, 189, + 177, 130, 187, 92, 253, 136, 100, 212, 19, 174, 70, 22, 170, 206, 162, 74, + 247, 5, 47, 32, 179, 117, 132, 195, 124, 123, 245, 128, 236, 223, 12, 84, + 54, 218, 146, 228, 157, 94, 106, 31, 17, 29, 194, 34, 56, 134, 239, 246, + 241, 216, 127, 98, 7, 204, 154, 152, 209, 188, 48, 61, 87, 97, 225, 85, + 90, 167, 155, 112, 145, 114, 141, 93, 250, 4, 201, 156, 38, 89, 226, 196, + 1, 235, 44, 180, 159, 121, 119, 166, 190, 144, 10, 91, 76, 230, 221, 80, + 207, 55, 58, 53, 175, 8, 6, 52, 68, 242, 18, 222, 103, 249, 147, 129, + 138, 243, 28, 185, 62, 59, 240, 202, 234, 99, 77, 73, 199, 137, 95, 165, +}; + +//----------------------------------------------------------------------------- +// String +//----------------------------------------------------------------------------- +unsigned FASTCALL HashString( const char *pszKey ) +{ + const uint8 *k = (const uint8 *)pszKey; + unsigned even = 0, + odd = 0, + n; + + while ((n = *k++) != 0) + { + even = g_nRandomValues[odd ^ n]; + if ((n = *k++) != 0) + odd = g_nRandomValues[even ^ n]; + else + break; + } + + return (even << 8) | odd ; +} + + +//----------------------------------------------------------------------------- +// Case-insensitive string +//----------------------------------------------------------------------------- +unsigned FASTCALL HashStringCaseless( const char *pszKey ) +{ + const uint8 *k = (const uint8 *) pszKey; + unsigned even = 0, + odd = 0, + n; + + while ((n = toupper(*k++)) != 0) + { + even = g_nRandomValues[odd ^ n]; + if ((n = toupper(*k++)) != 0) + odd = g_nRandomValues[even ^ n]; + else + break; + } + + return (even << 8) | odd; +} + +//----------------------------------------------------------------------------- +// 32 bit conventional case-insensitive string +//----------------------------------------------------------------------------- +unsigned FASTCALL HashStringCaselessConventional( const char *pszKey ) +{ + unsigned hash = 0xAAAAAAAA; // Alternating 1's and 0's to maximize the effect of the later multiply and add + + for( ; *pszKey ; pszKey++ ) + { + hash = ( ( hash << 5 ) + hash ) + (uint8)tolower(*pszKey); + } + + return hash; +} + +//----------------------------------------------------------------------------- +// int hash +//----------------------------------------------------------------------------- +unsigned FASTCALL HashInt( const int n ) +{ + register unsigned even, odd; + even = g_nRandomValues[n & 0xff]; + odd = g_nRandomValues[((n >> 8) & 0xff)]; + + even = g_nRandomValues[odd ^ (n >> 24)]; + odd = g_nRandomValues[even ^ ((n >> 16) & 0xff)]; + even = g_nRandomValues[odd ^ ((n >> 8) & 0xff)]; + odd = g_nRandomValues[even ^ (n & 0xff)]; + + return (even << 8) | odd; +} + +//----------------------------------------------------------------------------- +// 4-byte hash +//----------------------------------------------------------------------------- +unsigned FASTCALL Hash4( const void *pKey ) +{ + register const uint32 * p = (const uint32 *) pKey; + register unsigned even, + odd, + n; + n = *p; + even = g_nRandomValues[n & 0xff]; + odd = g_nRandomValues[((n >> 8) & 0xff)]; + + even = g_nRandomValues[odd ^ (n >> 24)]; + odd = g_nRandomValues[even ^ ((n >> 16) & 0xff)]; + even = g_nRandomValues[odd ^ ((n >> 8) & 0xff)]; + odd = g_nRandomValues[even ^ (n & 0xff)]; + + return (even << 8) | odd; +} + + +//----------------------------------------------------------------------------- +// 8-byte hash +//----------------------------------------------------------------------------- +unsigned FASTCALL Hash8( const void *pKey ) +{ + register const uint32 * p = (const uint32 *) pKey; + register unsigned even, + odd, + n; + n = *p; + even = g_nRandomValues[n & 0xff]; + odd = g_nRandomValues[((n >> 8) & 0xff)]; + + even = g_nRandomValues[odd ^ (n >> 24)]; + odd = g_nRandomValues[even ^ ((n >> 16) & 0xff)]; + even = g_nRandomValues[odd ^ ((n >> 8) & 0xff)]; + odd = g_nRandomValues[even ^ (n & 0xff)]; + + n = *(p+1); + even = g_nRandomValues[odd ^ (n >> 24)]; + odd = g_nRandomValues[even ^ ((n >> 16) & 0xff)]; + even = g_nRandomValues[odd ^ ((n >> 8) & 0xff)]; + odd = g_nRandomValues[even ^ (n & 0xff)]; + + return (even << 8) | odd; +} + + +//----------------------------------------------------------------------------- +// 12-byte hash +//----------------------------------------------------------------------------- +unsigned FASTCALL Hash12( const void *pKey ) +{ + register const uint32 * p = (const uint32 *) pKey; + register unsigned even, + odd, + n; + n = *p; + even = g_nRandomValues[n & 0xff]; + odd = g_nRandomValues[((n >> 8) & 0xff)]; + + even = g_nRandomValues[odd ^ (n >> 24)]; + odd = g_nRandomValues[even ^ ((n >> 16) & 0xff)]; + even = g_nRandomValues[odd ^ ((n >> 8) & 0xff)]; + odd = g_nRandomValues[even ^ (n & 0xff)]; + + n = *(p+1); + even = g_nRandomValues[odd ^ (n >> 24)]; + odd = g_nRandomValues[even ^ ((n >> 16) & 0xff)]; + even = g_nRandomValues[odd ^ ((n >> 8) & 0xff)]; + odd = g_nRandomValues[even ^ (n & 0xff)]; + + n = *(p+2); + even = g_nRandomValues[odd ^ (n >> 24)]; + odd = g_nRandomValues[even ^ ((n >> 16) & 0xff)]; + even = g_nRandomValues[odd ^ ((n >> 8) & 0xff)]; + odd = g_nRandomValues[even ^ (n & 0xff)]; + + return (even << 8) | odd; +} + + +//----------------------------------------------------------------------------- +// 16-byte hash +//----------------------------------------------------------------------------- +unsigned FASTCALL Hash16( const void *pKey ) +{ + register const uint32 * p = (const uint32 *) pKey; + register unsigned even, + odd, + n; + n = *p; + even = g_nRandomValues[n & 0xff]; + odd = g_nRandomValues[((n >> 8) & 0xff)]; + + even = g_nRandomValues[odd ^ (n >> 24)]; + odd = g_nRandomValues[even ^ ((n >> 16) & 0xff)]; + even = g_nRandomValues[odd ^ ((n >> 8) & 0xff)]; + odd = g_nRandomValues[even ^ (n & 0xff)]; + + n = *(p+1); + even = g_nRandomValues[odd ^ (n >> 24)]; + odd = g_nRandomValues[even ^ ((n >> 16) & 0xff)]; + even = g_nRandomValues[odd ^ ((n >> 8) & 0xff)]; + odd = g_nRandomValues[even ^ (n & 0xff)]; + + n = *(p+2); + even = g_nRandomValues[odd ^ (n >> 24)]; + odd = g_nRandomValues[even ^ ((n >> 16) & 0xff)]; + even = g_nRandomValues[odd ^ ((n >> 8) & 0xff)]; + odd = g_nRandomValues[even ^ (n & 0xff)]; + + n = *(p+3); + even = g_nRandomValues[odd ^ (n >> 24)]; + odd = g_nRandomValues[even ^ ((n >> 16) & 0xff)]; + even = g_nRandomValues[odd ^ ((n >> 8) & 0xff)]; + odd = g_nRandomValues[even ^ (n & 0xff)]; + + return (even << 8) | odd; +} + + +//----------------------------------------------------------------------------- +// Arbitrary fixed length hash +//----------------------------------------------------------------------------- +unsigned FASTCALL HashBlock( const void *pKey, unsigned size ) +{ + const uint8 * k = (const uint8 *) pKey; + unsigned even = 0, + odd = 0, + n; + + while (size) + { + --size; + n = *k++; + even = g_nRandomValues[odd ^ n]; + if (size) + { + --size; + n = *k++; + odd = g_nRandomValues[even ^ n]; + } + else + break; + } + + return (even << 8) | odd; +} + diff --git a/tier1/mempool.cpp b/tier1/mempool.cpp new file mode 100644 index 00000000..8a69a0ea --- /dev/null +++ b/tier1/mempool.cpp @@ -0,0 +1,316 @@ +//===== Copyright © 1996-2005, Valve Corporation, All rights reserved. ======// +// +// Purpose: +// +//===========================================================================// + +#include "mempool.h" +#include +#ifdef __APPLE__ +#include +#else +#include +#endif +#include +#include "tier0/dbg.h" +#include +#include "tier1/strtools.h" + +// Should be last include +#include "tier0/memdbgon.h" + +MemoryPoolReportFunc_t CUtlMemoryPool::g_ReportFunc = 0; + +//----------------------------------------------------------------------------- +// Error reporting... (debug only) +//----------------------------------------------------------------------------- + +void CUtlMemoryPool::SetErrorReportFunc( MemoryPoolReportFunc_t func ) +{ + g_ReportFunc = func; +} + +//----------------------------------------------------------------------------- +// Purpose: Constructor +//----------------------------------------------------------------------------- +CUtlMemoryPool::CUtlMemoryPool( int blockSize, int numElements, int growMode, const char *pszAllocOwner, int nAlignment ) +{ +#ifdef _X360 + if( numElements > 0 && growMode != GROW_NONE ) + { + numElements = 1; + } +#endif + + m_nAlignment = ( nAlignment != 0 ) ? nAlignment : 1; + Assert( IsPowerOfTwo( m_nAlignment ) ); + m_BlockSize = blockSize < (int)sizeof(void*) ? sizeof(void*) : blockSize; + m_BlockSize = AlignValue( m_BlockSize, m_nAlignment ); + m_BlocksPerBlob = numElements; + m_PeakAlloc = 0; + m_GrowMode = growMode; + if ( !pszAllocOwner ) + { + pszAllocOwner = __FILE__; + } + m_pszAllocOwner = pszAllocOwner; + Init(); + AddNewBlob(); +} + +//----------------------------------------------------------------------------- +// Purpose: Frees the memory contained in the mempool, and invalidates it for +// any further use. +// Input : *memPool - the mempool to shutdown +//----------------------------------------------------------------------------- +CUtlMemoryPool::~CUtlMemoryPool() +{ + if (m_BlocksAllocated > 0) + { + ReportLeaks(); + } + Clear(); +} + + +//----------------------------------------------------------------------------- +// Resets the pool +//----------------------------------------------------------------------------- +void CUtlMemoryPool::Init() +{ + m_NumBlobs = 0; + m_BlocksAllocated = 0; + m_pHeadOfFreeList = 0; + m_BlobHead.m_pNext = m_BlobHead.m_pPrev = &m_BlobHead; +} + + +//----------------------------------------------------------------------------- +// Frees everything +//----------------------------------------------------------------------------- +void CUtlMemoryPool::Clear() +{ + // Free everything.. + CBlob *pNext; + for( CBlob *pCur = m_BlobHead.m_pNext; pCur != &m_BlobHead; pCur = pNext ) + { + pNext = pCur->m_pNext; + free( pCur ); + } + Init(); +} + +//----------------------------------------------------------------------------- +// Purpose: Reports memory leaks +//----------------------------------------------------------------------------- + +void CUtlMemoryPool::ReportLeaks() +{ + if (!g_ReportFunc) + return; + + g_ReportFunc("Memory leak: mempool blocks left in memory: %d\n", m_BlocksAllocated); + +#ifdef _DEBUG + // walk and destroy the free list so it doesn't intefere in the scan + while (m_pHeadOfFreeList != NULL) + { + void *next = *((void**)m_pHeadOfFreeList); + memset(m_pHeadOfFreeList, 0, m_BlockSize); + m_pHeadOfFreeList = next; + } + + g_ReportFunc("Dumping memory: \'"); + + for( CBlob *pCur=m_BlobHead.m_pNext; pCur != &m_BlobHead; pCur=pCur->m_pNext ) + { + // scan the memory block and dump the leaks + char *scanPoint = (char *)pCur->m_Data; + char *scanEnd = pCur->m_Data + pCur->m_NumBytes; + bool needSpace = false; + + while (scanPoint < scanEnd) + { + // search for and dump any strings + if ((unsigned)(*scanPoint + 1) <= 256 && isprint(*scanPoint)) + { + g_ReportFunc("%c", *scanPoint); + needSpace = true; + } + else if (needSpace) + { + needSpace = false; + g_ReportFunc(" "); + } + + scanPoint++; + } + } + + g_ReportFunc("\'\n"); +#endif // _DEBUG +} + + +//----------------------------------------------------------------------------- +// Purpose: +//----------------------------------------------------------------------------- +void CUtlMemoryPool::AddNewBlob() +{ + MEM_ALLOC_CREDIT_(m_pszAllocOwner); + + int sizeMultiplier; + + if( m_GrowMode == GROW_SLOW ) + { + sizeMultiplier = 1; + } + else + { + if ( m_GrowMode == GROW_NONE ) + { + // Can only have one allocation when we're in this mode + if( m_NumBlobs != 0 ) + { + Assert( !"CUtlMemoryPool::AddNewBlob: mode == GROW_NONE" ); + return; + } + } + + // GROW_FAST and GROW_NONE use this. + sizeMultiplier = m_NumBlobs + 1; + } + + // maybe use something other than malloc? + int nElements = m_BlocksPerBlob * sizeMultiplier; + int blobSize = m_BlockSize * nElements; + CBlob *pBlob = (CBlob*)malloc( sizeof(CBlob) - 1 + blobSize + ( m_nAlignment - 1 ) ); + Assert( pBlob ); + + // Link it in at the end of the blob list. + pBlob->m_NumBytes = blobSize; + pBlob->m_pNext = &m_BlobHead; + pBlob->m_pPrev = pBlob->m_pNext->m_pPrev; + pBlob->m_pNext->m_pPrev = pBlob->m_pPrev->m_pNext = pBlob; + + // setup the free list + m_pHeadOfFreeList = AlignValue( pBlob->m_Data, m_nAlignment ); + Assert (m_pHeadOfFreeList); + + void **newBlob = (void**)m_pHeadOfFreeList; + for (int j = 0; j < nElements-1; j++) + { + newBlob[0] = (char*)newBlob + m_BlockSize; + newBlob = (void**)newBlob[0]; + } + + // null terminate list + newBlob[0] = NULL; + m_NumBlobs++; +} + + +void* CUtlMemoryPool::Alloc() +{ + return Alloc( m_BlockSize ); +} + + +void* CUtlMemoryPool::AllocZero() +{ + return AllocZero( m_BlockSize ); +} + + +//----------------------------------------------------------------------------- +// Purpose: Allocs a single block of memory from the pool. +// Input : amount - +//----------------------------------------------------------------------------- +void *CUtlMemoryPool::Alloc( size_t amount ) +{ + void *returnBlock; + + if ( amount > (unsigned int)m_BlockSize ) + return NULL; + + if( !m_pHeadOfFreeList ) + { + // returning NULL is fine in GROW_NONE + if( m_GrowMode == GROW_NONE ) + { + //Assert( !"CUtlMemoryPool::Alloc: tried to make new blob with GROW_NONE" ); + return NULL; + } + + // overflow + AddNewBlob(); + + // still failure, error out + if( !m_pHeadOfFreeList ) + { + Assert( !"CUtlMemoryPool::Alloc: ran out of memory" ); + return NULL; + } + } + m_BlocksAllocated++; + m_PeakAlloc = MAX(m_PeakAlloc, m_BlocksAllocated); + + returnBlock = m_pHeadOfFreeList; + + // move the pointer the next block + m_pHeadOfFreeList = *((void**)m_pHeadOfFreeList); + + return returnBlock; +} + +//----------------------------------------------------------------------------- +// Purpose: Allocs a single block of memory from the pool, zeroes the memory before returning +// Input : amount - +//----------------------------------------------------------------------------- +void *CUtlMemoryPool::AllocZero( size_t amount ) +{ + void *mem = Alloc( amount ); + if ( mem ) + { + V_memset( mem, 0x00, amount ); + } + return mem; +} + +//----------------------------------------------------------------------------- +// Purpose: Frees a block of memory +// Input : *memBlock - the memory to free +//----------------------------------------------------------------------------- +void CUtlMemoryPool::Free( void *memBlock ) +{ + if ( !memBlock ) + return; // trying to delete NULL pointer, ignore + +#ifdef _DEBUG + // check to see if the memory is from the allocated range + bool bOK = false; + for( CBlob *pCur=m_BlobHead.m_pNext; pCur != &m_BlobHead; pCur=pCur->m_pNext ) + { + if (memBlock >= pCur->m_Data && (char*)memBlock < (pCur->m_Data + pCur->m_NumBytes)) + { + bOK = true; + } + } + Assert (bOK); +#endif // _DEBUG + +#ifdef _DEBUG + // invalidate the memory + memset( memBlock, 0xDD, m_BlockSize ); +#endif + + m_BlocksAllocated--; + + // make the block point to the first item in the list + *((void**)memBlock) = m_pHeadOfFreeList; + + // the list head is now the new block + m_pHeadOfFreeList = memBlock; +} + + diff --git a/tier1/memstack.cpp b/tier1/memstack.cpp new file mode 100644 index 00000000..e4888f1f --- /dev/null +++ b/tier1/memstack.cpp @@ -0,0 +1,300 @@ +//========= Copyright © 1996-2005, Valve Corporation, All rights reserved. ============// +// +// Purpose: +// +//=============================================================================// + +#if defined( _WIN32 ) && !defined( _X360 ) +#define WIN_32_LEAN_AND_MEAN +#include +#define VA_COMMIT_FLAGS MEM_COMMIT +#define VA_RESERVE_FLAGS MEM_RESERVE +#elif defined( _X360 ) +#define VA_COMMIT_FLAGS (MEM_COMMIT|MEM_NOZERO|MEM_LARGE_PAGES) +#define VA_RESERVE_FLAGS (MEM_RESERVE|MEM_LARGE_PAGES) +#endif + +#include "tier0/dbg.h" +#include "memstack.h" +#include "utlmap.h" +#include "tier0/memdbgon.h" + +#ifdef _WIN32 +#pragma warning(disable:4073) +#pragma init_seg(lib) +#endif + +//----------------------------------------------------------------------------- + +MEMALLOC_DEFINE_EXTERNAL_TRACKING(CMemoryStack); + +//----------------------------------------------------------------------------- + +CMemoryStack::CMemoryStack() + : m_pNextAlloc( NULL ), + m_pCommitLimit( NULL ), + m_pAllocLimit( NULL ), + m_pBase( NULL ), + m_maxSize( 0 ), +#if defined (_LINUX) || defined (__APPLE__) + m_alignment( 16 ) +#elif defined(_WIN32) + m_alignment( 16 ), + m_commitSize( 0 ), + m_minCommit( 0 ) +#endif + +{ +} + +//------------------------------------- + +CMemoryStack::~CMemoryStack() +{ + if ( m_pBase ) + Term(); +} + +//------------------------------------- + +bool CMemoryStack::Init( unsigned maxSize, unsigned commitSize, unsigned initialCommit, unsigned alignment ) +{ + Assert( !m_pBase ); + +#ifdef _X360 + m_bPhysical = false; +#endif + + m_maxSize = maxSize; + m_alignment = AlignValue( alignment, 4 ); + + Assert( m_alignment == alignment ); + Assert( m_maxSize > 0 ); + +#if defined(_WIN32) + if ( commitSize != 0 ) + { + m_commitSize = commitSize; + } + + unsigned pageSize; + +#ifndef _X360 + SYSTEM_INFO sysInfo; + GetSystemInfo( &sysInfo ); + Assert( !( sysInfo.dwPageSize & (sysInfo.dwPageSize-1)) ); + pageSize = sysInfo.dwPageSize; +#else + pageSize = 64*1024; +#endif + + if ( m_commitSize == 0 ) + { + m_commitSize = pageSize; + } + else + { + m_commitSize = AlignValue( m_commitSize, pageSize ); + } + + m_maxSize = AlignValue( m_maxSize, m_commitSize ); + + Assert( m_maxSize % pageSize == 0 && m_commitSize % pageSize == 0 && m_commitSize <= m_maxSize ); + + m_pBase = (unsigned char *)VirtualAlloc( NULL, m_maxSize, VA_RESERVE_FLAGS, PAGE_NOACCESS ); + Assert( m_pBase ); + m_pCommitLimit = m_pNextAlloc = m_pBase; + + if ( initialCommit ) + { + initialCommit = AlignValue( initialCommit, m_commitSize ); + Assert( initialCommit < m_maxSize ); + if ( !VirtualAlloc( m_pCommitLimit, initialCommit, VA_COMMIT_FLAGS, PAGE_READWRITE ) ) + return false; + m_minCommit = initialCommit; + m_pCommitLimit += initialCommit; + MemAlloc_RegisterExternalAllocation( CMemoryStack, GetBase(), GetSize() ); + } + +#else + m_pBase = (byte *)MemAlloc_AllocAligned( m_maxSize, alignment ? alignment : 1 ); + m_pNextAlloc = m_pBase; + m_pCommitLimit = m_pBase + m_maxSize; +#endif + + m_pAllocLimit = m_pBase + m_maxSize; + + return ( m_pBase != NULL ); +} + +//------------------------------------- + +#ifdef _X360 +bool CMemoryStack::InitPhysical( unsigned size, unsigned alignment ) +{ + m_bPhysical = true; + + m_maxSize = m_commitSize = size; + m_alignment = AlignValue( alignment, 4 ); + + int flags = PAGE_READWRITE; + if ( size >= 16*1024*1024 ) + { + flags |= MEM_16MB_PAGES; + } + else + { + flags |= MEM_LARGE_PAGES; + } + m_pBase = (unsigned char *)XPhysicalAlloc( m_maxSize, MAXULONG_PTR, 4096, flags ); + Assert( m_pBase ); + m_pNextAlloc = m_pBase; + m_pCommitLimit = m_pBase + m_maxSize; + m_pAllocLimit = m_pBase + m_maxSize; + + MemAlloc_RegisterExternalAllocation( CMemoryStack, GetBase(), GetSize() ); + return ( m_pBase != NULL ); +} +#endif + +//------------------------------------- + +void CMemoryStack::Term() +{ + FreeAll(); + if ( m_pBase ) + { +#if defined(_WIN32) + VirtualFree( m_pBase, 0, MEM_RELEASE ); +#else + MemAlloc_FreeAligned( m_pBase ); +#endif + m_pBase = NULL; + } +} + +//------------------------------------- + +int CMemoryStack::GetSize() +{ +#ifdef _WIN32 + return m_pCommitLimit - m_pBase; +#else + return m_maxSize; +#endif +} + + +//------------------------------------- + +bool CMemoryStack::CommitTo( byte *pNextAlloc ) RESTRICT +{ +#ifdef _X360 + if ( m_bPhysical ) + { + return NULL; + } +#endif +#if defined(_WIN32) + unsigned char * pNewCommitLimit = AlignValue( pNextAlloc, m_commitSize ); + unsigned commitSize = pNewCommitLimit - m_pCommitLimit; + + if ( GetSize() ) + MemAlloc_RegisterExternalDeallocation( CMemoryStack, GetBase(), GetSize() ); + + if( m_pCommitLimit + commitSize > m_pAllocLimit ) + { + return false; + } + + if ( !VirtualAlloc( m_pCommitLimit, commitSize, VA_COMMIT_FLAGS, PAGE_READWRITE ) ) + { + Assert( 0 ); + return false; + } + m_pCommitLimit = pNewCommitLimit; + + if ( GetSize() ) + MemAlloc_RegisterExternalAllocation( CMemoryStack, GetBase(), GetSize() ); + return true; +#else + Assert( 0 ); + return false; +#endif +} + +//------------------------------------- + +void CMemoryStack::FreeToAllocPoint( MemoryStackMark_t mark, bool bDecommit ) +{ + void *pAllocPoint = m_pBase + mark; + Assert( pAllocPoint >= m_pBase && pAllocPoint <= m_pNextAlloc ); + + if ( pAllocPoint >= m_pBase && pAllocPoint < m_pNextAlloc ) + { + if ( bDecommit ) + { +#if defined(_WIN32) + unsigned char *pDecommitPoint = AlignValue( (unsigned char *)pAllocPoint, m_commitSize ); + + if ( pDecommitPoint < m_pBase + m_minCommit ) + { + pDecommitPoint = m_pBase + m_minCommit; + } + + unsigned decommitSize = m_pCommitLimit - pDecommitPoint; + + if ( decommitSize > 0 ) + { + MemAlloc_RegisterExternalDeallocation( CMemoryStack, GetBase(), GetSize() ); + + VirtualFree( pDecommitPoint, decommitSize, MEM_DECOMMIT ); + m_pCommitLimit = pDecommitPoint; + + if ( mark > 0 ) + { + MemAlloc_RegisterExternalAllocation( CMemoryStack, GetBase(), GetSize() ); + } + } +#endif + } + m_pNextAlloc = (unsigned char *)pAllocPoint; + } +} + +//------------------------------------- + +void CMemoryStack::FreeAll( bool bDecommit ) +{ + if ( m_pBase && m_pCommitLimit - m_pBase > 0 ) + { + if ( bDecommit ) + { +#if defined(_WIN32) + MemAlloc_RegisterExternalDeallocation( CMemoryStack, GetBase(), GetSize() ); + + VirtualFree( m_pBase, m_pCommitLimit - m_pBase, MEM_DECOMMIT ); + m_pCommitLimit = m_pBase; +#endif + } + m_pNextAlloc = m_pBase; + } +} + +//------------------------------------- + +void CMemoryStack::Access( void **ppRegion, unsigned *pBytes ) +{ + *ppRegion = m_pBase; + *pBytes = ( m_pNextAlloc - m_pBase); +} + +//------------------------------------- + +void CMemoryStack::PrintContents() +{ + Msg( "Total used memory: %d\n", GetUsed() ); + Msg( "Total committed memory: %d\n", GetSize() ); +} + +//----------------------------------------------------------------------------- diff --git a/tier1/newbitbuf.cpp b/tier1/newbitbuf.cpp new file mode 100644 index 00000000..39cfd217 --- /dev/null +++ b/tier1/newbitbuf.cpp @@ -0,0 +1,713 @@ +//========= Copyright © 1996-2005, Valve Corporation, All rights reserved. ============// +// +// Purpose: +// +// $NoKeywords: $ +// +//=============================================================================// + +#include "bitbuf.h" +#include "coordsize.h" +#include "mathlib/vector.h" +#include "mathlib/mathlib.h" +#include "tier1/strtools.h" +#include "bitvec.h" + +// FIXME: Can't use this until we get multithreaded allocations in tier0 working for tools +// This is used by VVIS and fails to link +// NOTE: This must be the last file included!!! +//#include "tier0/memdbgon.h" + +#ifdef _X360 +// mandatory ... wary of above comment and isolating, tier0 is built as MT though +#include "tier0/memdbgon.h" +#endif + +#include "stdio.h" + +void CBitWrite::StartWriting( void *pData, int nBytes, int iStartBit, int nBits ) +{ + // Make sure it's dword aligned and padded. + Assert( (nBytes % 4) == 0 ); + Assert(((unsigned long)pData & 3) == 0); + Assert( iStartBit == 0 ); + m_pData = (uint32 *) pData; + m_pDataOut = m_pData; + m_nDataBytes = nBytes; + + if ( nBits == -1 ) + { + m_nDataBits = nBytes << 3; + } + else + { + Assert( nBits <= nBytes*8 ); + m_nDataBits = nBits; + } + m_bOverflow = false; + m_nOutBufWord = 0; + m_nOutBitsAvail = 32; + m_pBufferEnd = m_pDataOut + ( nBytes >> 2 ); +} + +const uint32 CBitBuffer::s_nMaskTable[33] = { + 0, + ( 1 << 1 ) - 1, + ( 1 << 2 ) - 1, + ( 1 << 3 ) - 1, + ( 1 << 4 ) - 1, + ( 1 << 5 ) - 1, + ( 1 << 6 ) - 1, + ( 1 << 7 ) - 1, + ( 1 << 8 ) - 1, + ( 1 << 9 ) - 1, + ( 1 << 10 ) - 1, + ( 1 << 11 ) - 1, + ( 1 << 12 ) - 1, + ( 1 << 13 ) - 1, + ( 1 << 14 ) - 1, + ( 1 << 15 ) - 1, + ( 1 << 16 ) - 1, + ( 1 << 17 ) - 1, + ( 1 << 18 ) - 1, + ( 1 << 19 ) - 1, + ( 1 << 20 ) - 1, + ( 1 << 21 ) - 1, + ( 1 << 22 ) - 1, + ( 1 << 23 ) - 1, + ( 1 << 24 ) - 1, + ( 1 << 25 ) - 1, + ( 1 << 26 ) - 1, + ( 1 << 27 ) - 1, + ( 1 << 28 ) - 1, + ( 1 << 29 ) - 1, + ( 1 << 30 ) - 1, + 0x7fffffff, + 0xffffffff, +}; + +bool CBitWrite::WriteString( const char *pStr ) +{ + if(pStr) + { + while( *pStr ) + { + WriteChar( * ( pStr++ ) ); + } + } + WriteChar( 0 ); + return !IsOverflowed(); +} + + +void CBitWrite::WriteLongLong(int64 val) +{ + uint *pLongs = (uint*)&val; + + // Insert the two DWORDS according to network endian + const short endianIndex = 0x0100; + byte *idx = (byte*)&endianIndex; + WriteUBitLong(pLongs[*idx++], sizeof(long) << 3); + WriteUBitLong(pLongs[*idx], sizeof(long) << 3); +} + +bool CBitWrite::WriteBits(const void *pInData, int nBits) +{ + unsigned char *pOut = (unsigned char*)pInData; + int nBitsLeft = nBits; + + // Bounds checking.. + if ( ( GetNumBitsWritten() + nBits) > m_nDataBits ) + { + SetOverflowFlag(); + CallErrorHandler( BITBUFERROR_BUFFER_OVERRUN, m_pDebugName ); + return false; + } + + // !! speed!! need fast paths + // write remaining bytes + while ( nBitsLeft >= 8 ) + { + WriteUBitLong( *pOut, 8, false ); + ++pOut; + nBitsLeft -= 8; + } + + // write remaining bits + if ( nBitsLeft ) + { + WriteUBitLong( *pOut, nBitsLeft, false ); + } + + return !IsOverflowed(); +} + +void CBitWrite::WriteBytes( const void *pBuf, int nBytes ) +{ + WriteBits(pBuf, nBytes << 3); +} + +void CBitWrite::WriteBitCoord (const float f) +{ + int signbit = (f <= -COORD_RESOLUTION); + int intval = (int)fabs(f); + int fractval = abs((int)(f*COORD_DENOMINATOR)) & (COORD_DENOMINATOR-1); + + + // Send the bit flags that indicate whether we have an integer part and/or a fraction part. + WriteOneBit( intval ); + WriteOneBit( fractval ); + + if ( intval || fractval ) + { + // Send the sign bit + WriteOneBit( signbit ); + + // Send the integer if we have one. + if ( intval ) + { + // Adjust the integers from [1..MAX_COORD_VALUE] to [0..MAX_COORD_VALUE-1] + intval--; + WriteUBitLong( (unsigned int)intval, COORD_INTEGER_BITS ); + } + + // Send the fraction if we have one + if ( fractval ) + { + WriteUBitLong( (unsigned int)fractval, COORD_FRACTIONAL_BITS ); + } + } +} + +void CBitWrite::WriteBitCoordMP (const float f, EBitCoordType coordType ) +{ + int signbit = (f <= -( coordType == kCW_LowPrecision ? COORD_RESOLUTION_LOWPRECISION : COORD_RESOLUTION )); + int intval = (int)fabs(f); + int fractval = coordType == kCW_LowPrecision ? + ( abs((int)(f*COORD_DENOMINATOR_LOWPRECISION)) & (COORD_DENOMINATOR_LOWPRECISION-1) ) : + ( abs((int)(f*COORD_DENOMINATOR)) & (COORD_DENOMINATOR-1) ); + + bool bInBounds = intval < (1 << COORD_INTEGER_BITS_MP ); + + WriteOneBit( bInBounds ); + + if ( coordType == kCW_Integral ) + { + // Send the sign bit + WriteOneBit( intval ); + if ( intval ) + { + WriteOneBit( signbit ); + // Send the integer if we have one. + // Adjust the integers from [1..MAX_COORD_VALUE] to [0..MAX_COORD_VALUE-1] + intval--; + if ( bInBounds ) + { + WriteUBitLong( (unsigned int)intval, COORD_INTEGER_BITS_MP ); + } + else + { + WriteUBitLong( (unsigned int)intval, COORD_INTEGER_BITS ); + } + } + } + else + { + // Send the bit flags that indicate whether we have an integer part and/or a fraction part. + WriteOneBit( intval ); + // Send the sign bit + WriteOneBit( signbit ); + + // Send the integer if we have one. + if ( intval ) + { + // Adjust the integers from [1..MAX_COORD_VALUE] to [0..MAX_COORD_VALUE-1] + intval--; + if ( bInBounds ) + { + WriteUBitLong( (unsigned int)intval, COORD_INTEGER_BITS_MP ); + } + else + { + WriteUBitLong( (unsigned int)intval, COORD_INTEGER_BITS ); + } + } + WriteUBitLong( (unsigned int)fractval, coordType == kCW_LowPrecision ? COORD_FRACTIONAL_BITS_MP_LOWPRECISION : COORD_FRACTIONAL_BITS ); + } +} + +void CBitWrite::SeekToBit( int nBit ) +{ + TempFlush(); + m_pDataOut = m_pData + ( nBit / 32 ); + m_nOutBufWord = *( m_pDataOut ); + m_nOutBitsAvail = 32 - ( nBit & 31 ); +} + + + +void CBitWrite::WriteBitVec3Coord( const Vector& fa ) +{ + int xflag, yflag, zflag; + + xflag = (fa[0] >= COORD_RESOLUTION) || (fa[0] <= -COORD_RESOLUTION); + yflag = (fa[1] >= COORD_RESOLUTION) || (fa[1] <= -COORD_RESOLUTION); + zflag = (fa[2] >= COORD_RESOLUTION) || (fa[2] <= -COORD_RESOLUTION); + + WriteOneBit( xflag ); + WriteOneBit( yflag ); + WriteOneBit( zflag ); + + if ( xflag ) + WriteBitCoord( fa[0] ); + if ( yflag ) + WriteBitCoord( fa[1] ); + if ( zflag ) + WriteBitCoord( fa[2] ); +} + +void CBitWrite::WriteBitNormal( float f ) +{ + int signbit = (f <= -NORMAL_RESOLUTION); + + // NOTE: Since +/-1 are valid values for a normal, I'm going to encode that as all ones + unsigned int fractval = abs( (int)(f*NORMAL_DENOMINATOR) ); + + // clamp.. + if (fractval > NORMAL_DENOMINATOR) + fractval = NORMAL_DENOMINATOR; + + // Send the sign bit + WriteOneBit( signbit ); + + // Send the fractional component + WriteUBitLong( fractval, NORMAL_FRACTIONAL_BITS ); +} + +void CBitWrite::WriteBitVec3Normal( const Vector& fa ) +{ + int xflag, yflag; + + xflag = (fa[0] >= NORMAL_RESOLUTION) || (fa[0] <= -NORMAL_RESOLUTION); + yflag = (fa[1] >= NORMAL_RESOLUTION) || (fa[1] <= -NORMAL_RESOLUTION); + + WriteOneBit( xflag ); + WriteOneBit( yflag ); + + if ( xflag ) + WriteBitNormal( fa[0] ); + if ( yflag ) + WriteBitNormal( fa[1] ); + + // Write z sign bit + int signbit = (fa[2] <= -NORMAL_RESOLUTION); + WriteOneBit( signbit ); +} + +void CBitWrite::WriteBitAngle( float fAngle, int numbits ) +{ + + unsigned int shift = GetBitForBitnum(numbits); + unsigned int mask = shift - 1; + + int d = (int)( (fAngle / 360.0) * shift ); + d &= mask; + + WriteUBitLong((unsigned int)d, numbits); +} + +bool CBitWrite::WriteBitsFromBuffer( bf_read *pIn, int nBits ) +{ +// This could be optimized a little by + while ( nBits > 32 ) + { + WriteUBitLong( pIn->ReadUBitLong( 32 ), 32 ); + nBits -= 32; + } + + WriteUBitLong( pIn->ReadUBitLong( nBits ), nBits ); + return !IsOverflowed() && !pIn->IsOverflowed(); +} + +void CBitWrite::WriteBitAngles( const QAngle& fa ) +{ + // FIXME: + Vector tmp( fa.x, fa.y, fa.z ); + WriteBitVec3Coord( tmp ); +} + +bool CBitRead::Seek( int nPosition ) +{ + bool bSucc = true; + if ( nPosition < 0 || nPosition > m_nDataBits) + { + SetOverflowFlag(); + bSucc = false; + nPosition = m_nDataBits; + } + int nHead = m_nDataBytes & 3; // non-multiple-of-4 bytes at head of buffer. We put the "round off" + // at the head to make reading and detecting the end efficient. + + int nByteOfs = nPosition / 8; + if ( ( m_nDataBytes < 4 ) || ( nHead && ( nByteOfs < nHead ) ) ) + { + // partial first dword + uint8 const *pPartial = ( uint8 const *) m_pData; + if ( m_pData ) + { + m_nInBufWord = *( pPartial++ ); + if ( nHead > 1 ) + m_nInBufWord |= ( *pPartial++ ) << 8; + if ( nHead > 2 ) + m_nInBufWord |= ( *pPartial++ ) << 16; + } + m_pDataIn = ( uint32 const * ) pPartial; + m_nInBufWord >>= ( nPosition & 31 ); + m_nBitsAvail = ( nHead << 3 ) - ( nPosition & 31 ); + } + else + { + int nAdjPosition = nPosition - ( nHead << 3 ); + m_pDataIn = reinterpret_cast ( + reinterpret_cast( m_pData ) + ( ( nAdjPosition / 32 ) << 2 ) + nHead ); + if ( m_pData ) + { + m_nBitsAvail = 32; + GrabNextDWord(); + } + else + { + m_nInBufWord = 0; + m_nBitsAvail = 1; + } + m_nInBufWord >>= ( nAdjPosition & 31 ); + m_nBitsAvail = MIN( m_nBitsAvail, 32 - ( nAdjPosition & 31 ) ); // in case grabnextdword overflowed + } + return bSucc; +} + + +void CBitRead::StartReading( const void *pData, int nBytes, int iStartBit, int nBits ) +{ +// Make sure it's dword aligned and padded. + Assert(((unsigned long)pData & 3) == 0); + m_pData = (uint32 *) pData; + m_pDataIn = m_pData; + m_nDataBytes = nBytes; + + if ( nBits == -1 ) + { + m_nDataBits = nBytes << 3; + } + else + { + Assert( nBits <= nBytes*8 ); + m_nDataBits = nBits; + } + m_bOverflow = false; + m_pBufferEnd = reinterpret_cast ( reinterpret_cast< uint8 const *> (m_pData) + nBytes ); + if ( m_pData ) + Seek( iStartBit ); + +} + +bool CBitRead::ReadString( char *pStr, int maxLen, bool bLine, int *pOutNumChars ) +{ + Assert( maxLen != 0 ); + + bool bTooSmall = false; + int iChar = 0; + while(1) + { + char val = ReadChar(); + if ( val == 0 ) + break; + else if ( bLine && val == '\n' ) + break; + + if ( iChar < (maxLen-1) ) + { + pStr[iChar] = val; + ++iChar; + } + else + { + bTooSmall = true; + } + } + + // Make sure it's null-terminated. + Assert( iChar < maxLen ); + pStr[iChar] = 0; + + if ( pOutNumChars ) + *pOutNumChars = iChar; + + return !IsOverflowed() && !bTooSmall; +} + +char* CBitRead::ReadAndAllocateString( bool *pOverflow ) +{ + char str[2048]; + + int nChars; + bool bOverflow = !ReadString( str, sizeof( str ), false, &nChars ); + if ( pOverflow ) + *pOverflow = bOverflow; + + // Now copy into the output and return it; + char *pRet = new char[ nChars + 1 ]; + for ( int i=0; i <= nChars; i++ ) + pRet[i] = str[i]; + + return pRet; +} + +int64 CBitRead::ReadLongLong( void ) +{ + int64 retval; + uint *pLongs = (uint*)&retval; + + // Read the two DWORDs according to network endian + const short endianIndex = 0x0100; + byte *idx = (byte*)&endianIndex; + pLongs[*idx++] = ReadUBitLong(sizeof(long) << 3); + pLongs[*idx] = ReadUBitLong(sizeof(long) << 3); + return retval; +} + +void CBitRead::ReadBits(void *pOutData, int nBits) +{ + unsigned char *pOut = (unsigned char*)pOutData; + int nBitsLeft = nBits; + + + // align output to dword boundary + while( ((unsigned long)pOut & 3) != 0 && nBitsLeft >= 8 ) + { + *pOut = (unsigned char)ReadUBitLong(8); + ++pOut; + nBitsLeft -= 8; + } + + // X360TBD: Can't read dwords in ReadBits because they'll get swapped + if ( IsPC() ) + { + // read dwords + while ( nBitsLeft >= 32 ) + { + *((unsigned long*)pOut) = ReadUBitLong(32); + pOut += sizeof(unsigned long); + nBitsLeft -= 32; + } + } + + // read remaining bytes + while ( nBitsLeft >= 8 ) + { + *pOut = ReadUBitLong(8); + ++pOut; + nBitsLeft -= 8; + } + + // read remaining bits + if ( nBitsLeft ) + { + *pOut = ReadUBitLong(nBitsLeft); + } + +} + +bool CBitRead::ReadBytes(void *pOut, int nBytes) +{ + ReadBits(pOut, nBytes << 3); + return !IsOverflowed(); +} + +float CBitRead::ReadBitAngle( int numbits ) +{ + float shift = (float)( GetBitForBitnum(numbits) ); + + int i = ReadUBitLong( numbits ); + float fReturn = (float)i * (360.0 / shift); + + return fReturn; +} + +// Basic Coordinate Routines (these contain bit-field size AND fixed point scaling constants) +float CBitRead::ReadBitCoord (void) +{ + int intval=0,fractval=0,signbit=0; + float value = 0.0; + + + // Read the required integer and fraction flags + intval = ReadOneBit(); + fractval = ReadOneBit(); + + // If we got either parse them, otherwise it's a zero. + if ( intval || fractval ) + { + // Read the sign bit + signbit = ReadOneBit(); + + // If there's an integer, read it in + if ( intval ) + { + // Adjust the integers from [0..MAX_COORD_VALUE-1] to [1..MAX_COORD_VALUE] + intval = ReadUBitLong( COORD_INTEGER_BITS ) + 1; + } + + // If there's a fraction, read it in + if ( fractval ) + { + fractval = ReadUBitLong( COORD_FRACTIONAL_BITS ); + } + + // Calculate the correct floating point value + value = intval + ((float)fractval * COORD_RESOLUTION); + + // Fixup the sign if negative. + if ( signbit ) + value = -value; + } + + return value; +} + +float CBitRead::ReadBitCoordMP( EBitCoordType coordType ) +{ + int intval=0,fractval=0,signbit=0; + float value = 0.0; + + bool bInBounds = ReadOneBit() ? true : false; + + if ( coordType == kCW_Integral ) + { + // Read the required integer and fraction flags + intval = ReadOneBit(); + // If we got either parse them, otherwise it's a zero. + if ( intval ) + { + // Read the sign bit + signbit = ReadOneBit(); + + // If there's an integer, read it in + // Adjust the integers from [0..MAX_COORD_VALUE-1] to [1..MAX_COORD_VALUE] + if ( bInBounds ) + { + value = ReadUBitLong( COORD_INTEGER_BITS_MP ) + 1; + } + else + { + value = ReadUBitLong( COORD_INTEGER_BITS ) + 1; + } + } + } + else + { + // Read the required integer and fraction flags + intval = ReadOneBit(); + + // Read the sign bit + signbit = ReadOneBit(); + + // If we got either parse them, otherwise it's a zero. + if ( intval ) + { + if ( bInBounds ) + { + intval = ReadUBitLong( COORD_INTEGER_BITS_MP ) + 1; + } + else + { + intval = ReadUBitLong( COORD_INTEGER_BITS ) + 1; + } + } + + // If there's a fraction, read it in + fractval = ReadUBitLong( coordType == kCW_LowPrecision ? COORD_FRACTIONAL_BITS_MP_LOWPRECISION : COORD_FRACTIONAL_BITS ); + + // Calculate the correct floating point value + value = intval + ((float)fractval * ( coordType == kCW_LowPrecision ? COORD_RESOLUTION_LOWPRECISION : COORD_RESOLUTION ) ); + } + + // Fixup the sign if negative. + if ( signbit ) + value = -value; + + return value; +} + +void CBitRead::ReadBitVec3Coord( Vector& fa ) +{ + int xflag, yflag, zflag; + + // This vector must be initialized! Otherwise, If any of the flags aren't set, + // the corresponding component will not be read and will be stack garbage. + fa.Init( 0, 0, 0 ); + + xflag = ReadOneBit(); + yflag = ReadOneBit(); + zflag = ReadOneBit(); + + if ( xflag ) + fa[0] = ReadBitCoord(); + if ( yflag ) + fa[1] = ReadBitCoord(); + if ( zflag ) + fa[2] = ReadBitCoord(); +} + +float CBitRead::ReadBitNormal (void) +{ + // Read the sign bit + int signbit = ReadOneBit(); + + // Read the fractional part + unsigned int fractval = ReadUBitLong( NORMAL_FRACTIONAL_BITS ); + + // Calculate the correct floating point value + float value = (float)fractval * NORMAL_RESOLUTION; + + // Fixup the sign if negative. + if ( signbit ) + value = -value; + + return value; +} + +void CBitRead::ReadBitVec3Normal( Vector& fa ) +{ + int xflag = ReadOneBit(); + int yflag = ReadOneBit(); + + if (xflag) + fa[0] = ReadBitNormal(); + else + fa[0] = 0.0f; + + if (yflag) + fa[1] = ReadBitNormal(); + else + fa[1] = 0.0f; + + // The first two imply the third (but not its sign) + int znegative = ReadOneBit(); + + float fafafbfb = fa[0] * fa[0] + fa[1] * fa[1]; + if (fafafbfb < 1.0f) + fa[2] = sqrt( 1.0f - fafafbfb ); + else + fa[2] = 0.0f; + + if (znegative) + fa[2] = -fa[2]; +} + +void CBitRead::ReadBitAngles( QAngle& fa ) +{ + Vector tmp; + ReadBitVec3Coord( tmp ); + fa.Init( tmp.x, tmp.y, tmp.z ); +} diff --git a/tier1/processor_detect.cpp b/tier1/processor_detect.cpp new file mode 100644 index 00000000..be81312d --- /dev/null +++ b/tier1/processor_detect.cpp @@ -0,0 +1,278 @@ +//========= Copyright © 1996-2005, Valve Corporation, All rights reserved. ============// +// +// Purpose: win32 dependant ASM code for CPU capability detection +// +// $Workfile: $ +// $NoKeywords: $ +//=============================================================================// + +#if defined _LINUX || defined __APPLE__ + +#include "processor_detect_linux.cpp" + +#elif defined( _X360 ) + +bool CheckMMXTechnology(void) { return false; } +bool CheckSSETechnology(void) { return false; } +bool CheckSSE2Technology(void) { return false; } +bool Check3DNowTechnology(void) { return false; } + +#elif defined( _WIN32 ) && !defined( _X360 ) && !defined( COMPILER_MSVC64 ) + +#pragma optimize( "", off ) +#pragma warning( disable: 4800 ) //'int' : forcing value to bool 'true' or 'false' (performance warning) + +// stuff from windows.h +#ifndef EXCEPTION_EXECUTE_HANDLER +#define EXCEPTION_EXECUTE_HANDLER 1 +#endif + +bool CheckMMXTechnology(void) +{ + int retval = true; + unsigned int RegEDX = 0; + +#ifdef CPUID + _asm pushad; +#endif + + __try + { + _asm + { +#ifdef CPUID + xor edx, edx // Clue the compiler that EDX is about to be used. +#endif + mov eax, 1 // set up CPUID to return processor version and features + // 0 = vendor string, 1 = version info, 2 = cache info + CPUID // code bytes = 0fh, 0a2h + mov RegEDX, edx // features returned in edx + } + } + __except(EXCEPTION_EXECUTE_HANDLER) + { + retval = false; + } + + // If CPUID not supported, then certainly no MMX extensions. + if (retval) + { + if (RegEDX & 0x800000) // bit 23 is set for MMX technology + { + __try + { + // try executing the MMX instruction "emms" + _asm EMMS + } + __except(EXCEPTION_EXECUTE_HANDLER) + { + retval = false; + } + } + + else + retval = false; // processor supports CPUID but does not support MMX technology + + // if retval == 0 here, it means the processor has MMX technology but + // floating-point emulation is on; so MMX technology is unavailable + } + +#ifdef CPUID + _asm popad; +#endif + + return retval; +} + +bool CheckSSETechnology(void) +{ + int retval = true; + unsigned int RegEDX = 0; + +#ifdef CPUID + _asm pushad; +#endif + + // Do we have support for the CPUID function? + __try + { + _asm + { +#ifdef CPUID + xor edx, edx // Clue the compiler that EDX is about to be used. +#endif + mov eax, 1 // set up CPUID to return processor version and features + // 0 = vendor string, 1 = version info, 2 = cache info + CPUID // code bytes = 0fh, 0a2h + mov RegEDX, edx // features returned in edx + } + } + __except(EXCEPTION_EXECUTE_HANDLER) + { + retval = false; + } + + // If CPUID not supported, then certainly no SSE extensions. + if (retval) + { + // Do we have support for SSE in this processor? + if ( RegEDX & 0x2000000L ) // bit 25 is set for SSE technology + { + // Make sure that SSE is supported by executing an inline SSE instruction + +// BUGBUG, FIXME - Visual C Version 6.0 does not support SSE inline code YET (No macros from Intel either) +// Fix this if VC7 supports inline SSE instructinons like "xorps" as shown below. +#if 1 + __try + { + _asm + { + // Attempt execution of a SSE instruction to make sure OS supports SSE FPU context switches + xorps xmm0, xmm0 + // This will work on Win2k+ (Including masking SSE FPU exception to "normalized" values) + // This will work on Win98+ (But no "masking" of FPU exceptions provided) + } + } + __except(EXCEPTION_EXECUTE_HANDLER) +#endif + + { + retval = false; + } + } + else + retval = false; + } +#ifdef CPUID + _asm popad; +#endif + + return retval; +} + +bool CheckSSE2Technology(void) +{ + int retval = true; + unsigned int RegEDX = 0; + +#ifdef CPUID + _asm pushad; +#endif + + // Do we have support for the CPUID function? + __try + { + _asm + { +#ifdef CPUID + xor edx, edx // Clue the compiler that EDX is about to be used. +#endif + mov eax, 1 // set up CPUID to return processor version and features + // 0 = vendor string, 1 = version info, 2 = cache info + CPUID // code bytes = 0fh, 0a2h + mov RegEDX, edx // features returned in edx + } + } + __except(EXCEPTION_EXECUTE_HANDLER) + { + retval = false; + } + + // If CPUID not supported, then certainly no SSE extensions. + if (retval) + { + // Do we have support for SSE in this processor? + if ( RegEDX & 0x04000000 ) // bit 26 is set for SSE2 technology + { + // Make sure that SSE is supported by executing an inline SSE instruction + + __try + { + _asm + { + // Attempt execution of a SSE2 instruction to make sure OS supports SSE FPU context switches + xorpd xmm0, xmm0 + } + } + __except(EXCEPTION_EXECUTE_HANDLER) + + { + retval = false; + } + } + else + retval = false; + } +#ifdef CPUID + _asm popad; +#endif + + return retval; +} + +bool Check3DNowTechnology(void) +{ + int retval = true; + unsigned int RegEAX = 0; + +#ifdef CPUID + _asm pushad; +#endif + + // First see if we can execute CPUID at all + __try + { + _asm + { +#ifdef CPUID +// xor edx, edx // Clue the compiler that EDX is about to be used. +#endif + mov eax, 0x80000000 // setup CPUID to return whether AMD >0x80000000 function are supported. + // 0x80000000 = Highest 0x80000000+ function, 0x80000001 = 3DNow support + CPUID // code bytes = 0fh, 0a2h + mov RegEAX, eax // result returned in eax + } + } + __except(EXCEPTION_EXECUTE_HANDLER) + { + retval = false; + } + + // If CPUID not supported, then there is definitely no 3DNow support + if (retval) + { + // Are there any "higher" AMD CPUID functions? + if (RegEAX > 0x80000000L ) + { + __try + { + _asm + { + mov eax, 0x80000001 // setup to test for CPU features + CPUID // code bytes = 0fh, 0a2h + shr edx, 31 // If bit 31 is set, we have 3DNow support! + mov retval, edx // Save the return value for end of function + } + } + __except(EXCEPTION_EXECUTE_HANDLER) + { + retval = false; + } + } + else + { + // processor supports CPUID but does not support AMD CPUID functions + retval = false; + } + } + +#ifdef CPUID + _asm popad; +#endif + + return retval; +} + +#pragma optimize( "", on ) + +#endif // _WIN32 diff --git a/tier1/processor_detect_linux.cpp b/tier1/processor_detect_linux.cpp new file mode 100644 index 00000000..079d2731 --- /dev/null +++ b/tier1/processor_detect_linux.cpp @@ -0,0 +1,63 @@ +//========= Copyright © 1996-2005, Valve Corporation, All rights reserved. ============// +// +// Purpose: linux dependant ASM code for CPU capability detection +// +// $Workfile: $ +// $NoKeywords: $ +//=============================================================================// + +#define cpuid(in,a,b,c,d) \ + asm("pushl %%ebx\n\t" "cpuid\n\t" "movl %%ebx,%%esi\n\t" "pop %%ebx": "=a" (a), "=S" (b), "=c" (c), "=d" (d) : "a" (in)); + +bool CheckMMXTechnology(void) +{ +#ifndef PLATFORM_64BITS + unsigned long eax,ebx,edx,unused; + cpuid(1,eax,ebx,unused,edx); + + return edx & 0x800000; +#else + return true; +#endif +} + +bool CheckSSETechnology(void) +{ +#ifndef PLATFORM_64BITS + unsigned long eax,ebx,edx,unused; + cpuid(1,eax,ebx,unused,edx); + + return edx & 0x2000000L; +#else + return true; +#endif +} + +bool CheckSSE2Technology(void) +{ +#ifndef PLATFORM_64BITS + unsigned long eax,ebx,edx,unused; + cpuid(1,eax,ebx,unused,edx); + + return edx & 0x04000000; +#else + return true; +#endif +} + +bool Check3DNowTechnology(void) +{ +#ifndef PLATFORM_64BITS + unsigned long eax, unused; + cpuid(0x80000000,eax,unused,unused,unused); + + if ( eax > 0x80000000L ) + { + cpuid(0x80000001,unused,unused,unused,eax); + return ( eax & 1<<31 ); + } + return false; +#else + return true; +#endif +} diff --git a/tier1/rangecheckedvar.cpp b/tier1/rangecheckedvar.cpp new file mode 100644 index 00000000..1633fbab --- /dev/null +++ b/tier1/rangecheckedvar.cpp @@ -0,0 +1,42 @@ +//========= Copyright © 1996-2005, Valve Corporation, All rights reserved. ============// +// +// Purpose: +// +//=============================================================================// + +#include "mathlib/mathlib.h" +#include "rangecheckedvar.h" + +// memdbgon must be the last include file in a .cpp file!!! +#include "tier0/memdbgon.h" + +bool g_bDoRangeChecks = true; + + +static int g_nDisables = 0; + + +CDisableRangeChecks::CDisableRangeChecks() +{ + if ( !ThreadInMainThread() ) + return; + g_nDisables++; + g_bDoRangeChecks = false; +} + + +CDisableRangeChecks::~CDisableRangeChecks() +{ + if ( !ThreadInMainThread() ) + return; + Assert( g_nDisables > 0 ); + --g_nDisables; + if ( g_nDisables == 0 ) + { + g_bDoRangeChecks = true; + } +} + + + + diff --git a/tier1/stringpool.cpp b/tier1/stringpool.cpp new file mode 100644 index 00000000..699f5cb2 --- /dev/null +++ b/tier1/stringpool.cpp @@ -0,0 +1,350 @@ +//===== Copyright © 1996-2005, Valve Corporation, All rights reserved. ======// +// +// Purpose: +// +// $NoKeywords: $ +//===========================================================================// + +#include "convar.h" +#include "tier0/dbg.h" +#include "stringpool.h" +#include "tier1/strtools.h" +#include "generichash.h" + +// memdbgon must be the last include file in a .cpp file!!! +#include "tier0/memdbgon.h" + +//----------------------------------------------------------------------------- +// Purpose: Comparison function for string sorted associative data structures +//----------------------------------------------------------------------------- + +bool StrLessSensitive( const char * const &pszLeft, const char * const &pszRight ) +{ + return ( Q_strcmp( pszLeft, pszRight) < 0 ); +} + +bool StrLessInsensitive( const char * const &pszLeft, const char * const &pszRight ) +{ + return ( Q_stricmp( pszLeft, pszRight) < 0 ); +} + + +//----------------------------------------------------------------------------- +//----------------------------------------------------------------------------- + +CStringPool::CStringPool( StringPoolCase_t caseSensitivity ) + : m_Strings( 32, 256, caseSensitivity == StringPoolCaseInsensitive ? StrLessInsensitive : StrLessSensitive ) +{ +} + +//----------------------------------------------------------------------------- +//----------------------------------------------------------------------------- + +CStringPool::~CStringPool() +{ + FreeAll(); +} + +//----------------------------------------------------------------------------- +//----------------------------------------------------------------------------- + +unsigned int CStringPool::Count() const +{ + return m_Strings.Count(); +} + +//----------------------------------------------------------------------------- +//----------------------------------------------------------------------------- +const char * CStringPool::Find( const char *pszValue ) +{ + unsigned short i = m_Strings.Find(pszValue); + if ( m_Strings.IsValidIndex(i) ) + return m_Strings[i]; + + return NULL; +} + +const char * CStringPool::Allocate( const char *pszValue ) +{ + char *pszNew; + + unsigned short i = m_Strings.Find(pszValue); + bool bNew = (i == m_Strings.InvalidIndex()); + + if ( !bNew ) + return m_Strings[i]; + + pszNew = strdup( pszValue ); + + if ( bNew ) + m_Strings.Insert( pszNew ); + + return pszNew; +} + +//----------------------------------------------------------------------------- +//----------------------------------------------------------------------------- + +void CStringPool::FreeAll() +{ + unsigned short i = m_Strings.FirstInorder(); + while ( i != m_Strings.InvalidIndex() ) + { + free( (void *)m_Strings[i] ); + i = m_Strings.NextInorder(i); + } + m_Strings.RemoveAll(); +} + +//----------------------------------------------------------------------------- +//----------------------------------------------------------------------------- + + +CCountedStringPool::CCountedStringPool( StringPoolCase_t caseSensitivity ) +{ + MEM_ALLOC_CREDIT(); + m_HashTable.EnsureCount(HASH_TABLE_SIZE); + + for( int i = 0; i < m_HashTable.Count(); i++ ) + { + m_HashTable[i] = INVALID_ELEMENT; + } + + m_FreeListStart = INVALID_ELEMENT; + m_Elements.AddToTail(); + m_Elements[0].pString = NULL; + m_Elements[0].nReferenceCount = 0; + m_Elements[0].nNextElement = INVALID_ELEMENT; + + m_caseSensitivity = caseSensitivity; +} + +CCountedStringPool::~CCountedStringPool() +{ + FreeAll(); +} + +void CCountedStringPool::FreeAll() +{ + int i; + + // Reset the hash table: + for( i = 0; i < m_HashTable.Count(); i++ ) + { + m_HashTable[i] = INVALID_ELEMENT; + } + + // Blow away the free list: + m_FreeListStart = INVALID_ELEMENT; + + for( i = 0; i < m_Elements.Count(); i++ ) + { + if( m_Elements[i].pString ) + { + delete [] m_Elements[i].pString; + m_Elements[i].pString = NULL; + m_Elements[i].nReferenceCount = 0; + m_Elements[i].nNextElement = INVALID_ELEMENT; + } + } + + // Remove all but the invalid element: + m_Elements.RemoveAll(); + m_Elements.AddToTail(); + m_Elements[0].pString = NULL; + m_Elements[0].nReferenceCount = 0; + m_Elements[0].nNextElement = INVALID_ELEMENT; +} + + +unsigned short CCountedStringPool::FindStringHandle( const char* pIntrinsic ) +{ + if( pIntrinsic == NULL ) + return INVALID_ELEMENT; + + unsigned short nHashBucketIndex = (m_caseSensitivity ? HashString( pIntrinsic ) : HashStringCaseless( pIntrinsic ) %HASH_TABLE_SIZE); + unsigned short nCurrentBucket = m_HashTable[ nHashBucketIndex ]; + + // Does the bucket already exist? + if( nCurrentBucket != INVALID_ELEMENT ) + { + for( ; nCurrentBucket != INVALID_ELEMENT ; nCurrentBucket = m_Elements[nCurrentBucket].nNextElement ) + { + if( !Q_stricmp( pIntrinsic, m_Elements[nCurrentBucket].pString ) ) + { + return nCurrentBucket; + } + } + } + + return 0; + +} + +char* CCountedStringPool::FindString( const char* pIntrinsic ) +{ + if( pIntrinsic == NULL ) + return NULL; + + // Yes, this will be NULL on failure. + return m_Elements[FindStringHandle(pIntrinsic)].pString; +} + +unsigned short CCountedStringPool::ReferenceStringHandle( const char* pIntrinsic ) +{ + if( pIntrinsic == NULL ) + return INVALID_ELEMENT; + + unsigned short nHashBucketIndex = (m_caseSensitivity ? HashString( pIntrinsic ) : HashStringCaseless( pIntrinsic ) % HASH_TABLE_SIZE); + unsigned short nCurrentBucket = m_HashTable[ nHashBucketIndex ]; + + // Does the bucket already exist? + if( nCurrentBucket != INVALID_ELEMENT ) + { + for( ; nCurrentBucket != INVALID_ELEMENT ; nCurrentBucket = m_Elements[nCurrentBucket].nNextElement ) + { + if( !Q_stricmp( pIntrinsic, m_Elements[nCurrentBucket].pString ) ) + { + // Anyone who hits 65k references is permanant + if( m_Elements[nCurrentBucket].nReferenceCount < MAX_REFERENCE ) + { + m_Elements[nCurrentBucket].nReferenceCount ++ ; + } + return nCurrentBucket; + } + } + } + + if( m_FreeListStart != INVALID_ELEMENT ) + { + nCurrentBucket = m_FreeListStart; + m_FreeListStart = m_Elements[nCurrentBucket].nNextElement; + } + else + { + nCurrentBucket = m_Elements.AddToTail(); + } + + m_Elements[nCurrentBucket].nReferenceCount = 1; + + // Insert at the beginning of the bucket: + m_Elements[nCurrentBucket].nNextElement = m_HashTable[ nHashBucketIndex ]; + m_HashTable[ nHashBucketIndex ] = nCurrentBucket; + + m_Elements[nCurrentBucket].pString = new char[Q_strlen( pIntrinsic ) + 1]; + Q_strcpy( m_Elements[nCurrentBucket].pString, pIntrinsic ); + + return nCurrentBucket; +} + + +char* CCountedStringPool::ReferenceString( const char* pIntrinsic ) +{ + if(!pIntrinsic) + return NULL; + + return m_Elements[ReferenceStringHandle( pIntrinsic)].pString; +} + +void CCountedStringPool::DereferenceString( const char* pIntrinsic ) +{ + // If we get a NULL pointer, just return + if (!pIntrinsic) + return; + + unsigned short nHashBucketIndex = (m_caseSensitivity ? HashString( pIntrinsic ) : HashStringCaseless( pIntrinsic ) % m_HashTable.Count()); + unsigned short nCurrentBucket = m_HashTable[ nHashBucketIndex ]; + + // If there isn't anything in the bucket, just return. + if ( nCurrentBucket == INVALID_ELEMENT ) + return; + + for( unsigned short previous = INVALID_ELEMENT; nCurrentBucket != INVALID_ELEMENT ; nCurrentBucket = m_Elements[nCurrentBucket].nNextElement ) + { + if( !Q_stricmp( pIntrinsic, m_Elements[nCurrentBucket].pString ) ) + { + // Anyone who hits 65k references is permanant + if( m_Elements[nCurrentBucket].nReferenceCount < MAX_REFERENCE ) + { + m_Elements[nCurrentBucket].nReferenceCount --; + } + + if( m_Elements[nCurrentBucket].nReferenceCount == 0 ) + { + if( previous == INVALID_ELEMENT ) + { + m_HashTable[nHashBucketIndex] = m_Elements[nCurrentBucket].nNextElement; + } + else + { + m_Elements[previous].nNextElement = m_Elements[nCurrentBucket].nNextElement; + } + + delete [] m_Elements[nCurrentBucket].pString; + m_Elements[nCurrentBucket].pString = NULL; + m_Elements[nCurrentBucket].nReferenceCount = 0; + + m_Elements[nCurrentBucket].nNextElement = m_FreeListStart; + m_FreeListStart = nCurrentBucket; + break; + + } + } + + previous = nCurrentBucket; + } +} + +char* CCountedStringPool::HandleToString( unsigned short handle ) +{ + return m_Elements[handle].pString; +} + +unsigned CCountedStringPool::Hash( const char *pszKey ) +{ + if (m_caseSensitivity == StringPoolCaseSensitive) + return HashString( pszKey ); + + return HashStringCaseless( pszKey ); +} + +void CCountedStringPool::SpewStrings() +{ + int i; + for ( i = 0; i < m_Elements.Count(); i++ ) + { + char* string = m_Elements[i].pString; + + Msg("String %d: ref:%d %s", i, m_Elements[i].nReferenceCount, string == NULL? "EMPTY - ok for slot zero only!" : string); + } + + Msg("\n%d total counted strings.", m_Elements.Count()); +} + +#ifdef _DEBUG1111 +CON_COMMAND( test_stringpool, "Tests the class CStringPool" ) +{ + CStringPool pool; + + Assert(pool.Count() == 0); + + pool.Allocate("test"); + Assert(pool.Count() == 1); + + pool.Allocate("test"); + Assert(pool.Count() == 1); + + pool.Allocate("test2"); + Assert(pool.Count() == 2); + + Assert( pool.Find("test2") != NULL ); + Assert( pool.Find("TEST") != NULL ); + Assert( pool.Find("Test2") != NULL ); + Assert( pool.Find("test") != NULL ); + + pool.FreeAll(); + Assert(pool.Count() == 0); + + Msg("Pass."); +} +#endif diff --git a/tier1/strtools.cpp b/tier1/strtools.cpp new file mode 100644 index 00000000..cdb7ac07 --- /dev/null +++ b/tier1/strtools.cpp @@ -0,0 +1,2017 @@ +//===== 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-2005.vcproj b/tier1/tier1-2005.vcproj new file mode 100644 index 00000000..34cff4df --- /dev/null +++ b/tier1/tier1-2005.vcproj @@ -0,0 +1,568 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tier1/tier1.cpp b/tier1/tier1.cpp new file mode 100644 index 00000000..c29dfcfc --- /dev/null +++ b/tier1/tier1.cpp @@ -0,0 +1,29 @@ +//===== Copyright © 2005-2005, Valve Corporation, All rights reserved. ======// +// +// Purpose: A higher level link library for general use in the game and tools. +// +//===========================================================================// + +#include +#include "tier0/dbg.h" +#include "interfaces/interfaces.h" + +// for utlsortvector.h +#ifndef _WIN32 + void *g_pUtlSortVectorQSortContext = NULL; +#endif + + +//----------------------------------------------------------------------------- +// Call this to connect to all tier 1 libraries. +// It's up to the caller to check the globals it cares about to see if ones are missing +//----------------------------------------------------------------------------- +void ConnectTier1Libraries( CreateInterfaceFn *pFactoryList, int nFactoryCount ) +{ + ConnectInterfaces( pFactoryList, nFactoryCount); +} + +void DisconnectTier1Libraries() +{ + DisconnectInterfaces(); +} diff --git a/tier1/tier1.sln b/tier1/tier1.sln new file mode 100644 index 00000000..bcc127ca --- /dev/null +++ b/tier1/tier1.sln @@ -0,0 +1,28 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 2013 +VisualStudioVersion = 12.0.31101.0 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tier1", "tier1.vcxproj", "{E1DA8DB8-FB4C-4B14-91A6-98BCED6B9720}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + Debug|x64 = Debug|x64 + Release|Win32 = Release|Win32 + Release|x64 = Release|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {E1DA8DB8-FB4C-4B14-91A6-98BCED6B9720}.Debug|Win32.ActiveCfg = Debug|Win32 + {E1DA8DB8-FB4C-4B14-91A6-98BCED6B9720}.Debug|Win32.Build.0 = Debug|Win32 + {E1DA8DB8-FB4C-4B14-91A6-98BCED6B9720}.Debug|x64.ActiveCfg = Debug|x64 + {E1DA8DB8-FB4C-4B14-91A6-98BCED6B9720}.Debug|x64.Build.0 = Debug|x64 + {E1DA8DB8-FB4C-4B14-91A6-98BCED6B9720}.Release|Win32.ActiveCfg = Release|Win32 + {E1DA8DB8-FB4C-4B14-91A6-98BCED6B9720}.Release|Win32.Build.0 = Release|Win32 + {E1DA8DB8-FB4C-4B14-91A6-98BCED6B9720}.Release|x64.ActiveCfg = Release|x64 + {E1DA8DB8-FB4C-4B14-91A6-98BCED6B9720}.Release|x64.Build.0 = Release|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/tier1/tier1.vcxproj b/tier1/tier1.vcxproj new file mode 100644 index 00000000..497be0cd --- /dev/null +++ b/tier1/tier1.vcxproj @@ -0,0 +1,409 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + tier1 + {E1DA8DB8-FB4C-4B14-91A6-98BCED6B9720} + tier1 + + + + StaticLibrary + v120_xp + + + StaticLibrary + v120 + + + StaticLibrary + v120_xp + + + StaticLibrary + v120 + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 + ..\lib\public\ + true + true + true + true + true + true + ..\lib\public\ + true + true + true + true + true + true + AllRules.ruleset + AllRules.ruleset + + + + + AllRules.ruleset + AllRules.ruleset + + + + + + + ..\lib\public\win64\ + + + ..\lib\public\win64\ + + + + + + + + Disabled + ..\public;..\public\tier0;..\public\tier1;%(AdditionalIncludeDirectories) + _HAS_ITERATOR_DEBUGGING=0;_ALLOW_RUNTIME_LIBRARY_MISMATCH;_ALLOW_ITERATOR_DEBUG_LEVEL_MISMATCH;_ALLOW_MSC_VER_MISMATCH;WIN32;_WIN32;COMPILER_MSVC;COMPILER_MSVC32;_DEBUG;DEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;TIER1_STATIC_LIB;%(PreprocessorDefinitions) + true + true + + + EnableFastChecks + MultiThreadedDebug + false + Fast + true + true + true + false + + + false + + + $(IntDir) + $(IntDir) + $(IntDir) + false + + + $(IntDir) + CompileAsCpp + Prompt + Level3 + + + + + + + false + Rpcrt4.lib;%(AdditionalDependencies) + true + + + true + + + true + $(OutDir)tier1.bsc + + + + + + + + + Disabled + ..\public;..\public\tier0;..\public\tier1;%(AdditionalIncludeDirectories) + _HAS_ITERATOR_DEBUGGING=0;_ALLOW_RUNTIME_LIBRARY_MISMATCH;_ALLOW_ITERATOR_DEBUG_LEVEL_MISMATCH;_ALLOW_MSC_VER_MISMATCH;WIN32;_WIN32;COMPILER_MSVC;COMPILER_MSVC32;_DEBUG;DEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;TIER1_STATIC_LIB;%(PreprocessorDefinitions) + true + + + EnableFastChecks + MultiThreadedDebug + false + Fast + true + true + true + false + + + false + + + $(IntDir) + $(IntDir) + $(IntDir) + false + + + $(IntDir) + CompileAsCpp + Prompt + Level3 + + + + + + + false + Rpcrt4.lib;%(AdditionalDependencies) + true + + + true + + + true + $(OutDir)tier1.bsc + + + + + + + + + MaxSpeed + AnySuitable + true + Speed + ..\public;..\public\tier0;..\public\tier1;%(AdditionalIncludeDirectories) + _HAS_ITERATOR_DEBUGGING=0;_ALLOW_RUNTIME_LIBRARY_MISMATCH;_ALLOW_ITERATOR_DEBUG_LEVEL_MISMATCH;_ALLOW_MSC_VER_MISMATCH;WIN32;_WIN32;COMPILER_MSVC;COMPILER_MSVC32;NDEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;TIER1_STATIC_LIB;%(PreprocessorDefinitions) + true + + + MultiThreaded + false + true + Fast + true + true + true + false + + + false + + + $(IntDir) + $(IntDir) + $(IntDir) + false + + + $(IntDir) + CompileAsCpp + Prompt + Level3 + + + /Zo %(AdditionalOptions) + + + + + + + false + Rpcrt4.lib;%(AdditionalDependencies) + true + + + true + + + true + $(OutDir)tier1.bsc + + + + + + + + + MaxSpeed + AnySuitable + true + Speed + ..\public;..\public\tier0;..\public\tier1;%(AdditionalIncludeDirectories) + _HAS_ITERATOR_DEBUGGING=0;_ALLOW_RUNTIME_LIBRARY_MISMATCH;_ALLOW_ITERATOR_DEBUG_LEVEL_MISMATCH;_ALLOW_MSC_VER_MISMATCH;WIN64;_WIN64;COMPILER_MSVC;COMPILER_MSVC64;NDEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;TIER1_STATIC_LIB;%(PreprocessorDefinitions) + true + + + MultiThreaded + false + true + Fast + true + true + true + false + + + false + + + $(IntDir) + $(IntDir) + $(IntDir) + false + + + $(IntDir) + CompileAsCpp + Prompt + Level3 + + + /Zo %(AdditionalOptions) + + + + + + + false + Rpcrt4.lib;%(AdditionalDependencies) + true + + + true + + + true + $(OutDir)tier1.bsc + + + + + + + + + + + + + + + + + + + + Sync + Sync + Sync + Sync + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tier1/tier1.vcxproj.filters b/tier1/tier1.vcxproj.filters new file mode 100644 index 00000000..5f57bdbe --- /dev/null +++ b/tier1/tier1.vcxproj.filters @@ -0,0 +1,251 @@ + + + + + {aba1d919-d95c-4c3f-a495-be0375bab184} + cpp;c;cxx;rc;def;r;odl;idl;hpj;bat + + + {0295d938-2af6-4393-9785-4b7b122313c9} + h;hpp;hxx;hm;inl + + + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + \ No newline at end of file diff --git a/tier1/tokenreader.cpp b/tier1/tokenreader.cpp new file mode 100644 index 00000000..46d9547c --- /dev/null +++ b/tier1/tokenreader.cpp @@ -0,0 +1,480 @@ +//===== Copyright © 1996-2005, Valve Corporation, All rights reserved. ======// +// +// Purpose: +// +// $NoKeywords: $ +//===========================================================================// + +#include +#include +#include +#include "tokenreader.h" +#include "tier0/platform.h" +#include "tier1/strtools.h" +#include "tier0/dbg.h" + +//----------------------------------------------------------------------------- +// Purpose: +//----------------------------------------------------------------------------- +TokenReader::TokenReader(void) +{ + m_szFilename[0] = '\0'; + m_nLine = 1; + m_nErrorCount = 0; + m_bStuffed = false; +} + + +//----------------------------------------------------------------------------- +// Purpose: +// Input : *pszFilename - +// Output : Returns true on success, false on failure. +//----------------------------------------------------------------------------- +bool TokenReader::Open(const char *pszFilename) +{ + open(pszFilename, std::ios::in | std::ios::binary ); + Q_strncpy(m_szFilename, pszFilename, sizeof( m_szFilename ) ); + m_nLine = 1; + m_nErrorCount = 0; + m_bStuffed = false; + return(is_open() != 0); +} + + +//----------------------------------------------------------------------------- +// Purpose: +//----------------------------------------------------------------------------- +void TokenReader::Close() +{ + close(); +} + + +//----------------------------------------------------------------------------- +// Purpose: +// Input : *error - +// Output : const char +//----------------------------------------------------------------------------- +const char *TokenReader::Error(char *error, ...) +{ + static char szErrorBuf[256]; + Q_snprintf(szErrorBuf, sizeof( szErrorBuf ), "File %s, line %d: ", m_szFilename, m_nLine); + Q_strncat(szErrorBuf, error, sizeof( szErrorBuf ), COPY_ALL_CHARACTERS ); + m_nErrorCount++; + return(szErrorBuf); +} + + +//----------------------------------------------------------------------------- +// Purpose: +// Input : pszStore - +// nSize - +// Output : Returns true on success, false on failure. +//----------------------------------------------------------------------------- +trtoken_t TokenReader::GetString(char *pszStore, int nSize) +{ + if (nSize <= 0) + { + return TOKENERROR; + } + + char szBuf[1024]; + + // + // Until we reach the end of this string or run out of room in + // the destination buffer... + // + while (true) + { + // + // Fetch the next batch of text from the file. + // + get(szBuf, sizeof(szBuf), '\"'); + if (eof()) + { + return TOKENEOF; + } + + if (fail()) + { + // Just means nothing was read (empty string probably "") + clear(); + } + + // + // Transfer the text to the destination buffer. + // + char *pszSrc = szBuf; + while ((*pszSrc != '\0') && (nSize > 1)) + { + if (*pszSrc == 0x0d) + { + // + // Newline encountered before closing quote -- unterminated string. + // + *pszStore = '\0'; + return TOKENSTRINGTOOLONG; + } + else if (*pszSrc != '\\') + { + *pszStore = *pszSrc; + pszSrc++; + } + else + { + // + // Backslash sequence - replace with the appropriate character. + // + pszSrc++; + + if (*pszSrc == 'n') + { + *pszStore = '\n'; + } + + pszSrc++; + } + + pszStore++; + nSize--; + } + + if (*pszSrc != '\0') + { + // + // Ran out of room in the destination buffer. Skip to the close-quote, + // terminate the string, and exit. + // + ignore(1024, '\"'); + *pszStore = '\0'; + return TOKENSTRINGTOOLONG; + } + + // + // Check for closing quote. + // + if (peek() == '\"') + { + // + // Eat the close quote and any whitespace. + // + get(); + + bool bCombineStrings = SkipWhiteSpace(); + + // + // Combine consecutive quoted strings if the combine strings character was + // encountered between the two strings. + // + if (bCombineStrings && (peek() == '\"')) + { + // + // Eat the open quote and keep parsing this string. + // + get(); + } + else + { + // + // Done with this string, terminate the string and exit. + // + *pszStore = '\0'; + return STRING; + } + } + } +} + + +//----------------------------------------------------------------------------- +// Purpose: Returns the next token, allocating enough memory to store the token +// plus a terminating NULL. +// Input : pszStore - Pointer to a string that will be allocated. +// Output : Returns the type of token that was read, or TOKENERROR. +//----------------------------------------------------------------------------- +trtoken_t TokenReader::NextTokenDynamic(char **ppszStore) +{ + char szTempBuffer[8192]; + trtoken_t eType = NextToken(szTempBuffer, sizeof(szTempBuffer)); + + int len = Q_strlen(szTempBuffer) + 1; + *ppszStore = new char [len]; + Assert( *ppszStore ); + Q_strncpy(*ppszStore, szTempBuffer, len ); + + return(eType); +} + + +//----------------------------------------------------------------------------- +// Purpose: Returns the next token. +// Input : pszStore - Pointer to a string that will receive the token. +// Output : Returns the type of token that was read, or TOKENERROR. +//----------------------------------------------------------------------------- +trtoken_t TokenReader::NextToken(char *pszStore, int nSize) +{ + char *pStart = pszStore; + + if (!is_open()) + { + return TOKENEOF; + } + + // + // If they stuffed a token, return that token. + // + if (m_bStuffed) + { + m_bStuffed = false; + Q_strncpy( pszStore, m_szStuffed, nSize ); + return m_eStuffed; + } + + SkipWhiteSpace(); + + if (eof()) + { + return TOKENEOF; + } + + if (fail()) + { + return TOKENEOF; + } + + char ch = get(); + + // + // Look for all the valid operators. + // + switch (ch) + { + case '@': + case ',': + case '!': + case '+': + case '&': + case '*': + case '$': + case '.': + case '=': + case ':': + case '[': + case ']': + case '(': + case ')': + case '{': + case '}': + case '\\': + { + pszStore[0] = ch; + pszStore[1] = 0; + return OPERATOR; + } + } + + // + // Look for the start of a quoted string. + // + if (ch == '\"') + { + return GetString(pszStore, nSize); + } + + // + // Integers consist of numbers with an optional leading minus sign. + // + if (isdigit(ch) || (ch == '-')) + { + do + { + if ( (pszStore - pStart + 1) < nSize ) + { + *pszStore = ch; + pszStore++; + } + + ch = get(); + if (ch == '-') + { + return TOKENERROR; + } + } while (isdigit(ch)); + + // + // No identifier characters are allowed contiguous with numbers. + // + if (isalpha(ch) || (ch == '_')) + { + return TOKENERROR; + } + + // + // Put back the non-numeric character for the next call. + // + putback(ch); + *pszStore = '\0'; + return INTEGER; + } + + // + // Identifiers consist of a consecutive string of alphanumeric + // characters and underscores. + // + while ( isalpha(ch) || isdigit(ch) || (ch == '_') ) + { + if ( (pszStore - pStart + 1) < nSize ) + { + *pszStore = ch; + pszStore++; + } + + ch = get(); + } + + // + // Put back the non-identifier character for the next call. + // + putback(ch); + *pszStore = '\0'; + return IDENT; +} + + +//----------------------------------------------------------------------------- +// Purpose: +// Input : ttype - +// *pszToken - +//----------------------------------------------------------------------------- +void TokenReader::IgnoreTill(trtoken_t ttype, const char *pszToken) +{ + trtoken_t _ttype; + char szBuf[1024]; + + while(1) + { + _ttype = NextToken(szBuf, sizeof(szBuf)); + if(_ttype == TOKENEOF) + return; + if(_ttype == ttype) + { + if(IsToken(pszToken, szBuf)) + { + Stuff(ttype, pszToken); + return; + } + } + } +} + + +//----------------------------------------------------------------------------- +// Purpose: +// Input : ttype - +// pszToken - +//----------------------------------------------------------------------------- +void TokenReader::Stuff(trtoken_t eType, const char *pszToken) +{ + m_eStuffed = eType; + Q_strncpy(m_szStuffed, pszToken, sizeof( m_szStuffed ) ); + m_bStuffed = true; +} + + +//----------------------------------------------------------------------------- +// Purpose: +// Input : ttype - +// pszToken - +// Output : Returns true on success, false on failure. +//----------------------------------------------------------------------------- +bool TokenReader::Expecting(trtoken_t ttype, const char *pszToken) +{ + char szBuf[1024]; + if (NextToken(szBuf, sizeof(szBuf)) != ttype || !IsToken(pszToken, szBuf)) + { + return false; + } + return true; +} + + +//----------------------------------------------------------------------------- +// Purpose: +// Input : pszStore - +// Output : +//----------------------------------------------------------------------------- +trtoken_t TokenReader::PeekTokenType(char *pszStore, int maxlen ) +{ + if (!m_bStuffed) + { + m_eStuffed = NextToken(m_szStuffed, sizeof(m_szStuffed)); + m_bStuffed = true; + } + + if (pszStore) + { + Q_strncpy(pszStore, m_szStuffed, maxlen ); + } + + return(m_eStuffed); +} + + +//----------------------------------------------------------------------------- +// Purpose: Gets the next non-whitespace character from the file. +// Input : ch - Receives the character. +// Output : Returns true if the whitespace contained the combine strings +// character '\', which is used to merge consecutive quoted strings. +//----------------------------------------------------------------------------- +bool TokenReader::SkipWhiteSpace(void) +{ + bool bCombineStrings = false; + + while (true) + { + char ch = get(); + + if ((ch == ' ') || (ch == '\t') || (ch == '\r') || (ch == 0)) + { + continue; + } + + if (ch == '+') + { + bCombineStrings = true; + continue; + } + + if (ch == '\n') + { + m_nLine++; + continue; + } + + if (eof()) + { + return(bCombineStrings); + } + + // + // Check for the start of a comment. + // + if (ch == '/') + { + if (peek() == '/') + { + ignore(1024, '\n'); + m_nLine++; + } + } + else + { + // + // It is a worthy character. Put it back. + // + putback(ch); + return(bCombineStrings); + } + } +} + diff --git a/tier1/undiff.cpp b/tier1/undiff.cpp new file mode 100644 index 00000000..17505b27 --- /dev/null +++ b/tier1/undiff.cpp @@ -0,0 +1,94 @@ +//========= Copyright © 1996-2005, Valve Corporation, All rights reserved. ============// +// +// UnDiff - Apply difference block +// +//=============================================================================// + +#include "tier0/platform.h" +#include "tier0/dbg.h" +#include "tier1/diff.h" +#include "mathlib/mathlib.h" + +// memdbgon must be the last include file in a .cpp file!!! +#include "tier0/memdbgon.h" + +void ApplyDiffs(uint8 const *OldBlock, uint8 const *DiffList, + int OldSize, int DiffListSize, int &ResultListSize,uint8 *Output,uint32 OutSize) +{ + uint8 const *copy_src=OldBlock; + uint8 const *end_of_diff_list=DiffList+DiffListSize; + uint8 const *obuf=Output; + while(DiffList32767) + copy_ofs|=0xffff0000; + // printf("long cp from %x to %x len=%d\n", copy_src+copy_ofs-OldBlock,Output-obuf,copy_sz); + + memcpy(Output,copy_src+copy_ofs,copy_sz); + Output+=copy_sz; + copy_src=copy_src+copy_ofs+copy_sz; + DiffList+=4; + } + else + { + if (op & 0x80) + { + int copy_sz=op & 0x7f; + int copy_ofs; + if (copy_sz==0) + { + copy_sz=DiffList[0]; + if (copy_sz==0) + { + // big raw copy + copy_sz=DiffList[1]+256*DiffList[2]+65536*DiffList[3]; + memcpy(Output,DiffList+4,copy_sz); + // printf("big rawcopy to %x len=%d\n", Output-obuf,copy_sz); + + DiffList+=copy_sz+4; + Output+=copy_sz; + } + else + { + copy_ofs=DiffList[1]+(DiffList[2]*256); + if (copy_ofs>32767) + copy_ofs|=0xffff0000; + // printf("long ofs cp from %x to %x len=%d\n", copy_src+copy_ofs-OldBlock,Output-obuf,copy_sz); + + memcpy(Output,copy_src+copy_ofs,copy_sz); + Output+=copy_sz; + copy_src=copy_src+copy_ofs+copy_sz; + DiffList+=3; + } + } + else + { + copy_ofs=DiffList[0]; + if (copy_ofs>127) + copy_ofs|=0xffffff80; + // printf("cp from %x to %x len=%d\n", copy_src+copy_ofs-OldBlock,Output-obuf,copy_sz); + + memcpy(Output,copy_src+copy_ofs,copy_sz); + Output+=copy_sz; + copy_src=copy_src+copy_ofs+copy_sz; + DiffList++; + } + } + else + { + // printf("raw copy %d to %x\n",op & 127,Output-obuf); + memcpy(Output,DiffList,op & 127); + Output+=op & 127; + DiffList+=(op & 127); + } + } + } + ResultListSize=Output-obuf; + +} diff --git a/tier1/uniqueid.cpp b/tier1/uniqueid.cpp new file mode 100644 index 00000000..feb2dc20 --- /dev/null +++ b/tier1/uniqueid.cpp @@ -0,0 +1,177 @@ +//====== Copyright © 1996-2005, Valve Corporation, All rights reserved. =======// +// +// Purpose: +// +// $NoKeywords: $ +// +// Unique ID generation +//=============================================================================// + +#include "tier0/platform.h" + +#ifdef IS_WINDOWS_PC +#include // UUIDCreate +#else +#include "checksum_crc.h" +#endif +#include "tier1/uniqueid.h" +#include "tier1/utlbuffer.h" + +//----------------------------------------------------------------------------- +// Creates a new unique id +//----------------------------------------------------------------------------- +void CreateUniqueId( UniqueId_t *pDest ) +{ +#ifdef IS_WINDOWS_PC + Assert( sizeof( UUID ) == sizeof( *pDest ) ); + UuidCreate( (UUID *)pDest ); +#else + // X360/linux TBD: Need a real UUID Implementation + Q_memset( pDest, 0, sizeof( UniqueId_t ) ); +#endif +} + + +//----------------------------------------------------------------------------- +// Creates a new unique id from a string representation of one +//----------------------------------------------------------------------------- +bool UniqueIdFromString( UniqueId_t *pDest, const char *pBuf, int nMaxLen ) +{ + if ( nMaxLen == 0 ) + { + nMaxLen = Q_strlen( pBuf ); + } + + char *pTemp = (char*)stackalloc( nMaxLen + 1 ); + V_strncpy( pTemp, pBuf, nMaxLen + 1 ); + --nMaxLen; + while( (nMaxLen >= 0) && isspace( pTemp[nMaxLen] ) ) + { + --nMaxLen; + } + pTemp[ nMaxLen + 1 ] = 0; + + while( *pTemp && isspace( *pTemp ) ) + { + ++pTemp; + } + +#ifdef IS_WINDOWS_PC + Assert( sizeof( UUID ) == sizeof( *pDest ) ); + + if ( RPC_S_OK != UuidFromString( (unsigned char *)pTemp, (UUID *)pDest ) ) + { + InvalidateUniqueId( pDest ); + return false; + } +#else + // X360TBD: Need a real UUID Implementation + // For now, use crc to generate a unique ID from the UUID string. + Q_memset( pDest, 0, sizeof( UniqueId_t ) ); + if ( nMaxLen > 0 ) + { + CRC32_t crc; + CRC32_Init( &crc ); + CRC32_ProcessBuffer( &crc, pBuf, nMaxLen ); + CRC32_Final( &crc ); + Q_memcpy( pDest, &crc, sizeof( CRC32_t ) ); + } +#endif + + return true; +} + +//----------------------------------------------------------------------------- +// Sets an object ID to be an invalid state +//----------------------------------------------------------------------------- +void InvalidateUniqueId( UniqueId_t *pDest ) +{ + Assert( pDest ); + memset( pDest, 0, sizeof( UniqueId_t ) ); +} + +bool IsUniqueIdValid( const UniqueId_t &id ) +{ + UniqueId_t invalidId; + memset( &invalidId, 0, sizeof( UniqueId_t ) ); + return !IsUniqueIdEqual( invalidId, id ); +} + +bool IsUniqueIdEqual( const UniqueId_t &id1, const UniqueId_t &id2 ) +{ + return memcmp( &id1, &id2, sizeof( UniqueId_t ) ) == 0; +} + +void UniqueIdToString( const UniqueId_t &id, char *pBuf, int nMaxLen ) +{ + pBuf[ 0 ] = 0; + +// X360TBD: Need a real UUID Implementation +#ifdef IS_WINDOWS_PC + UUID *self = ( UUID * )&id; + + unsigned char *outstring = NULL; + + UuidToString( self, &outstring ); + if ( outstring && *outstring ) + { + Q_strncpy( pBuf, (const char *)outstring, nMaxLen ); + RpcStringFree( &outstring ); + } +#endif +} + +void CopyUniqueId( const UniqueId_t &src, UniqueId_t *pDest ) +{ + memcpy( pDest, &src, sizeof( UniqueId_t ) ); +} + +bool Serialize( CUtlBuffer &buf, const UniqueId_t &src ) +{ +// X360TBD: Need a real UUID Implementation +#ifdef IS_WINDOWS_PC + if ( buf.IsText() ) + { + UUID *pId = ( UUID * )&src; + + unsigned char *outstring = NULL; + + UuidToString( pId, &outstring ); + if ( outstring && *outstring ) + { + buf.PutString( (const char *)outstring ); + RpcStringFree( &outstring ); + } + else + { + buf.PutChar( '\0' ); + } + } + else + { + buf.Put( &src, sizeof(UniqueId_t) ); + } + return buf.IsValid(); +#else + return false; +#endif +} + +bool Unserialize( CUtlBuffer &buf, UniqueId_t &dest ) +{ + if ( buf.IsText() ) + { + int nTextLen = buf.PeekStringLength(); + char *pBuf = (char*)stackalloc( nTextLen ); + buf.GetString( pBuf, nTextLen ); + UniqueIdFromString( &dest, pBuf, nTextLen ); + } + else + { + buf.Get( &dest, sizeof(UniqueId_t) ); + } + return buf.IsValid(); +} + + + diff --git a/tier1/utlbuffer.cpp b/tier1/utlbuffer.cpp new file mode 100644 index 00000000..f71ec6f8 --- /dev/null +++ b/tier1/utlbuffer.cpp @@ -0,0 +1,1753 @@ +//===== Copyright © 1996-2005, Valve Corporation, All rights reserved. ======// +// +// $Header: $ +// $NoKeywords: $ +// +// Serialization buffer +//===========================================================================// + +#ifdef _MSC_VER +#pragma warning (disable : 4514) +#endif + +#include "utlbuffer.h" +#include +#include +#include +#include +#include +#include "tier1/strtools.h" +#include "tier1/characterset.h" + +// memdbgon must be the last include file in a .cpp file!!! +#include "tier0/memdbgon.h" + + +//----------------------------------------------------------------------------- +// Character conversions for C strings +//----------------------------------------------------------------------------- +class CUtlCStringConversion : public CUtlCharConversion +{ +public: + CUtlCStringConversion( char nEscapeChar, const char *pDelimiter, int nCount, ConversionArray_t *pArray ); + + // Finds a conversion for the passed-in string, returns length + virtual char FindConversion( const char *pString, int *pLength ); + +private: + char m_pConversion[255]; +}; + + +//----------------------------------------------------------------------------- +// Character conversions for no-escape sequence strings +//----------------------------------------------------------------------------- +class CUtlNoEscConversion : public CUtlCharConversion +{ +public: + CUtlNoEscConversion( char nEscapeChar, const char *pDelimiter, int nCount, ConversionArray_t *pArray ) : + CUtlCharConversion( nEscapeChar, pDelimiter, nCount, pArray ) {} + + // Finds a conversion for the passed-in string, returns length + virtual char FindConversion( const char *pString, int *pLength ) { *pLength = 0; return 0; } +}; + + +//----------------------------------------------------------------------------- +// List of character conversions +//----------------------------------------------------------------------------- +BEGIN_CUSTOM_CHAR_CONVERSION( CUtlCStringConversion, s_StringCharConversion, "\"", '\\' ) + { '\n', "n" }, + { '\t', "t" }, + { '\v', "v" }, + { '\b', "b" }, + { '\r', "r" }, + { '\f', "f" }, + { '\a', "a" }, + { '\\', "\\" }, + { '\?', "\?" }, + { '\'', "\'" }, + { '\"', "\"" }, +END_CUSTOM_CHAR_CONVERSION( CUtlCStringConversion, s_StringCharConversion, "\"", '\\' ) + +CUtlCharConversion *GetCStringCharConversion() +{ + return &s_StringCharConversion; +} + +BEGIN_CUSTOM_CHAR_CONVERSION( CUtlNoEscConversion, s_NoEscConversion, "\"", 0x7F ) + { 0x7F, "" }, +END_CUSTOM_CHAR_CONVERSION( CUtlNoEscConversion, s_NoEscConversion, "\"", 0x7F ) + +CUtlCharConversion *GetNoEscCharConversion() +{ + return &s_NoEscConversion; +} + + +//----------------------------------------------------------------------------- +// Constructor +//----------------------------------------------------------------------------- +CUtlCStringConversion::CUtlCStringConversion( char nEscapeChar, const char *pDelimiter, int nCount, ConversionArray_t *pArray ) : + CUtlCharConversion( nEscapeChar, pDelimiter, nCount, pArray ) +{ + memset( m_pConversion, 0x0, sizeof(m_pConversion) ); + for ( int i = 0; i < nCount; ++i ) + { + m_pConversion[ static_cast(pArray[i].m_pReplacementString[0]) ] = pArray[i].m_nActualChar; + } +} + +// Finds a conversion for the passed-in string, returns length +char CUtlCStringConversion::FindConversion( const char *pString, int *pLength ) +{ + char c = m_pConversion[ static_cast(pString[0]) ]; + *pLength = (c != '\0') ? 1 : 0; + return c; +} + + + +//----------------------------------------------------------------------------- +// Constructor +//----------------------------------------------------------------------------- +CUtlCharConversion::CUtlCharConversion( char nEscapeChar, const char *pDelimiter, int nCount, ConversionArray_t *pArray ) +{ + m_nEscapeChar = nEscapeChar; + m_pDelimiter = pDelimiter; + m_nCount = nCount; + m_nDelimiterLength = Q_strlen( pDelimiter ); + m_nMaxConversionLength = 0; + + memset( m_pReplacements, 0, sizeof(m_pReplacements) ); + + for ( int i = 0; i < nCount; ++i ) + { + m_pList[i] = pArray[i].m_nActualChar; + ConversionInfo_t &info = m_pReplacements[ static_cast(m_pList[i]) ]; + Assert( info.m_pReplacementString == 0 ); + info.m_pReplacementString = pArray[i].m_pReplacementString; + info.m_nLength = Q_strlen( info.m_pReplacementString ); + if ( info.m_nLength > m_nMaxConversionLength ) + { + m_nMaxConversionLength = info.m_nLength; + } + } +} + + +//----------------------------------------------------------------------------- +// Escape character + delimiter +//----------------------------------------------------------------------------- +char CUtlCharConversion::GetEscapeChar() const +{ + return m_nEscapeChar; +} + +const char *CUtlCharConversion::GetDelimiter() const +{ + return m_pDelimiter; +} + +int CUtlCharConversion::GetDelimiterLength() const +{ + return m_nDelimiterLength; +} + + +//----------------------------------------------------------------------------- +// Constructor +//----------------------------------------------------------------------------- +const char *CUtlCharConversion::GetConversionString( char c ) const +{ + return m_pReplacements[ static_cast(c) ].m_pReplacementString; +} + +int CUtlCharConversion::GetConversionLength( char c ) const +{ + return m_pReplacements[ static_cast(c) ].m_nLength; +} + +int CUtlCharConversion::MaxConversionLength() const +{ + return m_nMaxConversionLength; +} + + +//----------------------------------------------------------------------------- +// Finds a conversion for the passed-in string, returns length +//----------------------------------------------------------------------------- +char CUtlCharConversion::FindConversion( const char *pString, int *pLength ) +{ + for ( int i = 0; i < m_nCount; ++i ) + { + if ( !Q_strcmp( pString, m_pReplacements[ static_cast(m_pList[i]) ].m_pReplacementString ) ) + { + *pLength = m_pReplacements[ static_cast(m_pList[i]) ].m_nLength; + return m_pList[i]; + } + } + + *pLength = 0; + return '\0'; +} + + +//----------------------------------------------------------------------------- +// constructors +//----------------------------------------------------------------------------- +CUtlBuffer::CUtlBuffer( int growSize, int initSize, int nFlags ) : + m_Memory( growSize, initSize ), m_Error(0) +{ + m_Get = 0; + m_Put = 0; + m_nTab = 0; + m_nOffset = 0; + m_Flags = nFlags; + if ( (initSize != 0) && !IsReadOnly() ) + { + m_nMaxPut = -1; + AddNullTermination(); + } + else + { + m_nMaxPut = 0; + } + SetOverflowFuncs( &CUtlBuffer::GetOverflow, &CUtlBuffer::PutOverflow ); +} + +CUtlBuffer::CUtlBuffer( const void *pBuffer, int nSize, int nFlags ) : + m_Memory( (unsigned char*)pBuffer, nSize ), m_Error(0) +{ + Assert( nSize != 0 ); + + m_Get = 0; + m_Put = 0; + m_nTab = 0; + m_nOffset = 0; + m_Flags = nFlags; + if ( IsReadOnly() ) + { + m_nMaxPut = nSize; + } + else + { + m_nMaxPut = -1; + AddNullTermination(); + } + SetOverflowFuncs( &CUtlBuffer::GetOverflow, &CUtlBuffer::PutOverflow ); +} + + +//----------------------------------------------------------------------------- +// Modifies the buffer to be binary or text; Blows away the buffer and the CONTAINS_CRLF value. +//----------------------------------------------------------------------------- +void CUtlBuffer::SetBufferType( bool bIsText, bool bContainsCRLF ) +{ +#ifdef _DEBUG + // If the buffer is empty, there is no opportunity for this stuff to fail + if ( TellMaxPut() != 0 ) + { + if ( IsText() ) + { + if ( bIsText ) + { + Assert( ContainsCRLF() == bContainsCRLF ); + } + else + { + Assert( ContainsCRLF() ); + } + } + else + { + if ( bIsText ) + { + Assert( bContainsCRLF ); + } + } + } +#endif + + if ( bIsText ) + { + m_Flags |= TEXT_BUFFER; + } + else + { + m_Flags &= ~TEXT_BUFFER; + } + if ( bContainsCRLF ) + { + m_Flags |= CONTAINS_CRLF; + } + else + { + m_Flags &= ~CONTAINS_CRLF; + } +} + + +//----------------------------------------------------------------------------- +// Attaches the buffer to external memory.... +//----------------------------------------------------------------------------- +void CUtlBuffer::SetExternalBuffer( void* pMemory, int nSize, int nInitialPut, int nFlags ) +{ + m_Memory.SetExternalBuffer( (unsigned char*)pMemory, nSize ); + + // Reset all indices; we just changed memory + m_Get = 0; + m_Put = nInitialPut; + m_nTab = 0; + m_Error = 0; + m_nOffset = 0; + m_Flags = nFlags; + m_nMaxPut = -1; + AddNullTermination(); +} + +//----------------------------------------------------------------------------- +// Assumes an external buffer but manages its deletion +//----------------------------------------------------------------------------- +void CUtlBuffer::AssumeMemory( void *pMemory, int nSize, int nInitialPut, int nFlags ) +{ + m_Memory.AssumeMemory( (unsigned char*) pMemory, nSize ); + + // Reset all indices; we just changed memory + m_Get = 0; + m_Put = nInitialPut; + m_nTab = 0; + m_Error = 0; + m_nOffset = 0; + m_Flags = nFlags; + m_nMaxPut = -1; + AddNullTermination(); +} + +//----------------------------------------------------------------------------- +// Makes sure we've got at least this much memory +//----------------------------------------------------------------------------- +void CUtlBuffer::EnsureCapacity( int num ) +{ + // Add one extra for the null termination + num += 1; + if ( m_Memory.IsExternallyAllocated() ) + { + if ( IsGrowable() && ( m_Memory.NumAllocated() < num ) ) + { + m_Memory.ConvertToGrowableMemory( 0 ); + } + else + { + num -= 1; + } + } + + m_Memory.EnsureCapacity( num ); +} + + +//----------------------------------------------------------------------------- +// Base get method from which all others derive +//----------------------------------------------------------------------------- +void CUtlBuffer::Get( void* pMem, int size ) +{ + if ( CheckGet( size ) ) + { + memcpy( pMem, &m_Memory[m_Get - m_nOffset], size ); + m_Get += size; + } +} + + +//----------------------------------------------------------------------------- +// This will get at least 1 byte and up to nSize bytes. +// It will return the number of bytes actually read. +//----------------------------------------------------------------------------- +int CUtlBuffer::GetUpTo( void *pMem, int nSize ) +{ + if ( CheckArbitraryPeekGet( 0, nSize ) ) + { + memcpy( pMem, &m_Memory[m_Get - m_nOffset], nSize ); + m_Get += nSize; + return nSize; + } + return 0; +} + + +//----------------------------------------------------------------------------- +// Eats whitespace +//----------------------------------------------------------------------------- +void CUtlBuffer::EatWhiteSpace() +{ + if ( IsText() && IsValid() ) + { + while ( CheckGet( sizeof(char) ) ) + { + if ( !isspace( *(const unsigned char*)PeekGet() ) ) + break; + m_Get += sizeof(char); + } + } +} + + +//----------------------------------------------------------------------------- +// Eats C++ style comments +//----------------------------------------------------------------------------- +bool CUtlBuffer::EatCPPComment() +{ + if ( IsText() && IsValid() ) + { + // If we don't have a a c++ style comment next, we're done + const char *pPeek = (const char *)PeekGet( 2 * sizeof(char), 0 ); + if ( !pPeek || ( pPeek[0] != '/' ) || ( pPeek[1] != '/' ) ) + return false; + + // Deal with c++ style comments + m_Get += 2; + + // read complete line + for ( char c = GetChar(); IsValid(); c = GetChar() ) + { + if ( c == '\n' ) + break; + } + return true; + } + return false; +} + + +//----------------------------------------------------------------------------- +// Peeks how much whitespace to eat +//----------------------------------------------------------------------------- +int CUtlBuffer::PeekWhiteSpace( int nOffset ) +{ + if ( !IsText() || !IsValid() ) + return 0; + + while ( CheckPeekGet( nOffset, sizeof(char) ) ) + { + if ( !isspace( *(unsigned char*)PeekGet( nOffset ) ) ) + break; + nOffset += sizeof(char); + } + + return nOffset; +} + + +//----------------------------------------------------------------------------- +// Peek size of sting to come, check memory bound +//----------------------------------------------------------------------------- +int CUtlBuffer::PeekStringLength() +{ + if ( !IsValid() ) + return 0; + + // Eat preceeding whitespace + int nOffset = 0; + if ( IsText() ) + { + nOffset = PeekWhiteSpace( nOffset ); + } + + int nStartingOffset = nOffset; + + do + { + int nPeekAmount = 128; + + // NOTE: Add 1 for the terminating zero! + if ( !CheckArbitraryPeekGet( nOffset, nPeekAmount ) ) + { + if ( nOffset == nStartingOffset ) + return 0; + return nOffset - nStartingOffset + 1; + } + + const char *pTest = (const char *)PeekGet( nOffset ); + + if ( !IsText() ) + { + for ( int i = 0; i < nPeekAmount; ++i ) + { + // The +1 here is so we eat the terminating 0 + if ( pTest[i] == 0 ) + return (i + nOffset - nStartingOffset + 1); + } + } + else + { + for ( int i = 0; i < nPeekAmount; ++i ) + { + // The +1 here is so we eat the terminating 0 + if ( isspace((unsigned char)pTest[i]) || (pTest[i] == 0) ) + return (i + nOffset - nStartingOffset + 1); + } + } + + nOffset += nPeekAmount; + + } while ( true ); +} + + +//----------------------------------------------------------------------------- +// Peek size of line to come, check memory bound +//----------------------------------------------------------------------------- +int CUtlBuffer::PeekLineLength() +{ + if ( !IsValid() ) + return 0; + + int nOffset = 0; + int nStartingOffset = nOffset; + + do + { + int nPeekAmount = 128; + + // NOTE: Add 1 for the terminating zero! + if ( !CheckArbitraryPeekGet( nOffset, nPeekAmount ) ) + { + if ( nOffset == nStartingOffset ) + return 0; + return nOffset - nStartingOffset + 1; + } + + const char *pTest = (const char *)PeekGet( nOffset ); + + for ( int i = 0; i < nPeekAmount; ++i ) + { + // The +2 here is so we eat the terminating '\n' and 0 + if ( pTest[i] == '\n' || pTest[i] == '\r' ) + return (i + nOffset - nStartingOffset + 2); + // The +1 here is so we eat the terminating 0 + if ( pTest[i] == 0 ) + return (i + nOffset - nStartingOffset + 1); + } + + nOffset += nPeekAmount; + + } while ( true ); +} + + +//----------------------------------------------------------------------------- +// Does the next bytes of the buffer match a pattern? +//----------------------------------------------------------------------------- +bool CUtlBuffer::PeekStringMatch( int nOffset, const char *pString, int nLen ) +{ + if ( !CheckPeekGet( nOffset, nLen ) ) + return false; + return !Q_strncmp( (const char*)PeekGet(nOffset), pString, nLen ); +} + + +//----------------------------------------------------------------------------- +// This version of PeekStringLength converts \" to \\ and " to \, etc. +// It also reads a " at the beginning and end of the string +//----------------------------------------------------------------------------- +int CUtlBuffer::PeekDelimitedStringLength( CUtlCharConversion *pConv, bool bActualSize ) +{ + if ( !IsText() || !pConv ) + return PeekStringLength(); + + // Eat preceeding whitespace + int nOffset = 0; + if ( IsText() ) + { + nOffset = PeekWhiteSpace( nOffset ); + } + + if ( !PeekStringMatch( nOffset, pConv->GetDelimiter(), pConv->GetDelimiterLength() ) ) + return 0; + + // Try to read ending ", but don't accept \" + int nActualStart = nOffset; + nOffset += pConv->GetDelimiterLength(); + int nLen = 1; // Starts at 1 for the '\0' termination + + do + { + if ( PeekStringMatch( nOffset, pConv->GetDelimiter(), pConv->GetDelimiterLength() ) ) + break; + + if ( !CheckPeekGet( nOffset, 1 ) ) + break; + + char c = *(const char*)PeekGet( nOffset ); + ++nLen; + ++nOffset; + if ( c == pConv->GetEscapeChar() ) + { + int nLength = pConv->MaxConversionLength(); + if ( !CheckArbitraryPeekGet( nOffset, nLength ) ) + break; + + pConv->FindConversion( (const char*)PeekGet(nOffset), &nLength ); + nOffset += nLength; + } + } while (true); + + return bActualSize ? nLen : nOffset - nActualStart + pConv->GetDelimiterLength() + 1; +} + + +//----------------------------------------------------------------------------- +// Reads a null-terminated string +//----------------------------------------------------------------------------- +void CUtlBuffer::GetString( char* pString, int nMaxChars ) +{ + if (!IsValid()) + { + *pString = 0; + return; + } + + if ( nMaxChars == 0 ) + { + nMaxChars = INT_MAX; + } + + // Remember, this *includes* the null character + // It will be 0, however, if the buffer is empty. + int nLen = PeekStringLength(); + + if ( IsText() ) + { + EatWhiteSpace(); + } + + if ( nLen == 0 ) + { + *pString = 0; + m_Error |= GET_OVERFLOW; + return; + } + + // Strip off the terminating NULL + if ( nLen <= nMaxChars ) + { + Get( pString, nLen - 1 ); + pString[ nLen - 1 ] = 0; + } + else + { + Get( pString, nMaxChars - 1 ); + pString[ nMaxChars - 1 ] = 0; + SeekGet( SEEK_CURRENT, nLen - 1 - nMaxChars ); + } + + // Read the terminating NULL in binary formats + if ( !IsText() ) + { + VerifyEquals( GetChar(), 0 ); + } +} + + +//----------------------------------------------------------------------------- +// Reads up to and including the first \n +//----------------------------------------------------------------------------- +void CUtlBuffer::GetLine( char* pLine, int nMaxChars ) +{ + Assert( IsText() && !ContainsCRLF() ); + + if ( !IsValid() ) + { + *pLine = 0; + return; + } + + if ( nMaxChars == 0 ) + { + nMaxChars = INT_MAX; + } + + // Remember, this *includes* the null character + // It will be 0, however, if the buffer is empty. + int nLen = PeekLineLength(); + if ( nLen == 0 ) + { + *pLine = 0; + m_Error |= GET_OVERFLOW; + return; + } + + // Strip off the terminating NULL + if ( nLen <= nMaxChars ) + { + Get( pLine, nLen - 1 ); + pLine[ nLen - 1 ] = 0; + } + else + { + Get( pLine, nMaxChars - 1 ); + pLine[ nMaxChars - 1 ] = 0; + SeekGet( SEEK_CURRENT, nLen - 1 - nMaxChars ); + } +} + + +//----------------------------------------------------------------------------- +// This version of GetString converts \ to \\ and " to \", etc. +// It also places " at the beginning and end of the string +//----------------------------------------------------------------------------- +char CUtlBuffer::GetDelimitedCharInternal( CUtlCharConversion *pConv ) +{ + char c = GetChar(); + if ( c == pConv->GetEscapeChar() ) + { + int nLength = pConv->MaxConversionLength(); + if ( !CheckArbitraryPeekGet( 0, nLength ) ) + return '\0'; + + c = pConv->FindConversion( (const char *)PeekGet(), &nLength ); + SeekGet( SEEK_CURRENT, nLength ); + } + + return c; +} + +char CUtlBuffer::GetDelimitedChar( CUtlCharConversion *pConv ) +{ + if ( !IsText() || !pConv ) + return GetChar( ); + return GetDelimitedCharInternal( pConv ); +} + +void CUtlBuffer::GetDelimitedString( CUtlCharConversion *pConv, char *pString, int nMaxChars ) +{ + if ( !IsText() || !pConv ) + { + GetString( pString, nMaxChars ); + return; + } + + if (!IsValid()) + { + *pString = 0; + return; + } + + if ( nMaxChars == 0 ) + { + nMaxChars = INT_MAX; + } + + EatWhiteSpace(); + if ( !PeekStringMatch( 0, pConv->GetDelimiter(), pConv->GetDelimiterLength() ) ) + return; + + // Pull off the starting delimiter + SeekGet( SEEK_CURRENT, pConv->GetDelimiterLength() ); + + int nRead = 0; + while ( IsValid() ) + { + if ( PeekStringMatch( 0, pConv->GetDelimiter(), pConv->GetDelimiterLength() ) ) + { + SeekGet( SEEK_CURRENT, pConv->GetDelimiterLength() ); + break; + } + + char c = GetDelimitedCharInternal( pConv ); + + if ( nRead < nMaxChars ) + { + pString[nRead] = c; + ++nRead; + } + } + + if ( nRead >= nMaxChars ) + { + nRead = nMaxChars - 1; + } + pString[nRead] = '\0'; +} + + +//----------------------------------------------------------------------------- +// Checks if a get is ok +//----------------------------------------------------------------------------- +bool CUtlBuffer::CheckGet( int nSize ) +{ + if ( m_Error & GET_OVERFLOW ) + return false; + + if ( TellMaxPut() < m_Get + nSize ) + { + m_Error |= GET_OVERFLOW; + return false; + } + + if ( ( m_Get < m_nOffset ) || ( m_Memory.NumAllocated() < m_Get - m_nOffset + nSize ) ) + { + if ( !OnGetOverflow( nSize ) ) + { + m_Error |= GET_OVERFLOW; + return false; + } + } + + return true; +} + + +//----------------------------------------------------------------------------- +// Checks if a peek get is ok +//----------------------------------------------------------------------------- +bool CUtlBuffer::CheckPeekGet( int nOffset, int nSize ) +{ + if ( m_Error & GET_OVERFLOW ) + return false; + + // Checking for peek can't set the overflow flag + bool bOk = CheckGet( nOffset + nSize ); + m_Error &= ~GET_OVERFLOW; + return bOk; +} + + +//----------------------------------------------------------------------------- +// Call this to peek arbitrarily long into memory. It doesn't fail unless +// it can't read *anything* new +//----------------------------------------------------------------------------- +bool CUtlBuffer::CheckArbitraryPeekGet( int nOffset, int &nIncrement ) +{ + if ( TellGet() + nOffset >= TellMaxPut() ) + { + nIncrement = 0; + return false; + } + + if ( TellGet() + nOffset + nIncrement > TellMaxPut() ) + { + nIncrement = TellMaxPut() - TellGet() - nOffset; + } + + // NOTE: CheckPeekGet could modify TellMaxPut for streaming files + // We have to call TellMaxPut again here + CheckPeekGet( nOffset, nIncrement ); + int nMaxGet = TellMaxPut() - TellGet(); + if ( nMaxGet < nIncrement ) + { + nIncrement = nMaxGet; + } + return (nIncrement != 0); +} + + +//----------------------------------------------------------------------------- +// Peek part of the butt +//----------------------------------------------------------------------------- +const void* CUtlBuffer::PeekGet( int nMaxSize, int nOffset ) +{ + if ( !CheckPeekGet( nOffset, nMaxSize ) ) + return NULL; + return &m_Memory[ m_Get + nOffset - m_nOffset ]; +} + + +//----------------------------------------------------------------------------- +// Change where I'm reading +//----------------------------------------------------------------------------- +void CUtlBuffer::SeekGet( SeekType_t type, int offset ) +{ + switch( type ) + { + case SEEK_HEAD: + m_Get = offset; + break; + + case SEEK_CURRENT: + m_Get += offset; + break; + + case SEEK_TAIL: + m_Get = m_nMaxPut - offset; + break; + } + + if ( m_Get > m_nMaxPut ) + { + m_Error |= GET_OVERFLOW; + } + else + { + m_Error &= ~GET_OVERFLOW; + if ( m_Get < m_nOffset || m_Get >= m_nOffset + Size() ) + { + OnGetOverflow( -1 ); + } + } +} + + +//----------------------------------------------------------------------------- +// Parse... +//----------------------------------------------------------------------------- + +#ifdef _MSC_VER +#pragma warning ( disable : 4706 ) +#endif + +int CUtlBuffer::VaScanf( const char* pFmt, va_list list ) +{ + Assert( pFmt ); + if ( m_Error || !IsText() ) + return 0; + + int numScanned = 0; + int nLength; + char c; + char* pEnd; + while ( (c = *pFmt++) ) + { + // Stop if we hit the end of the buffer + if ( m_Get >= TellMaxPut() ) + { + m_Error |= GET_OVERFLOW; + break; + } + + switch (c) + { + case ' ': + // eat all whitespace + EatWhiteSpace(); + break; + + case '%': + { + // Conversion character... try to convert baby! + char type = *pFmt++; + if (type == 0) + return numScanned; + + switch(type) + { + case 'c': + { + char* ch = va_arg( list, char * ); + if ( CheckPeekGet( 0, sizeof(char) ) ) + { + *ch = *(const char*)PeekGet(); + ++m_Get; + } + else + { + *ch = 0; + return numScanned; + } + } + break; + + case 'i': + case 'd': + { + int* i = va_arg( list, int * ); + + // NOTE: This is not bullet-proof; it assumes numbers are < 128 characters + nLength = 128; + if ( !CheckArbitraryPeekGet( 0, nLength ) ) + { + *i = 0; + return numScanned; + } + + *i = strtol( (char*)PeekGet(), &pEnd, 10 ); + int nBytesRead = (int)( pEnd - (char*)PeekGet() ); + if ( nBytesRead == 0 ) + return numScanned; + m_Get += nBytesRead; + } + break; + + case 'x': + { + int* i = va_arg( list, int * ); + + // NOTE: This is not bullet-proof; it assumes numbers are < 128 characters + nLength = 128; + if ( !CheckArbitraryPeekGet( 0, nLength ) ) + { + *i = 0; + return numScanned; + } + + *i = strtol( (char*)PeekGet(), &pEnd, 16 ); + int nBytesRead = (int)( pEnd - (char*)PeekGet() ); + if ( nBytesRead == 0 ) + return numScanned; + m_Get += nBytesRead; + } + break; + + case 'u': + { + unsigned int* u = va_arg( list, unsigned int *); + + // NOTE: This is not bullet-proof; it assumes numbers are < 128 characters + nLength = 128; + if ( !CheckArbitraryPeekGet( 0, nLength ) ) + { + *u = 0; + return numScanned; + } + + *u = strtoul( (char*)PeekGet(), &pEnd, 10 ); + int nBytesRead = (int)( pEnd - (char*)PeekGet() ); + if ( nBytesRead == 0 ) + return numScanned; + m_Get += nBytesRead; + } + break; + + case 'f': + { + float* f = va_arg( list, float *); + + // NOTE: This is not bullet-proof; it assumes numbers are < 128 characters + nLength = 128; + if ( !CheckArbitraryPeekGet( 0, nLength ) ) + { + *f = 0.0f; + return numScanned; + } + + *f = (float)strtod( (char*)PeekGet(), &pEnd ); + int nBytesRead = (int)( pEnd - (char*)PeekGet() ); + if ( nBytesRead == 0 ) + return numScanned; + m_Get += nBytesRead; + } + break; + + case 's': + { + char* s = va_arg( list, char * ); + GetString( s ); + } + break; + + default: + { + // unimplemented scanf type + Assert(0); + return numScanned; + } + break; + } + + ++numScanned; + } + break; + + default: + { + // Here we have to match the format string character + // against what's in the buffer or we're done. + if ( !CheckPeekGet( 0, sizeof(char) ) ) + return numScanned; + + if ( c != *(const char*)PeekGet() ) + return numScanned; + + ++m_Get; + } + } + } + return numScanned; +} + +#ifdef _MSC_VER +#pragma warning ( default : 4706 ) +#endif + +int CUtlBuffer::Scanf( const char* pFmt, ... ) +{ + va_list args; + + va_start( args, pFmt ); + int count = VaScanf( pFmt, args ); + va_end( args ); + + return count; +} + + +//----------------------------------------------------------------------------- +// Advance the get index until after the particular string is found +// Do not eat whitespace before starting. Return false if it failed +//----------------------------------------------------------------------------- +bool CUtlBuffer::GetToken( const char *pToken ) +{ + Assert( pToken ); + + // Look for the token + int nLen = Q_strlen( pToken ); + + int nSizeToCheck = Size() - TellGet() - m_nOffset; + + int nGet = TellGet(); + do + { + int nMaxSize = TellMaxPut() - TellGet(); + if ( nMaxSize < nSizeToCheck ) + { + nSizeToCheck = nMaxSize; + } + if ( nLen > nSizeToCheck ) + break; + + if ( !CheckPeekGet( 0, nSizeToCheck ) ) + break; + + const char *pBufStart = (const char*)PeekGet(); + const char *pFoundEnd = Q_strnistr( pBufStart, pToken, nSizeToCheck ); + if ( pFoundEnd ) + { + size_t nOffset = (size_t)pFoundEnd - (size_t)pBufStart; + SeekGet( CUtlBuffer::SEEK_CURRENT, nOffset + nLen ); + return true; + } + + SeekGet( CUtlBuffer::SEEK_CURRENT, nSizeToCheck - nLen - 1 ); + nSizeToCheck = Size() - (nLen-1); + + } while ( true ); + + SeekGet( CUtlBuffer::SEEK_HEAD, nGet ); + return false; +} + + +//----------------------------------------------------------------------------- +// (For text buffers only) +// Parse a token from the buffer: +// Grab all text that lies between a starting delimiter + ending delimiter +// (skipping whitespace that leads + trails both delimiters). +// Note the delimiter checks are case-insensitive. +// If successful, the get index is advanced and the function returns true, +// otherwise the index is not advanced and the function returns false. +//----------------------------------------------------------------------------- +bool CUtlBuffer::ParseToken( const char *pStartingDelim, const char *pEndingDelim, char* pString, int nMaxLen ) +{ + int nCharsToCopy = 0; + int nCurrentGet = 0; + + size_t nEndingDelimLen; + + // Starting delimiter is optional + char emptyBuf = '\0'; + if ( !pStartingDelim ) + { + pStartingDelim = &emptyBuf; + } + + // Ending delimiter is not + Assert( pEndingDelim && pEndingDelim[0] ); + nEndingDelimLen = Q_strlen( pEndingDelim ); + + int nStartGet = TellGet(); + char nCurrChar; + int nTokenStart = -1; + EatWhiteSpace( ); + while ( *pStartingDelim ) + { + nCurrChar = *pStartingDelim++; + if ( !isspace((unsigned char)nCurrChar) ) + { + if ( tolower( GetChar() ) != tolower( nCurrChar ) ) + goto parseFailed; + } + else + { + EatWhiteSpace(); + } + } + + EatWhiteSpace(); + nTokenStart = TellGet(); + if ( !GetToken( pEndingDelim ) ) + goto parseFailed; + + nCurrentGet = TellGet(); + nCharsToCopy = (nCurrentGet - nEndingDelimLen) - nTokenStart; + if ( nCharsToCopy >= nMaxLen ) + { + nCharsToCopy = nMaxLen - 1; + } + + if ( nCharsToCopy > 0 ) + { + SeekGet( CUtlBuffer::SEEK_HEAD, nTokenStart ); + Get( pString, nCharsToCopy ); + if ( !IsValid() ) + goto parseFailed; + + // Eat trailing whitespace + for ( ; nCharsToCopy > 0; --nCharsToCopy ) + { + if ( !isspace( (unsigned char)pString[ nCharsToCopy-1 ] ) ) + break; + } + } + pString[ nCharsToCopy ] = '\0'; + + // Advance the Get index + SeekGet( CUtlBuffer::SEEK_HEAD, nCurrentGet ); + return true; + +parseFailed: + // Revert the get index + SeekGet( SEEK_HEAD, nStartGet ); + pString[0] = '\0'; + return false; +} + + +//----------------------------------------------------------------------------- +// Parses the next token, given a set of character breaks to stop at +//----------------------------------------------------------------------------- +int CUtlBuffer::ParseToken( characterset_t *pBreaks, char *pTokenBuf, int nMaxLen, bool bParseComments ) +{ + Assert( nMaxLen > 0 ); + pTokenBuf[0] = 0; + + // skip whitespace + comments + while ( true ) + { + if ( !IsValid() ) + return -1; + EatWhiteSpace(); + if ( bParseComments ) + { + if ( !EatCPPComment() ) + break; + } + else + { + break; + } + } + + char c = GetChar(); + + // End of buffer + if ( c == 0 ) + return -1; + + // handle quoted strings specially + if ( c == '\"' ) + { + int nLen = 0; + while( IsValid() ) + { + c = GetChar(); + if ( c == '\"' || !c ) + { + pTokenBuf[nLen] = 0; + return nLen; + } + pTokenBuf[nLen] = c; + if ( ++nLen == nMaxLen ) + { + pTokenBuf[nLen-1] = 0; + return nMaxLen; + } + } + + // In this case, we hit the end of the buffer before hitting the end qoute + pTokenBuf[nLen] = 0; + return nLen; + } + + // parse single characters + if ( IN_CHARACTERSET( *pBreaks, c ) ) + { + pTokenBuf[0] = c; + pTokenBuf[1] = 0; + return 1; + } + + // parse a regular word + int nLen = 0; + while ( true ) + { + pTokenBuf[nLen] = c; + if ( ++nLen == nMaxLen ) + { + pTokenBuf[nLen-1] = 0; + return nMaxLen; + } + c = GetChar(); + if ( !IsValid() ) + break; + + if ( IN_CHARACTERSET( *pBreaks, c ) || c == '\"' || c <= ' ' ) + { + SeekGet( SEEK_CURRENT, -1 ); + break; + } + } + + pTokenBuf[nLen] = 0; + return nLen; +} + + + +//----------------------------------------------------------------------------- +// Serialization +//----------------------------------------------------------------------------- +void CUtlBuffer::Put( const void *pMem, int size ) +{ + if ( size && CheckPut( size ) ) + { + memcpy( &m_Memory[m_Put - m_nOffset], pMem, size ); + m_Put += size; + + AddNullTermination(); + } +} + + +//----------------------------------------------------------------------------- +// Writes a null-terminated string +//----------------------------------------------------------------------------- +void CUtlBuffer::PutString( const char* pString ) +{ + if (!IsText()) + { + if ( pString ) + { + // Not text? append a null at the end. + size_t nLen = Q_strlen( pString ) + 1; + Put( pString, nLen * sizeof(char) ); + return; + } + else + { + PutTypeBin( 0 ); + } + } + else if (pString) + { + int nTabCount = ( m_Flags & AUTO_TABS_DISABLED ) ? 0 : m_nTab; + if ( nTabCount > 0 ) + { + if ( WasLastCharacterCR() ) + { + PutTabs(); + } + + const char* pEndl = strchr( pString, '\n' ); + while ( pEndl ) + { + size_t nSize = (size_t)pEndl - (size_t)pString + sizeof(char); + Put( pString, nSize ); + pString = pEndl + 1; + if ( *pString ) + { + PutTabs(); + pEndl = strchr( pString, '\n' ); + } + else + { + pEndl = NULL; + } + } + } + size_t nLen = Q_strlen( pString ); + if ( nLen ) + { + Put( pString, nLen * sizeof(char) ); + } + } +} + + +//----------------------------------------------------------------------------- +// This version of PutString converts \ to \\ and " to \", etc. +// It also places " at the beginning and end of the string +//----------------------------------------------------------------------------- +inline void CUtlBuffer::PutDelimitedCharInternal( CUtlCharConversion *pConv, char c ) +{ + int l = pConv->GetConversionLength( c ); + if ( l == 0 ) + { + PutChar( c ); + } + else + { + PutChar( pConv->GetEscapeChar() ); + Put( pConv->GetConversionString( c ), l ); + } +} + +void CUtlBuffer::PutDelimitedChar( CUtlCharConversion *pConv, char c ) +{ + if ( !IsText() || !pConv ) + { + PutChar( c ); + return; + } + + PutDelimitedCharInternal( pConv, c ); +} + +void CUtlBuffer::PutDelimitedString( CUtlCharConversion *pConv, const char *pString ) +{ + if ( !IsText() || !pConv ) + { + PutString( pString ); + return; + } + + if ( WasLastCharacterCR() ) + { + PutTabs(); + } + Put( pConv->GetDelimiter(), pConv->GetDelimiterLength() ); + + int nLen = pString ? Q_strlen( pString ) : 0; + for ( int i = 0; i < nLen; ++i ) + { + PutDelimitedCharInternal( pConv, pString[i] ); + } + + if ( WasLastCharacterCR() ) + { + PutTabs(); + } + Put( pConv->GetDelimiter(), pConv->GetDelimiterLength() ); +} + + +void CUtlBuffer::VaPrintf( const char* pFmt, va_list list ) +{ + char temp[2048]; +#ifdef _DEBUG + int nLen = +#endif + Q_vsnprintf( temp, sizeof( temp ), pFmt, list ); + Assert( nLen < 2048 ); + PutString( temp ); +} + +void CUtlBuffer::Printf( const char* pFmt, ... ) +{ + va_list args; + + va_start( args, pFmt ); + VaPrintf( pFmt, args ); + va_end( args ); +} + + +//----------------------------------------------------------------------------- +// Calls the overflow functions +//----------------------------------------------------------------------------- +void CUtlBuffer::SetOverflowFuncs( UtlBufferOverflowFunc_t getFunc, UtlBufferOverflowFunc_t putFunc ) +{ + m_GetOverflowFunc = getFunc; + m_PutOverflowFunc = putFunc; +} + + +//----------------------------------------------------------------------------- +// Calls the overflow functions +//----------------------------------------------------------------------------- +bool CUtlBuffer::OnPutOverflow( int nSize ) +{ + return (this->*m_PutOverflowFunc)( nSize ); +} + +bool CUtlBuffer::OnGetOverflow( int nSize ) +{ + return (this->*m_GetOverflowFunc)( nSize ); +} + + +//----------------------------------------------------------------------------- +// Checks if a put is ok +//----------------------------------------------------------------------------- +bool CUtlBuffer::PutOverflow( int nSize ) +{ + if ( m_Memory.IsExternallyAllocated() ) + { + if ( !IsGrowable() ) + return false; + + m_Memory.ConvertToGrowableMemory( 0 ); + } + + while( Size() < m_Put - m_nOffset + nSize ) + { + m_Memory.Grow(); + } + + return true; +} + +bool CUtlBuffer::GetOverflow( int nSize ) +{ + return false; +} + + +//----------------------------------------------------------------------------- +// Checks if a put is ok +//----------------------------------------------------------------------------- +bool CUtlBuffer::CheckPut( int nSize ) +{ + if ( ( m_Error & PUT_OVERFLOW ) || IsReadOnly() ) + return false; + + if ( ( m_Put < m_nOffset ) || ( m_Memory.NumAllocated() < m_Put - m_nOffset + nSize ) ) + { + if ( !OnPutOverflow( nSize ) ) + { + m_Error |= PUT_OVERFLOW; + return false; + } + } + return true; +} + +void CUtlBuffer::SeekPut( SeekType_t type, int offset ) +{ + int nNextPut = m_Put; + switch( type ) + { + case SEEK_HEAD: + nNextPut = offset; + break; + + case SEEK_CURRENT: + nNextPut += offset; + break; + + case SEEK_TAIL: + nNextPut = m_nMaxPut - offset; + break; + } + + // Force a write of the data + // FIXME: We could make this more optimal potentially by writing out + // the entire buffer if you seek outside the current range + + // NOTE: This call will write and will also seek the file to nNextPut. + OnPutOverflow( -nNextPut-1 ); + m_Put = nNextPut; + + AddNullTermination(); +} + + +void CUtlBuffer::ActivateByteSwapping( bool bActivate ) +{ + m_Byteswap.ActivateByteSwapping( bActivate ); +} + +void CUtlBuffer::SetBigEndian( bool bigEndian ) +{ + m_Byteswap.SetTargetBigEndian( bigEndian ); +} + +bool CUtlBuffer::IsBigEndian( void ) +{ + return m_Byteswap.IsTargetBigEndian(); +} + + +//----------------------------------------------------------------------------- +// null terminate the buffer +//----------------------------------------------------------------------------- +void CUtlBuffer::AddNullTermination( void ) +{ + if ( m_Put > m_nMaxPut ) + { + if ( !IsReadOnly() && ((m_Error & PUT_OVERFLOW) == 0) ) + { + // Add null termination value + if ( CheckPut( 1 ) ) + { + m_Memory[m_Put - m_nOffset] = 0; + } + else + { + // Restore the overflow state, it was valid before... + m_Error &= ~PUT_OVERFLOW; + } + } + m_nMaxPut = m_Put; + } +} + + +//----------------------------------------------------------------------------- +// Converts a buffer from a CRLF buffer to a CR buffer (and back) +// Returns false if no conversion was necessary (and outBuf is left untouched) +// If the conversion occurs, outBuf will be cleared. +//----------------------------------------------------------------------------- +bool CUtlBuffer::ConvertCRLF( CUtlBuffer &outBuf ) +{ + if ( !IsText() || !outBuf.IsText() ) + return false; + + if ( ContainsCRLF() == outBuf.ContainsCRLF() ) + return false; + + int nInCount = TellMaxPut(); + + outBuf.Purge(); + outBuf.EnsureCapacity( nInCount ); + + bool bFromCRLF = ContainsCRLF(); + + // Start reading from the beginning + int nGet = TellGet(); + int nPut = TellPut(); + int nGetDelta = 0; + int nPutDelta = 0; + + const char *pBase = (const char*)Base(); + int nCurrGet = 0; + while ( nCurrGet < nInCount ) + { + const char *pCurr = &pBase[nCurrGet]; + if ( bFromCRLF ) + { + const char *pNext = Q_strnistr( pCurr, "\r\n", nInCount - nCurrGet ); + if ( !pNext ) + { + outBuf.Put( pCurr, nInCount - nCurrGet ); + break; + } + + int nBytes = (size_t)pNext - (size_t)pCurr; + outBuf.Put( pCurr, nBytes ); + outBuf.PutChar( '\n' ); + nCurrGet += nBytes + 2; + if ( nGet >= nCurrGet - 1 ) + { + --nGetDelta; + } + if ( nPut >= nCurrGet - 1 ) + { + --nPutDelta; + } + } + else + { + const char *pNext = Q_strnchr( pCurr, '\n', nInCount - nCurrGet ); + if ( !pNext ) + { + outBuf.Put( pCurr, nInCount - nCurrGet ); + break; + } + + int nBytes = (size_t)pNext - (size_t)pCurr; + outBuf.Put( pCurr, nBytes ); + outBuf.PutChar( '\r' ); + outBuf.PutChar( '\n' ); + nCurrGet += nBytes + 1; + if ( nGet >= nCurrGet ) + { + ++nGetDelta; + } + if ( nPut >= nCurrGet ) + { + ++nPutDelta; + } + } + } + + Assert( nPut + nPutDelta <= outBuf.TellMaxPut() ); + + outBuf.SeekGet( SEEK_HEAD, nGet + nGetDelta ); + outBuf.SeekPut( SEEK_HEAD, nPut + nPutDelta ); + + return true; +} + + +//--------------------------------------------------------------------------- +// Implementation of CUtlInplaceBuffer +//--------------------------------------------------------------------------- + +CUtlInplaceBuffer::CUtlInplaceBuffer( int growSize /* = 0 */, int initSize /* = 0 */, int nFlags /* = 0 */ ) : + CUtlBuffer( growSize, initSize, nFlags ) +{ + +} + +bool CUtlInplaceBuffer::InplaceGetLinePtr( char **ppszInBufferPtr, int *pnLineLength ) +{ + Assert( IsText() && !ContainsCRLF() ); + + int nLineLen = PeekLineLength(); + if ( nLineLen <= 1 ) + { + SeekGet( SEEK_TAIL, 0 ); + return false; + } + + -- nLineLen; // because it accounts for putting a terminating null-character + + char *pszLine = ( char * ) const_cast< void * >( PeekGet() ); + SeekGet( SEEK_CURRENT, nLineLen ); + + // Set the out args + if ( ppszInBufferPtr ) + *ppszInBufferPtr = pszLine; + + if ( pnLineLength ) + *pnLineLength = nLineLen; + + return true; +} + +char * CUtlInplaceBuffer::InplaceGetLinePtr( void ) +{ + char *pszLine = NULL; + int nLineLen = 0; + + if ( InplaceGetLinePtr( &pszLine, &nLineLen ) ) + { + Assert( nLineLen >= 1 ); + + switch ( pszLine[ nLineLen - 1 ] ) + { + case '\n': + case '\r': + pszLine[ nLineLen - 1 ] = 0; + if ( -- nLineLen ) + { + switch ( pszLine[ nLineLen - 1 ] ) + { + case '\n': + case '\r': + pszLine[ nLineLen - 1 ] = 0; + break; + } + } + break; + + default: + Assert( pszLine[ nLineLen ] == 0 ); + break; + } + } + + return pszLine; +} + diff --git a/tier1/utlbufferutil.cpp b/tier1/utlbufferutil.cpp new file mode 100644 index 00000000..c1391dc4 --- /dev/null +++ b/tier1/utlbufferutil.cpp @@ -0,0 +1,562 @@ +//===== Copyright © 1996-2005, Valve Corporation, All rights reserved. ======// +// +// $Header: $ +// $NoKeywords: $ +// +// Serialization buffer +//===========================================================================// + +#ifdef _MSC_VER +#pragma warning (disable : 4514) +#endif + +#include "tier1/utlbufferutil.h" +#include "tier1/utlbuffer.h" +#include "mathlib/vector.h" +#include "mathlib/vector2d.h" +#include "mathlib/vector4d.h" +#include "mathlib/vmatrix.h" +#include "Color.h" +#include +#include +#include +#include +#include +#include "tier1/utlbinaryblock.h" +#include "tier1/utlstring.h" +#include "tier1/strtools.h" +#include "tier1/characterset.h" + +// memdbgon must be the last include file in a .cpp file!!! +#include "tier0/memdbgon.h" + + +//----------------------------------------------------------------------------- +// For serialization, set the delimiter rules +//----------------------------------------------------------------------------- +CUtlCharConversion *s_pConv = NULL; +const char *s_pUtlBufferUtilArrayDelim = NULL; +void SetSerializationDelimiter( CUtlCharConversion *pConv ) +{ + s_pConv = pConv; +} + +void SetSerializationArrayDelimiter( const char *pDelimiter ) +{ + s_pUtlBufferUtilArrayDelim = pDelimiter; +} + + +//----------------------------------------------------------------------------- +// Serialize a floating point number in text mode in a readably friendly fashion +//----------------------------------------------------------------------------- +static void SerializeFloat( CUtlBuffer &buf, float f ) +{ + Assert( buf.IsText() ); + + // FIXME: Print this in a way that we never lose precision + char pTemp[256]; + int nLen = Q_snprintf( pTemp, sizeof(pTemp), "%.10f", f ); + while ( nLen > 0 && pTemp[nLen-1] == '0' ) + { + --nLen; + pTemp[nLen] = 0; + } + if ( nLen > 0 && pTemp[nLen-1] == '.' ) + { + --nLen; + pTemp[nLen] = 0; + } + buf.PutString( pTemp ); +} + +static void SerializeFloats( CUtlBuffer &buf, int nCount, const float *pFloats ) +{ + for ( int i = 0; i < nCount; ++i ) + { + SerializeFloat( buf, pFloats[i] ); + if ( i != nCount-1 ) + { + buf.PutChar( ' ' ); + } + } +} + + +//----------------------------------------------------------------------------- +// Serialization methods for basic types +//----------------------------------------------------------------------------- +bool Serialize( CUtlBuffer &buf, const bool &src ) +{ + if ( buf.IsText() ) + { + buf.Printf( "%d", src ); + } + else + { + buf.PutChar( src ); + } + return buf.IsValid(); +} + +bool Unserialize( CUtlBuffer &buf, bool &dest ) +{ + if ( buf.IsText() ) + { + int nValue = 0; + int nRetVal = buf.Scanf( "%d", &nValue ); + dest = ( nValue != 0 ); + return (nRetVal == 1) && buf.IsValid(); + } + + dest = ( buf.GetChar( ) != 0 ); + return buf.IsValid(); +} + + +bool Serialize( CUtlBuffer &buf, const int &src ) +{ + if ( buf.IsText() ) + { + buf.Printf( "%d", src ); + } + else + { + buf.PutInt( src ); + } + return buf.IsValid(); +} + +bool Unserialize( CUtlBuffer &buf, int &dest ) +{ + if ( buf.IsText() ) + { + int nRetVal = buf.Scanf( "%d", &dest ); + return (nRetVal == 1) && buf.IsValid(); + } + + dest = buf.GetInt( ); + return buf.IsValid(); +} + +bool Serialize( CUtlBuffer &buf, const float &src ) +{ + if ( buf.IsText() ) + { + SerializeFloat( buf, src ); + } + else + { + buf.PutFloat( src ); + } + return buf.IsValid(); +} + +bool Unserialize( CUtlBuffer &buf, float &dest ) +{ + if ( buf.IsText() ) + { + // FIXME: Print this in a way that we never lose precision + int nRetVal = buf.Scanf( "%f", &dest ); + return (nRetVal == 1) && buf.IsValid(); + } + + dest = buf.GetFloat( ); + return buf.IsValid(); +} + + +//----------------------------------------------------------------------------- +// Attribute types related to vector math +//----------------------------------------------------------------------------- +bool Serialize( CUtlBuffer &buf, const Vector2D &src ) +{ + if ( buf.IsText() ) + { + SerializeFloats( buf, 2, src.Base() ); + } + else + { + buf.PutFloat( src.x ); + buf.PutFloat( src.y ); + } + return buf.IsValid(); +} + +bool Unserialize( CUtlBuffer &buf, Vector2D &dest ) +{ + if ( buf.IsText() ) + { + // FIXME: Print this in a way that we never lose precision + int nRetVal = buf.Scanf( "%f %f", &dest.x, &dest.y ); + return (nRetVal == 2) && buf.IsValid(); + } + + dest.x = buf.GetFloat( ); + dest.y = buf.GetFloat( ); + return buf.IsValid(); +} + +bool Serialize( CUtlBuffer &buf, const Vector &src ) +{ + if ( buf.IsText() ) + { + SerializeFloats( buf, 3, src.Base() ); + } + else + { + buf.PutFloat( src.x ); + buf.PutFloat( src.y ); + buf.PutFloat( src.z ); + } + return buf.IsValid(); +} + +bool Unserialize( CUtlBuffer &buf, Vector &dest ) +{ + if ( buf.IsText() ) + { + // FIXME: Print this in a way that we never lose precision + int nRetVal = buf.Scanf( "%f %f %f", &dest.x, &dest.y, &dest.z ); + return (nRetVal == 3) && buf.IsValid(); + } + + dest.x = buf.GetFloat( ); + dest.y = buf.GetFloat( ); + dest.z = buf.GetFloat( ); + return buf.IsValid(); +} + +bool Serialize( CUtlBuffer &buf, const Vector4D &src ) +{ + if ( buf.IsText() ) + { + SerializeFloats( buf, 4, src.Base() ); + } + else + { + buf.PutFloat( src.x ); + buf.PutFloat( src.y ); + buf.PutFloat( src.z ); + buf.PutFloat( src.w ); + } + return buf.IsValid(); +} + +bool Unserialize( CUtlBuffer &buf, Vector4D &dest ) +{ + if ( buf.IsText() ) + { + // FIXME: Print this in a way that we never lose precision + int nRetVal = buf.Scanf( "%f %f %f %f", &dest.x, &dest.y, &dest.z, &dest.w ); + return (nRetVal == 4) && buf.IsValid(); + } + + dest.x = buf.GetFloat( ); + dest.y = buf.GetFloat( ); + dest.z = buf.GetFloat( ); + dest.w = buf.GetFloat( ); + return buf.IsValid(); +} + +bool Serialize( CUtlBuffer &buf, const QAngle &src ) +{ + if ( buf.IsText() ) + { + SerializeFloats( buf, 3, src.Base() ); + } + else + { + buf.PutFloat( src.x ); + buf.PutFloat( src.y ); + buf.PutFloat( src.z ); + } + return buf.IsValid(); +} + +bool Unserialize( CUtlBuffer &buf, QAngle &dest ) +{ + if ( buf.IsText() ) + { + // FIXME: Print this in a way that we never lose precision + int nRetVal = buf.Scanf( "%f %f %f", &dest.x, &dest.y, &dest.z ); + return (nRetVal == 3) && buf.IsValid(); + } + + dest.x = buf.GetFloat( ); + dest.y = buf.GetFloat( ); + dest.z = buf.GetFloat( ); + return buf.IsValid(); +} + +bool Serialize( CUtlBuffer &buf, const Quaternion &src ) +{ + if ( buf.IsText() ) + { + SerializeFloats( buf, 4, &src.x ); + } + else + { + buf.PutFloat( src.x ); + buf.PutFloat( src.y ); + buf.PutFloat( src.z ); + buf.PutFloat( src.w ); + } + return buf.IsValid(); +} + +bool Unserialize( CUtlBuffer &buf, Quaternion &dest ) +{ + if ( buf.IsText() ) + { + // FIXME: Print this in a way that we never lose precision + int nRetVal = buf.Scanf( "%f %f %f %f", &dest.x, &dest.y, &dest.z, &dest.w ); + return (nRetVal == 4) && buf.IsValid(); + } + + dest.x = buf.GetFloat( ); + dest.y = buf.GetFloat( ); + dest.z = buf.GetFloat( ); + dest.w = buf.GetFloat( ); + return buf.IsValid(); +} + +bool Serialize( CUtlBuffer &buf, const VMatrix &src ) +{ + if ( buf.IsText() ) + { + buf.Printf( "\n" ); + SerializeFloats( buf, 4, src[0] ); + buf.Printf( "\n" ); + SerializeFloats( buf, 4, src[1] ); + buf.Printf( "\n" ); + SerializeFloats( buf, 4, src[2] ); + buf.Printf( "\n" ); + SerializeFloats( buf, 4, src[3] ); + buf.Printf( "\n" ); + } + else + { + buf.Put( &src, sizeof(VMatrix) ); + } + return buf.IsValid(); +} + +bool Unserialize( CUtlBuffer &buf, VMatrix &dest ) +{ + if ( !buf.IsValid() ) + return false; + + if ( buf.IsText() ) + { + int nRetVal = buf.Scanf( "%f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f", + &dest[ 0 ][ 0 ], &dest[ 0 ][ 1 ], &dest[ 0 ][ 2 ], &dest[ 0 ][ 3 ], + &dest[ 1 ][ 0 ], &dest[ 1 ][ 1 ], &dest[ 1 ][ 2 ], &dest[ 1 ][ 3 ], + &dest[ 2 ][ 0 ], &dest[ 2 ][ 1 ], &dest[ 2 ][ 2 ], &dest[ 2 ][ 3 ], + &dest[ 3 ][ 0 ], &dest[ 3 ][ 1 ], &dest[ 3 ][ 2 ], &dest[ 3 ][ 3 ] ); + return (nRetVal == 16); + } + + buf.Get( &dest, sizeof(VMatrix) ); + return true; +} + + +//----------------------------------------------------------------------------- +// Color attribute +//----------------------------------------------------------------------------- +bool Serialize( CUtlBuffer &buf, const Color &src ) +{ + if ( buf.IsText() ) + { + buf.Printf( "%d %d %d %d", src[0], src[1], src[2], src[3] ); + } + else + { + buf.PutUnsignedChar( src[0] ); + buf.PutUnsignedChar( src[1] ); + buf.PutUnsignedChar( src[2] ); + buf.PutUnsignedChar( src[3] ); + } + return buf.IsValid(); +} + +bool Unserialize( CUtlBuffer &buf, Color &dest ) +{ + if ( buf.IsText() ) + { + int r = 0, g = 0, b = 0, a = 255; + int nRetVal = buf.Scanf( "%d %d %d %d", &r, &g, &b, &a ); + dest.SetColor( r, g, b, a ); + return (nRetVal == 4) && buf.IsValid(); + } + + dest[0] = buf.GetUnsignedChar( ); + dest[1] = buf.GetUnsignedChar( ); + dest[2] = buf.GetUnsignedChar( ); + dest[3] = buf.GetUnsignedChar( ); + return buf.IsValid(); +} + +/* +//----------------------------------------------------------------------------- +// Object ID attribute +//----------------------------------------------------------------------------- +bool Serialize( CUtlBuffer &buf, const DmObjectId_t &src ) +{ + return g_pDataModel->Serialize( buf, src ); +} + +bool Unserialize( CUtlBuffer &buf, DmObjectId_t &dest ) +{ + return g_pDataModel->Unserialize( buf, &dest ); +} +*/ + +//----------------------------------------------------------------------------- +// Binary buffer attribute +//----------------------------------------------------------------------------- +bool Serialize( CUtlBuffer &buf, const CUtlBinaryBlock &src ) +{ + int nLength = src.Length(); + if ( !buf.IsText() ) + { + buf.PutInt( nLength ); + if ( nLength != 0 ) + { + buf.Put( src.Get(), nLength ); + } + return buf.IsValid(); + } + + // Writes out uuencoded binaries + for ( int i = 0; i < nLength; ++i ) + { + if ( (i % 40) == 0 ) + { + buf.PutChar( '\n' ); + } + + char b1 = src[i] & 0xF; + char b2 = src[i] >> 4; + + char c1 = ( b1 <= 9 ) ? b1 + '0' : b1 - 10 + 'A'; + char c2 = ( b2 <= 9 ) ? b2 + '0' : b2 - 10 + 'A'; + + buf.PutChar( c2 ); + buf.PutChar( c1 ); + } + + buf.PutChar( '\n' ); + return buf.IsValid(); +} + +static int CountBinaryBytes( CUtlBuffer &buf, int *pEndGet ) +{ + // This counts the number of bytes in the uuencoded text + int nStartGet = buf.TellGet(); + buf.EatWhiteSpace(); + *pEndGet = buf.TellGet(); + int nByteCount = 0; + while ( buf.IsValid() ) + { + char c1 = buf.GetChar(); + char c2 = buf.GetChar(); + + bool bIsNum1 = ( c1 >= '0' ) && ( c1 <= '9' ); + bool bIsNum2 = ( c2 >= '0' ) && ( c2 <= '9' ); + + bool bIsAlpha1 = (( c1 >= 'A' ) && ( c1 <= 'F' )) || (( c1 >= 'a' ) && ( c1 <= 'f' )); + bool bIsAlpha2 = (( c2 >= 'A' ) && ( c2 <= 'F' )) || (( c2 >= 'a' ) && ( c2 <= 'f' )); + + if ( !(bIsNum1 || bIsAlpha1) || !(bIsNum2 || bIsAlpha2) ) + break; + + buf.EatWhiteSpace(); + *pEndGet = buf.TellGet(); + ++nByteCount; + } + buf.SeekGet( CUtlBuffer::SEEK_HEAD, nStartGet ); + return nByteCount; +} + +inline static unsigned char HexCharToInt( int c1 ) +{ + if (( c1 >= '0' ) && ( c1 <= '9' )) + return c1 - '0'; + + if (( c1 >= 'A' ) && ( c1 <= 'F' )) + return 10 + c1 - 'A'; + + if (( c1 >= 'a' ) && ( c1 <= 'f' )) + return 10 + c1 - 'a'; + + return 0xFF; +} + +bool Unserialize( CUtlBuffer &buf, CUtlBinaryBlock &dest ) +{ + if ( !buf.IsText() ) + { + int nLen = buf.GetInt( ); + dest.SetLength( nLen ); + if ( dest.Length() != 0 ) + { + buf.Get( dest.Get(), dest.Length() ); + } + + if ( nLen != dest.Length() ) + { + buf.SeekGet( CUtlBuffer::SEEK_CURRENT, nLen - dest.Length() ); + return false; + } + + return buf.IsValid(); + } + + int nEndGet; + int nByteCount = CountBinaryBytes( buf, &nEndGet ); + if ( nByteCount < 0 ) + return false; + + buf.EatWhiteSpace(); + int nDest = 0; + dest.SetLength( nByteCount ); + while( buf.TellGet() < nEndGet ) + { + char c1 = buf.GetChar(); + char c2 = buf.GetChar(); + + unsigned char b1 = HexCharToInt( c1 ); + unsigned char b2 = HexCharToInt( c2 ); + if ( b1 == 0xFF || b2 == 0xFF ) + return false; + + dest[ nDest++ ] = b2 | ( b1 << 4 ); + buf.EatWhiteSpace(); + } + + return true; +} + + +//----------------------------------------------------------------------------- +// String attribute +//----------------------------------------------------------------------------- +bool Serialize( CUtlBuffer &buf, const CUtlString &src ) +{ + buf.PutDelimitedString( s_pConv, src.Get() ); + return buf.IsValid(); +} + +bool Unserialize( CUtlBuffer &buf, CUtlString &dest ) +{ + int nLen = buf.PeekDelimitedStringLength( s_pConv ); + dest.SetLength( nLen - 1 ); // -1 because the length returned includes space for \0 + buf.GetDelimitedString( s_pConv, dest.GetForModify(), nLen ); + return buf.IsValid(); +} + + + + diff --git a/tier1/utlstring.cpp b/tier1/utlstring.cpp new file mode 100644 index 00000000..300766b9 --- /dev/null +++ b/tier1/utlstring.cpp @@ -0,0 +1,767 @@ +//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: +// +//============================================================================= + +#define __STDC_LIMIT_MACROS +#include + +#include "tier1/utlstring.h" +#include "tier1/strtools.h" +#include + +// NOTE: This has to be the last file included! +#include "tier0/memdbgon.h" + +//----------------------------------------------------------------------------- +// Simple string class. +//----------------------------------------------------------------------------- + +//----------------------------------------------------------------------------- +// Either allocates or reallocates memory to the length +// +// Allocated space for length characters. It automatically adds space for the +// nul and the cached length at the start of the memory block. Will adjust +// m_pString and explicitly set the nul at the end before returning. +void *CUtlString::AllocMemory( uint32 length ) +{ + void *pMemoryBlock; + if ( m_pString ) + { + pMemoryBlock = realloc( m_pString, length + 1 ); + } + else + { + pMemoryBlock = malloc( length + 1 ); + } + m_pString = (char*)pMemoryBlock; + m_pString[ length ] = 0; + + return pMemoryBlock; +} + +//----------------------------------------------------------------------------- +void CUtlString::SetDirect( const char *pValue, int nChars ) +{ + if ( pValue && nChars > 0 ) + { + if ( pValue == m_pString ) + { + AssertMsg( nChars == Q_strlen(m_pString), "CUtlString::SetDirect does not support resizing strings in place." ); + return; // Do nothing. Realloc in AllocMemory might move pValue's location resulting in a bad memcpy. + } + + Assert( nChars <= Min( strnlen(pValue, nChars) + 1, nChars ) ); + AllocMemory( nChars ); + Q_memcpy( m_pString, pValue, nChars ); + } + else + { + Purge(); + } + +} + + +void CUtlString::Set( const char *pValue ) +{ + int length = pValue ? V_strlen( pValue ) : 0; + SetDirect( pValue, length ); +} + +// Sets the length (used to serialize into the buffer ) +void CUtlString::SetLength( int nLen ) +{ + if ( nLen > 0 ) + { +#ifdef _DEBUG + int prevLen = m_pString ? Length() : 0; +#endif + AllocMemory( nLen ); +#ifdef _DEBUG + if ( nLen > prevLen ) + { + V_memset( m_pString + prevLen, 0xEB, nLen - prevLen ); + } +#endif + } + else + { + Purge(); + } +} + +const char *CUtlString::Get( ) const +{ + if (!m_pString) + { + return ""; + } + return m_pString; +} + +char *CUtlString::GetForModify() +{ + if ( !m_pString ) + { + // In general, we optimise away small mallocs for empty strings + // but if you ask for the non-const bytes, they must be writable + // so we can't return "" here, like we do for the const version - jd + void *pMemoryBlock = malloc( 1 ); + m_pString = (char *)pMemoryBlock; + *m_pString = 0; + } + + return m_pString; +} + +char CUtlString::operator[]( int i ) const +{ + if ( !m_pString ) + return '\0'; + + if ( i >= Length() ) + { + return '\0'; + } + + return m_pString[i]; +} + +void CUtlString::Clear() +{ + Purge(); +} + +void CUtlString::Purge() +{ + free( m_pString ); + m_pString = NULL; +} + +bool CUtlString::IsEqual_CaseSensitive( const char *src ) const +{ + if ( !src ) + { + return (Length() == 0); + } + return ( V_strcmp( Get(), src ) == 0 ); +} + +bool CUtlString::IsEqual_CaseInsensitive( const char *src ) const +{ + if ( !src ) + { + return (Length() == 0); + } + return ( V_stricmp( Get(), src ) == 0 ); +} + + +void CUtlString::ToLower() +{ + if ( !m_pString ) + { + return; + } + + V_strlower( m_pString ); +} + +void CUtlString::ToUpper() +{ + if ( !m_pString ) + { + return; + } + + V_strupr( m_pString ); +} + +CUtlString &CUtlString::operator=( const CUtlString &src ) +{ + SetDirect( src.Get(), src.Length() ); + return *this; +} + +CUtlString &CUtlString::operator=( const char *src ) +{ + Set( src ); + return *this; +} + +bool CUtlString::operator==( const CUtlString &src ) const +{ + if ( IsEmpty() ) + { + if ( src.IsEmpty() ) + { + return true; + } + + return false; + } + else + { + if ( src.IsEmpty() ) + { + return false; + } + + return Q_strcmp( m_pString, src.m_pString ) == 0; + } +} + +CUtlString &CUtlString::operator+=( const CUtlString &rhs ) +{ + const int lhsLength( Length() ); + const int rhsLength( rhs.Length() ); + + if (!rhsLength) + { + return *this; + } + + const int requestedLength( lhsLength + rhsLength ); + + AllocMemory( requestedLength ); + Q_memcpy( m_pString + lhsLength, rhs.m_pString, rhsLength ); + + return *this; +} + +CUtlString &CUtlString::operator+=( const char *rhs ) +{ + const int lhsLength( Length() ); + const int rhsLength( V_strlen( rhs ) ); + const int requestedLength( lhsLength + rhsLength ); + + if (!requestedLength) + { + return *this; + } + + AllocMemory( requestedLength ); + Q_memcpy( m_pString + lhsLength, rhs, rhsLength ); + + return *this; +} + +CUtlString &CUtlString::operator+=( char c ) +{ + const int lhsLength( Length() ); + + AllocMemory( lhsLength + 1 ); + m_pString[ lhsLength ] = c; + + return *this; +} + +CUtlString &CUtlString::operator+=( int rhs ) +{ + Assert( sizeof( rhs ) == 4 ); + + char tmpBuf[ 12 ]; // Sufficient for a signed 32 bit integer [ -2147483648 to +2147483647 ] + V_snprintf( tmpBuf, sizeof( tmpBuf ), "%d", rhs ); + tmpBuf[ sizeof( tmpBuf ) - 1 ] = '\0'; + + return operator+=( tmpBuf ); +} + +CUtlString &CUtlString::operator+=( double rhs ) +{ + char tmpBuf[ 256 ]; // How big can doubles be??? Dunno. + V_snprintf( tmpBuf, sizeof( tmpBuf ), "%lg", rhs ); + tmpBuf[ sizeof( tmpBuf ) - 1 ] = '\0'; + + return operator+=( tmpBuf ); +} + +bool CUtlString::MatchesPattern( const CUtlString &Pattern, int nFlags ) const +{ + const char *pszSource = String(); + const char *pszPattern = Pattern.String(); + bool bExact = true; + + while( 1 ) + { + if ( ( *pszPattern ) == 0 ) + { + return ( (*pszSource ) == 0 ); + } + + if ( ( *pszPattern ) == '*' ) + { + pszPattern++; + + if ( ( *pszPattern ) == 0 ) + { + return true; + } + + bExact = false; + continue; + } + + int nLength = 0; + + while( ( *pszPattern ) != '*' && ( *pszPattern ) != 0 ) + { + nLength++; + pszPattern++; + } + + while( 1 ) + { + const char *pszStartPattern = pszPattern - nLength; + const char *pszSearch = pszSource; + + for( int i = 0; i < nLength; i++, pszSearch++, pszStartPattern++ ) + { + if ( ( *pszSearch ) == 0 ) + { + return false; + } + + if ( ( *pszSearch ) != ( *pszStartPattern ) ) + { + break; + } + } + + if ( pszSearch - pszSource == nLength ) + { + break; + } + + if ( bExact == true ) + { + return false; + } + + if ( ( nFlags & PATTERN_DIRECTORY ) != 0 ) + { + if ( ( *pszPattern ) != '/' && ( *pszSource ) == '/' ) + { + return false; + } + } + + pszSource++; + } + + pszSource += nLength; + } +} + + +int CUtlString::Format( const char *pFormat, ... ) +{ + va_list marker; + + va_start( marker, pFormat ); + int len = FormatV( pFormat, marker ); + va_end( marker ); + + return len; +} + +//-------------------------------------------------------------------------------------------------- +// This can be called from functions that take varargs. +//-------------------------------------------------------------------------------------------------- + +int CUtlString::FormatV( const char *pFormat, va_list marker ) +{ + char tmpBuf[ 4096 ]; //< Nice big 4k buffer, as much memory as my first computer had, a Radio Shack Color Computer + + //va_start( marker, pFormat ); + int len = V_vsprintf_safe( tmpBuf, pFormat, marker ); + //va_end( marker ); + Set( tmpBuf ); + return len; +} + +//----------------------------------------------------------------------------- +// Strips the trailing slash +//----------------------------------------------------------------------------- +void CUtlString::StripTrailingSlash() +{ + if ( IsEmpty() ) + return; + + int nLastChar = Length() - 1; + char c = m_pString[ nLastChar ]; + if ( c == '\\' || c == '/' ) + { + SetLength( nLastChar ); + } +} + +void CUtlString::FixSlashes( char cSeparator/*=CORRECT_PATH_SEPARATOR*/ ) +{ + if ( m_pString ) + { + V_FixSlashes( m_pString, cSeparator ); + } +} + +//----------------------------------------------------------------------------- +// Trim functions +//----------------------------------------------------------------------------- +void CUtlString::TrimLeft( char cTarget ) +{ + int nIndex = 0; + + if ( IsEmpty() ) + { + return; + } + + while( m_pString[nIndex] == cTarget ) + { + ++nIndex; + } + + // We have some whitespace to remove + if ( nIndex > 0 ) + { + memcpy( m_pString, &m_pString[nIndex], Length() - nIndex ); + SetLength( Length() - nIndex ); + } +} + + +void CUtlString::TrimLeft( const char *szTargets ) +{ + int i; + + if ( IsEmpty() ) + { + return; + } + + for( i = 0; m_pString[i] != 0; i++ ) + { + bool bWhitespace = false; + + for( int j = 0; szTargets[j] != 0; j++ ) + { + if ( m_pString[i] == szTargets[j] ) + { + bWhitespace = true; + break; + } + } + + if ( !bWhitespace ) + { + break; + } + } + + // We have some whitespace to remove + if ( i > 0 ) + { + memcpy( m_pString, &m_pString[i], Length() - i ); + SetLength( Length() - i ); + } +} + + +void CUtlString::TrimRight( char cTarget ) +{ + const int nLastCharIndex = Length() - 1; + int nIndex = nLastCharIndex; + + while ( nIndex >= 0 && m_pString[nIndex] == cTarget ) + { + --nIndex; + } + + // We have some whitespace to remove + if ( nIndex < nLastCharIndex ) + { + m_pString[nIndex + 1] = 0; + SetLength( nIndex + 2 ); + } +} + + +void CUtlString::TrimRight( const char *szTargets ) +{ + const int nLastCharIndex = Length() - 1; + int i; + + for( i = nLastCharIndex; i > 0; i-- ) + { + bool bWhitespace = false; + + for( int j = 0; szTargets[j] != 0; j++ ) + { + if ( m_pString[i] == szTargets[j] ) + { + bWhitespace = true; + break; + } + } + + if ( !bWhitespace ) + { + break; + } + } + + // We have some whitespace to remove + if ( i < nLastCharIndex ) + { + m_pString[i + 1] = 0; + SetLength( i + 2 ); + } +} + + +void CUtlString::Trim( char cTarget ) +{ + TrimLeft( cTarget ); + TrimRight( cTarget ); +} + + +void CUtlString::Trim( const char *szTargets ) +{ + TrimLeft( szTargets ); + TrimRight( szTargets ); +} + + +CUtlString CUtlString::Slice( int32 nStart, int32 nEnd ) const +{ + int length = Length(); + if ( length == 0 ) + { + return CUtlString(); + } + + if ( nStart < 0 ) + nStart = length - (-nStart % length); + else if ( nStart >= length ) + nStart = length; + + if ( nEnd == INT32_MAX ) + nEnd = length; + else if ( nEnd < 0 ) + nEnd = length - (-nEnd % length); + else if ( nEnd >= length ) + nEnd = length; + + if ( nStart >= nEnd ) + return CUtlString(); + + const char *pIn = String(); + + CUtlString ret; + ret.SetDirect( pIn + nStart, nEnd - nStart ); + return ret; +} + +// Grab a substring starting from the left or the right side. +CUtlString CUtlString::Left( int32 nChars ) const +{ + return Slice( 0, nChars ); +} + +CUtlString CUtlString::Right( int32 nChars ) const +{ + return Slice( -nChars ); +} + +CUtlString CUtlString::Replace( char cFrom, char cTo ) const +{ + if (!m_pString) + { + return CUtlString(); + } + + CUtlString ret = *this; + int len = ret.Length(); + for ( int i=0; i < len; i++ ) + { + if ( ret.m_pString[i] == cFrom ) + ret.m_pString[i] = cTo; + } + + return ret; +} + +CUtlString CUtlString::Replace( const char *pszFrom, const char *pszTo ) const +{ + Assert( pszTo ); // Can be 0 length, but not null + Assert( pszFrom && *pszFrom ); // Must be valid and have one character. + + + const char *pos = V_strstr( String(), pszFrom ); + if ( !pos ) + { + return *this; + } + + const char *pFirstFound = pos; + + // count number of search string + int nSearchCount = 0; + int nSearchLength = V_strlen( pszFrom ); + while ( pos ) + { + nSearchCount++; + int nSrcOffset = ( pos - String() ) + nSearchLength; + pos = V_strstr( String() + nSrcOffset, pszFrom ); + } + + // allocate the new string + int nReplaceLength = V_strlen( pszTo ); + int nAllocOffset = nSearchCount * ( nReplaceLength - nSearchLength ); + size_t srcLength = Length(); + CUtlString strDest; + size_t destLength = srcLength + nAllocOffset; + strDest.SetLength( destLength ); + + // find and replace the search string + pos = pFirstFound; + int nDestOffset = 0; + int nSrcOffset = 0; + while ( pos ) + { + // Found an instance + int nCurrentSearchOffset = pos - String(); + int nCopyLength = nCurrentSearchOffset - nSrcOffset; + V_strncpy( strDest.GetForModify() + nDestOffset, String() + nSrcOffset, nCopyLength + 1 ); + nDestOffset += nCopyLength; + V_strncpy( strDest.GetForModify() + nDestOffset, pszTo, nReplaceLength + 1 ); + nDestOffset += nReplaceLength; + + nSrcOffset = nCurrentSearchOffset + nSearchLength; + pos = V_strstr( String() + nSrcOffset, pszFrom ); + } + + // making sure that the left over string from the source is the same size as the left over dest buffer + Assert( destLength - nDestOffset == srcLength - nSrcOffset ); + if ( destLength - nDestOffset > 0 ) + { + V_strncpy( strDest.GetForModify() + nDestOffset, String() + nSrcOffset, destLength - nDestOffset + 1 ); + } + + return strDest; +} + +CUtlString CUtlString::AbsPath( const char *pStartingDir ) const +{ + char szNew[MAX_PATH]; + V_MakeAbsolutePath( szNew, sizeof( szNew ), this->String(), pStartingDir ); + return CUtlString( szNew ); +} + +CUtlString CUtlString::UnqualifiedFilename() const +{ + const char *pFilename = V_UnqualifiedFileName( this->String() ); + return CUtlString( pFilename ); +} + +CUtlString CUtlString::DirName() const +{ + CUtlString ret( this->String() ); + V_StripLastDir( (char*)ret.Get(), ret.Length() + 1 ); + V_StripTrailingSlash( (char*)ret.Get() ); + return ret; +} + +CUtlString CUtlString::StripExtension() const +{ + char szTemp[MAX_PATH]; + V_StripExtension( String(), szTemp, sizeof( szTemp ) ); + return CUtlString( szTemp ); +} + +CUtlString CUtlString::StripFilename() const +{ + const char *pFilename = V_UnqualifiedFileName( Get() ); // NOTE: returns 'Get()' on failure, never NULL + int nCharsToCopy = pFilename - Get(); + CUtlString result; + result.SetDirect( Get(), nCharsToCopy ); + result.StripTrailingSlash(); + return result; +} + +CUtlString CUtlString::GetBaseFilename() const +{ + char szTemp[MAX_PATH]; + V_FileBase( String(), szTemp, sizeof( szTemp ) ); + return CUtlString( szTemp ); +} + +CUtlString CUtlString::GetExtension() const +{ + char szTemp[MAX_PATH]; + V_ExtractFileExtension( String(), szTemp, sizeof( szTemp ) ); + return CUtlString( szTemp ); +} + + +CUtlString CUtlString::PathJoin( const char *pStr1, const char *pStr2 ) +{ + char szPath[MAX_PATH]; + V_ComposeFileName( pStr1, pStr2, szPath, sizeof( szPath ) ); + return CUtlString( szPath ); +} + +CUtlString CUtlString::operator+( const char *pOther ) const +{ + CUtlString s = *this; + s += pOther; + return s; +} + +CUtlString CUtlString::operator+( const CUtlString &other ) const +{ + CUtlString s = *this; + s += other; + return s; +} + +CUtlString CUtlString::operator+( int rhs ) const +{ + CUtlString ret = *this; + ret += rhs; + return ret; +} + +//----------------------------------------------------------------------------- +// Purpose: concatenate the provided string to our current content +//----------------------------------------------------------------------------- +void CUtlString::Append( const char *pchAddition ) +{ + (*this) += pchAddition; +} + +void CUtlString::Append( const char *pchAddition, int nChars ) +{ + nChars = Min( nChars, V_strlen( pchAddition ) ); + + const int lhsLength( Length() ); + const int rhsLength( nChars ); + const int requestedLength( lhsLength + rhsLength ); + + AllocMemory( requestedLength ); + const int allocatedLength( requestedLength ); + const int copyLength( allocatedLength - lhsLength < rhsLength ? allocatedLength - lhsLength : rhsLength ); + memcpy( GetForModify() + lhsLength, pchAddition, copyLength ); + m_pString[ allocatedLength ] = '\0'; +} + +// Shared static empty string. +const CUtlString &CUtlString::GetEmptyString() +{ + static const CUtlString s_emptyString; + + return s_emptyString; +} diff --git a/tier1/utlsymbol.cpp b/tier1/utlsymbol.cpp new file mode 100644 index 00000000..385ccaf9 --- /dev/null +++ b/tier1/utlsymbol.cpp @@ -0,0 +1,397 @@ +//========= Copyright © 1996-2005, Valve Corporation, All rights reserved. ============// +// +// Purpose: Defines a symbol table +// +// $Header: $ +// $NoKeywords: $ +//=============================================================================// + +#ifdef _MSC_VER +#pragma warning (disable:4514) +#endif + +#include "utlsymbol.h" +#include "KeyValues.h" +#include "tier0/threadtools.h" +#include "tier0/memdbgon.h" +#include "stringpool.h" + +// memdbgon must be the last include file in a .cpp file!!! +#include "tier0/memdbgon.h" + +#define INVALID_STRING_INDEX CStringPoolIndex( 0xFFFF, 0xFFFF ) + +#define MIN_STRING_POOL_SIZE 2048 + +//----------------------------------------------------------------------------- +// globals +//----------------------------------------------------------------------------- + +CUtlSymbolTableMT* CUtlSymbol::s_pSymbolTable = 0; +bool CUtlSymbol::s_bAllowStaticSymbolTable = true; + + +//----------------------------------------------------------------------------- +// symbol methods +//----------------------------------------------------------------------------- + +void CUtlSymbol::Initialize() +{ + // If this assert fails, then the module that this call is in has chosen to disallow + // use of the static symbol table. Usually, it's to prevent confusion because it's easy + // to accidentally use the global symbol table when you really want to use a specific one. + Assert( s_bAllowStaticSymbolTable ); + + // necessary to allow us to create global symbols + static bool symbolsInitialized = false; + if (!symbolsInitialized) + { + s_pSymbolTable = new CUtlSymbolTableMT; + symbolsInitialized = true; + } +} + +//----------------------------------------------------------------------------- +// Purpose: Singleton to delete table on exit from module +//----------------------------------------------------------------------------- +class CCleanupUtlSymbolTable +{ +public: + ~CCleanupUtlSymbolTable() + { + delete CUtlSymbol::s_pSymbolTable; + CUtlSymbol::s_pSymbolTable = NULL; + } +}; + +static CCleanupUtlSymbolTable g_CleanupSymbolTable; + +CUtlSymbolTableMT* CUtlSymbol::CurrTable() +{ + Initialize(); + return s_pSymbolTable; +} + + +//----------------------------------------------------------------------------- +// string->symbol->string +//----------------------------------------------------------------------------- + +CUtlSymbol::CUtlSymbol( const char* pStr ) +{ + m_Id = CurrTable()->AddString( pStr ); +} + +const char* CUtlSymbol::String( ) const +{ + return CurrTable()->String(m_Id); +} + +void CUtlSymbol::DisableStaticSymbolTable() +{ + s_bAllowStaticSymbolTable = false; +} + +//----------------------------------------------------------------------------- +// checks if the symbol matches a string +//----------------------------------------------------------------------------- + +bool CUtlSymbol::operator==( const char* pStr ) const +{ + if (m_Id == UTL_INVAL_SYMBOL) + return false; + return strcmp( String(), pStr ) == 0; +} + + + +//----------------------------------------------------------------------------- +// symbol table stuff +//----------------------------------------------------------------------------- + +inline const char* CUtlSymbolTable::StringFromIndex( const CStringPoolIndex &index ) const +{ + Assert( index.m_iPool < m_StringPools.Count() ); + Assert( index.m_iOffset < m_StringPools[index.m_iPool]->m_TotalLen ); + + return &m_StringPools[index.m_iPool]->m_Data[index.m_iOffset]; +} + + +bool CUtlSymbolTable::CLess::operator()( const CStringPoolIndex &i1, const CStringPoolIndex &i2 ) const +{ + // Need to do pointer math because CUtlSymbolTable is used in CUtlVectors, and hence + // can be arbitrarily moved in memory on a realloc. Yes, this is portable. In reality, + // right now at least, because m_LessFunc is the first member of CUtlRBTree, and m_Lookup + // is the first member of CUtlSymbolTabke, this == pTable + CUtlSymbolTable *pTable = (CUtlSymbolTable *)( (byte *)this - offsetof(CUtlSymbolTable::CTree, m_LessFunc) ) - offsetof(CUtlSymbolTable, m_Lookup ); + const char* str1 = (i1 == INVALID_STRING_INDEX) ? pTable->m_pUserSearchString : + pTable->StringFromIndex( i1 ); + const char* str2 = (i2 == INVALID_STRING_INDEX) ? pTable->m_pUserSearchString : + pTable->StringFromIndex( i2 ); + + if ( !pTable->m_bInsensitive ) + return strcmp( str1, str2 ) < 0; + else + return strcmpi( str1, str2 ) < 0; +} + + +//----------------------------------------------------------------------------- +// constructor, destructor +//----------------------------------------------------------------------------- +CUtlSymbolTable::CUtlSymbolTable( int growSize, int initSize, bool caseInsensitive ) : + m_Lookup( growSize, initSize ), m_bInsensitive( caseInsensitive ), m_StringPools( 8 ) +{ +} + +CUtlSymbolTable::~CUtlSymbolTable() +{ + // Release the stringpool string data + RemoveAll(); +} + + +CUtlSymbol CUtlSymbolTable::Find( const char* pString ) const +{ + if (!pString) + return CUtlSymbol(); + + // Store a special context used to help with insertion + m_pUserSearchString = pString; + + // Passing this special invalid symbol makes the comparison function + // use the string passed in the context + UtlSymId_t idx = m_Lookup.Find( INVALID_STRING_INDEX ); + +#ifdef _DEBUG + m_pUserSearchString = NULL; +#endif + + return CUtlSymbol( idx ); +} + + +int CUtlSymbolTable::FindPoolWithSpace( int len ) const +{ + for ( int i=0; i < m_StringPools.Count(); i++ ) + { + StringPool_t *pPool = m_StringPools[i]; + + if ( (pPool->m_TotalLen - pPool->m_SpaceUsed) >= len ) + { + return i; + } + } + + return -1; +} + + +//----------------------------------------------------------------------------- +// Finds and/or creates a symbol based on the string +//----------------------------------------------------------------------------- + +CUtlSymbol CUtlSymbolTable::AddString( const char* pString ) +{ + if (!pString) + return CUtlSymbol( UTL_INVAL_SYMBOL ); + + CUtlSymbol id = Find( pString ); + + if (id.IsValid()) + return id; + + int len = strlen(pString) + 1; + + // Find a pool with space for this string, or allocate a new one. + int iPool = FindPoolWithSpace( len ); + if ( iPool == -1 ) + { + // Add a new pool. + int newPoolSize = MAX( len, MIN_STRING_POOL_SIZE ); + StringPool_t *pPool = (StringPool_t*)malloc( sizeof( StringPool_t ) + newPoolSize - 1 ); + pPool->m_TotalLen = newPoolSize; + pPool->m_SpaceUsed = 0; + iPool = m_StringPools.AddToTail( pPool ); + } + + // Copy the string in. + StringPool_t *pPool = m_StringPools[iPool]; + Assert( pPool->m_SpaceUsed < 0xFFFF ); // This should never happen, because if we had a string > 64k, it + // would have been given its entire own pool. + + unsigned short iStringOffset = pPool->m_SpaceUsed; + + memcpy( &pPool->m_Data[pPool->m_SpaceUsed], pString, len ); + pPool->m_SpaceUsed += len; + + // didn't find, insert the string into the vector. + CStringPoolIndex index; + index.m_iPool = iPool; + index.m_iOffset = iStringOffset; + + UtlSymId_t idx = m_Lookup.Insert( index ); + return CUtlSymbol( idx ); +} + + +//----------------------------------------------------------------------------- +// Look up the string associated with a particular symbol +//----------------------------------------------------------------------------- + +const char* CUtlSymbolTable::String( CUtlSymbol id ) const +{ + if (!id.IsValid()) + return ""; + + Assert( m_Lookup.IsValidIndex((UtlSymId_t)id) ); + return StringFromIndex( m_Lookup[id] ); +} + + +//----------------------------------------------------------------------------- +// Remove all symbols in the table. +//----------------------------------------------------------------------------- + +void CUtlSymbolTable::RemoveAll() +{ + m_Lookup.Purge(); + + for ( int i=0; i < m_StringPools.Count(); i++ ) + free( m_StringPools[i] ); + + m_StringPools.RemoveAll(); +} + + +//----------------------------------------------------------------------------- +// Purpose: +// Input : *pFileName - +// Output : FileNameHandle_t +//----------------------------------------------------------------------------- +FileNameHandle_t CUtlFilenameSymbolTable::FindOrAddFileName( const char *pFileName ) +{ + if ( !pFileName ) + { + return NULL; + } + + // find first + FileNameHandle_t hFileName = FindFileName( pFileName ); + if ( hFileName ) + { + return hFileName; + } + + // Fix slashes+dotslashes and make lower case first.. + char fn[ MAX_PATH ]; + Q_strncpy( fn, pFileName, sizeof( fn ) ); + Q_RemoveDotSlashes( fn ); +#ifdef _WIN32 + strlwr( fn ); +#endif + + // Split the filename into constituent parts + char basepath[ MAX_PATH ]; + Q_ExtractFilePath( fn, basepath, sizeof( basepath ) ); + char filename[ MAX_PATH ]; + Q_strncpy( filename, fn + Q_strlen( basepath ), sizeof( filename ) ); + + // not found, lock and look again + FileNameHandleInternal_t handle; + m_lock.LockForWrite(); + handle.path = m_StringPool.FindStringHandle( basepath ); + handle.file = m_StringPool.FindStringHandle( filename ); + if ( handle.path && handle.file ) + { + // found + m_lock.UnlockWrite(); + return *( FileNameHandle_t * )( &handle ); + } + + // safely add it + handle.path = m_StringPool.ReferenceStringHandle( basepath ); + handle.file = m_StringPool.ReferenceStringHandle( filename ); + m_lock.UnlockWrite(); + + return *( FileNameHandle_t * )( &handle ); +} + +FileNameHandle_t CUtlFilenameSymbolTable::FindFileName( const char *pFileName ) +{ + if ( !pFileName ) + { + return NULL; + } + + // Fix slashes+dotslashes and make lower case first.. + char fn[ MAX_PATH ]; + Q_strncpy( fn, pFileName, sizeof( fn ) ); + Q_RemoveDotSlashes( fn ); +#ifdef _WIN32 + strlwr( fn ); +#endif + + // Split the filename into constituent parts + char basepath[ MAX_PATH ]; + Q_ExtractFilePath( fn, basepath, sizeof( basepath ) ); + char filename[ MAX_PATH ]; + Q_strncpy( filename, fn + Q_strlen( basepath ), sizeof( filename ) ); + + FileNameHandleInternal_t handle; + + m_lock.LockForRead(); + handle.path = m_StringPool.FindStringHandle(basepath); + handle.file = m_StringPool.FindStringHandle(filename); + m_lock.UnlockRead(); + + if ( handle.path == 0 || handle.file == 0 ) + return NULL; + + return *( FileNameHandle_t * )( &handle ); +} + +//----------------------------------------------------------------------------- +// Purpose: +// Input : handle - +// Output : const char +//----------------------------------------------------------------------------- +bool CUtlFilenameSymbolTable::String( const FileNameHandle_t& handle, char *buf, int buflen ) +{ + buf[ 0 ] = 0; + + FileNameHandleInternal_t *internal = ( FileNameHandleInternal_t * )&handle; + if ( !internal ) + { + return false; + } + + m_lock.LockForRead(); + const char *path = m_StringPool.HandleToString(internal->path); + const char *fn = m_StringPool.HandleToString(internal->file); + m_lock.UnlockRead(); + + if ( !path || !fn ) + { + return false; + } + + Q_strncpy( buf, path, buflen ); + Q_strncat( buf, fn, buflen, COPY_ALL_CHARACTERS ); + + return true; +} + +void CUtlFilenameSymbolTable::RemoveAll() +{ + m_StringPool.FreeAll(); +} + +void CUtlFilenameSymbolTable::SpewStrings() +{ + m_lock.LockForRead(); + m_StringPool.SpewStrings(); + m_lock.UnlockRead(); + +}

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,npifrZ9BP}mZN%TQU!$zc8xos~$ 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

c}e1|Js z-pnCL>|+SaeX$o zU&7^HG_fdCxQr2m#}pnWfJ2?aNk4M`qC?^NLX6{G3MYDbzvDrL%QJmSCht^>{PLcN zDG=fXm-m&X5uk8+AH?zC^1e*MgD<8Af^fG7m-lFX>A~eanu8u(-rvdNhC$I(UU|Ri zScQ{53-F^L{RzXiQYsw6@mVj9m&ABucS`%kst**gR(?uIrlS(P3_+q`bVjeMO?aj&|!< zv2m6134u%Gb6=4NCOnNdCdhE#;`m6#3IvE9|O&8 zuB)$3#IW~6qB2ognU;Tma%RrLM?|Tj$aWD%Av3H9wvfCThlz+3$50oI*gxSG-ghZ7 zvwYz)Y`;>sprvue{43(kwKqf}i&kJ$mK&~UZA=JN@qi{v%iCL9jmk6mPnlNH*haOn zAW@TOtW~OKTEE;VPwY@LA3_9E6*uU53Tq*u4uy@|BvwFA$#PLqko zlrXSjGI{t_G^#F;^`F^d0`t8bJ1#Z1#^(8yV9J1{!tByCuwY7cW2G&OuL2{esewue z*cU6_ymTq;6n1l4qJDWbuI&C#D&c_U|IF%%MCLccB%U2RihZKle~ zmo+xk{iTG!?nqQ=DH)cuwej{gX6rXt&{YFNUu8+#Etj-6G}O0hBWp|4v?kiI6Wr3) zW*n-k;+I_#jaOH{iDe5~Xb(2XZT5;=QV+ANuBBc2s3b?QN1ZM}wfW2$$(x$0QqfO4`iSs%>CqRTr{TDr{m&b0rvl%x|YV>=0(>qZQ4GwEgb9`_f4}vH4@CGEA`{ zR_2Ia8m;5mvycRuUt|hZCe5SG=9tVenB3I;Wv$4-o5pYAJ|!~09z9?^Mh-iS*+EUD z@=Fq#K?3F zuKNp=VoHScZHt24W9K!~R)W|?7F*p#s^=%>F9}Vio!Y2?nRR6sKDD%s-rNP%KC|Wp zQ>*nzX_%NQ{WI5%H6l|6NFJXuebL+n^D4_@vtpGM)$z-!s$z4is>?5nUp7C4tLm!C zxs~&yaZ`)R;v&=9s#{bqQt2g_GQF*O36^QiSjT$TL>c?nm2%G!!#cQ?)?oE@(YCh6 zr7L0$Gg4dXP0L6&WhylI$LybHSM`7V|61H^<69MJOt$a?#vXlh3KV=>DMg!&`wfKg z>j5dejL+UYCIy)jeea5ZPmnp^vPdJmk8cRx%{L%ph^2cbaz9e;okZ}wU*F#nCRg$e zTDnI>fzs1`RLM(@w}GjVpO~vq%n9k;bRE3%uR=P*%ah)T+EflFru^v^%#q4p=OaJ8 zH!E_>aWwSjCw~jee-Gy`2e14miT*wEZ)W*daYB-xWcSMdPk6C{^7kYUje=cKD7J^x zf00{&p!#d^DgT8?BEC^U3&D?0lp*ygU_9;v+vbHXwi#`3Qt<_M&Jx_^75^55Yj|74^Wz00u|dh?UNg#|qeX>{<){}9sq$$zli zrjmY&5xk zRQ~V#$Uhb7MQ%C%8yc0L{Kb5;UcMV=F*5A`2T1QH|Go;FVlgKq`RP9Sk;?y|kNgCQ z+;Uty)L;J1{7~UvIe$5L?dKMx_mjV*(xxcpgd{&b?>kcYxB19F0qI37^(kW`Ckvv|K7MwqUHYrpd*$4_dfEUi}WJ5 z93RGspZ>Q{V?!|hk?g7Y@0FkS&@;R+4(O0K*IpgQ{DK1MpF}!R`HeFn(9@iQ0;Mm; zPvn;4`8e^Fe;lP6@ZVvtGW-7-NN;#~uc-s?@66cXlL z=lq)U*UzqrkEEAl(EPW6>tEz0`=$3`L|1bBA@pa;@3lY9U(!?F6g*_1p!^Gc@}GqC zlCK=6A%oA8zgM21{3rP2f2~jcSpnrYA5Bq#JsEoKZ#+m~0vYu$={?E4>_UY|E4sjG zDja6})$`Xf#0o#bgUVmb<=5?>-iwjE5a2c$Q=Jcf~X zg(VO<$^Odm6Mll{Au-u9^=&%jbN=!^l*EbM%kigRDCa^$$0|;*F*^6sZnEpY7LWKL zhtua{eAEHirG-ve|D~a!P$8FpGj|MB{wn+=y_Elk5t(g@Se0@8EdzfFBsbNcH~s$x DokP-P literal 0 HcmV?d00001 diff --git a/lib/public/win64/tier1.lib b/lib/public/win64/tier1.lib new file mode 100644 index 0000000000000000000000000000000000000000..3b8803e034ce3eb2ee44e7dccb83540f7cdd842f GIT binary patch literal 3027898 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­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