Class: RLTK::CG::Module::FunctionCollection

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/rltk/cg/module.rb

Overview

This class is used to access a module’s Functions.

Instance Method Summary collapse

Constructor Details

#initialize(mod) ⇒ FunctionCollection



275
276
277
# File 'lib/rltk/cg/module.rb', line 275

def initialize(mod)
  @module = mod
end

Instance Method Details

#[](key) ⇒ Function

Retreive a Function object.



284
285
286
287
288
289
290
291
292
# File 'lib/rltk/cg/module.rb', line 284

def [](key)
  case key
  when String, Symbol
    self.named(key)

  when Integer
    (1...key).inject(self.first) { |fun| if fun then self.next(fun) else break end }
  end
end

#add(name, *type_info, &block) ⇒ Function

Add a Function to this module.



301
302
303
# File 'lib/rltk/cg/module.rb', line 301

def add(name, *type_info, &block)
  Function.new(@module, name, *type_info, &block)
end

#delete(fun) ⇒ void

This method returns an undefined value.

Remove a function from the module.



310
311
312
# File 'lib/rltk/cg/module.rb', line 310

def delete(fun)
  Bindings.delete_function(fun)
end

#each {|fun| ... } ⇒ Enumerator

An iterator for each function inside this collection.

Yield Parameters:



319
320
321
322
323
324
325
326
327
328
# File 'lib/rltk/cg/module.rb', line 319

def each
  return to_enum(:each) unless block_given?

  fun = self.first

  while fun
    yield fun
    fun = self.next(fun)
  end
end

#firstFunction?



331
332
333
# File 'lib/rltk/cg/module.rb', line 331

def first
  if (ptr = Bindings.get_first_function(@module)).null? then nil else Function.new(ptr) end
end

#lastFunction?



336
337
338
# File 'lib/rltk/cg/module.rb', line 336

def last
  if (ptr = Bindings.get_last_function(@module)).null? then nil else Function.new(ptr) end
end

#named(name) ⇒ Function?



343
344
345
# File 'lib/rltk/cg/module.rb', line 343

def named(name)
  if (ptr = Bindings.get_named_function(@module, name)).null? then nil else Function.new(ptr) end
end

#next(fun) ⇒ Function?



350
351
352
# File 'lib/rltk/cg/module.rb', line 350

def next(fun)
  if (ptr = Bindings.get_next_function(fun)).null? then nil else Function.new(ptr) end
end

#previous(fun) ⇒ Function?



357
358
359
# File 'lib/rltk/cg/module.rb', line 357

def previous(fun)
  if (ptr = Bindings.get_previous_function(fun)).null? then nil else Function.new(ptr) end
end