On Thursday, September 17, 2015 at 8:23:01 PM UTC-5, Tom Breloff wrote:
>
> I have an alternative to StrPack.jl here: 
> https://github.com/tbreloff/CTechCommon.jl/blob/master/src/macros.jl.  If 
> you have a type that mimics a c-struct, you can create like:
>
> @packedStruct immutable MyStruct
>   field1::UInt8
>   field2::Byte
> end
>
> and it creates some methods: read, reinterpret, etc which can convert raw 
> bytes into the immutable type.
>
> I've only used it on very specific types of data, but it may work for you.
>

This looks like a nice simple alternative. I haven't touched StrPack in a 
long time, but I believe the analogous StrPack syntax is:

@struct type MyStruct
  field1::UInt8
  field2::Byte
end, align_packed

Though since these are both 1-byte fields, there wouldn't be any padding 
under the default strategy anyways.

I'm not sure if this works with immutables--someone may have contributed 
that? Maintainer neglect of StrPack is acknowledged :D Have you considered 
possibly spinning your simplified version into its own package, Tom?

StrPack is/was pretty ambitious; I wanted to be able to get down to 
bit-level unpacking, with the goal of being able to parse a Novatel 
RANGECMP log (http://www.novatel.com/assets/Documents/Bulletins/apn031.pdf) 
entirely with an annotated type declaration. I'd still like to do this, but 
it's been hard to find the motivation to work on it. (There's a branch up 
on the repository which pushes towards this, but the work is incomplete.)

The manual alternative Stefan proposes is definitely a good option, 
especially if this is a one-off structure.

Reply via email to