fix paths and introduce exceptions in SWIG and android yap
This commit is contained in:
parent
e1fc397cc1
commit
6ba88f8cc0
13
CXX/yapi.cpp
13
CXX/yapi.cpp
@ -627,16 +627,3 @@ YAPQuery *YAPEngine::query( char *s ) {
|
||||
YAPQuery *n = new YAPQuery( s );
|
||||
return n;
|
||||
}
|
||||
|
||||
YAPQuery *YAPEngine::safeQuery( char *s ) {
|
||||
try {
|
||||
YAPQuery *n = new YAPQuery( s );
|
||||
n->setFlag( PL_Q_CATCH_EXCEPTION );
|
||||
n->resetFlag( PL_Q_PASS_EXCEPTION );
|
||||
return n;
|
||||
}
|
||||
catch (YAPError yerr) {
|
||||
yerror = yerr;
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
@ -566,7 +566,7 @@ public:
|
||||
char *topLevel = (char *)NULL,
|
||||
bool script = FALSE,
|
||||
bool fastBoot = FALSE,
|
||||
YAPCallback *callback=(YAPCallback *)NULL); /// construct a new engine, including aaccess to callbacks
|
||||
YAPCallback *callback=(YAPCallback *)NULL); /// construct a new engine, including aaccess to callbacks
|
||||
/// kill engine
|
||||
~YAPEngine() { delYAPCallback(); }
|
||||
/// remove current callback
|
||||
@ -581,8 +581,6 @@ public:
|
||||
YAPError hasError( ) { return yerror; }
|
||||
/// build a query on the engine
|
||||
YAPQuery *query( char *s );
|
||||
/// build a query on the engine handling exceptions
|
||||
YAPQuery *safeQuery( char *s );
|
||||
};
|
||||
|
||||
/*
|
||||
|
14
configure
vendored
14
configure
vendored
@ -753,6 +753,7 @@ PKG_CLIB
|
||||
PKG_CHR
|
||||
NO_BUILTIN_REGEXP
|
||||
YAP_EXTRAS
|
||||
GMPDIR
|
||||
SONAMEFLAG
|
||||
DYNYAPLIB
|
||||
YAPLIB
|
||||
@ -4567,10 +4568,12 @@ fi
|
||||
if test "${with_gmp+set}" = set; then :
|
||||
withval=$with_gmp; if test "$withval" = yes; then
|
||||
yap_cv_gmp=yes
|
||||
GMPDIR=/usr
|
||||
elif test "$withval" = no; then
|
||||
yap_cv_gmp=no
|
||||
else
|
||||
yap_cv_gmp=$with_gmp
|
||||
yap_cv_gmp="$with_gmp"
|
||||
GMPDIR="$with_gmp"
|
||||
LDFLAGS="$LDFLAGS -L${yap_cv_gmp}/lib"
|
||||
LIBS="$LIBS -L${yap_cv_gmp}/lib"
|
||||
CPPFLAGS="$CPPFLAGS -I${yap_cv_gmp}/include"
|
||||
@ -8872,6 +8875,7 @@ CMDEXT=sh
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for gcc threaded code" >&5
|
||||
@ -13595,7 +13599,7 @@ else
|
||||
JAVA_TEST=Test.java
|
||||
CLASS_TEST=Test.class
|
||||
cat << \EOF > $JAVA_TEST
|
||||
/* #line 13598 "configure" */
|
||||
/* #line 13602 "configure" */
|
||||
public class Test {
|
||||
}
|
||||
EOF
|
||||
@ -13771,7 +13775,7 @@ EOF
|
||||
if uudecode$EXEEXT Test.uue; then
|
||||
ac_cv_prog_uudecode_base64=yes
|
||||
else
|
||||
echo "configure: 13774: uudecode had trouble decoding base 64 file 'Test.uue'" >&5
|
||||
echo "configure: 13778: uudecode had trouble decoding base 64 file 'Test.uue'" >&5
|
||||
echo "configure: failed file was:" >&5
|
||||
cat Test.uue >&5
|
||||
ac_cv_prog_uudecode_base64=no
|
||||
@ -13902,7 +13906,7 @@ else
|
||||
JAVA_TEST=Test.java
|
||||
CLASS_TEST=Test.class
|
||||
cat << \EOF > $JAVA_TEST
|
||||
/* #line 13905 "configure" */
|
||||
/* #line 13909 "configure" */
|
||||
public class Test {
|
||||
}
|
||||
EOF
|
||||
@ -13937,7 +13941,7 @@ JAVA_TEST=Test.java
|
||||
CLASS_TEST=Test.class
|
||||
TEST=Test
|
||||
cat << \EOF > $JAVA_TEST
|
||||
/* [#]line 13940 "configure" */
|
||||
/* [#]line 13944 "configure" */
|
||||
public class Test {
|
||||
public static void main (String args[]) {
|
||||
System.exit (0);
|
||||
|
@ -192,10 +192,12 @@ AC_ARG_WITH(gmp,
|
||||
[ --with-gmp[=DIR] use GNU Multiple Precision in DIR],
|
||||
if test "$withval" = yes; then
|
||||
yap_cv_gmp=yes
|
||||
GMPDIR=/usr
|
||||
elif test "$withval" = no; then
|
||||
yap_cv_gmp=no
|
||||
else
|
||||
yap_cv_gmp=$with_gmp
|
||||
yap_cv_gmp="$with_gmp"
|
||||
GMPDIR="$with_gmp"
|
||||
LDFLAGS="$LDFLAGS -L${yap_cv_gmp}/lib"
|
||||
LIBS="$LIBS -L${yap_cv_gmp}/lib"
|
||||
CPPFLAGS="$CPPFLAGS -I${yap_cv_gmp}/include"
|
||||
@ -1396,6 +1398,7 @@ AC_SUBST(YAPLIB)
|
||||
AC_SUBST(DYNYAPLIB)
|
||||
AC_SUBST(LDFLAGS)
|
||||
AC_SUBST(SONAMEFLAG)
|
||||
AC_SUBST(GMPDIR)
|
||||
dnl install_info
|
||||
AC_SUBST(INSTALL_INFO)
|
||||
dnl let YAP_EXTRAS fall through configure, from the env into Makefile
|
||||
|
@ -15,7 +15,14 @@ ANDROID_RELEASE=19
|
||||
# ANDROID_ARCH= arm, x86, mips
|
||||
ANDROID_ARCH=arm
|
||||
# ANDROID_BUILD=linux
|
||||
ANDROID_BUILD=linux
|
||||
if test `uname` = Darwin
|
||||
then
|
||||
ANDROID_BUILD_TOOLS=macosx
|
||||
ANDROID_BUILD=darwin
|
||||
else
|
||||
ANDROID_BUILD_TOOLS=linux
|
||||
ANDROID_BUILD=linux
|
||||
fi
|
||||
|
||||
# what android to compile for
|
||||
ANDROID_IMAGE=first
|
||||
@ -31,11 +38,11 @@ fi
|
||||
|
||||
# check if the SDK is at the usual locations
|
||||
|
||||
if test -d $HOME/Yap/android-sdk-"$ANDROID_BUILD"
|
||||
if test -d $HOME/Yap/android-sdk-"$ANDROID_BUILD_TOOLS"
|
||||
then
|
||||
export SDK_ROOT=$HOME/Yap/android-sdk-"$ANDROID_BUILD"
|
||||
export SDK_ROOT=$HOME/Yap/android-sdk-"$ANDROID_BUILD_TOOLS"
|
||||
else
|
||||
export SDK_ROOT=/scratch/vitor/android-sdk-"$ANDROID_BUILD"
|
||||
export SDK_ROOT=/scratch/vitor/android-sdk-"$ANDROID_BUILD_TOOLS"
|
||||
fi
|
||||
|
||||
# check if the NDK is at the usual locations
|
||||
@ -71,7 +78,7 @@ fi
|
||||
GCC_VERSION=4.8
|
||||
|
||||
#========================================================
|
||||
# should be fine
|
||||
# should need no further work.
|
||||
#========================================================
|
||||
|
||||
export ANDROID_NDK_ROOT="$NDK_ROOT"/
|
||||
@ -91,14 +98,23 @@ then
|
||||
echo using the setup at "$BUILDTOOLCHAIN"
|
||||
else
|
||||
"$NDK_ROOT"/build/tools/make-standalone-toolchain.sh \
|
||||
--platform="$ANDROID_PLATFORM" \
|
||||
--toolchain="$ANDROID_ARCH"-"$ANDROID_BUILD"-androideabi-"$GCC_VERSION" \
|
||||
--install-dir="$BUILDTOOLCHAIN"
|
||||
--platform="$ANDROID_PLATFORM" \
|
||||
--toolchain="$ANDROID_ARCH"-linux-androideabi-"$GCC_VERSION" \
|
||||
--install-dir="$BUILDTOOLCHAIN"
|
||||
fi
|
||||
|
||||
|
||||
mkdir -p $BUILDDROID
|
||||
|
||||
startemulator () {
|
||||
EMS=`ps -ef | grep emulator64| grep -v grep`
|
||||
if test x"$EMS" = x
|
||||
then
|
||||
nohup emulator -avd $IMAGE &
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
cd $BUILDDROID
|
||||
|
||||
if test x$1 = xmake
|
||||
@ -110,18 +126,14 @@ then
|
||||
return 0
|
||||
elif test x$1 = xeclipse
|
||||
then
|
||||
emulator -avd $IMAGE &
|
||||
"$ECLIPSE"eclipse &
|
||||
startemulator
|
||||
"$ECLIPSE" &
|
||||
return 0
|
||||
else
|
||||
EMS=`ps -ef | grep emulator64| grep -v grep`
|
||||
if test x"$EMS" = x
|
||||
then
|
||||
emulator -avd $IMAGE &
|
||||
fi
|
||||
startemulator
|
||||
rm -rf "$BUILDDROID"/*
|
||||
cd "$BUILDDROID"
|
||||
"$YAP_SRC"/configure --host="$ANDROID_ARCH"-"$ANDROID_BUILD"-androideabi --prefix=`pwd` --enable-low-level-tracer --enable-debug-yap --enable-dynamic-loading --with-swig --with-gmp=$GMPDIR --disable-chr #--enable-threads
|
||||
"$YAP_SRC"/configure --host="$ANDROID_ARCH"-linux-androideabi --prefix=`pwd` --enable-low-level-tracer --enable-debug-yap --enable-dynamic-loading --with-swig --with-gmp=$GMPDIR --disable-chr #--enable-threads
|
||||
make depend
|
||||
make -j install
|
||||
fi
|
||||
|
@ -1 +1 @@
|
||||
Subproject commit 3637c14d2f0bcb2113e28de5aa0cae25a55dcca8
|
||||
Subproject commit 911ad4d6f1cf58828dc755621c7f1e6072073a6d
|
@ -6,7 +6,7 @@ include $(CLEAR_VARS)
|
||||
|
||||
LOCAL_LDLIBS := -landroid -llog
|
||||
LOCAL_MODULE := yap0
|
||||
LOCAL_SRC_FILES += @abs_top_builddir@/../gmp-android/lib/libgmp.so
|
||||
LOCAL_SRC_FILES += @GMPDIR@/lib/libgmp.so
|
||||
include $(PREBUILT_SHARED_LIBRARY)
|
||||
|
||||
include $(CLEAR_VARS)
|
||||
@ -24,7 +24,7 @@ LOCAL_MODULE := example
|
||||
LOCAL_SHARED_LIBRARIES := yap0 yap1
|
||||
LOCAL_STATIC_LIBRARIES := @abs_top_builddir@/libYap.ar
|
||||
LOCAL_SRC_FILES += @abs_top_builddir@/packages/swig/android/jni/yap_wrap.cpp
|
||||
LOCAL_C_INCLUDES := @abs_top_builddir@ @abs_top_builddir@/../gmp-android/include @srcdir@/../../H @srcdir@/../../include @srcdir@/../../os @srcdir@/../../OPTYap @srcdir@/../../BEAM @srcdir@/../../CXX
|
||||
LOCAL_C_INCLUDES := @abs_top_builddir@ @GMPDIR@/include @srcdir@/../../H @srcdir@/../../include @srcdir@/../../os @srcdir@/../../OPTYap @srcdir@/../../BEAM @srcdir@/../../CXX
|
||||
LOCAL_CFLAGS := @YAP_EXTRAS@ @DEFS@ -D_YAP_NOT_INSTALLED_=1 -DDESTDIR=\"\"
|
||||
LOCAL_CPP_FEATURES := rtti
|
||||
# LOCAL_ALLOW_UNDEFINED_SYMBOLS := true
|
||||
|
@ -30,7 +30,7 @@ public class JavaYap extends Activity
|
||||
YAPQuery q = eng.query( str );
|
||||
|
||||
YAPListTerm vs0 = q.namedVars();
|
||||
int rc;
|
||||
Boolean rc;
|
||||
|
||||
// text.setText("");
|
||||
if (vs0.nil()) {
|
||||
|
@ -12,7 +12,7 @@ def go():
|
||||
try:
|
||||
q = engine.query(s)
|
||||
except:
|
||||
... print "Oops! That was no valid number. Try again..."
|
||||
print "Oops! That was no valid number. Try again..."
|
||||
while q.next():
|
||||
vs = q.namedVars();
|
||||
while vs.length() > 0:
|
||||
|
@ -1,11 +1,51 @@
|
||||
/* example.i */
|
||||
%module(directors="1") yap
|
||||
|
||||
// Language independent exception handler
|
||||
%include exception.i
|
||||
|
||||
class YAPPredicate;
|
||||
class YAPEngine;
|
||||
|
||||
#ifdef SWIGPYTHON
|
||||
%exception YAPPredicate {
|
||||
try {
|
||||
$action
|
||||
} catch (...) {
|
||||
PyErr_SetString(PyExc_SyntaxError, "syntax error");
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
%exception query {
|
||||
try {
|
||||
$action
|
||||
}
|
||||
catch (YAPError YAP_SYMTAX_ERROR) {
|
||||
SWIG_exception(SWIG_SyntaxError,"Syntax Error exception");
|
||||
}
|
||||
catch (...) {
|
||||
SWIG_exception(SWIG_RuntimeError,"Unknown exception");
|
||||
}
|
||||
}
|
||||
|
||||
%exception next {
|
||||
try {
|
||||
$action
|
||||
}
|
||||
catch (...) {
|
||||
SWIG_exception(SWIG_RuntimeError,"Unknown exception");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
%{
|
||||
/* Put header files here or function declarations like below */
|
||||
|
||||
#define YAP_CPP_INTERFACE 1
|
||||
|
||||
|
||||
extern "C" {
|
||||
|
||||
#include "yapi.hh"
|
||||
@ -26,20 +66,6 @@ extern "C" {
|
||||
/* turn on director wrapping Callback */
|
||||
%feature("director") YAPCallback;
|
||||
|
||||
class YAPPredicate;
|
||||
|
||||
#ifdef SWIGPYTHON
|
||||
%exception YAPPredicate {
|
||||
try {
|
||||
$action
|
||||
} catch (...) {
|
||||
PyErr_SetString(PyExc_SyntaxError, "syntax error");
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
%include "yapi.hh"
|
||||
|
||||
#ifdef SWIGJAVA
|
||||
|
Reference in New Issue
Block a user