Handling endianness in Tango's FileConduit

Alexander Pánek alexander.panek at brainsware.org
Sat Oct 4 04:26:03 PDT 2008


Nick Sabalausky wrote:
> I've been looking at the Tango docs, but I'm unclear on how IProtocol works, 
> specifically in relation to endianness.
> 
> I see stuff about protocols and endianness in the docs, so I assume Tango 
> provides a way to say "The file I'm reading/writing through this conduit 
> uses X type of endieanness, so Tango, make sure that any shorts, ints, etc, 
> that I read/write are adjusted to match the system's native endianness."  If 
> so, how would I adjust the following to tell Tango "This file uses 
> little-endian"?:
> 
> auto file = new FileConduit(infilename);
> scope(exit) file.close();
> auto input = new Reader(file.input);
> // Load data through 'input'

tango.io.protocol.EndianProtocol should do that:

auto file = new FileConduit(infilename);
scope(exit) file.close;

auto protocol = new EndianProtocol(file);
auto input = new DerivedReader(protocol);

Note: it seems like this is always assuming the other endianess as your 
current system runs on.

> BTW, A small side question: Tango's conduits don't have anything like 
> "char[] readNullTerminatedString()", do they? It's trivial enough to 
> implement, but I thought if it was there, I may as well just use it. (I 
> don't think it is there though, right? No big deal, though, just wondering.) 

I don’t think so.


More information about the Digitalmars-d-learn mailing list