Sha256: bb056720bcd7abbd23870d0de1858f245da4f93ebec3c863b097aeff3eb8b9ff

Contents?: true

Size: 1.42 KB

Versions: 17

Compression:

Stored size: 1.42 KB

Contents

#speed up java native calls by binding the methods
module JavaMethodHelper
  
  def self.included(klass)
     klass.extend(ClassMethods)
  end
  
  module ClassMethods
    
    def java_native_singleton_on(object, java_klass, method_sym, params = [])
         unbound_method = java_klass.java_method(method_sym, params)
         define_singleton_method "java_#{method_sym.to_s}".to_sym do |*args|
           unbound_method.bind(object).call(*args)
         end
     end
     
    def java_native_method_on(object, java_klass, method_sym, params = [], method_name = nil)
      unbound_method = java_klass.java_method(method_sym, params)
      method_name = "java_#{method_sym.to_s}" if method_name.nil?
      define_method method_name.to_sym do |*args|
        unbound_method.bind(object).call(*args)
      end
    end
    
    
    def java_native_method(java_klass, method_sym, params = [], method_name = nil)
        unbound_method = java_klass.java_method(method_sym, params)
        method_name = "java_#{method_sym.to_s}" if method_name.nil?
        define_method method_name.to_sym do |*args|
          unbound_method.bind(self.native).call(*args)
        end
    end
    
    def java_native_singleton(java_klass, method_sym, params = [])
        unbound_method = java_klass.java_method(method_sym, params)
        define_singleton_method "java_#{method_sym.to_s}".to_sym do |*args|
          unbound_method.call(*args)
        end
    end
  end
  
end

Version data entries

17 entries across 17 versions & 1 rubygems

Version Path
droiuby-0.3.6 lib/droiuby/wrappers/java_helpers/java_method_helper.rb
droiuby-0.3.5 lib/droiuby/wrappers/java_helpers/java_method_helper.rb
droiuby-0.3.4 lib/droiuby/wrappers/java_helpers/java_method_helper.rb
droiuby-0.3.3 lib/droiuby/wrappers/java_helpers/java_method_helper.rb
droiuby-0.3.2 lib/droiuby/wrappers/java_helpers/java_method_helper.rb
droiuby-0.3.1 lib/droiuby/wrappers/java_helpers/java_method_helper.rb
droiuby-0.3.0 lib/droiuby/wrappers/java_helpers/java_method_helper.rb
droiuby-0.2.9 lib/droiuby/wrappers/java_helpers/java_method_helper.rb
droiuby-0.2.8 lib/droiuby/wrappers/java_helpers/java_method_helper.rb
droiuby-0.2.7 lib/droiuby/wrappers/java_helpers/java_method_helper.rb
droiuby-0.2.6 lib/droiuby/wrappers/java_helpers/java_method_helper.rb
droiuby-0.2.5 lib/droiuby/wrappers/java_helpers/java_method_helper.rb
droiuby-0.2.4 lib/droiuby/wrappers/java_helpers/java_method_helper.rb
droiuby-0.2.3 lib/droiuby/wrappers/java_helpers/java_method_helper.rb
droiuby-0.2.2 lib/droiuby/wrappers/java_helpers/java_method_helper.rb
droiuby-0.2.1 lib/droiuby/wrappers/java_helpers/java_method_helper.rb
droiuby-0.2.0 lib/droiuby/wrappers/java_helpers/java_method_helper.rb