From: "Thomas Søndergaard" Date: 2002-02-28T06:54:53+09:00 Subject: RE: RCR 65: IO orthogonalization, improved reusability This is a multi-part message in MIME format. ------_=_NextPart_001_01C1BFD9.0E783AE0 Content-Type: text/plain; charset="Windows-1252" Content-Transfer-Encoding: quoted-printable > Has this discussion stalled? Matz asked for a concrete proposal about > a "Stream" API but none materialized. I understand his request -- I > am a bit fuzzy on what this RCR is actually requesting myself. Yep, it has stalled. I posted the RCR because with rubyzip I'm faced = with the challenge of creating an object that can be used in place of an = instance of IO. Take any client-code that uses an IO instance. I'd like = to be able to supply that client-code with an instance of, say, = ZipInputStream, and it should just work. This is trivial with java.io = streams and possible with C++ iostreams. It is *hard* with IO. I feel that IO mixes a lot of stuff together, which is possibly nice for = client-code, but terrible for implementers of IO "subclasses". = Conesequently the RCR for breaking it into orthogonal parts, that can = easily be specialized and reused. Implementing a new datasink should be = a matter of implementing a very simple interface, e.g with two methods = write(aString) and close. It should not be necessary to reimplement = convenience methods such as puts, printf, etc. The same goes for data = sources. Cheers, Thomas ------_=_NextPart_001_01C1BFD9.0E783AE0 Content-Type: application/ms-tnef; name="winmail.dat" Content-Transfer-Encoding: base64 eJ8+IgIVAQaQCAAEAAAAAAABAAEAAQeQBgAIAAAA5AQAAAAAAADoAAEIgAcAGAAAAElQTS5NaWNy b3NvZnQgTWFpbC5Ob3RlADEIAQ2ABAACAAAAAgACAAEEgAEANwAAAFJFOiBSQ1IgNjU6IElPIG9y dGhvZ29uYWxpemF0aW9uLCBpbXByb3ZlZCByZXVzYWJpbGl0eQAvEwEFgAMADgAAANIHAgAbABYA NAAfAAMAYgEBIIADAA4AAADSBwIAGwAWADQANwADAHoBAQmAAQAhAAAARkY0Njg0MkYwNkQ4QzY0 MUFDRjExNjRCNEU3QzVGODUATQcBA5AGAOAKAAA4AAAAAwAmAAAAAAADADYAAAAAAEAAOQDgOngO 2b/BAR4APQABAAAABQAAAFJFOiAAAAAAAgFHAAEAAAAxAAAAYz11czthPSA7cD1TcGVha2FuZXQ7 bD1HUkFOQURBLTAyMDIyNzIxNTIzMVotMTM4AAAAAB4ASQABAAAANwAAAFJlOiBSQ1IgNjU6IElP IG9ydGhvZ29uYWxpemF0aW9uLCBpbXByb3ZlZCByZXVzYWJpbGl0eQAAQABOAAAd2ZS/v8EBHgBa AAEAAAAPAAAATWF0dCBBcm1zdHJvbmcAAAIBWwABAAAAPAAAAAAAAACBKx+kvqMQGZ1uAN0BD1QC AAAAAE1hdHQgQXJtc3Ryb25nAFNNVFAAbWF0dEBsaWNrZXkuY29tAAIBXAABAAAAFQAAAFNNVFA6 TUFUVEBMSUNLRVkuQ09NAAAAAB4AXQABAAAADwAAAE1hdHQgQXJtc3Ryb25nAAACAV4AAQAAADwA AAAAAAAAgSsfpL6jEBmdbgDdAQ9UAgAAAABNYXR0IEFybXN0cm9uZwBTTVRQAG1hdHRAbGlja2V5 LmNvbQACAV8AAQAAABUAAABTTVRQOk1BVFRATElDS0VZLkNPTQAAAAAeAGYAAQAAAAUAAABTTVRQ AAAAAB4AZwABAAAAEAAAAG1hdHRAbGlja2V5LmNvbQAeAGgAAQAAAAUAAABTTVRQAAAAAB4AaQAB AAAAEAAAAG1hdHRAbGlja2V5LmNvbQAeAHAAAQAAADMAAABSQ1IgNjU6IElPIG9ydGhvZ29uYWxp emF0aW9uLCBpbXByb3ZlZCByZXVzYWJpbGl0eQAAAgFxAAEAAAAbAAAAAcG/v4LYScC7pDVGShSe 5H4QoK3nsQAGEclMAB4AcwABAAAADQAAAHJ1YnktdGFsayBNTAAAAAAeAHQAAQAAACEAAABydWJ5 LXRhbGsgTUw7IFRob21hcyBT+G5kZXJnYWFyZAAAAAAeABoMAQAAABMAAABUaG9tYXMgU/huZGVy Z2FhcmQAAB4AHQ4BAAAAMwAAAFJDUiA2NTogSU8gb3J0aG9nb25hbGl6YXRpb24sIGltcHJvdmVk IHJldXNhYmlsaXR5AAACAQkQAQAAAPgDAAD0AwAArQUAAExaRnX40SaXAwAKAHJjcGcxMjXiMgND dGV4BUEBAwH3/wqAAqQD5AcTAoAP8wBQBFY/CFUHshElDlEDAQIAY2jhCsBzZXQyBgAGwxEl9jME RhO3MBIsETMI7wn3tjsYHw4wNREiDGBjAFDzCwkBZDM2FlALpgrjCoCQPiBIYQQgdGgEAKQgZAQA Y3UEEGkCICQgcwGQbGwJgD8goQXQYXR6IB2AawmApiACEAXAYSAFoG4FABEUIGUgcANgcG9zZwdA H5AG4HV0HPYgQCJEU3QYIGFtIhDAUMhJIGIhsCBuAiAg0KcAwA6wByJpegmALh8wuSMgdW4EgR6x JPAgHcKNGCBxClAesCAtLSSwJSHXbSAxYmkFQGZ10Hp6eSAegXcT4AVAYR2zUkNSIB3RANB0XnUe 0SfgJdULgGcjwHkxFBBsZi4c9Bz0WWX8cCwpAAVAE+AEIB61JJB/IyAhIQ6wH+AdsCDQKNJifQWQ YR5AINAD8B2wJcB1WGJ5egUgJLAnJyBm/wDQH9Euky2SE9Ee4SpQINA8b2YgUCKhKjMDkW9i/moF kChiKFEuMAOgLhAk0P8UEB/gC4Ag4AtgL8AxIgORJwuAJTI0BElPJJBUYTcfwDHhJ+BjJEAJ8HQt /wWgAQAyhC5RKSEDoDVQNIedLOEnH+AkQDWxdG8zEscBoB7wOQJzdXALUCfgvzKUNjkukzRsK+Ah QHkr4OJaBSBJbnAhsCKEK+BTJVIncXNoCGBsH+Bq6x5ABUB3BbBrNXEdwh3RGSKQaXYHMS6EamF2 /GEuHnAeoSKiN2If4CEhxwCQOYIuk0MrKykALTEvQZMs4QVAHdEqE+FkKu8uhDVRKvojIGYJ4AMg MpOxN7FtaXg3UjiwbwVAezExHrB1ASA5ATEALZFy/yvgKDAN4C7AHdFCNSfgAwD/NAEgAjYpK+Aj QiPxBRA5gvcgAgdwC1BlB4ACMCURNRS7ImA58GI2IB2AN0EiJJD/CFAjoBQQJfECMDozLbQgAvpi IqFrKkIncQuAOREXwZ0+kGcCICFRCrF0cyvgnzKXIrAAkCmhMyFzcAWQ/yQlPgMYIDNSLOFMljGz I3DNB9FkH2BTAW5rPnY5Qt8jwiPxMSJMh1WkdgSQJ+D/AJBMklDiBJAvoivgOFAqYL8wBD9AI8BI gQRwBCB3BRDZDrAoYSKBKkEpPgM2IP8hMDhSPmcjgAVAMyEjoC/A/wQQCsA6QTkgGCBMhyBSWSD/ AwAJ8DQBW2Y58EkhHYE9Yd9SMSDwUPE8kRQgYz+CU3H/IsAg0FGQB5EgAlZCHqAIYdtesSrrQy2g JREsKvo/oBUDcXMc9H1nwB4ANRABAAAAPQAAADxERkM4OTlDQ0UxNzc2MjRBQjZBMkYxMjFERDBD Qzk3NkI1NUJAZ3JhbmFkYS5zcGVha2FuZXQuY29tPgAAAAAeAEcQAQAAAA8AAABtZXNzYWdlL3Jm YzgyMgAACwDyEAEA/HcfAPMQAQAAAH4AAABSAEUAJQAzAEEAIABSAEMAUgAgADYANQAlADMAQQAg AEkATwAgAG8AcgB0AGgAbwBnAG8AbgBhAGwAaQB6AGEAdABpAG8AbgAsACAAaQBtAHAAcgBvAHYA ZQBkACAAcgBlAHUAcwBhAGIAaQBsAGkAdAB5AC4ARQBNAEwAAAAAAAsA9hAAAAAAQAAHMNBs+cnX v8EBQAAIMBCX5RzZv8EBAwDeP+QEAAADAPE/CQAAAB4A+D8BAAAAEwAAAFRob21hcyBT+G5kZXJn YWFyZAAAAgH5PwEAAABbAAAAAAAAANynQMjAQhAatLkIACsv4YIBAAAAAAAAAC9PPVNQRUFLQU5F VC9PVT1GSVJTVCBBRE1JTklTVFJBVElWRSBHUk9VUC9DTj1SRUNJUElFTlRTL0NOPVRTAAAeAPo/ AQAAABUAAABTeXN0ZW0gQWRtaW5pc3RyYXRvcgAAAAACAfs/AQAAAB4AAAAAAAAA3KdAyMBCEBq0 uQgAKy/hggEAAAAAAAAALgAAAAMA/T/kBAAAAwAZQAAAAAADABpAAAAAAAMAHUAAAAAAAwAeQAAA AAAeADBAAQAAAAMAAABUUwAAHgAxQAEAAAADAAAAVFMAAB4AMkABAAAAEAAAAG1hdHRAbGlja2V5 LmNvbQAeADNAAQAAABAAAABtYXR0QGxpY2tleS5jb20AHgA4QAEAAAADAAAAVFMAAB4AOUABAAAA AgAAAC4AAAALACkAAAAAAAsAIwAAAAAAAwAGEJhhSnIDAAcQkgMAAAMAEBABAAAAAwAREAAAAAAe AAgQAQAAAGUAAABIQVNUSElTRElTQ1VTU0lPTlNUQUxMRUQ/TUFUWkFTS0VERk9SQUNPTkNSRVRF UFJPUE9TQUxBQk9VVEEiU1RSRUFNIkFQSUJVVE5PTkVNQVRFUklBTElaRURJVU5ERVJTVEFOAAAA AAIBfwABAAAAPQAAADxERkM4OTlDQ0UxNzc2MjRBQjZBMkYxMjFERDBDQzk3NkI1NUJAZ3JhbmFk YS5zcGVha2FuZXQuY29tPgAAAADX1Q== ------_=_NextPart_001_01C1BFD9.0E783AE0--