Sha256: c4ce53e091712604f20f19879dade42a5c1ffd18aaf441b2b6015375b28863c4
Contents?: true
Size: 1.72 KB
Versions: 1
Compression:
Stored size: 1.72 KB
Contents
module PyBind module Utils BUILTIN_FUNCS = %w[ getattr hasattr setattr delattr id type dir len iter next ] BUILTIN_FUNCS.each do |func| define_method(func) do |*args| PyBind.builtin.get_attribute(func).call(*args) end end MODULE_SHORTCUTS = %w[ types traceback ] MODULE_SHORTCUTS.each do |mod| define_method(mod) do |*args| PyBind.import(mod) end end def None LibPython.Py_None end def True LibPython.Py_True end def False LibPython.Py_False end def eval(str) dict = main_dict eval_func = PyBind.builtin.get_attribute('eval') eval_func.call(str, dict, dict) end def execfile(filename) dict = main_dict if PyBind.builtin.has_attribute?('execfile') execfile_func = PyBind.builtin.get_attribute('execfile') execfile_func.call(filename, dict, dict) else open_func = PyBind.builtin.get_attribute('open') exec_func = PyBind.builtin.get_attribute('exec') content = open_func.call(filename).get_attribute('read').call() exec_func.(content, dict, dict) end end def callable?(pyobj) pystruct = pyobj.to_python_struct LibPython.PyCallable_Check(pystruct) == 1 end def incref(pyobj) pystruct = pyobj.to_python_struct LibPython.Py_IncRef(pystruct) pyobj end def decref(pyobj) pystruct = pyobj.to_python_struct LibPython.Py_DecRef(pystruct) pystruct.send :pointer=, FFI::Pointer::NULL pyobj end private def main_dict LibPython.PyModule_GetDict(PyBind.import("__main__").to_python_struct).to_ruby end end extend Utils end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
pybind-0.1.0 | lib/pybind/utils.rb |