www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.announce - zlibstream library

reply Dan <ddaglas gmail.com> writes:
All,

I cobbled together a stream class which compresses/uncompresses data on the
fly.  It comes in handy when transmitting compressed data over a socket via
streams.  I hope you find it useful as well.

Dan
begin 644 zlibstream.zip

M4$L'"``````"`````````%!+`P04`` `"`#DJYHU````````````````%```

M+DI-+$E-T76J!`F8ZAG$&Y J:`27YBGX9B87Y1=7%I>DYA8K>.8EZVGR<O%R

M````;6%I;BYD74Y-2\-`$#TWD/_P"!02:)-[ X(BGKR)"(J'[>XF&=S,E-V-
M]0/_N]FVE.)A>,S[F'E- YLI#N(WN%,\3^]4R+.FP0-IR\%NL)NVCC2,C(KX
M(#TKS
MK1K;"S9$4\]#TOZCSL8/(8-4HJSPDV?`XT'#T8(KL-WC=NHZZZTY:F6B7N9_
MIS7/%I>F>W*V]$6T(=;Q,]:I65&ETU75)NADCND!Y>2$>SABR[*"'I1_?3NL


M;QLW$OYL`_X/$P/7DQ)%4IQ<>K"B`&USN19(FL,E08$&AK':I2PV7%)'<NTH

MS>"9S(5VXA2VU4K)'`I39E+SU$^9U5)?G((V^N[6FJ+*O30:<E.(*<!K)R#S

M.*?E:-;B`$U<&PNE*//MCJ0*L:HNH"/K92E8PPREOS/EU KG\!"S2N?M-PB;
ML[HG4#E4S

MG]&VEV'Q*3R5R L;O_YZ=`BPM?(R\X*^D&N_??'J^_:`K`%_9TJ9'*6*(.0,
M^`TF 5S/_$9 :FQ$_A:E+C(R#ZXV`H=MD!62/L.5L*)5`QE^(_.UP&U<9G?3

MC8=`O9#EOLH4
M:''`*G*C/;H%CV36&"W-QZGW0D](O:T\%)G/$ 6F\C=H:.U%'2B>*%D9H^"<
MT B6L,Z4HU*(HU?68*S;88`/],-OI!O%K`B'FL#PB,N3^8._A E*^,& NE3+

M+Q!SGE>852L!CY?P\`%^Q]'E,7RL486JQ9N7_*&WZWB\B-:T%L.C)<QOMN5:
M$+C>N/D-MK4V!+M<A04["O;R`,5AVG/Z,,VZF8K1I!/4F3S"*+"N?D9'N3;G
M4W,8+`\H9[*5H 3QMN*T(:02O3$GQ-LX5.<1EP2JBIN$/)Z?D73(Y>%$*' ,
MC1*70H%T `PBUU(4$V!4D9X&J>8C7*9E$W.=(HL'AEN8&1S2)L.CL9S ]`OW



M/C=U-JZH]BEUOD5T?SNZ-% \MU'=6MA)F*1J&9,>='[P')XF0STX:7!3"`ZA
MVFH.J1'Z<Q^%:\*A^ AL0_Q'56=%B585<(4T$X7IZ'>M4`+#S-Z2"K&SD%9 

M18^.T(>5\N/FR-10:7&1D140)G&W+9K%Q!HW"!./EZFVE2EVK";*W`IIWN8/
MHSU%C^LU-";D!Y>5=>L0, IUU-2PK\23>F;F40JMXV*C2C4:_=10=I`9X3CO

MX/24C5PKK*W;[;]037T!LF3YIZ+.ZJD2^L)O<.1XPE;V)EC'AP!AB"9\CL<]

MA;.R7WHG[AH!?-)T++B)=\3(-\E1Z4)8M6.`X(WX4$3DB+Y+8'::MH4=-&Z]

MW&8T3ES'D>RG3*H_N*\="8L/VHO%M'1*B.WHWGP^#Y,?: ]LJ3V+ODW(RHMW

M"S$-J17\2]$-'L;3G<7L)UWO"- B+D5K&S/9P[=A%12U3K\]#B


MJ%'^U^GZ%(;$3/.1D>(UP<%6X2]*N5J`SN)%<]UM!-L,K:5OYGGVR_^)_GJB


