support python3

This commit is contained in:
Vitor Santos Costa 2014-01-22 09:44:42 +00:00
parent a8eda03305
commit b47aeb461b
3 changed files with 205 additions and 26 deletions

75
configure vendored
View File

@ -13311,19 +13311,84 @@ test -n "$PYTHON" || PYTHON=""none""
else else
PYTHON="$yap_cv_python" PYTHON="$yap_cv_python"
fi fi
PYTHONHOME=`$PYTHON -c'import sys; print sys.prefix'` PYTHONHOME=`$PYTHON -c'import sys; sys.stdout.write(sys.prefix)'`
PYTHONVERSION=`"$PYTHON" -c "import sys; print sys.version[:3]"` PYTHONVERSION=`"$PYTHON" -c "import sys; sys.stdout.write(sys.version[:3])"`
if test -d "$PYTHONHOME/libs"; then if test -d "$PYTHONHOME/libs"; then
PYTHONV=`echo "$PYTHONVERSION"|sed -e 's/\.//g'` PYTHONV=`echo "$PYTHONVERSION"|sed -e 's/\.//g'`
PYTHON_LIBS="-L $PYTHONHOME/libs -lpython$PYTHONV" PYTHON_LIBS="-L $PYTHONHOME/libs"
elif test -d "$PYTHONHOME/lib"; then elif test -d "$PYTHONHOME/lib"; then
PYTHON_LIBS="-L $PYTHONHOME/lib -lpython$PYTHONVERSION" PYTHON_LIBS="-L $PYTHONHOME/lib"
else else
echo "Could not find includes for Python" echo "Could not find libraries for Python"
ENABLE_PYTHON="@# " ENABLE_PYTHON="@# "
fi fi
OLIBS=$LIBS
LIBS=$PYTHON_LIBS
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing Py_Initialize" >&5
$as_echo_n "checking for library containing Py_Initialize... " >&6; }
if ${ac_cv_search_Py_Initialize+:} false; then :
$as_echo_n "(cached) " >&6
else
ac_func_search_save_LIBS=$LIBS
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
#ifdef __cplusplus
extern "C"
#endif
char Py_Initialize ();
int
main ()
{
return Py_Initialize ();
;
return 0;
}
_ACEOF
for ac_lib in '' python"$PYTHONVERSION" python"$PYTHONVERSION"m; do
if test -z "$ac_lib"; then
ac_res="none required"
else
ac_res=-l$ac_lib
LIBS="-l$ac_lib "$OLIBS" $ac_func_search_save_LIBS"
fi
if ac_fn_c_try_link "$LINENO"; then :
ac_cv_search_Py_Initialize=$ac_res
fi
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext
if ${ac_cv_search_Py_Initialize+:} false; then :
break
fi
done
if ${ac_cv_search_Py_Initialize+:} false; then :
else
ac_cv_search_Py_Initialize=no
fi
rm conftest.$ac_ext
LIBS=$ac_func_search_save_LIBS
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_Py_Initialize" >&5
$as_echo "$ac_cv_search_Py_Initialize" >&6; }
ac_res=$ac_cv_search_Py_Initialize
if test "$ac_res" != no; then :
test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
else
echo "Could not find libraries for Python";
ENABLE_PYTHON="@# "
fi
PYTHON_LIBS=$LIBS
LIBS=$OLIBS
if test -d "$PYTHONHOME/include/python$PYTHONVERSION"; then if test -d "$PYTHONHOME/include/python$PYTHONVERSION"; then
PYTHON_INCLUDES="-I $PYTHONHOME/include/python$PYTHONVERSION" PYTHON_INCLUDES="-I $PYTHONHOME/include/python$PYTHONVERSION"
elif test -d "$PYTHONHOME/include/python$PYTHONVERSION"m; then
PYTHON_INCLUDES="-I $PYTHONHOME/include/python$PYTHONVERSION"m
elif test -d "$PYTHONHOME/include"; then elif test -d "$PYTHONHOME/include"; then
PYTHON_INCLUDES="-I $PYTHONHOME/include" PYTHON_INCLUDES="-I $PYTHONHOME/include"
else else

