class GLib::Bytes

Overrides for GBytes, GLib's immutable array of bytes.

Public Class Methods

from(it) click to toggle source
# File lib/ffi-glib/bytes.rb, line 24
def self.from(it)
  case it
  when self
    it
  when FFI::Pointer
    wrap it
  else
    new it
  end
end
new(arr) click to toggle source
# File lib/ffi-glib/bytes.rb, line 35
def initialize(arr)
  data = GirFFI::SizedArray.from :guint8, arr.size, arr
  store_pointer Lib.g_bytes_new data.to_ptr, data.size
end

Public Instance Methods

each(&block) click to toggle source
# File lib/ffi-glib/bytes.rb, line 20
def each(&block)
  data.each(&block)
end
get_data() click to toggle source

@override

# File lib/ffi-glib/bytes.rb, line 11
def get_data
  length_ptr = GirFFI::InOutPointer.for :gsize
  data_ptr = Lib.g_bytes_get_data self, length_ptr
  length = length_ptr.to_value
  # NOTE: Needed due to mis-identification of the element-type of the
  # resulting sized array for the default binding.
  GirFFI::SizedArray.wrap(:guint8, length, data_ptr)
end

Private Instance Methods

data() click to toggle source
# File lib/ffi-glib/bytes.rb, line 42
def data
  @data ||= get_data
end