Path: utzoo!utgpu!jarvis.csri.toronto.edu!mailrus!uwm.edu!uakari.primate.wisc.edu!brutus.cs.uiuc.edu!apple!sun-barr!newstop!texsun!texbell!nuchat!moray!urchin!p6.f506.n106.z1.fidonet.org!Bob.Stout From: Bob.Stout@p6.f506.n106.z1.fidonet.org (Bob Stout) Newsgroups: comp.lang.c++ Subject: Re: Newline hook needed in streams Message-ID: <7142.259593A2@urchin.fidonet.org> Date: 24 Dec 89 00:53:17 GMT Sender: ufgate@urchin.fidonet.org (newsout1.26) Organization: FidoNet node 1:106/506.6 - Fulcrum's Edge, Spring TX Lines: 22 I've written an I/O stream class (actually it hasn't been fully "classified" yet since the initial application required C rather than C++) which allows user-installable stream filters analogous to internal pipes which could offer one solution. Currently I've implemented everything from simple case conversion filters though data encryption and compression/expansion filters. Filters are stackable with some restrictions. For example, one of my test files performs case conversion prior to encryption by simply installing the two filters back-to-back after the stream is opened. In another application, I wrote a screen capture utility which had to work in any PC text or graphics mode (there are a bunch of them). I used the new stream I/O to write the captured screen out and after everything else was debugged, I added one line to install a simple RLE compression filter which dropped my 115K EGA screen dumps down into the 10-25K range. As a general purpose package, it's surprisingly efficient as written, but I'd really love to give it first-class library status by removing its reliance on an underlying layer of existing code. It would be fairly easy to do with Zortech since I'm a beta tester for them and have their existing library source, but they haven't shown any interest in pursuing it after having been given first crack at it - any takers? If anyone is interested in parallel or co-operative development, the structures and installation mechanisms are published - contact me either at the address above or rbs@lnic2.hprc.uh.edu.