View File

@ -21,20 +21,28 @@ elif test -e "$srcdir"/packages/python/Makefile.in ; then
else else
PYTHON="$yap_cv_python" PYTHON="$yap_cv_python"
fi fi
PYTHONHOME=`$PYTHON -c'import sys; print sys.prefix'` PYTHONHOME=`$PYTHON -c'import sys; sys.stdout.write(sys.prefix)'`
PYTHONVERSION=`"$PYTHON" -c "import sys; print sys.version[[:3]]"` PYTHONVERSION=`"$PYTHON" -c "import sys; sys.stdout.write(sys.version[[:3]])"`
if test -d "$PYTHONHOME/libs"; then if test -d "$PYTHONHOME/libs"; then
dnl windows dnl windows
PYTHONV=`echo "$PYTHONVERSION"|sed -e 's/\.//g'` PYTHONV=`echo "$PYTHONVERSION"|sed -e 's/\.//g'`
PYTHON_LIBS="-L $PYTHONHOME/libs -lpython$PYTHONV" PYTHON_LIBS="-L $PYTHONHOME/libs"
elif test -d "$PYTHONHOME/lib"; then elif test -d "$PYTHONHOME/lib"; then
PYTHON_LIBS="-L $PYTHONHOME/lib -lpython$PYTHONVERSION" PYTHON_LIBS="-L $PYTHONHOME/lib"
else else
echo "Could not find includes for Python" echo "Could not find libraries for Python"
ENABLE_PYTHON="@# " ENABLE_PYTHON="@# "
fi fi
OLIBS=$LIBS
LIBS=$PYTHON_LIBS
AC_SEARCH_LIBS(Py_Initialize, [python"$PYTHONVERSION" python"$PYTHONVERSION"m],,[echo "Could not find libraries for Python";
ENABLE_PYTHON="@# "],"$OLIBS")
PYTHON_LIBS=$LIBS
LIBS=$OLIBS
if test -d "$PYTHONHOME/include/python$PYTHONVERSION"; then if test -d "$PYTHONHOME/include/python$PYTHONVERSION"; then
PYTHON_INCLUDES="-I $PYTHONHOME/include/python$PYTHONVERSION" PYTHON_INCLUDES="-I $PYTHONHOME/include/python$PYTHONVERSION"
elif test -d "$PYTHONHOME/include/python$PYTHONVERSION"m; then
PYTHON_INCLUDES="-I $PYTHONHOME/include/python$PYTHONVERSION"m
elif test -d "$PYTHONHOME/include"; then elif test -d "$PYTHONHOME/include"; then
PYTHON_INCLUDES="-I $PYTHONHOME/include" PYTHON_INCLUDES="-I $PYTHONHOME/include"
else else

View File

