Subject: Re: [ruby-ffi] Describing an anonymous union |
From: Misty De Meo |
Date: 10/13/13 7:48 PM |
To: ruby-ffi@googlegroups.com |
Thanks! I hadn't thought about using Class.new to avoid assigning it as a separate constant. In this case though I was wondering about the name within the struct, not the Ruby constant representing the union. In the original C definition the union has no name - is assigning something arbitrary the best way to go, e.g. :union in Postmodern's example? On Sun, Oct 13, 2013 at 5:43 PM, Wayne Meissner <wmeissner@gmail.com> wrote:
Yep, that should work. Can even leave off the class_eval - Class.new(FFI::Union) do layout :msg, :pointer, :song_end, UadeNotificationSongEnd end The only things that won't work are typedefs/aliases - they use a hacky way to find the enclosing module (which contains the typedef table), which won't work with anon classes. Lexically scoped things will work fine though (and the built in FFI types) On Sunday, 13 October 2013 10:23:08 UTC+11, Postmodern wrote:ruby-ffi+u...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out. -- Blog: http://postmodern.github.com/ GitHub: https://github.com/postmodern Twitter: @postmodern_mod3 PGP: 0xB9515E77Usually I just come up with some name for anonymous structs/unions. However, I wonder if you could do layout :type, :uade_notification_type, :union, Class.new(FFI::Union).class_eval do ... end or something similar? On 10/12/2013 04:44 AM, Misty De Meo wrote: How can I represent an anonymous union in FFI? A struct I'm wrapping has the following structure: struct uade_notification { enum uade_notification_type type; union { char *msg; struct uade_notification_song_end song_end; }; }; I can create a union using FFI::Union of course, but I'm not sure how to represent that in a struct layout. Is assigning it an arbitrary name the right way to go? Best, Misty -- --- You received this message because you are subscribed to the Google Groups "ruby-ffi" group. To unsubscribe from this group and stop receiving emails from it, send an email toruby-ffi+unsubscribe@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.-- --- You received this message because you are subscribed to the Google Groups "ruby-ffi" group. To unsubscribe from this group and stop receiving emails from it, send an email to
-- --- You received this message because you are subscribed to the Google Groups "ruby-ffi" group. To unsubscribe from this group and stop receiving emails from it, send an email to ruby-ffi+unsubscribe@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.