Forum: Ruby bit-struct and arrays of members?

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Ee2809522b2e56d0d6b656486bc5e0db?d=identicon&s=25 Markus Fischer (Guest)
on 2009-05-25 00:01
(Received via mailing list)
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/
47b1910084592eb77a032bc7d8d1a84e?d=identicon&s=25 Joel VanderWerf (Guest)
on 2009-05-25 21:46
(Received via mailing list)
Markus Fischer 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...
47b1910084592eb77a032bc7d8d1a84e?d=identicon&s=25 Joel VanderWerf (Guest)
on 2009-05-27 02:33
(Received via mailing list)
Markus Fischer 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
This topic is locked and can not be replied to.