MBXZ>',WK`7X/[O<Q">\U7C37= 0([GHVF"VC44IU26[C5L$<^A!Y8(QM0:">
M:$BY[6$I  X-)H 3P8%!+\&'^M%EC1"G `N)-W^*B;:K#T>NB+?ISS4[]>+0
M[!"%(06 V5V ;.WLX0%;&CFUN>>'5.0=DD-\*DQ!P\_G3U\_>W;^]-GKE]\G
M]^&$LS]M1ZZ,$W^`'>G>46>]]\'1X0>Z.>YY27L9.Z:CPTH3O&+]_!KOF:M*


M`MP!W)O7=)\<'KN=]EM<%U\  _=ZW5/RZA%MNPX)1JW>]*[=6UUW>X\3+$]L
M:+LWCL'0F"054/8\,FMP3CLWHJ_/D;CL+ [TS`BIUZGI5AVWWE3220EWXOXQ

MIG5,LOM?P`;"XR"+/56ZVQ=I:L1)U[CI\U``&ZQL153?MAW4/H0^7!,)8L/5
MO$,EAT?&Q+Z"+^K4MY694B1VYX_R5'VP=F2O&X9BYR?U&>_,AFEKQ=TF;SN9
M$OZVX9L_34P&:<Y^:?Z4D=S)QE&6^)T&Z5;/PEVC4"A-="CK]\9.^K/E2>T 
M6UY;.Z4;IV_JU!?T:SXU85!(K>[`D-S0==DPTN%^/NS<'!)ER962>NL9/'G^
M!.;3>U]_/6''T(6?02.4W&F0.[B;O+QV_`O\BH -%.,K$IRQDV9-1[!MF5U5

M(H(?7[P*3SC8#I:9SS>WFAM? _G[T;:Y]NW'9+X(+H<<A.-<4U14?`6[]ND_
MO`M0&>6L[1.RP[W3Q2?A4OJ9B]E$7MY49ELS_1KKU5<,:H<=F;539$^R8+!U


M````" ```%)%041-12YT>'2%54UOVS 0O0O0?YAC"]B*FP5ZZ*E)[*0&F 1(
M'`3;&RV.;"(4J>6'O>ZOWS>4';B++A;P 0)GYLU[\X;^8<WZ.056/>$45#A0
MYP/-:4I/BZOY_0*'56;Z='EQ^?GB<C;[3'4U5X[F:F-5Q*W6Y?1UTRMCF];W
M=557JRV_U_-=QR%2=K ;`L=HO)OBE[8\[>R!C!MRHC VH9RNJ_\(]#F=1;9J
M4&MC33(<*7F:-T3S":T/I+E3V:9)70W![XS&?4RZ^8F&FIMC:0&B%_?^V8)"
MY( :UP<"8!_9[CBB!CY0TI/S ,[#X,.I!>,VB%]M33QQK:M]4`.*O],)/ ,(

M&<MH&R'&)0Y.V9*TSC*&"6&XO&-'?L=!^O3M&Z?FWS/;8[0:<=8/`)6.$\>$

M36=: FX9G-[!94"C; U.=!R>!H\BX$\S0,]V:W8LJ2(*J`JHX$G$U#AKH,DT
ML(4N.#Q29]5&QKKR%/B8,Z%>O7%=K;.Q.I;4$W%UG!;,[)J1M32R"6B*2IJ$
MUI5W$%T^?TE'R+W7IBL6HOGM]ZN[9T2UP9](W"-%) 1?^1.%4;#I9D+3[$P2
MS(DT<H%9336O\Z9(=!6I9Y>P%*,FK&"8Z'.`PF7H`(`N^`UY;:&O]L("*)H;
M47B\%!^#D

MP8!L\N+]E(,[6ZU6G$5;A:DK:;PK&\5P<YO$CCB9UK!K\9)T95T)=H.Y&6&^
M.T<Q93.MWZ.HB[GG,!JCQYIM5.(QV\28(>9R]$LO962K!W&PW`.> SW(Y[%N
MF9^JJ^NR8^-S6D2;+ZY?[NCUZNEA^7#WY>3S,M(BN(SQS/4RUM9F>;`4R7)'

MX![/P5$IW;1-,CTW?;3,PX=/L]GL8ZETVL/SAL_\5QC_YM_ 'U!+!PB`$V:D



M``````X```!Z;&EB<W1R96%M+FQI8NU;?W`35WY_:QL08(()0AAB I(LQ`2'
M2"",'$QB(UF08,?&= R8'T)8DBU;MH2TDB$8HHLA9['B`EQ*<W>A!^UR)6W:
MIKVT)3G:<C&!7*?3N9OIY,)09NX/:W4IM'.]WF2NDYM3O]^WDK4K=KW.=3*=
MMK<S[ZO5OL_W^[[O\]Y^WMNU_+-YA- )*24,H4?B`5+^4C!P(,I%?)[!-5XR
M-I.0\QN&6NG)1<;11<[5$%+F:F[LG.'N;-K96>9H=3;-<#L;.QO+T,QPM+[0
MT5GFWMS140J%?&,V><L"T4O+&#P/I$H)F3%3.L<69\TJG!MF,^2;):2$G.LD
M[6ZGU5)(Q6KIAO,.>K[>W<.%(BTNQ[HHYZV5ZFNEJD` T.W0\B-72\D<0LX]
M3>S:P6U1GV^ Q15LD 7?T`'7VD+1;AIB+H1XDJS6#E$'QKLY&.J!.&WQ >X!
M]"H'KZ?(D]I>5LMP),#Y%'XI$UGH=GO= Z&A`'39W><9\ 9]$8(!8>3.K2$U
MN %=L6#P<(NKL:\[CFX/ -M*PD[!KC\8B_:UN"3X?%UX3S`4]>7A%7EN<NQY
M/9%>J\WM[JR->]QPWMGHZ<Z=NK:UQ;L;/>BU`+R6D,70B+7S<-CWW)`_Y&X+

M4(Y8HH;PRQ%+U1!>.>(A-81/CJ "Q%)2"8BU!42C1PY9I J)R2$/JT*&Y9#E
M:JDHVC'K39NV &+:M`70ZQ%=KZC2*XI>C^IZ]2J]>M'K,5VOH-(KB%ZLKM>`
MTHM*Q0I=+T[IQ:'72EVO/J57'WH]KNLUJ/2B$EBMZ^57>OG1:Y6NEU?IY46O
M)W2]?$HO'WJMSLNMW&N]W*M(B=HD*:K1;:W(C7H]J=]:K*BU&/JMT?<;+O(;
M1K^GP*^1/#OI1T79MCGF]_LB/F]._N$&ZZSKQ+6H.3#DZ_1TV_/GL!IX<M)K
M^0TBQ1218MU27ZP0:359I>S+.EE?#BAZ< !]UNKY*,FF&:_3\U$R37.SZ?DH
M6:8<K]?S4<H$58E:/1_E+4COP`UZ/DH1HQIFU_-1" 35ASH]'Z7$4H5]6L]'
M*5]4O3;J^2B%DNIDO9Z/4H2H!FT"GSJR0>&SUB+S<=2V'NCW]2BIR%_$",_H
MWNMQY<U'MSC/ZN6JE#ZJ
MK.=S4.%S$'T<>CX1A4\$?9QZ/CT*GQ[T:=+=*2K);Z3DNW2]E'>_)$U;=+V4

M8^?*2:FK97.)JP4^FNBC%%Y^3GI\>JL,SI_/G>/U;7">JB9+I7[:L`7K6K>[



M7._3N#X :_NUHKJ AD]4XWJOQO7"L]A4 VJU1GQ1']<1BD5ZI"="DCI"ZJ;P
MJ(WFL"J/\N"^7.&:NUX;B+;"!('X!XHF8PZPSA?RTUJ2.IF?V4J$+1IX"1,<
M)(^H5=O#H6B`"X2&*.11'0 FJAIF`[Y):!KRMKB"$(:DCDT!<\0B$DP;TN'C
M),AZU81Z0N'#KDAH4)7+03H6"6+[XJ[ N44U)_IRP7\(=H`.>WZBM,4#W0[%
M:+?&N'",R[U_055X6C4%*5 0Z-PUA;]==3Y(OE-[DA2G3FUM.`+ZX<<=\:X!

MU\X'54VR;A*6BT927R5F->1ZBLS%FAKAT;H'\XAA/8!$PHFI0;K-]. !(GJ`

M>E%Z=6=R']RVZC>B='\U'?+T<-)6!!-Z2;:95=F\>.*>0-!S((AKR`!Y6+5E
MW." *`6*ELR\[L1S`(5ZPE,7CHKZ(A`;ZO5Q/<-X4\74NULK0?".\FBDE0L!
M$=171LD?W$GJJ)9T8>:3.C>`>VP-Z2H`*<Y3Q&J^8Z%P8SB,[ZB=KFV#VT"7
M`I2'8^KM*^`Y\+3B>BAT&C$]N02B9(6JU$9R+S]VY-]^/*8'0Y"J;-_W2 ;W
M+.H[C (2<:KC;T-,B^MY;6F?1&AJ;AXQ/)5"Y$$QO2BZS6A*>QX0F4X>!_6B
M:$I['J`I[7E`:#IY^/2B:$I['J`I[7G`X'3R".I%T93V/$!3VO,`;CIY1/6B


MA$6Y5!601K>SCI[B2C/YM+QB"E_97_:FA!7^7DA2`V3-5`^(*G_B+)]\[N_Q
M<&2>V^T[U.,+<^Y (,J1!^5__/2%`\%0+YGE'O0-]H0/0VMQ^`*`(=^P$AF.


M>$?A*GFH,"PP[R8G("0"$W`1S(U)J*R],RL)4[*LZ&V5\HU/<RF^>;I8R]`7
M5J/7)C[]?_'I9,N*ST[#H?P&WW7BD//?(T*9B4D<%\K!C I&L*\(56"_(K! 
M$T(-V)<%FXDY)M2;F*."T\2,",TFYHC0:6)>$O:8F,."U\0<$H(F9EC 3$Q<


MQ5GDXMG2$OI"<BCN"0:\YL"0-$?,!V)^?,5B]D1ZUYC-+;$H9S[ ,S^SR5QK


M6Z&T0=D)93^4/BAA*(> )*",Y=I^`\H%*)>AO`/E"I1K4#Z"\D,HGT#Y"92?
M0OEYKM,54"JAF!F)BWNZ//SV^+*/PDPK7)L#I:$4?YI%R$BI-%]/ETX=AX[E
M^9K2B<L &N].W`/[EVF4E'?3U6"_F[X&]B_2<,LG_CS]$=AWTG#G)_XL_4.P
M?YK^!.R?I$$!$F^G?P+VC], !(D_2O\4[%MIC'8Y_3.P?YC^!=COI$$<$I?2
MOP(KB`3L'X H9;\O&L!>%%'0+H 58+\M8 Z_)U:"/2^BN+TIFL%^2T2)^Z:(






