module Malachite

Constants

VERSION

Public Class Methods

add_to_function_cache(method_name) click to toggle source
# File lib/malachite/function_cache.rb, line 19
def self.add_to_function_cache(method_name)
  function_cache = Malachite.function_cache
  function = Malachite.fiddle_function(method_name)
  function_cache[method_name] = function
  Malachite.function_cache = function_cache
  function
end
called_method(method_name) click to toggle source
# File lib/malachite/function_cache.rb, line 38
def self.called_method(method_name)
  "call#{method_name.to_s.camelize}"
end
dump_json(object) click to toggle source
# File lib/malachite.rb, line 26
def self.dump_json(object)
  JSON.generate(object)
end
dylib() click to toggle source
# File lib/malachite/function_cache.rb, line 27
def self.dylib
  @dylib ||= Fiddle.dlopen(Malachite.shared_object_path)
rescue Fiddle::DLError
  raise Malachite::DLError, 'Unable to open dynamic library.'
end
fiddle_function(method_name) click to toggle source
# File lib/malachite/function_cache.rb, line 33
def self.fiddle_function(method_name)
  call_method = Malachite.called_method(method_name)
  Fiddle::Function.new(Malachite.dylib[call_method], [Fiddle::TYPE_VOIDP], Fiddle::TYPE_VOIDP)
end
from_function_cache(method_name) click to toggle source
# File lib/malachite/function_cache.rb, line 12
def self.from_function_cache(method_name)
  existing_function = Malachite.function_cache[method_name]
  return existing_function unless existing_function.nil?

  Malachite.add_to_function_cache(method_name)
end
function_cache() click to toggle source
# File lib/malachite/function_cache.rb, line 4
def self.function_cache
  @function_cache ||= {}
end
function_cache=(cache) click to toggle source
# File lib/malachite/function_cache.rb, line 8
def self.function_cache=(cache)
  @function_cache = cache
end
load_json(string) click to toggle source
# File lib/malachite.rb, line 22
def self.load_json(string)
  JSON.parse(string)
end
method_missing(name, args) click to toggle source
# File lib/malachite.rb, line 18
def self.method_missing(name, args)
  Malachite::Client.new(name, args).call
end
setup!() click to toggle source
# File lib/malachite/railtie.rb, line 4
def self.setup!
  Dir.glob(Rails.root.join('tmp', '*.{so,go,h}')).each do |file|
    File.delete(file)
  end

  Malachite::Compiler.new.compile
end
shared_object_path() click to toggle source
# File lib/malachite/function_cache.rb, line 42
def self.shared_object_path
  @shared_object_path ||= Malachite::Compiler.new.compile
end