Sha256: ce72583f6ecb7564f576dc179bb7101613117cbf4d0b4521302e2efa948206fd

Contents?: true

Size: 1.79 KB

Versions: 112

Compression:

Stored size: 1.79 KB

Contents

# Enumeration
def enum(start, count)
  (start...(start+count)).to_a
end

module Responder
  # Generates identifiers as class constants. Originally submitted by
  # Sean O'Halpin, slightly modified by Lyle.
  def identifier(*ids)
    ids << :ID_LAST
    base = self.class.superclass::ID_LAST
    vals = enum(base, ids.size)
    ids.each_index do |i|
      unless self.class.const_defined?(ids[i])
        self.class.class_eval("#{ids[i].id2name} = #{vals[i]}")
      end
    end
  end

  # Return the array of (selector -> func) associations
  def messageMap
    unless instance_variables.include?("@assocs") || instance_variables.include?(:@assocs)
      @assocs = []
    end
    @assocs
  end

  # Look up array index of this message map entry
  def assocIndex(lo, hi)
    currIndex = -1
    assocs = messageMap
    assocs.each_index do |i|
      if assocs[i][0] == lo && assocs[i][1] == hi
        currIndex = i
      end
    end
    currIndex
  end

  # Add new or replace existing map entry
  def addMapEntry(lo, hi, func)
    func = func.intern if func.is_a? String
    currIndex = assocIndex(lo, hi)
    if currIndex < 0
      messageMap.push([lo, hi, func])
    else
      messageMap[currIndex] = [lo, hi, func]
    end
  end

  # Define range of function types
  def FXMAPTYPES(typelo, typehi, func)
    addMapEntry(Fox.MKUINT(Fox::MINKEY, typelo), Fox.MKUINT(Fox::MAXKEY, typehi), func)
  end

  # Define one function type
  def FXMAPTYPE(type, func)
    addMapEntry(Fox.MKUINT(Fox::MINKEY, type), Fox.MKUINT(Fox::MAXKEY, type), func)
  end

  # Define range of functions
  def FXMAPFUNCS(type, keylo, keyhi, func)
    addMapEntry(Fox.MKUINT(keylo, type), Fox.MKUINT(keyhi, type), func)
  end

  # Define one function
  def FXMAPFUNC(type, id, func)
    addMapEntry(Fox.MKUINT(id, type), Fox.MKUINT(id, type), func)
  end
end

Version data entries

112 entries across 112 versions & 2 rubygems

Version Path
fxruby-1.6.48 lib/fox16/responder.rb
fxruby-1.6.48-x64-mingw32 lib/fox16/responder.rb
fxruby-1.6.48-x64-mingw-ucrt lib/fox16/responder.rb
fxruby-1.6.48-x86-mingw32 lib/fox16/responder.rb
fxruby-1.6.47 lib/fox16/responder.rb
fxruby-1.6.47-x64-mingw-ucrt lib/fox16/responder.rb
fxruby-1.6.47-x64-mingw32 lib/fox16/responder.rb
fxruby-1.6.47-x86-mingw32 lib/fox16/responder.rb
fxruby-1.6.46 lib/fox16/responder.rb
fxruby-1.6.46-x64-mingw32 lib/fox16/responder.rb
fxruby-1.6.46-x64-mingw-ucrt lib/fox16/responder.rb
fxruby-1.6.46-x86-mingw32 lib/fox16/responder.rb
fxruby-1.6.45 lib/fox16/responder.rb
fxruby-1.6.45-x64-mingw32 lib/fox16/responder.rb
fxruby-1.6.45-x64-mingw-ucrt lib/fox16/responder.rb
fxruby-1.6.45-x86-mingw32 lib/fox16/responder.rb
fxruby-1.6.44 lib/fox16/responder.rb
fxruby-1.6.44-x64-mingw32 lib/fox16/responder.rb
fxruby-1.6.44-x86-mingw32 lib/fox16/responder.rb
fxruby-1.6.43 lib/fox16/responder.rb