fix paths and introduce exceptions in SWIG and android yap

This commit is contained in:
Vítor Santos Costa 2014-07-15 00:54:45 -05:00
parent e1fc397cc1
commit 6ba88f8cc0
10 changed files with 87 additions and 57 deletions

View File

@ -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;
}
}

View File

@ -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
View File

@ -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);

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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()) {

View File

@ -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:

View File

@ -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