I like #4. I think we should start specifications development of the interface of new D's I/O.
2010/8/6 Shin Fujishiro <[email protected]>: > Hello, > > I'm trying to integrate codeset conversion facility to std.stdio. > But how can it be done? > > Mixing transcoded and non-transcoded (UTF-8) I/O in the same File > structure will mess up the source. I think separating UTF-8 based I/O > and transcoded I/O is necessary. > > I could think of the following four ways. > > 1. Integrate everything in the File anyway. > > 2. Make the File to always perform conversion. > > 3. Create a distinct type for transcoded I/O. > ---------- > shared TranscodedFile stdout; > stdout.writeln("Hallå, Värld!"); > ---------- > # http://github.com/sinfu/misc/blob/master/stdio/test01.d > > 4. Simplify the File and define upper layer structures. > ---------- > // File itself doesn't provide byLine etc. > shared File stdout; > > // these 'ports' perform actual I/O for specific purposes > shared UTF8TextIOPort stdoutUTF8; > shared NativeTextIOPort stdoutText; > shared BinaryIOPort stdoutBin; > > // wrap stdout with various 'I/O ports' > stdoutUTF8 = UTF8TextIOPort(stdout); > stdoutText = NativeTextIOPort(stdout); > stdoutBin = BinaryIOPort(stdout); > > // write text in UTF-8 > stdoutUTF8.writeln("Hallå, Värld!"); > > // write text in console encoding > stdoutText.writeln("Hallå, Värld!"); > > // free functions use stdoutText > writeln("Hallå, Värld!"); > ---------- > # http://github.com/sinfu/misc/blob/master/stdio/test02.d > > ... > > I'm uncertain of which is the best. Perhaps there are more reasonable > ways. What do you think? Any ideas? > > > Thanks, > Shin > _______________________________________________ > phobos mailing list > [email protected] > http://lists.puremagic.com/mailman/listinfo/phobos _______________________________________________ phobos mailing list [email protected] http://lists.puremagic.com/mailman/listinfo/phobos
