Sha256: 8615b40e32aa24d97fe651daa75b091ba023864eb06a9e0ec50ac7cdf1d561e9

Contents?: true

Size: 564 Bytes

Versions: 6

Compression:

Stored size: 564 Bytes

Contents

require 'rubygems'
require 'ffi'

module LibC
  extend FFI::Library
  callback :qsort_cmp, [ :pointer, :pointer ], :int
  attach_function :qsort, [ :pointer, :int, :int, :qsort_cmp ], :int
end

p = MemoryPointer.new(:int, 2)
p.put_array_of_int32(0, [ 2, 1 ])
puts "ptr=#{p.inspect}"
puts "Before qsort #{p.get_array_of_int32(0, 2).join(', ')}"
LibC.qsort(p, 2, 4) do |p1, p2|
  i1 = p1.get_int32(0)
  i2 = p2.get_int32(0)
  puts "In block: comparing #{i1} and #{i2}"
  i1 < i2 ? -1 : i1 > i2 ? 1 : 0
end
puts "After qsort #{p.get_array_of_int32(0, 2).join(', ')}"

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
ffi-0.3.0 samples/qsort.rb
ffi-0.3.1 samples/qsort.rb
ffi-0.1.0 samples/qsort.rb
ffi-0.2.0 samples/qsort.rb
ffi-0.1.1 samples/qsort.rb
ffi-0.3.2 samples/qsort.rb