M^M#L1
MN8Q&0',!S9MHWD#S.IK3:%)HQM`<1Y-`,X+F$!H.31A-$$T?&B^:_6CVH-F)
MIA--&YIF-%O1.-$TH*E'8T=C0V-!4X.&8!=^B>9M-"DT`"XAXVMDB\6<MK:.
MKAW)<9YCJ_ 1UCR:;3C:B.I+)92,7B]+.MGR?H:_2;^WMV77XYJ276\O0(SM
M;;R3-=)O;=2>^.SE^X)40)`;DT%2-,A8<9!*61"^F663V\S\.+\P>S8!.2>/



M8*\)J#A_(V313AS%81M&8T>SE [ O((`,G-_0<;7RP:T?/2>T<LOHC123MII
M'[W)%?C1\2(,] T8:!L?9.TW7$[FAFLVJ3M6/W\4QV+TF(W$%O8SV;A%8L9E
M2W;9 89LW)Z-VW+C![.ER\Z[;.T=O*N&-V2W5\+PLLE.MAH(9$FL`B]79-NK
M\I>3>] :",JQ-5A.O5"_71K ?;;5>]AZ*5AI)UN?W"<U5V&]7;>OGEMZ(LN9
M^*X&WE5_LGSI6/EJ!UR-E]5]'OD7F$OTNC4+\=GV'7"Z>APF3,TIXY+VMESN
M]<DN&%4C#N7
M\!TX_;M+*/'O74(I_UYZ.4(F0"S*R'A&- KS1N]53L%ZGO0;KB8 W$#ZF1U2




M3LZ7$P''_Z\%F`LSE2$J"B'*IA'BKW(AEDF[8AIB05L';^"WE_%+1HDA^<GN

M[%`"%VL"VY7`2DW =B5PB2:P30E<J EL50(?T 2^H`16:0);E,!EFL!F)?!A
M3>`V)7"Y)O!Y)="L"=Q*QDVR:? (3,(%HZ2,_V!<6?&H5L5C6A6L5L4*K8J5
M6A6/:U54:U6LTJIX0JMBM59%C5;%DUH5:[0JGI)7_%Q681F]5T47YYO6?[T!
MFR7";['QK99D,VM<_7U^1PWOKH85T BZ5XD"G_P8]+#RE/$!^&+>^''<<_+A
M[!9+XO,YW*S$"'AS"Z2/(W IGFVUW#V8^'Q>;!:&9N[6;`RRENBBL3TL>Q*6
M3PA%UYLQXZJ[%1W]S*EFUKX]MY4J;W)MY%ASY-O\37YQ]BP'.XWL<$UVN#JW


M^4_^&'I /F6<CTOIQA_/?_5;$.[DK&R39<QI,XW^FHG. BPJ7'>'\</ZF1_ 

MH6?1A318?L7V)\N[[U9L[R\YU<G:V_,4.M!YR\81MGK^*SZ)F!:2/4.YC-5D
M8]7\AW(N]]J2>^OYSX'+HPT+6IR?9G\-+C!N&FS^"-G\%653/M/6\H:3.--.
M%D_!=?**Q;(*&V_PJ\_:]5K3N5:KD0U:C= 5C<AKZC2;?UJK^8WR"OE:6J^R
MELKK-ZG4RP,_H]7BL_***EE%0QMON,7<JF*A\E89BP'-LNK&T7OEO.$.<P<!
MACME+$R+(LAF"KF]ZG8]0,IOU^0 JV40!X5`,XUEM_:P9;0U`[1VR\F6W8]V

MNG0(WJ)3O_7^^HMSR$RLH^_7S\^$!0J?=4Z6$.7Q[YO(?_NPDF!AD[1+4=6$
M9O3KO_&_R\$]/:U_'=/!3?Z%B='[\2S]D2* OLA_YS%DZC]QZ+\I_M][T($O
M[`&;UJJ!=LXM</,(\P7_AY&9SL^=F>G]>OK_\DC\#QZKBR\HGYE(UQ?Z)U,8
MI"_A?W=_._1?RO%?4$L'"&TZ7K>8$ ```#X``%!+`P04`` `"`"EJYHU````

MT"13\D-;3L^4`R"Q?Y(7MOS\>7_LERC5Q)J6-=8<ZWR+O)7VF&*;WO)XGM.R
M]'F*H6_G9KX]U]6^[-[S,.1+/QW*Y76-2S\,T::8TSDU:^KB9;?;Q=J/:;FG

M/OS?TS1-TS1-TS1-TS1-TS1-TS1-TS1-TS1-TS1-TS1-TS1-TS1-TS1-TS1-
MTS1-TS1-TS1-TS1-TS1-TS1-TS1-TS1-TS1-TS1-TS1-TS1-TS1-TS1-TS1-
MTS1-TS1-TS1-TS1-TS1-TS1-TS1-TS1-TS1-TS1-TS1-TS1-TS1-TS1-TS1-
MT_3?NJX>IQQCGE-TS=H\/-75#U!+!PBW>C#E.0$``'6T``!02P,$%``(`` `
M\$"7-0````````````````T```!T97-T+G1X="YZ;&EBJYCS]JROWV$''K8+
MM4ON''R3T'QJ6O$7)D[)6Q=4 C\Y1_N=G\*LL+%^DOBV/W\JZ]],U[AZ9-8T
MTVLRKVNZ]TS]-B-I]KU/%?,N;_I2V;4P_WG:/MOK5_>]N??9X(FWO>RIIZ6]
MWO8\%Y?-N&QIFOWJ4>KVVT=O]6?N7&X6*_[6;,ZK5_\>U=WC?[EUW:F8MO-K
MZZU=K9^?#BE:_W%C[W.AB?LO_>EN?_9;+-;NS_W+)KX#C[[<W[5.;KE,\KS 

M```````````````(````36%K969I;&5U4DU/XS`0/3=2_L-(<"!(\0^(M(?0

M%G\;P^LP.(&E%LK6*H%=4Q M0)9;KBTQ?WAEM=TD8$L;[ZI2-L+ITL);PXUV
M7R!*J1C`0ZV`._ JFPK*#PN5KE
MH\- :&MKM%405\HHCBGQ+=FNTL7-.K^;HH(F93(,EHL+K/9&%[6K%-\R1+Z[
MOKVX'C-E\8(1]'^*.#T[N$7P-PPF1T*TO7^\7\\7RXR4=UDZ6V7,?3J87J4W
MEUE..`SR=/6[5=#TGC\`MO=CA`$W!A(0N(0=)7IZ(K<2N^W6T8 _/<,5(G)`
M)3H,=8L.+=H2VQ-2Q:*3C: P:-,3RE,&SIGZ5#WV-^GPEN]ZW,WG\5X/_8*[
M[[Z0`Q0#Q
M 1IQI!&M9CIHO`_.B6>A2QR]I1\>N5''^[SP"L3[TS]BRO:?"%VQ_PJBX;+=

M````````"0`$````````````````````345402U)3D8O_LH``%!+`0(4`!0`
M"``(`.2KFC4!U=)S1P```$<````4`````````````````#T```!-151!+4E.
M1B]-04Y)1D535"Y-1E!+`0(4`!0`"``(`*2KFC4-DO9%]0```'<!```&````
M`````````````,8```!M86EN+F102P$"%``4`` `"`"GJYHU(IB&Z X*``#C

MHJN:-8`39J1K`P``8P8```H`````````````````-PP``%)%041-12YT>'10

M0TA!3D=%4RYT>'102P$"%``4`` `"`#DJYHU

MY3D!``!UM```"``````````````````7(P``=&5S="YT>'102P$"%``4`` `
M"`#P0


`
end
Dec 26 2006
parent Gregor Richards <Richards codu.org> writes:
zlibstream is now installable via `dsss net install zlibstream`

  - Gregor Richards
Dec 27 2006