summaryrefslogtreecommitdiff
path: root/ext/fiddle/lib/fiddle/function.rb
blob: dc2e3e6bf57689848a4a270054e6f607d784cf0d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# frozen_string_literal: true
module Fiddle
  class Function
    # The ABI of the Function.
    attr_reader :abi

    # The address of this function
    attr_reader :ptr

    # The name of this function
    attr_reader :name

    # Whether GVL is needed to call this function
    def need_gvl?
      @need_gvl
    end

    # The integer memory location of this function
    def to_i
      ptr.to_i
    end

    # Turn this function in to a proc
    def to_proc
      this = self
      lambda { |*args| this.call(*args) }
    end
  end
end