/* 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" extern Term Yap_StringToTerm(const char *s, size_t len, term_t bindings); #if THREADS #define Yap_regp regcache #endif // we cannot consult YapInterface.h, that conflicts with what we declare, though // it shouldn't } %} /* turn on director wrapping Callback */ %feature("director") YAPCallback; %include "yapi.hh" #ifdef SWIGJAVA %javaexception("java.text.ParseException") YAPPredicate { try { $action } catch (YAPError::SYNTAX_ERROR &e) { jclass clazz = jenv->FindClass("java/text/ParseException"); jenv->ThrowNew(clazz, "Syntax error"); return $null; } } #endif