@ -64,8 +64,10 @@ get_p_int(PyObject *o, Py_ssize_t def) {
return def; return def;
if (PyLong_Check(o)) { if (PyLong_Check(o)) {
return PyLong_AsLong(o); return PyLong_AsLong(o);
#if PY_MAJOR_VERSION < 3
} else if (PyInt_Check(o)) { } else if (PyInt_Check(o)) {
return PyInt_AsLong(o); return PyInt_AsLong(o);
#endif
} }
return def; return def;
} }
@ -88,7 +90,11 @@ find_obj(PyObject *ob, term_t lhs)
return out; return out;
} }
if (!ob && !arity) { if (!ob && !arity) {
pName = PyString_FromString(s); #if PY_MAJOR_VERSION<3
pName = PyString_FromString(s);
#else
pName = PyUnicode_FromString(s);
#endif
if (pName == NULL) { if (pName == NULL) {
return NULL; return NULL;
} }
@ -238,8 +244,10 @@ bip_float(term_t t)
pVal = term_to_python(t); pVal = term_to_python(t);
if (PyLong_Check(pVal)) { if (PyLong_Check(pVal)) {
o = PyFloat_FromDouble( PyLong_AsLong(pVal) ); o = PyFloat_FromDouble( PyLong_AsLong(pVal) );
#if PY_MAJOR_VERSION<3
} else if (PyInt_Check(pVal)) { } else if (PyInt_Check(pVal)) {
o = PyFloat_FromDouble( PyInt_AsLong(pVal) ); o = PyFloat_FromDouble( PyInt_AsLong(pVal) );
#endif
} else if (PyFloat_Check(pVal)) { } else if (PyFloat_Check(pVal)) {
return pVal; return pVal;
} else } else
@ -256,12 +264,21 @@ bip_int(term_t t)
if (! PL_get_arg(1, t, t) ) if (! PL_get_arg(1, t, t) )
return NULL; return NULL;
pVal = term_to_python(t); pVal = term_to_python(t);
#if PY_MAJOR_VERSION<3
if (PyLong_Check(pVal)) { if (PyLong_Check(pVal)) {
o = PyInt_FromLong( PyLong_AsLong(pVal) ); o = PyInt_FromLong( PyLong_AsLong(pVal) );
} else if (PyInt_Check(pVal)) { } else if (PyInt_Check(pVal)) {
return pVal; return pVal;
#else
if (PyLong_Check(pVal)) {
return pVal;
#endif
} else if (PyFloat_Check(pVal)) { } else if (PyFloat_Check(pVal)) {
#if PY_MAJOR_VERSION<3
o = PyInt_FromLong( PyFloat_AsDouble(pVal) ); o = PyInt_FromLong( PyFloat_AsDouble(pVal) );
#else
o = PyLong_FromDouble( PyFloat_AsDouble(pVal) );
#endif
} else } else
return NULL; return NULL;
Py_DECREF(pVal); Py_DECREF(pVal);
@ -278,8 +295,10 @@ bip_long(term_t t)
pVal = term_to_python(t); pVal = term_to_python(t);
if (PyLong_Check(pVal)) { if (PyLong_Check(pVal)) {
return pVal; return pVal;
} else if (PyLong_Check(pVal)) { #if PY_MAJOR_VERSION<3
} else if (PyInt_Check(pVal)) {
o = PyLong_FromLong( PyInt_AsLong(pVal) ); o = PyLong_FromLong( PyInt_AsLong(pVal) );
#endif
} else if (PyFloat_Check(pVal)) { } else if (PyFloat_Check(pVal)) {
o = PyLong_FromLong( PyFloat_AsDouble(pVal) ); o = PyLong_FromLong( PyFloat_AsDouble(pVal) );
} else } else
@ -310,10 +329,19 @@ bip_ord(term_t t)
return NULL; return NULL;
pVal = term_to_python(t); pVal = term_to_python(t);
if (PyUnicode_Check(pVal)) { if (PyUnicode_Check(pVal)) {
#if PY_MAJOR_VERSION < 3
size = PyUnicode_GET_SIZE(pVal); size = PyUnicode_GET_SIZE(pVal);
#else
size = PyUnicode_GetLength(pVal);
#endif
if (size == 1) { if (size == 1) {
#if PY_MAJOR_VERSION < 3
long ord = (long)*PyUnicode_AS_UNICODE(pVal); long ord = (long)*PyUnicode_AS_UNICODE(pVal);
return PyInt_FromLong(ord); return PyInt_FromLong(ord);
#else
Py_UCS4 ord = PyUnicode_ReadChar(pVal, 0);
return PyLong_FromLong(ord);
#endif
} }
return NULL; return NULL;
} else if (PyByteArray_Check(pVal)) { } else if (PyByteArray_Check(pVal)) {
@ -321,6 +349,7 @@ bip_ord(term_t t)
if (s[1]) if (s[1])
return NULL; return NULL;
#if PY_MAJOR_VERSION < 3
return PyInt_FromLong(s[0]); return PyInt_FromLong(s[0]);
} else if (PyString_Check(pVal)) { } else if (PyString_Check(pVal)) {
char *s = PyString_AsString(pVal); char *s = PyString_AsString(pVal);
@ -328,6 +357,9 @@ bip_ord(term_t t)
if (s[1]) if (s[1])
return NULL; return NULL;
return PyInt_FromLong(s[0]); return PyInt_FromLong(s[0]);
#else
return PyLong_FromLong(s[0]);
#endif
} else } else
return NULL; return NULL;
} }
@ -347,12 +379,17 @@ bip_sum(term_t t)
return NULL; return NULL;
if (result == NULL) { if (result == NULL) {
#if PY_MAJOR_VERSION < 3
result = PyInt_FromLong(0); result = PyInt_FromLong(0);
#else
result = PyLong_FromLong(0);
#endif
if (result == NULL) { if (result == NULL) {
Py_DECREF(iter); Py_DECREF(iter);
return NULL; return NULL;
} }
} else { } else {
#if PY_MAJOR_VERSION < 3
/* reject string values for 'start' parameter */ /* reject string values for 'start' parameter */
if (PyObject_TypeCheck(result, &PyBaseString_Type)) { if (PyObject_TypeCheck(result, &PyBaseString_Type)) {
PyErr_SetString(PyExc_TypeError, PyErr_SetString(PyExc_TypeError,
@ -361,6 +398,7 @@ bip_sum(term_t t)
return NULL; return NULL;
} }
Py_INCREF(result); Py_INCREF(result);
#endif
} }
#ifndef SLOW_SUM #ifndef SLOW_SUM
@ -368,8 +406,13 @@ bip_sum(term_t t)
Assumes all inputs are the same type. If the assumption fails, default Assumes all inputs are the same type. If the assumption fails, default
to the more general routine. to the more general routine.
*/ */
#if PY_MAJOR_VERSION < 3
if (PyInt_CheckExact(result)) { if (PyInt_CheckExact(result)) {
long i_result = PyInt_AS_LONG(result); long i_result = PyInt_AS_LONG(result);
#else
if (PyLong_CheckExact(result)) {
long i_result = PyLong_AS_LONG(result);
#endif
Py_DECREF(result); Py_DECREF(result);
result = NULL; result = NULL;
while(result == NULL) { while(result == NULL) {
@ -378,10 +421,19 @@ bip_sum(term_t t)
Py_DECREF(iter); Py_DECREF(iter);
if (PyErr_Occurred()) if (PyErr_Occurred())
return NULL; return NULL;
#if PY_MAJOR_VERSION < 3
return PyInt_FromLong(i_result); return PyInt_FromLong(i_result);
#else
return PyLong_FromLong(i_result);
#endif
} }
#if PY_MAJOR_VERSION < 3
if (PyInt_CheckExact(item)) { if (PyInt_CheckExact(item)) {
long b = PyInt_AS_LONG(item); long b = PyInt_AS_LONG(item);
#else
if (PyLong_CheckExact(item)) {
long b = PyLong_AS_LONG(item);
#endif
long x = i_result + b; long x = i_result + b;
if ((x^i_result) >= 0 || (x^b) >= 0) { if ((x^i_result) >= 0 || (x^b) >= 0) {
i_result = x; i_result = x;
@ -390,7 +442,11 @@ bip_sum(term_t t)
} }
} }
/* Either overflowed or is not an int. Restore real objects and process normally */ /* Either overflowed or is not an int. Restore real objects and process normally */
#if PY_MAJOR_VERSION < 3
result = PyInt_FromLong(i_result); result = PyInt_FromLong(i_result);
#else
result = PyLong_FromLong(i_result);
#endif
temp = PyNumber_Add(result, item); temp = PyNumber_Add(result, item);
Py_DECREF(result); Py_DECREF(result);
Py_DECREF(item); Py_DECREF(item);
@ -421,9 +477,15 @@ bip_sum(term_t t)
Py_DECREF(item); Py_DECREF(item);
continue; continue;
} }
#if PY_MAJOR_VERSION < 3
if (PyInt_CheckExact(item)) { if (PyInt_CheckExact(item)) {
PyFPE_START_PROTECT("add", Py_DECREF(item); Py_DECREF(iter); return 0) PyFPE_START_PROTECT("add", Py_DECREF(item); Py_DECREF(iter); return 0)
f_result += (double)PyInt_AS_LONG(item); f_result += (double)PyInt_AS_LONG(item);
#else
if (PyLong_CheckExact(item)) {
PyFPE_START_PROTECT("add", Py_DECREF(item); Py_DECREF(iter); return 0)
f_result += PyLong_AsDouble(item);
#endif
PyFPE_END_PROTECT(f_result) PyFPE_END_PROTECT(f_result)
Py_DECREF(item); Py_DECREF(item);
continue; continue;
@ -480,8 +542,10 @@ get_int(term_t arg)
PyObject *low = term_to_python(arg); PyObject *low = term_to_python(arg);
if (PyLong_Check(low)) { if (PyLong_Check(low)) {
return PyLong_AsLong(low); return PyLong_AsLong(low);
#if PY_MAJOR_VERSION < 3
} else if (PyInt_Check(low)) { } else if (PyInt_Check(low)) {
return PyInt_AsLong(low); return PyInt_AsLong(low);
#endif
} else { } else {
return 0; return 0;
} }
@ -568,7 +632,11 @@ bip_range(term_t t)
if (v == NULL) if (v == NULL)
return NULL; return NULL;
for (i = 0; i < n; i++) { for (i = 0; i < n; i++) {
PyObject *w = PyInt_FromLong(ilow); #if PY_MAJOR_VERSION < 3
PyObject *w = PyInt_FromLong(ilow);
#else
PyObject *w = PyLong_FromLong(ilow);
#endif
if (w == NULL) { if (w == NULL) {
Py_DECREF(v); Py_DECREF(v);
return NULL; return NULL;
@ -600,20 +668,27 @@ term_to_python(term_t t)
if (!PL_get_chars(t, &s, REP_UTF8|CVT_ATOM|CVT_STRING|BUF_DISCARDABLE) ) { if (!PL_get_chars(t, &s, REP_UTF8|CVT_ATOM|CVT_STRING|BUF_DISCARDABLE) ) {
return NULL; return NULL;
} }
#if PY_MAJOR_VERSION < 3
if (proper_ascii_string(s)) { if (proper_ascii_string(s)) {
return PyString_FromStringAndSize(s, strlen(s) ); return PyString_FromStringAndSize(s, strlen(s) );
} else { } else
PyObject *pobj = PyUnicode_DecodeUTF8(s, strlen(s), NULL); #endif
//fprintf(stderr, "%s\n", s); {
return pobj; PyObject *pobj = PyUnicode_DecodeUTF8(s, strlen(s), NULL);
} //fprintf(stderr, "%s\n", s);
return pobj;
}
} }
case PL_INTEGER: case PL_INTEGER:
{ {
int64_t j; int64_t j;
if (!PL_get_int64_ex(t, &j)) if (!PL_get_int64_ex(t, &j))
return NULL; return NULL;
#if PY_MAJOR_VERSION < 3
return PyInt_FromLong(j); return PyInt_FromLong(j);
#else
return PyLong_FromLong(j);
#endif
} }
case PL_FLOAT: case PL_FLOAT:
{ {
@ -723,8 +798,10 @@ term_to_python(term_t t)
d1 = PyFloat_AsDouble(lhs); d1 = PyFloat_AsDouble(lhs);
} else if (PyLong_Check(lhs)) { } else if (PyLong_Check(lhs)) {
d1 = PyLong_AsLong(lhs); d1 = PyLong_AsLong(lhs);
#if PY_MAJOR_VERSION < 3
} else if (PyInt_Check(lhs)) { } else if (PyInt_Check(lhs)) {
d1 = PyInt_AsLong(lhs); d1 = PyInt_AsLong(lhs);
#endif
} else { } else {
return NULL; return NULL;
} }
@ -737,8 +814,10 @@ term_to_python(term_t t)
d2 = PyFloat_AsDouble(rhs); d2 = PyFloat_AsDouble(rhs);
} else if (PyLong_Check(rhs)) { } else if (PyLong_Check(rhs)) {
d2 = PyLong_AsLong(rhs); d2 = PyLong_AsLong(rhs);
} else if (PyInt_Check(rhs)) { #if PY_MAJOR_VERSION < 3
} else if (PyInt_Check(rhs)) {
d2 = PyInt_AsLong(rhs); d2 = PyInt_AsLong(rhs);
#endif
} else { } else {
return NULL; return NULL;
} }
@ -814,7 +893,11 @@ term_to_python(term_t t)
if (! PL_get_arg(2, t, targ) ) if (! PL_get_arg(2, t, targ) )
return NULL; return NULL;
rhs = term_to_python(targ); rhs = term_to_python(targ);
if (PySequence_Check(lhs) && (PyInt_Check(rhs) || PyLong_Check(rhs)) ){ if (PySequence_Check(lhs) && (
#if PY_MAJOR_VERSION < 3
PyInt_Check(rhs) ||
#endif
PyLong_Check(rhs)) ){
return PySequence_Repeat(lhs, get_p_int(rhs, 0)); return PySequence_Repeat(lhs, get_p_int(rhs, 0));
} }
if (!PyNumber_Check(lhs)+!PyNumber_Check(rhs)) if (!PyNumber_Check(lhs)+!PyNumber_Check(rhs))
@ -834,7 +917,13 @@ term_to_python(term_t t)
rhs = term_to_python(targ); rhs = term_to_python(targ);
if (!PyNumber_Check(rhs)) if (!PyNumber_Check(rhs))
return NULL; return NULL;
return PyNumber_Divide(lhs, rhs); #if PY_MAJOR_VERSION < 3
return
PyNumber_Divide(lhs, rhs);
#else
return
PyNumber_TrueDivide(lhs, rhs);
#endif
} else if (fun == FUNCTOR_hat2) { } else if (fun == FUNCTOR_hat2) {
term_t targ = PL_new_term_ref(), trhs = PL_new_term_ref(); term_t targ = PL_new_term_ref(), trhs = PL_new_term_ref();
PyObject *lhs, *rhs; PyObject *lhs, *rhs;
@ -1071,8 +1160,10 @@ python_to_term(PyObject *pVal, term_t t)
} }
} else if (PyLong_Check(pVal)) { } else if (PyLong_Check(pVal)) {
return PL_unify_int64(t, PyLong_AsLong(pVal)); return PL_unify_int64(t, PyLong_AsLong(pVal));
#if PY_MAJOR_VERSION < 3
} else if (PyInt_Check(pVal)) { } else if (PyInt_Check(pVal)) {
return PL_unify_int64(t, PyInt_AsLong(pVal)); return PL_unify_int64(t, PyInt_AsLong(pVal));
#endif
} else if (PyFloat_Check(pVal)) { } else if (PyFloat_Check(pVal)) {
return PL_unify_float(t, PyFloat_AsDouble(pVal)); return PL_unify_float(t, PyFloat_AsDouble(pVal));
} else if (PyComplex_Check(pVal)) { } else if (PyComplex_Check(pVal)) {
@ -1083,21 +1174,28 @@ python_to_term(PyObject *pVal, term_t t)
return FALSE; return FALSE;
return PL_unify(t, to); return PL_unify(t, to);
} else if (PyUnicode_Check(pVal)) { } else if (PyUnicode_Check(pVal)) {
Py_ssize_t sz = PyUnicode_GetSize(pVal)+1;
wchar_t *ptr;
atom_t tmp_atom; atom_t tmp_atom;
ptr = malloc(sizeof(wchar_t)*sz); #if PY_MAJOR_VERSION < 3
Py_ssize_t sz = PyUnicode_GetSize(pVal)+1;
wchar_t *ptr = malloc(sizeof(wchar_t)*sz);
sz = PyUnicode_AsWideChar((PyUnicodeObject *)pVal, ptr, sz-1); sz = PyUnicode_AsWideChar((PyUnicodeObject *)pVal, ptr, sz-1);
tmp_atom = PL_new_atom_wchars(sz,ptr); #else
Py_ssize_t sz = PyUnicode_GetLength(pVal)+1;
wchar_t *ptr = malloc(sizeof(wchar_t)*sz);
sz = PyUnicode_AsWideChar(pVal, ptr, sz);
#endif
tmp_atom = PL_new_atom_wchars(sz, ptr);
free(ptr); free(ptr);
return PL_unify_atom(t, tmp_atom); return PL_unify_atom(t, tmp_atom);
} else if (PyByteArray_Check(pVal)) { } else if (PyByteArray_Check(pVal)) {
atom_t tmp_atom = PL_new_atom(PyByteArray_AsString(pVal)); atom_t tmp_atom = PL_new_atom(PyByteArray_AsString(pVal));
return PL_unify_atom(t, tmp_atom); return PL_unify_atom(t, tmp_atom);
#if PY_MAJOR_VERSION < 3
} else if (PyString_Check(pVal)) { } else if (PyString_Check(pVal)) {
atom_t tmp_atom = PL_new_atom(PyString_AsString(pVal)); atom_t tmp_atom = PL_new_atom(PyString_AsString(pVal));
return PL_unify_atom(t, tmp_atom); return PL_unify_atom(t, tmp_atom);
#endif
} else if (PyTuple_Check(pVal)) { } else if (PyTuple_Check(pVal)) {
Py_ssize_t i, sz = PyTuple_Size(pVal); Py_ssize_t i, sz = PyTuple_Size(pVal);
functor_t f = PL_new_functor(ATOM_t, sz); functor_t f = PL_new_functor(ATOM_t, sz);
@ -1166,7 +1264,11 @@ python_import(term_t mname, term_t mod)
if ( !PL_get_nchars(mname, &len, &s, CVT_ALL|CVT_EXCEPTION) ) { if ( !PL_get_nchars(mname, &len, &s, CVT_ALL|CVT_EXCEPTION) ) {
return FALSE; return FALSE;
} }
#if PY_MAJOR_VERSION < 3
pName = PyString_FromString(s); pName = PyString_FromString(s);
#else
pName = PyUnicode_FromString(s);
#endif
if (pName == NULL) { if (pName == NULL) {
return FALSE; return FALSE;
} }
@ -1194,7 +1296,11 @@ python_f(term_t tmod, term_t fname, term_t tf)
if ( !PL_get_nchars(fname, &len, &s, CVT_ALL|CVT_EXCEPTION) ) { if ( !PL_get_nchars(fname, &len, &s, CVT_ALL|CVT_EXCEPTION) ) {
return FALSE; return FALSE;
} }
#if PY_MAJOR_VERSION < 3
pName = PyString_FromString(s); pName = PyString_FromString(s);
#else
pName = PyUnicode_FromString(s);
#endif
if (pName == NULL) { if (pName == NULL) {
return FALSE; return FALSE;
} }