Bit-struct and arrays of members?


#1

Hi,

I’m using the bit-struct [1] (which is just awesome, btw) and wondering
how I can realize arrays of members.

I’m reading binary data from pre-existing files which are based on C
structs which look similar to this basic example:

struct {
int vector[5];

} vector_t;

My current solution is to just write:

class Vector < BitStruct
default_options :endian => :little
signed vector_1, 32
signed vector_2, 32
signed vector_3, 32

I would prefer to use an array. I couldn’t figure out how to do it,
there’s no example with it and I start to think it’s not possible … ?

thanks,

  • Markus

[1] http://redshift.sourceforge.net/bit-struct/


#2

Markus F. wrote:

I would prefer to use an array. I couldn’t figure out how to do it,
there’s no example with it and I start to think it’s not possible … ?

thanks,

  • Markus

[1] http://redshift.sourceforge.net/bit-struct/

Sorry, no support for that (yet). IIRC one of the other libs has
something for this, maybe it was binstruct or binaryparse.

It’s not really too different from the #nest construct, so maybe it
could be added along those lines, as long as the array length is static.
Will think about it…


#3

Markus F. wrote:

I’m using the bit-struct [1] (which is just awesome, btw) and wondering
how I can realize arrays of members.

Here’s a quick implementation and some examples. The main limitation
(that I’m aware of) is that a Vector cannot yet be embedded in another
BitStruct. Will think about that (note hypothetical syntax)…

http://pastebin.com/ma74d15d