Vladimir Panteleev wrote:
On Sun, 31 May 2009 23:24:09 +0300, Andrei Alexandrescu
<seewebsiteforem...@erdani.org> wrote:

But I think this is too much ado about nothing - you're avoiding
the type system to start with, so use ubyte, insert a cast, and
call it a day.

I don't get it - not using casts is avoiding the type system? :P Note
that I am NOT up-casting the void[] later back to some other type -
it goes out to the network, a file, etc. void[] sounds like it fits
perfectly in the type hierarchy for "just a bunch of bytes", except
for the "may contain pointers" fine print.

I understand. You are sending around object representation. void[] may contain pointers, so you're simply not looking at the right abstraction.

If you have too many casts, the problem is most likely elsewhere so
that argument I'm not buying.

I could cut down on the number of casts if I were to replace most
array appending operations to calls to a function that takes a void[]
and then internally casts to an ubyte[] and appends that somewhere.
There's a lot of diversity of types being worked with in my case -
strings, various structs, more raw data, etc. I'm more annoyed that
I'd need to do something like that to work around a design decision
that may not have been fully thought out.

Walter has written a class called OutBuffer (see std.outbuffer) the likes of which could be used to encapsulate representation marshaling.

Andrei

Reply via email to