Class: LLVM::Module::FunctionCollection

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/llvm/core/module.rb

Instance Method Summary collapse

Constructor Details

#initialize(mod) ⇒ FunctionCollection

Returns a new instance of FunctionCollection.



165
166
167
# File 'lib/llvm/core/module.rb', line 165

def initialize(mod)
  @module = mod
end

Instance Method Details

#[](key) ⇒ Object

Returns the Function with a name equal to key (symbol or string) or at key (integer).



217
218
219
220
221
222
223
224
225
226
227
228
229
# File 'lib/llvm/core/module.rb', line 217

def [](key)
  case key
  when String, Symbol then named(key)
  when Integer
    i = 0
    f = first
    until i >= key || f.nil?
      f = self.next(f)
      i += 1
    end
    f
  end
end

#add(name, *args) ⇒ Object

Adds a Function with the given name (symbol or string) and args (Types).



170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
# File 'lib/llvm/core/module.rb', line 170

def add(name, *args)
  if args.first.kind_of? FunctionType
    type = args.first
  else
    type = Type.function(*args)
  end
  function = Function.from_ptr(C.add_function(@module, name.to_s, type))

  if block_given?
    params = (0...function.params.size).map { |i| function.params[i] }
    yield function, *params
  end

  function
end

#delete(function) ⇒ Object

Deletes the Function from the collection.



212
213
214
# File 'lib/llvm/core/module.rb', line 212

def delete(function)
  C.delete_function(function)
end

#eachObject

Iterates through each Function in the collection.



232
233
234
235
236
237
238
# File 'lib/llvm/core/module.rb', line 232

def each
  f = first
  until f.nil?
    yield f
    f = self.next(f)
  end
end

#firstObject

Returns the first Function in the collection.



192
193
194
# File 'lib/llvm/core/module.rb', line 192

def first
  Function.from_ptr(C.get_first_function(@module))
end

#lastObject

Returns the last Function in the collection.



197
198
199
# File 'lib/llvm/core/module.rb', line 197

def last
  Function.from_ptr(C.get_last_function(@module))
end

#named(name) ⇒ Object

Returns the Function with the given name (symbol or string).



187
188
189
# File 'lib/llvm/core/module.rb', line 187

def named(name)
  Function.from_ptr(C.get_named_function(@module, name.to_s))
end

#next(function) ⇒ Object

Returns the next Function in the collection after function.



202
203
204
# File 'lib/llvm/core/module.rb', line 202

def next(function)
  Function.from_ptr(C.get_next_function(function))
end

#previous(function) ⇒ Object

Returns the previous Function in the collection before function.



207
208
209
# File 'lib/llvm/core/module.rb', line 207

def previous(function)
  Function.from_ptr(C.get_previous_function(function))
end