Module: PyCall::Conversion

Defined in:
ext/pycall/pycall.c

Class Method Summary collapse

Class Method Details

.from_ruby(obj) ⇒ Object



1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
# File 'ext/pycall/pycall.c', line 1885

static VALUE
pycall_conv_m_from_ruby(VALUE mod, VALUE obj)
{
  PyObject *pyobj;

  pycall_drain_pending_decrefs();

  pyobj = pycall_pyobject_from_ruby(obj);
  if (PyType_Check(pyobj) || PyClass_Check(pyobj))
    return pycall_pytypeptr_new(pyobj);
  if (PyRuby_Check(pyobj))
    return pycall_pyrubyptr_new(pyobj);
  return pycall_pyptr_new(pyobj);
}

.register_python_type_mapping(pytypeptr, rbcls) ⇒ Object



1873
1874
1875
1876
1877
# File 'ext/pycall/pycall.c', line 1873

static VALUE
pycall_conv_m_register_python_type_mapping(VALUE mod, VALUE pytypeptr, VALUE rbcls)
{
  return pycall_python_type_mapping_register(pytypeptr, rbcls) ? Qtrue : Qfalse;
}

.to_ruby(pyptr) ⇒ Object



1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
# File 'ext/pycall/pycall.c', line 1900

static VALUE
pycall_conv_m_to_ruby(VALUE mod, VALUE pyptr)
{
  VALUE obj, obj_pyptr;
  PyObject *pyobj;

  pycall_drain_pending_decrefs();

  pyobj = check_get_pyobj_ptr(pyptr, NULL);
  obj = obj_pyptr = pycall_pyobject_to_ruby(pyobj);
  if (is_pyobject_wrapper(obj)) {
    obj_pyptr = pycall_pyobject_wrapper_get_pyptr(obj);
  }
  if (is_pycall_pyptr(obj_pyptr) && obj_pyptr != pyptr && DATA_PTR(obj_pyptr) == pyobj) {
    Py_API(Py_IncRef)(pyobj);
  }
  return obj;
}

.unregister_python_type_mapping(pytypeptr) ⇒ Object



1879
1880
1881
1882
1883
# File 'ext/pycall/pycall.c', line 1879

static VALUE
pycall_conv_m_unregister_python_type_mapping(VALUE mod, VALUE pytypeptr)
{
  return pycall_python_type_mapping_unregister(pytypeptr) ? Qtrue : Qfalse;
}