Subject: [ruby-ffi] Getting a pointer from a String |
From: candlerb |
Date: 5/6/11 8:02 AM |
To: ruby-ffi |
Take the following code: class Msghdr < FFI::Struct layout :name, :pointer, :namelen, :socklen_t, :iov, :pointer, :iovlen, :size_t, :control, :pointer, :controllen, :socklen_t, :flags, :int end class IOVec < FFI::Struct layout :base, :pointer, :len, :size_t end def sendmsg(mesg) data = FFI::MemoryPointer.new(mesg.bytesize, 1, false) data.put_bytes(0, mesg) iov = IOVec.new iov[:base] = data iov[:len] = mesg.bytesize header = Msghdr.new header[:iov] = iov header[:iovlen] = 1 This works. However, I would like to avoid copying the incoming String object into a new MemoryPointer. Is this possible? If I write: iov[:base] = mesg then I get an error saying that mesg is not a pointer. I found method MemoryPointer.from_string, but that just does a copy as well. Have I missed something? Thanks, Brian.