Various solutions using arrays will "work" for some situations, and I
have in fact used arrays, sparse matrices, etc to represent structured
information.  Usually the transform is from struct.field to field
[indexofstruct].  This means I end up using integers (or short, long,
whatever) as the "type" of every (logical) structure.  I think even a
set of macros to do this kind of transform would be better than
nothing, though it would be far from trivial to get right because you
have to re-invent memory management in some form, even if it's just
passing the burden explicitly to the user.  Doing it "manually"
involves all sorts of bug-prone boilerplate littering my code.

For example I might have a logical struct implemented as a bunch of
arrays: int struct_field1[SIZE], double struct_field2[SIZE], etc.  I
can use integers as "pointers", so that struct_field2[structp] can be
used in place of (C-style)  p->struct_field2.  But suppose I want to
create an array of structs sorted using some special predicate?  If I
don't want every instance of struct to be in this new array, I have to
either create a separate set of arrays sorted_struct_field1[OTHERSIZE]
etc, or use an index,length pair to define this logical array in terms
of the "master" array, so that logically sorted_structs[index] is
represented as struct_field1[sorted_structs_offset+index].  Needless
to say, without having these logical entities reified more explicitly
the code becomes crazy-making fast.  I have made a few attempts at
frameworks to make this less painful, but ultimately threw up my hands
because Java's treatment of basic types makes it impossible to encode
the relevant operations in a generic (unboxed) way.

I'm also convinced that my performance suffers in such a scheme even
when I maintain arrays manually, because I usually want to access
multiple fields of one struct, not the same field of multiple structs,
consecutively.

Hope the above rant makes sense, perhaps others have discovered a
disciplined way of simulating structs which does not drive them crazy.

-Joe
On Dec 7, 1:01 pm, John Wilson <[email protected]> wrote:
> I don't think you can do this in a straightforward way (but possibly
> somebody will be long soon to enlighten both of us!).
>
> When I want a large number of identical "structures" in Java I use an
> array of arrays. Would this work for you?
>
> John Wilson

--

You received this message because you are subscribed to the Google Groups "JVM 
Languages" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/jvm-languages?hl=en.


Reply via email to